Subgraph Commands

Every subgraph command returns a result envelope:

{
  "graph": { "points": [], "hyperedges": [] },
  "selection": {}
}

Extract .graph explicitly before passing it to another graph command:

derivon subgraph reachable --start A < graph.json \
  | jq '.graph' \
  | derivon validate

Induced

derivon subgraph induced [--point <POINT_ID>]...

No point flags produce the empty graph.

The graph contains exactly the selected points and every hyperedge whose head and all tails belong to that point set. Isolated selected points and eligible empty-tail edges are retained.

Reachable

derivon subgraph reachable [--start <POINT_ID>]...

The command computes closure under the complete input graph, then returns the induced subgraph of that closure. It retains all executable alternatives, not only one route.

Route

derivon subgraph route [--start <POINT_ID>]... --target <POINT_ID>
  [--target <POINT_ID>]... [--max-nodes <N>] [--max-millis <N>]

The graph contains the best-known route hyperedges, every incident point, and requested start or target points not incident to a selected edge. selection is the complete route result, including cost bounds and provenOptimal, so an approximate result is never hidden. If the target set is unreachable, graph is null and selection is the unreachable route result.

All projections preserve schema presence, original array order, IDs, weights, and opaque data. Point-set flags are repeatable and duplicates are errors.