Completeness of the inductive-counting machine #
If no target is reachable from a source, the machine has an accepting run: the honest one, which certifies every node of every layer. The proof builds that run, four nested loops at a time – the certifying walk, the inner scan, the outer scan, and the sequence of stages – each by an induction along the finite linear order of nodes or, for the stages, on how much room the layer still has to grow.
Walking a finite linear order downwards #
theorem
DescriptiveComplexity.InductiveCounting.order_induction_down
{A : Type}
[LinearOrder A]
[Finite A]
{P : A → Prop}
(hmax : ∀ (z : A), (∀ (a : A), a ≤ z) → P z)
(hstep : ∀ (w z : A), w ⋖ z → P z → P w)
(z : A)
:
P z
Induction from the greatest element downwards, one cover at a time.
Dependency graph
Configurations, explicitly #
def
DescriptiveComplexity.InductiveCounting.mkCfg
{V : Type}
(ph : Phase)
(fl : Bool)
(rd rc rc2 rv rcnt ru rw rj : WithBot V)
:
Cfg V
A configuration with its eight registers given one by one.
Equations
Instances For
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]