Doubling a gadget: one construction, run on each side #
A reduction between two problems of the GI degree applies one construction to
the pattern side of its input and the same construction to the host side. This
file makes that a theorem about a single gadget: given an interpretation F
of L₁ in L₀ – a construction taking one L₀-structure to one
L₁-structure – it builds DescriptiveComplexity.FOInterpretation.double,
mapping FirstOrder.Language.twoCopies L₀-instances to
FirstOrder.Language.twoCopies L₁-instances by running F on each marked
side, and identifies the sides of the result: the pattern side of F.double
applied to A is F applied to the pattern side of A
(DescriptiveComplexity.patSideDoubleEquiv).
Each side's defining formulas are those of F with every atom renamed to its
copy for that side (DescriptiveComplexity.patLHom) and every quantifier
restricted to that side's mark
(DescriptiveComplexity.relativizeTo). The correctness of the two operations
is proved together, by one induction
(DescriptiveComplexity.realize_patRelativize): separately, the rename would
have to cross a language reduct and the restriction a Substructure coercion,
and the two identifications would then have to be composed with the subtype the
side structures are actually stated on.
Renaming a base symbol to its copy #
The base vocabulary, mapped onto its pattern copy.
Equations
- DescriptiveComplexity.patLHom L₀ = { onFunction := fun {x : ℕ} (f : L₀.Functions x) => isEmptyElim f, onRelation := fun {x : ℕ} (r : L₀.Relations x) => FirstOrder.Language.tcPat r }
Instances For
Dependency graph
The base vocabulary, mapped onto its host copy.
Equations
- DescriptiveComplexity.hostLHom L₀ = { onFunction := fun {x : ℕ} (f : L₀.Functions x) => isEmptyElim f, onRelation := fun {x : ℕ} (r : L₀.Relations x) => FirstOrder.Language.tcHost r }
Instances For
Dependency graph
Reading a renamed, relativized formula on a side #
The pattern side reads what the gadget wrote: a formula of the base vocabulary, renamed to the pattern copy and relativized to the pattern mark, holds in the ambient structure at arguments taken from the pattern side exactly when the original formula holds on that side.
Dependency graph
The host side reads what the gadget wrote: a formula of the base vocabulary, renamed to the host copy and relativized to the host mark, holds in the ambient structure at arguments taken from the host side exactly when the original formula holds on that side.
Dependency graph
The doubled interpretation #
A gadget, run on both sides. The pattern copy of a relation symbol is
defined by the gadget's own formula, its atoms renamed to the pattern copies
and its quantifiers restricted to the pattern mark; the host copy likewise. A
point belongs to a side exactly when all d of its coordinates do.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A point of the doubled construction is on the pattern side exactly when all its coordinates are.
Dependency graph
The same, on the host side.
Dependency graph
The sides of the doubled construction #
The pattern side of the doubled gadget is the gadget on the pattern
side. This is what makes a reduction between isomorphism problems a statement
about a construction on single structures: the two sides of the constructed
instance are F applied to the two sides of the input, so an isomorphism of
the former is one of the latter's images.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The same identification on the host side.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What a gadget has to satisfy #
The two sides of the doubled construction are isomorphic exactly when the gadget's values on the two sides of the input are.
Dependency graph
A gadget reflects isomorphism when isomorphic values come from
isomorphic arguments. The converse holds for free, an interpretation being
functorial (DescriptiveComplexity.FOInterpretation.mapLEquiv), so this is the
whole content a client has to supply – and it speaks about single structures,
with no pattern/host distinction anywhere.
Equations
Instances For
Dependency graph
Correctness of a doubled gadget: the two sides of the input are isomorphic exactly when the two sides of its image are.
Dependency graph
A gadget that reflects isomorphism is a reduction: run it on both sides. Order-free, as a reduction between isomorphism problems must be.
Equations
- DescriptiveComplexity.isoReflecting_fo_reduction F hrefl = { Tag := Tag, tagFinite := inst✝¹, tagNonempty := inst✝, dim := d, toInterpretation := F.double, correct := ⋯ }