(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* ((y: U) (In U B y) -> (R y x)) -> (Upper_Bound B x). Inductive Lower_Bound [B:(Ensemble U); x:U]: Prop := Lower_Bound_definition: (In U C x) -> ((y: U) (In U B y) -> (R x y)) -> (Lower_Bound B x). Inductive Lub [B:(Ensemble U); x:U]: Prop := Lub_definition: (Upper_Bound B x) -> ((y: U) (Upper_Bound B y) -> (R x y)) -> (Lub B x). Inductive Glb [B:(Ensemble U); x:U]: Prop := Glb_definition: (Lower_Bound B x) -> ((y: U) (Lower_Bound B y) -> (R y x)) -> (Glb B x). Inductive Bottom [bot:U]: Prop := Bottom_definition: (In U C bot) -> ((y: U) (In U C y) -> (R bot y)) -> (Bottom bot). Inductive Totally_ordered [B:(Ensemble U)]: Prop := Totally_ordered_definition: ((Included U B C) -> (x: U) (y: U) (Included U (Couple U x y) B) -> (R x y) \/ (R y x)) -> (Totally_ordered B). Definition Compatible : (Relation U) := [x: U] [y: U] (In U C x) -> (In U C y) -> (EXT z | (In U C z) /\ (Upper_Bound (Couple U x y) z)). Inductive Directed [X:(Ensemble U)]: Prop := Definition_of_Directed: (Included U X C) -> (Inhabited U X) -> ((x1: U) (x2: U) (Included U (Couple U x1 x2) X) -> (EXT x3 | (In U X x3) /\ (Upper_Bound (Couple U x1 x2) x3))) -> (Directed X). Inductive Complete : Prop := Definition_of_Complete: ((EXT bot | (Bottom bot))) -> ((X: (Ensemble U)) (Directed X) -> (EXT bsup | (Lub X bsup))) -> Complete. Inductive Conditionally_complete : Prop := Definition_of_Conditionally_complete: ((X: (Ensemble U)) (Included U X C) -> (EXT maj | (Upper_Bound X maj)) -> (EXT bsup | (Lub X bsup))) -> Conditionally_complete. End Bounds. Hints Resolve Totally_ordered_definition Upper_Bound_definition Lower_Bound_definition Lub_definition Glb_definition Bottom_definition Definition_of_Complete Definition_of_Complete Definition_of_Conditionally_complete. Section Specific_orders. Variable U: Type. Record Cpo : Type := Definition_of_cpo { PO_of_cpo: (PO U); Cpo_cond: (Complete U PO_of_cpo) }. Record Chain : Type := Definition_of_chain { PO_of_chain: (PO U); Chain_cond: (Totally_ordered U PO_of_chain (Carrier_of U PO_of_chain)) }. End Specific_orders.