Transitivity of FO(TC) and FO(DTC) reductions #
P ≤ᵗᶜ Q and Q ≤ᵗᶜ R give P ≤ᵗᶜ R (DescriptiveComplexity.TCReduction.trans),
and likewise for ≤ᵈᵗᶜ (DescriptiveComplexity.DTCReduction.trans): the
reductions with a logic inside are reduction orders.
The composite #
The outer reduction's interpretation reads the reachability relations of its
own walks, which run on the structure the inner reduction produces. Pulled
back through the inner interpretation
(DescriptiveComplexity.ParamTCSpec.comapRel) they are walks over the base
structure expanded by the inner walks' relations; flattened
(DescriptiveComplexity.ParamTCSpec.flat) they are walks over the base
structure alone, and they join the inner family
(DescriptiveComplexity.TCInterpretation.flatFamily). The inner interpretation
is then extended to the outer family's vocabulary
(DescriptiveComplexity.TCInterpretation.CompositeBlock.extendOuter): a
reachability atom of
an outer walk is interpreted by “the two endpoints have encodings between
which the flat walk reaches”, with the encodings pinned by
DescriptiveComplexity.ParamTCSpec.encF. Composing the outer interpretation
with the extended inner one (DescriptiveComplexity.RelFOInterpretation.compRel)
is then the composite reduction, and no formula is ever rewritten: the guarded
pullback substitutes the extended formulas for the atoms.
The extended interpretation produces exactly the outer reduction's input –
the inner structure, ordered lexicographically, expanded by the outer walks'
relations
(DescriptiveComplexity.TCInterpretation.CompositeBlock.extendOuterLEquiv) – which
is where the two halves of the normal form meet: the pullback's
correspondence between in-domain nodes and the flat walk's at the encodings.
The deterministic case #
The same construction with the searching flat walk, which is functional; the
composite's family is read through its determinization, and the flat walks
lose nothing by it. The pullback of a determinized walk is functional
(DescriptiveComplexity.ParamTCSpec.comapRel_functional), which is what the
searching simulation needs.
The pullback of a functional walk is functional #
Encoding after decoding is the identity.
Dependency graph
The pullback of a functional walk is functional.
Dependency graph
The outer walks, pulled back and flattened #
An outer walk, pulled back through the inner interpretation: a walk over the base structure expanded by the inner walks' relations.
Instances For
Dependency graph
Dependency graph
The deciders of the pulled walk's steps.
Equations
- I.pulledStepDecider Dq hD s τp m n = Classical.choose ⋯
Instances For
Dependency graph
Dependency graph
Dependency graph
An outer walk, pulled back and flattened: a walk over the base structure alone.
Equations
Instances For
Dependency graph
Dependency graph
The coordinates of a node's tuple, as a tuple of the flat walk, at a
bottom element a₀.
Equations
- I.flatCoords Dq hD s τp det a₀ a = ((I.pulled s τp).flatEnc (I.pulledStepDecider Dq hD s τp) det a₀ a).2 ∘ ⇑((I.pulled s τp).flat (I.pulledStepDecider Dq hD s τp) det).coordEquiv.symm
Instances For
Dependency graph
Reachability in the flat walk is reachability in the outer walk, at the encodings of in-domain nodes – for the guessing flat walk, or for the searching one when the outer walk is functional.
Dependency graph
The searching flat walk is functional when the inner deciders are.
Dependency graph
The flat family #
The outer family, pulled back and flattened: one walk per outer walk and tag assignment of its parameters.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Extending the inner interpretation to the outer family's vocabulary #
The composite family, abstractly: a block with an assignment, into which
the inner family's relation variables and the flat walks' embed, with their
assignments. Abstract so that the composite family may be read as it is
(≤ᵗᶜ) or through its determinization (≤ᵈᵗᶜ).
- B : SOBlock
The block.
Its assignment on each structure.
The inner family's relation variables.
Their arities.
- ρ₁ (A : Type) [L₁.Structure A] [LinearOrder A] (q : I.fam.block.ι) (w : Fin (I.fam.block.arity q) → A) : self.ρ A (self.ι₁ q) (w ∘ Fin.cast ⋯) ↔ I.fam.reachAssign A q w
Their assignments.
- ι₂ (p : (I.flatFamily Dq hD F det).Ix) : ((I.flatFamily Dq hD F det).spec p).Mode → ((I.flatFamily Dq hD F det).spec p).Mode → self.B.ι
The flat walks' relation variables, per pair of modes.
- arity₂ (p : (I.flatFamily Dq hD F det).Ix) (m n : ((I.flatFamily Dq hD F det).spec p).Mode) : self.B.arity (self.ι₂ p m n) = (I.flatFamily Dq hD F det).block.arity ⟨p, (m, n)⟩
Their arities.
- ρ₂ (A : Type) [L₁.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (p : (I.flatFamily Dq hD F det).Ix) (m n : ((I.flatFamily Dq hD F det).spec p).Mode) (w : Fin ((I.flatFamily Dq hD F det).block.arity ⟨p, (m, n)⟩) → A) : self.ρ A (self.ι₂ p m n) (w ∘ Fin.cast ⋯) ↔ ((I.flatFamily Dq hD F det).spec p).ReachAt (w ∘ ((I.flatFamily Dq hD F det).spec p).parIx) (m, w ∘ ((I.flatFamily Dq hD F det).spec p).leftIx) (n, w ∘ ((I.flatFamily Dq hD F det).spec p).rightIx)
Their assignments: the flat walks' reachability relations.
Instances For
Dependency graph
The vocabulary map from the inner family's expansion to the composite's.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The composite structure: the base expanded by the composite block.
Equations
- C.structure A = C.B.structure₁ (C.ρ A)
Instances For
Dependency graph
The vocabulary map is an expansion.
Dependency graph
Dependency graph
The outer atoms #
The tags of an outer symbol's arguments, in its walk's packing.
Equations
- DescriptiveComplexity.outerTags q τ p = τ (Fin.cast ⋯ p)
Instances For
Dependency graph
The tags of the walk's parameters.
Equations
- DescriptiveComplexity.outerTp q τ j = DescriptiveComplexity.outerTags q τ ((F.spec (↑q).fst).parIx j)
Instances For
Dependency graph
The coordinates of the first endpoint, among the symbol's variables.
Equations
- DescriptiveComplexity.outerXsel q c = (Fin.cast ⋯ ((F.spec (↑q).fst).leftIx (finProdFinEquiv.symm c).1), (finProdFinEquiv.symm c).2)
Instances For
Dependency graph
The coordinates of the second endpoint.
Equations
- DescriptiveComplexity.outerYsel q c = (Fin.cast ⋯ ((F.spec (↑q).fst).rightIx (finProdFinEquiv.symm c).1), (finProdFinEquiv.symm c).2)
Instances For
Dependency graph
The coordinates of the parameters.
Equations
- DescriptiveComplexity.outerZsel q c = (Fin.cast ⋯ ((F.spec (↑q).fst).parIx (finProdFinEquiv.symm c).1), (finProdFinEquiv.symm c).2)
Instances For
Dependency graph
The index of the flat walk interpreting the symbol.
Equations
- DescriptiveComplexity.outerIx q τ = ⟨(↑q).fst, DescriptiveComplexity.outerTp q τ⟩
Instances For
Dependency graph
The two modes of the flat walk between which reachability is asked.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The two modes of the flat walk between which reachability is asked.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The number of coordinates of the flat walk interpreting the symbol.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The interpretation of an outer reachability atom: the two endpoints have encodings between which the flat walk reaches.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The point of the inner structure held at a position of the symbol.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The outer atom's interpretation says reachability in the outer walk, between the points the symbol's arguments encode.
Dependency graph
The extended interpretation #
The inner interpretation, extended to the outer family's vocabulary:
the base symbols and the order as before, an outer reachability atom by
DescriptiveComplexity.TCInterpretation.CompositeBlock.outerAtomF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The extended interpretation produces the outer reduction's input: the inner structure, ordered lexicographically, expanded by the outer walks' reachability relations.
Equations
- C.extendOuterLEquiv hbot hdet = { toEquiv := Equiv.subtypeEquivRight ⋯, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
The composite interpretation #
The sum of two families.
Instances For
Dependency graph
The composite interpretation: the outer interpretation composed with the extended inner one.
Equations
Instances For
Dependency graph
The composite produces the twice-interpreted structure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Transitivity #
Transitivity of FO(TC) reductions. The composite's family is the inner family together with the outer family's walks pulled back and flattened; its interpretation is the outer one composed with the inner one extended to the outer walks' vocabulary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Transitivity of FO(DTC) reductions. The same composite with the searching flat walks, read through its determinization: the inner walks are read deterministically as before, and the flat walks, being functional, are unchanged by it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Trans instance: FO(TC) reductions compose.
Equations
- One or more equations did not get rendered due to their size.
Dependency graph
Trans instance: FO(DTC) reductions compose.
Equations
- One or more equations did not get rendered due to their size.