DAG Isomorphism reduces to Digraph Isomorphism #
The easy half of GI-completeness, and the half that pays for the design of
DescriptiveComplexity.Problems.DagIso.Defs: since
FirstOrder.Language.twoGraphs carries two arbitrary binary relations –
nothing asks them to be symmetric –
DescriptiveComplexity.DigraphIso is already isomorphism of two directed graphs,
so a DAG instance only has to forget its two topological orders.
What it may not forget is well-formedness. The reduction is a one-dimensional,
single-tag interpretation that first tests, first-order, that both order
relations really are topological orders of their arcs
(DescriptiveComplexity.TopoOn, the sentence
DescriptiveComplexity.DagIso.topoSentence): if the test passes it copies the
two marked arc relations over, and if it fails it emits a pattern with no
vertices facing a host with all of them – no bijection, hence a no-instance,
matching the no-instance the ill-formed input is. This test is the whole reason
the instances carry their acyclicity witness: acyclicity itself is not
first-order, so no interpretation could gate on it.
The well-formedness sentence #
Lt is a topological order of Arc on V, as a first-order sentence
(over any variable type, so that it can be conjoined inside the defining
formulas of an interpretation): irreflexive and transitive on the marked set,
and containing the arcs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Lt is a topological order of Arc on V, as a first-order sentence
(over any variable type, so that it can be conjoined inside the defining
formulas of an interpretation): irreflexive and transitive on the marked set,
and containing the arcs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Lt is a topological order of Arc on V, as a first-order sentence
(over any variable type, so that it can be conjoined inside the defining
formulas of an interpretation): irreflexive and transitive on the marked set,
and containing the arcs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Lt is a topological order of Arc on V, as a first-order sentence
(over any variable type, so that it can be conjoined inside the defining
formulas of an interpretation): irreflexive and transitive on the marked set,
and containing the arcs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The sentence says what it is named after.
Dependency graph
Both sides of the instance are well formed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The interpretation #
The interpretation of DAG Isomorphism into Digraph Isomorphism: one
dimension, one tag. If the instance is well formed, the two marked arc
relations are copied verbatim – FirstOrder.Language.twoGraphs holds arbitrary
binary relations, so a DAG needs no encoding. If it is not, the pattern is
emptied while the host keeps every element, so the two sides cannot be
isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The unique copy of a vertex.
Instances For
Dependency graph
Dependency graph
The map is a copy of the universe: dimension one, one tag.
Equations
- DescriptiveComplexity.DagIso.dagEquiv = { toFun := fun (p : DescriptiveComplexity.DagIso.dagInterp.Map A) => p.2 0, invFun := DescriptiveComplexity.DagIso.dagPt, left_inv := ⋯, right_inv := ⋯ }
Instances For
Dependency graph
What the interpretation realizes #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
When the instance is ill formed, no element of the image is a pattern vertex.
Dependency graph
When the instance is ill formed, every element of the image is a host vertex.
Dependency graph
Correctness #
Correctness of the interpretation: the image is a yes-instance of Graph Isomorphism exactly when the input is one of DAG Isomorphism.
Dependency graph
DAG Isomorphism FO-reduces to Digraph Isomorphism: forget the two topological orders, after checking first-order that they are ones. The reduction is order-free.
Equations
- DescriptiveComplexity.dagIso_fo_reduction_digraphIso = { Tag := Unit, tagFinite := ⋯, tagNonempty := ⋯, dim := 1, toInterpretation := DescriptiveComplexity.DagIso.dagInterp, correct := ⋯ }