Peeling a quantifier into a block #
The semantic core of the translation lemma. Two facts, both independent of any syntax.
A guarded block is a point. A second-order quantifier ranges over all
assignments of DescriptiveComplexity.ExpExpansion.pointBlock; the quantifier
being translated ranges over the points of the expanded universe, which are
the assignments the point guard admits. The two match up
(DescriptiveComplexity.ExpExpansion.exists_point_iff,
DescriptiveComplexity.ExpExpansion.forall_point_iff): a guarded block is a
point, existentially with the guard as a conjunct and universally with the guard
as a hypothesis, which is the usual shape of relativized quantification.
A guard can be pulled through the rest of the prefix. The guard of round i
sits at nesting depth i in the kernel, so peeling round i first has to move
it out past the quantifiers that remain
(DescriptiveComplexity.altBlockQuant_and_const,
DescriptiveComplexity.altBlockQuant_const_imp). Both directions need the block
assignments to be inhabited, which they are –
DescriptiveComplexity.SOBlock.botAssign – and the existential case of the
implication needs excluded middle, as relativized quantification always does.
Moving a constant through the prefix #
A conjunct not depending on the rounds moves out of the prefix.
Dependency graph
A hypothesis not depending on the rounds moves out of the prefix. The existential case is where excluded middle enters: with the hypothesis false, any round will do, and there is one.
Dependency graph
A guarded block is a point #
The block assignment carrying a point.
Equations
Instances For
Dependency graph
Dependency graph
The condition the point guard expresses, semantically.
Equations
- DescriptiveComplexity.ExpExpansion.IsPointAssign σ = ∃ (t : X.Tag) (ρ : X.B.Assignment A), σ = DescriptiveComplexity.SOBlock.tagAssign t ρ ∧ DescriptiveComplexity.ExpExpansion.DomHolds (t, ρ)
Instances For
Dependency graph
Dependency graph
A guarded block is a point, existentially.
Dependency graph
A guarded block is a point, universally.
Dependency graph
The peel steps #
Peeling the outermost quantifier of the prefix: the guard of the leading round
moves out past the rounds that remain
(DescriptiveComplexity.altBlockQuant_and_const,
DescriptiveComplexity.altBlockQuant_const_imp), and what is left of it turns
the round into a point (exists_point_iff, forall_point_iff).
Peeling an existential quantifier.
Dependency graph
Peeling a universal quantifier.