Fixed points of normal functions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We prove various statements about the fixed points of normal ordinal functions. We state them in three forms: as statements about type-indexed families of normal functions, as statements about ordinal-indexed families of normal functions, and as statements about a single normal function. For the most part, the first case encompasses the others.
Moreover, we prove some lemmas about the fixed points of specific normal functions.
Main definitions and results #
nfp_family
,nfp_bfamily
,nfp
: the next fixed point of a (family of) normal function(s).fp_family_unbounded
,fp_bfamily_unbounded
,fp_unbounded
: the (common) fixed points of a (family of) normal function(s) are unbounded in the ordinals.deriv_add_eq_mul_omega_add
: a characterization of the derivative of addition.deriv_mul_eq_opow_omega_mul
: a characterization of the derivative of multiplication.
Fixed points of type-indexed families of ordinals #
The next common fixed point, at least a
, for a family of normal functions.
This is defined for any family of functions, as the supremum of all values reachable by applying
finitely many functions in the family to a
.
ordinal.nfp_family_fp
shows this is a fixed point, ordinal.le_nfp_family
shows it's at
least a
, and ordinal.nfp_family_le_fp
shows this is the least ordinal with these properties.
Equations
- ordinal.nfp_family f a = ordinal.sup (list.foldr f a)
A generalization of the fixed point lemma for normal functions: any family of normal functions has an unbounded set of common fixed points.
The derivative of a family of normal functions is the sequence of their common fixed points.
This is defined for all functions such that ordinal.deriv_family_zero
,
ordinal.deriv_family_succ
, and ordinal.deriv_family_limit
are satisfied.
Equations
- ordinal.deriv_family f o = o.limit_rec_on (ordinal.nfp_family f 0) (λ (a IH : ordinal), ordinal.nfp_family f (order.succ IH)) (λ (a : ordinal) (l : a.is_limit), a.bsup)
For a family of normal functions, ordinal.deriv_family
enumerates the common fixed points.
Fixed points of ordinal-indexed families of ordinals #
The next common fixed point, at least a
, for a family of normal functions indexed by ordinals.
This is defined as ordinal.nfp_family
of the type-indexed family associated to f
.
Equations
- o.nfp_bfamily f = ordinal.nfp_family (o.family_of_bfamily f)
A generalization of the fixed point lemma for normal functions: any family of normal functions has an unbounded set of common fixed points.
The derivative of a family of normal functions is the sequence of their common fixed points.
This is defined as ordinal.deriv_family
of the type-indexed family associated to f
.
Equations
- o.deriv_bfamily f = ordinal.deriv_family (o.family_of_bfamily f)
For a family of normal functions, ordinal.deriv_bfamily
enumerates the common fixed points.
Fixed points of a single function #
The next fixed point function, the least fixed point of the normal function f
, at least a
.
This is defined as ordinal.nfp_family
applied to a family consisting only of f
.
Equations
- ordinal.nfp f = ordinal.nfp_family (λ (_x : unit), f)
The fixed point lemma for normal functions: any normal function has an unbounded set of fixed points.
The derivative of a normal function f
is the sequence of fixed points of f
.
This is defined as ordinal.deriv_family
applied to a trivial family consisting only of f
.
Equations
- ordinal.deriv f = ordinal.deriv_family (λ (_x : unit), f)
ordinal.deriv
enumerates the fixed points of a normal function.