Fixed point construction on complete lattices
theorem
lfp_induct
{α : Type u}
[complete_lattice α]
{f : α → α}
{p : α → Prop}
(m : monotone f)
(step : ∀ (a : α), p a → a ≤ lfp f → p (f a))
(sup : ∀ (s : set α), (∀ (a : α), a ∈ s → p a) → p (Sup s)) :
p (lfp f)
theorem
gfp_induct
{α : Type u}
[complete_lattice α]
{f : α → α}
{p : α → Prop}
(m : monotone f)
(step : ∀ (a : α), p a → gfp f ≤ a → p (f a))
(inf : ∀ (s : set α), (∀ (a : α), a ∈ s → p a) → p (Inf s)) :
p (gfp f)
Equations
- fixed_points.prev f x = gfp (λ (z : α), x ⊓ f z)
Equations
- fixed_points.next f x = lfp (λ (z : α), x ⊔ f z)
theorem
fixed_points.prev_le
{α : Type u}
[complete_lattice α]
{f : α → α}
{x : α} :
fixed_points.prev f x ≤ x
theorem
fixed_points.prev_eq
{α : Type u}
[complete_lattice α]
{f : α → α}
(hf : monotone f)
{a : α}
(h : f a ≤ a) :
fixed_points.prev f a = f (fixed_points.prev f a)
def
fixed_points.prev_fixed
{α : Type u}
[complete_lattice α]
{f : α → α}
(hf : monotone f)
(a : α)
(h : f a ≤ a) :
Equations
- fixed_points.prev_fixed hf a h = ⟨fixed_points.prev f a, _⟩
theorem
fixed_points.next_le
{α : Type u}
[complete_lattice α]
{f : α → α}
{x : α} :
x ≤ fixed_points.next f x
theorem
fixed_points.next_eq
{α : Type u}
[complete_lattice α]
{f : α → α}
(hf : monotone f)
{a : α}
(h : a ≤ f a) :
fixed_points.next f a = f (fixed_points.next f a)
def
fixed_points.next_fixed
{α : Type u}
[complete_lattice α]
{f : α → α}
(hf : monotone f)
(a : α)
(h : a ≤ f a) :
Equations
- fixed_points.next_fixed hf a h = ⟨fixed_points.next f a, _⟩
theorem
fixed_points.sup_le_f_of_fixed_points
{α : Type u}
[complete_lattice α]
(f : α → α)
(hf : monotone f)
(x y : ↥(function.fixed_points f)) :
theorem
fixed_points.f_le_inf_of_fixed_points
{α : Type u}
[complete_lattice α]
(f : α → α)
(hf : monotone f)
(x y : ↥(function.fixed_points f)) :
theorem
fixed_points.Sup_le_f_of_fixed_points
{α : Type u}
[complete_lattice α]
(f : α → α)
(hf : monotone f)
(A : set α)
(HA : A ⊆ function.fixed_points f) :
theorem
fixed_points.f_le_Inf_of_fixed_points
{α : Type u}
[complete_lattice α]
(f : α → α)
(hf : monotone f)
(A : set α)
(HA : A ⊆ function.fixed_points f) :
The fixed points of f
form a complete lattice.
This cannot be an instance, since it depends on the monotonicity of f
.
Equations
- fixed_points.complete_lattice f hf = {sup := λ (x y : ↥(function.fixed_points f)), fixed_points.next_fixed hf (x.val ⊔ y.val) _, le := λ (x y : ↥(function.fixed_points f)), x.val ≤ y.val, lt := bounded_lattice.lt._default (λ (x y : ↥(function.fixed_points f)), x.val ≤ y.val), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := λ (x y : ↥(function.fixed_points f)), fixed_points.prev_fixed hf (x.val ⊓ y.val) _, inf_le_left := _, inf_le_right := _, le_inf := _, top := fixed_points.prev_fixed hf ⊤ _, le_top := _, bot := fixed_points.next_fixed hf ⊥ _, bot_le := _, Sup := λ (A : set ↥(function.fixed_points f)), fixed_points.next_fixed hf (Sup (subtype.val '' A)) _, Inf := λ (A : set ↥(function.fixed_points f)), fixed_points.prev_fixed hf (Inf (subtype.val '' A)) _, le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}