Towers of inductions: first-order strata and sweep strata #
The definability layer of the normal form of FP
(DescriptiveComplexity.Counting.Digits). The digits of a quantitative term
are computed by a tower of inflationary inductions, each reading the
converged relations of the ones below as if they were relations of the
instance; a tower is one induction, by stratification
(DescriptiveComplexity.StepDef.stratify). Two kinds of stratum are all the
construction uses, and both are stated over an arbitrary vocabulary M – in a
tower, the base vocabulary expanded by the relations already computed:
- a first-order stratum (
DescriptiveComplexity.Digits.foStratum) defines a family of relations by formulas ofM; its limit is what the formulas say (DescriptiveComplexity.Digits.inflLimit_foStratum); - a sweep stratum (
DescriptiveComplexity.Digits.sweep) computes rows indexed by the tuples of a definable linear order, each row by a formula that may read the rows before it. It is the iteration ofDescriptiveComplexity.Digits.sweep_limit, written with a relationdonebeside the relationrow, and its limit is the family of rows (DescriptiveComplexity.Digits.inflLimit_sweep).
DescriptiveComplexity.StepDef.Ext is the bookkeeping of a tower: an
induction extends another when it computes, among others, the same relations.
Tuples in blocks #
Parameters, then an index, then a position.
Equations
- DescriptiveComplexity.Digits.j3 w i p = Fin.append (Fin.append w i) p
Instances For
Dependency graph
The variables of a formula about parameters and an index, as arguments of a relation.
Equations
Instances For
Dependency graph
The variables of a formula about parameters, an index and a position, as arguments of a relation.
Equations
Instances For
Dependency graph
First-order strata #
A first-order stratum: a family of relations, each defined by a formula of the vocabulary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The limit of a first-order stratum is what its formulas say.
Dependency graph
Sweep strata #
The block of a sweep: the relation row (parameters, index, position) and
the relation done (parameters, index).
Equations
- DescriptiveComplexity.Digits.sweepBlock a q ℓ = { ι := Bool, ιFinite := Bool.instFinite, arity := fun (b : Bool) => bif b then a + q + ℓ else a + q }
Instances For
Dependency graph
The symbol of the rows.
Instances For
Dependency graph
The symbol of the marker.
Instances For
Dependency graph
“The row of this index is done.”
Equations
- DescriptiveComplexity.Digits.doneAt ℓ ws is = (DescriptiveComplexity.Digits.doneSym M a q ℓ).formula fun (k : Fin (a + q)) => FirstOrder.Language.var (Fin.append ws is k)
Instances For
Dependency graph
“This position is in the row of this index.”
Equations
- DescriptiveComplexity.Digits.rowAt ws is ps = (DescriptiveComplexity.Digits.rowSym M a q ℓ).formula fun (k : Fin (a + q + ℓ)) => FirstOrder.Language.var (Fin.append (Fin.append ws is) ps k)
Instances For
Dependency graph
“The row of this index may be written”: the index is the first one, or the row of the index it covers is done.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A sweep stratum: rows indexed by the tuples of a linear order given by
its least element (bot) and its covers (cov), each row defined by the
formula Θ – about parameters, an index and a position – which may read the
rows before it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The limit of a sweep stratum is the family of its rows. The index
tuples are read as the elements of a finite linear order through ix; the
formula Θ realizes a condition Φ on the rows, which determines the row of
an index from the rows before it.
Dependency graph
Extensions #
An induction extends another when it computes, among others, the same relations: a map of the relation variables, preserving the arities and the limits.
Where a relation variable of the first induction is in the second.
The arities are preserved.
- limit (A : Type) [K.Structure A] [LinearOrder A] [Finite A] : SOBlock.homAssign self.emb ⋯ (e'.inflLimit A) = e.inflLimit A
The limits are preserved.
Instances For
Dependency graph
Every induction extends itself.
Equations
- DescriptiveComplexity.StepDef.Ext.refl e = { emb := id, arity_emb := ⋯, limit := ⋯ }
Instances For
Dependency graph
Extensions compose.
Instances For
Dependency graph
Adding a stratum extends an induction.
Equations
Instances For
Dependency graph
The symbol of a relation variable, in an extension.
Instances For
Dependency graph
The relation variable j of the induction e computes the relation
R of ordered structures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The relations of a new stratum, in the stratified induction: their limits are those of the stratum, over the structure expanded by the limit of the induction below.