Fixed points of maps that compute each coordinate from those below it #
Let r be a well-founded relation on an index type ι, and let F : (∀ i, β i) → ∀ i, β i be a
map whose i-th coordinate depends only on the coordinates r-below i, that is
DependsOn (F · i) {j | r j i}. This file proves that F has exactly one fixed point,
WellFounded.fixedPoint, built by well-founded recursion, and that iterating F from any family
reaches it once the number of iterations exceeds a ranking of r, which in a finite index type
is its cardinality. Fixed points of two such maps compare when the maps do.
Main definitions #
WellFounded.fixedPoint: the fixed point of a map computing each coordinate from those below
Main results #
WellFounded.isFixedPt_fixedPoint,WellFounded.eq_fixedPoint_of_isFixedPt: it is the unique fixed pointWellFounded.fixedPoint_eq_iterate,WellFounded.fixedPoint_eq_iterate_card: iteration reaches it past a rankingWellFounded.fixedPoint_le_fixedPoint: fixed points are ordered as the maps are
After k rounds of F, a coordinate ranked below k no longer depends on the family the
rounds started from.
The fixed point of a map computing each coordinate from those r-below it, by well-founded
recursion. Coordinates not below the current one are filled arbitrarily, which the map ignores.
Equations
- hr.fixedPoint F = hr.fix fun (i : ι) (rec : (y : ι) → r y i → β y) => F (fun (j : ι) => if h : r j i then rec j h else Classical.arbitrary (β j)) i
Instances For
Iterating from any family past a ranking of r reaches the fixed point.
On a finite index type, counting strict predecessors ranks a well-founded relation below the number of indices.
On a finite index type, iterating once per index reaches the fixed point.
Fixed points are ordered as the maps are. If F x ≤ G y whenever x ≤ y, the fixed point of
F lies below that of G.