Library hydras.Prelude.MoreOrders
Complements on strict orders
From Coq Require Import RelationClasses Relation_Operators Ensembles Setoid.
Import Relation_Definitions.
Set Implicit Arguments.
Definition leq {A:Type}(lt : relation A): relation A :=
clos_refl A lt.
Section Defs.
Variables (A : Type)
(lt: relation A).
#[local] Infix "<" := lt.
#[local] Infix "<=" := (leq lt).
Definition Least {sto : StrictOrder lt} (x : A):=
∀ y, x ≤ y.
Definition Successor {sto : StrictOrder lt} (y x : A):=
x < y ∧ (∀ z, x < z → z < y → False).
Definition Limit {sto : StrictOrder lt} (x:A) :=
(∃ w:A, w < x) ∧
(∀ y:A, y < x → ∃ z:A, y < z ∧ z < x).
Definition Omega_limit
{sto : StrictOrder lt} (s: nat → A) (x:A) :=
(∀ i: nat, s i < x) ∧
(∀ y, y < x → ∃ i:nat, y < s i).
Definition Omega_limit_type
`{lt : relation A}
{sto : StrictOrder lt}
(s: nat → A) (x:A) : Type :=
((∀ i: nat, s i < x) ×
(∀ y, y < x → {i:nat | y < s i}))%type.
Lemma Omega_limit_not_Succ
{sto : StrictOrder lt} (s: nat → A) (x:A) :
Omega_limit s x →
∀ y, ¬ Successor x y.
Lemma Least_not_Succ {sto : StrictOrder lt} (x:A) :
Least x → ∀ z, ¬ Successor x z.
Lemma Omega_limit_Limit
{sto : StrictOrder lt} (s: nat → A) (x:A) :
Omega_limit s x → Limit x.
Lemma Least_not_Limit {sto : StrictOrder lt} x :
Least x → ¬ Limit x.
End Defs.
Lemma le_lt_eq {A}{lt: relation A}:
∀ a b, leq lt a b ↔ lt a b ∨ a = b.
#[ global ] Instance leq_trans {A:Type}{lt: relation A}{sto: StrictOrder lt}:
Transitive (leq lt).