Pulling a walk back through a relativized interpretation #
A walk on the structure an interpretation produces is a walk on the base
structure: its tuples become tuples of coordinates, and the tags of its points
– being finite, static data – are carried in the mode
(DescriptiveComplexity.ParamTCSpec.comapRel). This is
DescriptiveComplexity.TCSpec.comap of
DescriptiveComplexity.TransitiveClosurePull with the two features a reduction
notion needs added: parameters, so that what is pulled back is a relation
rather than a sentence, and a definable domain, so that the interpretation
may be relativized.
What the domain costs #
Over the whole universe the encoding of nodes is a bijection and the transfer
is an isomorphism of walks. Over a definable domain it is not: a tagged tuple
of the base need not be a point of the target at all. The pulled walk is
therefore guarded – its step formula asks both endpoints to be in the domain
(DescriptiveComplexity.ParamTCSpec.domTupleF) – so that it never leaves the
image of the encoding, and the correspondence
(DescriptiveComplexity.ParamTCSpec.reachAt_comapRel_iff) is stated between
in-domain nodes, which is where the formulas that read it evaluate it: the
guarded pullback of DescriptiveComplexity.RelComposition hands every atom its
arguments already in the domain.
What it is for #
Two things. It is what pulls a membership walk back through a reduction
(DescriptiveComplexity.TCSpec.pullSpec), the first half of the closure of
DescriptiveComplexity.NL under ≤ᵗᶜ, the second half being the flattening
of the pulled walk (DescriptiveComplexity.TransitiveClosureFlatten); and it
is what pulls the outer walks of a composite back to the base, the first
half of transitivity of ≤ᵗᶜ (DescriptiveComplexity.TCReduction.trans),
whose second half is the same flattening.
The guarded pullback at an arbitrary variable type #
The guarded pullback of a formula at an arbitrary variable type: the
relativized sibling of DescriptiveComplexity.FOInterpretation.pullF.
Equations
Instances For
Dependency graph
Dependency graph
Coordinates of a pulled node #
The coordinate of a pulled tuple holding the j-th coordinate of the
i-th point.
Equations
Instances For
Dependency graph
The point of the target a pulled tuple encodes at its i-th slot.
Equations
- DescriptiveComplexity.ParamTCSpec.pointOf τ w i = (τ i, fun (j : Fin dim) => w (DescriptiveComplexity.ParamTCSpec.coordIx dim i j))
Instances For
Dependency graph
The pulled walk #
“Every point this tuple encodes is in the domain”, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The variables of a pulled step formula: the two tuples and the parameters, each spread over its coordinates.
Equations
- s.comapVar (Sum.inl (Sum.inl i), j) = Sum.inl (Sum.inl (DescriptiveComplexity.ParamTCSpec.coordIx dim i j))
- s.comapVar (Sum.inl (Sum.inr i), j) = Sum.inl (Sum.inr (DescriptiveComplexity.ParamTCSpec.coordIx dim i j))
- s.comapVar (Sum.inr i, j) = Sum.inr (DescriptiveComplexity.ParamTCSpec.coordIx dim i j)
Instances For
Dependency graph
The relabeling of a guard on one tuple into the step formula's variables.
Equations
- s.comapSrcVar m = Sum.inl (Sum.inl m)
Instances For
Dependency graph
The relabeling of a guard on one tuple into the step formula's variables.
Equations
- s.comapTgtVar m = Sum.inl (Sum.inr m)
Instances For
Dependency graph
The relabeling of a guard on one tuple into the step formula's variables.
Equations
Instances For
Dependency graph
The pullback of a walk through a relativized interpretation, at a static assignment of tags to its parameters: the tuples become tuples of coordinates, the tags of the two endpoints are carried in the mode, and the step is guarded by the domain formulas of everything it mentions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The nodes of the pulled walk #
A node of the pulled walk is in domain when every point it encodes is a point of the target.
Equations
- DescriptiveComplexity.ParamTCSpec.InDom a = ∀ (i : Fin s.k), (I.domFormula (a.1.2 i)).Realize fun (j : Fin dim) => a.2 (DescriptiveComplexity.ParamTCSpec.coordIx dim i j)
Instances For
Dependency graph
A valuation of the pulled parameters is in domain when every point it encodes is.
Equations
- DescriptiveComplexity.ParamTCSpec.ParInDom I τp z = ∀ (i : Fin s.par), (I.domFormula (τp i)).Realize fun (j : Fin dim) => z (DescriptiveComplexity.ParamTCSpec.coordIx dim i j)
Instances For
Dependency graph
The node of the target that an in-domain node encodes.
Equations
Instances For
Dependency graph
The parameters of the target that an in-domain valuation encodes.
Equations
- DescriptiveComplexity.ParamTCSpec.decodePar hz i = ⟨(τp i, fun (j : Fin dim) => z (DescriptiveComplexity.ParamTCSpec.coordIx dim i j)), ⋯⟩
Instances For
Dependency graph
A node of the target, read as a node of the pulled walk.
Equations
Instances For
Dependency graph
Dependency graph
The encoding of a node of the target is in domain.
Dependency graph
Encoding and decoding are inverse on nodes of the target.
Dependency graph
Steps and reachability correspond #
A step of the pulled walk is a step of the original one, both endpoints and the parameters being in the domain.
Dependency graph
The pulled walk reaches what the original one reaches, from an in-domain node. The target's membership in the domain is part of the conclusion: a walk cannot leave the domain, its steps being guarded.
Dependency graph
And conversely: what the original walk reaches, the pulled one reaches.
Dependency graph
Reachability corresponds, between nodes of the domain.