Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Generalizable VariablesA.
A: Type R: Relation A Irreflexive0: Irreflexive R
forallxy : A, R x y -> x <> y
A: Type R: Relation A Irreflexive0: Irreflexive R
forallxy : A, R x y -> x <> y
A: Type R: Relation A Irreflexive0: Irreflexive R x, y: A E: R y y e: x = y
Empty
exact (irreflexivity _ _ E).Qed.
A: Type H: Le A TotalRelation0: TotalRelation le x, y: A
~ (y ≤ x) -> x ≤ y
A: Type H: Le A TotalRelation0: TotalRelation le x, y: A
~ (y ≤ x) -> x ≤ y
A: Type H: Le A TotalRelation0: TotalRelation le x, y: A nle: ~ (y ≤ x)
x ≤ y
A: Type H: Le A TotalRelation0: TotalRelation canonical_names.le x, y: A nle: ~ (y ≤ x) le: y ≤ x
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt x, y: A H1: complement lt x y H2: complement lt y x
x = y
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt x, y: A H1: complement lt x y H2: complement lt y x
~ (x ≶ y)
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt x, y: A H1: complement lt x y H2: complement lt y x nap: x ≶ y
Empty
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt x, y: A H1: complement lt x y H2: complement lt y x nap: ((x < y) + (y < x))%type
Empty
destruct nap;auto.Qed.
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A x, y: A
x <> y -> (x < y) + (y < x)
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A x, y: A
x <> y -> (x < y) + (y < x)
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A x, y: A neq: x ≶ y
((x < y) + (y < x))%type
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A x, y: A neq: x ≶ y
x ≶ y
assumption.Qed.
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A H0: DecidablePaths A
Trichotomy lt
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A H0: DecidablePaths A
Trichotomy lt
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
((x < y) + ((x = y) + (y < x)))%type
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A n: x <> y
((x < y) + ((x = y) + (y < x)))%type
destruct (ne_total_lt x y); auto.Qed.Endpseudo_order.Sectionfull_partial_order.Context `{FullPartialOrder A}.Local Existing Instancestrict_po_apart.(* Duplicate of strong_setoids.apart_ne. This is useful because a StrongSetoid is not defined as a substructure of a FullPartialOrder *)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
PropHolds (x ≶ y) -> PropHolds (x <> y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
PropHolds (x ≶ y) -> PropHolds (x <> y)
intros; exact _.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
StrictOrder lt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
StrictOrder lt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
is_mere_relation A lt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
Irreflexive lt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
is_mere_relation A lt
exact strict_po_mere_lt.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt
Irreflexive lt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x: A
complement lt x x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x: A
~ (x < x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x: A E: ((x ≤ x) * (x ≶ x))%type
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x: A snd: x ≶ x
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x: A snd: x ≶ x
x ≶ x
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
PropHolds (x < y) -> PropHolds (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
PropHolds (x < y) -> PropHolds (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: PropHolds (x < y)
PropHolds (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: PropHolds (x < y)
x < y
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
~ (x ≤ y) -> ~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
~ (x ≤ y) -> ~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: ~ (x ≤ y) E2: x < y
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: ~ (x ≤ y) E2: x < y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: ~ (x ≤ y) E2: x < y
PropHolds (x < y)
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
x < y -> x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
x < y -> x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: x < y
x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: x < y
x < y
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
x < y -> y ≶ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
x < y -> y ≶ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: x < y
y ≶ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A X: x < y
x < y
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
y ≤ x -> ~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
y ≤ x -> ~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: y ≤ x E2: ((x ≤ y) * (x ≶ y))%type
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: y ≤ x E2a: x ≤ y E2b: x ≶ y
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: y ≤ x E2a: x ≤ y
x ≶ y -> Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: y ≤ x E2a: x ≤ y
x = y
apply (antisymmetry (≤));assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
y < x -> ~ (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A
y < x -> ~ (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y: A E1: y < x E2: x ≤ y
Empty
apply (le_not_lt_flip y x);assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A
x < y -> y ≤ z -> x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A
x < y -> y ≤ z -> x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1: x < y E2: y ≤ z
x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1: x < y E2: y ≤ z
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1: ((x ≤ y) * (x ≶ y))%type E2: y ≤ z
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z
x ≤ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z
x ≤ z
transitivity y;assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z E3: z ≶ y
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z E3: z ≶ y
x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E1a: x ≤ y E1b: x ≶ y E2: y ≤ z E3: y ≶ z
x < z
transitivity y;apply lt_iff_le_apart; auto.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A
x ≤ y -> y < z -> x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A
x ≤ y -> y < z -> x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1: y < z
x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1: y < z
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1: ((y ≤ z) * (y ≶ z))%type
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z
((x ≤ z) * (x ≶ z))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z
x ≤ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z
x ≤ z
transitivity y;auto.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z E3: y ≶ x
x ≶ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z E3: y ≶ x
x < z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt x, y, z: A E2: x ≤ y E1a: y ≤ z E1b: y ≶ z E3: x ≶ y
x < z
transitivity y; apply lt_iff_le_apart; auto.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
x < y <-> (x ≤ y) * (x <> y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
x < y <-> (x ≤ y) * (x <> y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
x < y <-> (x ≤ y) * (x ≶ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
(x ≤ y) * (x ≶ y) <-> (x ≤ y) * (x <> y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
x < y <-> (x ≤ y) * (x ≶ y)
apply lt_iff_le_apart.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A x, y: A
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x = y) x, y: A
x ≤ y -> (x = y) + (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x = y) x, y: A
x ≤ y -> (x = y) + (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x = y) x, y: A X: x ≤ y
((x = y) + (x < y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x = y) x, y: A X: x ≤ y n: x <> y
((x = y) + (x < y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x = y) x, y: A X: x ≤ y n: x <> y
x < y
apply lt_iff_le_ne; auto.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
DecidablePaths A
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
DecidablePaths A
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: y ≤ x
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x)
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: ~ (x ≤ y)
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: y ≤ x
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: y ≤ x
x = y
apply (antisymmetry (<=));assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x)
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x)
x <> y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x) E3: x = y
y ≤ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x) E3: x = y
(funa : A => a ≤ x) y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: x ≤ y E2: ~ (y ≤ x) E3: x = y
x ≤ x
applyreflexivity.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: ~ (x ≤ y)
Decidable (x = y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: ~ (x ≤ y)
x <> y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: ~ (x ≤ y) E3: x = y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A E1: ~ (x ≤ y) E3: x = y
x ≤ x
applyreflexivity.Defined.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
forallxy : A, Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
forallxy : A, Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y p: x = y
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y n: x <> y
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (x ≤ y)
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y p: x = y
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y p: x = y
~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y p: x = y
x = y
assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y n: x <> y
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y n: x <> y
x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: x ≤ y n: x <> y
((x ≤ y) * (x <> y))%type
auto.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (x ≤ y)
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (x ≤ y)
~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (x ≤ y)
~ (x ≤ y)
assumption.Defined.Endfull_partial_order.(* Due to bug #2528 *)#[export]
Hint Extern5 (PropHolds (_ <> _)) =>
eapply @strict_po_apart_ne : typeclass_instances.#[export]
Hint Extern10 (PropHolds (_ ≤ _)) =>
eapply @lt_le : typeclass_instances.#[export]
Hint Extern20 (Decidable (_ < _)) =>
eapply @lt_dec_slow : typeclass_instances.Sectionfull_pseudo_order.Context `{FullPseudoOrder A}.Local Existing Instancepseudo_order_apart.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
~ (y < x) -> x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
~ (y < x) -> x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A X: ~ (y < x)
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A X: ~ (y < x)
~ (y < x)
assumption.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
PartialOrder le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
PartialOrder le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
IsHSet A
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
is_mere_relation A le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
Reflexive le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
Transitive le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
AntiSymmetric le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
IsHSet A
exact _.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
is_mere_relation A le
exact _.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
Reflexive le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x: A
x ≤ x
apply not_lt_le_flip, (irreflexivity (<)).
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
Transitive le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y, z: A E1: x ≤ y E2: y ≤ z
x ≤ z
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y, z: A E1: ~ (y < x) E2: ~ (z < y)
~ (z < x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y, z: A E1: ~ (y < x) E2: ~ (z < y)
complement lt z x
transitivity y;assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
AntiSymmetric le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E1: x ≤ y E2: y ≤ x
x = y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E1: ~ (y < x) E2: ~ (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
FullPartialOrder Ale Alt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
FullPartialOrder Ale Alt
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
forallxy : A, x < y <-> (x ≤ y) * (x ≶ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
x < y <-> (x ≤ y) * (x ≶ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
x < y -> (x ≤ y) * (x ≶ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
(x ≤ y) * (x ≶ y) -> x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
x < y -> (x ≤ y) * (x ≶ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
((x ≤ y) * (x ≶ y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
~ (y < x)
apply lt_flip;assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A E: x < y
x < y
assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
(x ≤ y) * (x ≶ y) -> x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A fst: x ≤ y E: x ≶ y
x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A fst: x ≤ y E: x ≶ y
~ (y < x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A fst: x ≤ y E: x ≶ y
x ≤ y
trivial.Qed.#[export] Instancefullpseudo_fullpartial@{i} : FullPartialOrder Ale Alt
:= ltac:(first [exact fullpseudo_fullpartial'@{i i SetSetSet}|
exact fullpseudo_fullpartial'@{i i}]).
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
forallxy : A, Stable (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt
forallxy : A, Stable (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
Stable (x ≤ y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A
~~ (x ≤ y) -> x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A dn: ~~ (x ≤ y)
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A dn: ~~ (x ≤ y)
~ (y < x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A dn: ~~ (x ≤ y) E: y < x
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt x, y: A dn: ~~ (x ≤ y) E: y < x
~ (x ≤ y)
intros E';apply le_iff_not_lt_flip in E';auto.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: x < y
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A p: x = y
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: x < y
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: x < y
x ≤ y
apply lt_le;trivial.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A p: x = y
((x ≤ y) + (y < x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A p: x = y
x ≤ y
apply eq_le;trivial.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A
TotalOrder le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A
TotalOrder le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A
TotalRelation le
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
((x ≤ y) + (y ≤ x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: y < x
((x ≤ y) + (y ≤ x))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: y < x
y ≤ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A l: y < x
PropHolds (y < x)
trivial.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
~ (y ≤ x) -> x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A
~ (y ≤ x) -> x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A X: ~ (y ≤ x)
x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: DecidablePaths A x, y: A X: ~ (y ≤ x) l: y ≤ x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
forallxy : A, Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y)
forallxy : A, Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: y ≤ x
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (y ≤ x)
Decidable (x < y)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A l: y ≤ x
Decidable (x < y)
right;apply le_not_lt_flip;assumption.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt TrivialApart0: TrivialApart A H0: forallxy : A, Decidable (x ≤ y) x, y: A n: ~ (y ≤ x)
Decidable (x < y)
left; apply not_le_lt_flip;assumption.Defined.Endfull_pseudo_order.#[export]
Hint Extern8 (Decidable (_ < _)) => eapply @lt_dec : typeclass_instances.(*The following instances would be tempting, but turn out to be a bad idea.#[export]Hint Extern 10 (PropHolds (_ <> _)) => eapply @le_ne : typeclass_instances.#[export]Hint Extern 10 (PropHolds (_ <> _)) => eapply @le_ne_flip : typeclass_instances.It will then loop like:semirings.lt_0_1 -> lt_ne_flip -> ...*)Sectiondec_strict_setoid_order.Context `{StrictOrder A} `{Apart A} `{!TrivialApart A} `{DecidablePaths A}.Instance: IsApart A := dec_strong_setoid.Context `{!Trichotomy (<)}.
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
PseudoOrder lt
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
PseudoOrder lt
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
forallxy : A, ~ (x < y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
CoTransitive lt
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
forallxy : A, x ≶ y <-> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
forallxy : A, ~ (x < y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A fst: x < y snd: y < x
Empty
destruct (lt_antisym x y); auto.
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
CoTransitive lt
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A Exy: x < y z: A
hor (x < z) (z < y)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A Exy: x < y z: A Exz: x = z
((x < z) + (z < y))%type
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A Exy: x < y z: A Exz: x = z
z < y
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A Exy: x < y z: A Exz: x = z
x < y
assumption.
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt
forallxy : A, x ≶ y <-> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
x ≶ y <-> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
x <> y <-> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
x <> y -> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
(x < y) + (y < x) -> x <> y
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
x <> y -> (x < y) + (y < x)
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A p: x = y
x <> y -> (x < y) + (y < x)
intros E;contradiction E.
A: Type Alt: Lt A H: StrictOrder Alt H0: Apart A TrivialApart0: TrivialApart A H1: DecidablePaths A Trichotomy0: Trichotomy lt x, y: A
(x < y) + (y < x) -> x <> y
intros [?|?];[apply lt_ne|apply lt_ne_flip];trivial.Qed.Enddec_strict_setoid_order.Sectiondec_partial_order.Context `{PartialOrder A} `{DecidablePaths A}.Definitiondec_lt: Lt A := funxy => x ≤ y /\ x <> y.Context `{Alt : Lt A} `{is_mere_relation A lt}
(lt_correct : forallxy, x < y <-> x ≤ y /\ x <> y).
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
StrictOrder lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
StrictOrder lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
is_mere_relation A lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
Irreflexive lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
Transitive lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
is_mere_relation A lt
exact _.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
Irreflexive lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x: A E: x < x
Empty
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x: A E: ((x ≤ x) * (x <> x))%type
Empty
destruct E as [_ []];trivial.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y)
Transitive lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1: x < y E2: y < z
x < z
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1: ((x ≤ y) * (x <> y))%type E2: ((y ≤ z) * (y <> z))%type
((x ≤ z) * (x <> z))%type
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z
((x ≤ z) * (x <> z))%type
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z
x ≤ z
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z
x <> z
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z
x ≤ z
transitivity y;trivial.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z
x <> z
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E2b: y <> z E3: x = z
Empty
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E3: x = z
y = z
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E3: x = z
z ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) x, y, z: A E1a: x ≤ y E1b: x <> y E2a: y ≤ z E3: x = z
x ≤ y
assumption.Qed.Context `{Apart A} `{!TrivialApart A}.Instance: IsApart A := dec_strong_setoid.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A
FullPartialOrder le lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A
FullPartialOrder le lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A
forallxy : A, x < y <-> (x ≤ y) * (x ≶ y)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A x, y: A
x < y <-> (x ≤ y) * (x ≶ y)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A x, y: A
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le
Trichotomy lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le
Trichotomy lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
((x < y) + ((x = y) + (y < x)))%type
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A n: x <> y
((x < y) + ((x = y) + (y < x)))%type
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A n: x <> y l: y ≤ x
((y ≤ x) * (y <> x))%type
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A n: x <> y l: y ≤ x
y <> x
intro E;applysymmetry in E;auto.Qed.Instancedec_pseudo_order: PseudoOrder (<) := dec_strict_pseudo_order.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le
FullPseudoOrder le lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le
FullPseudoOrder le lt
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le
forallxy : A, x ≤ y <-> ~ (y < x)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
x ≤ y <-> ~ (y < x)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
x ≤ y -> ~ (y < x)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
~ (y < x) -> x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
x ≤ y -> ~ (y < x)
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A X: x ≤ y E: y < x
Empty
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A X: x ≤ y fst: y ≤ x
y = x
apply (antisymmetry (≤));assumption.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A
~ (y < x) -> x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x)
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x E2: x = y
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x E2: x <> y
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x E2: x = y
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x E2: x = y
y ≤ y
applyreflexivity.
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A E1: ~ (y < x) l: y ≤ x E2: x <> y
x ≤ y
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A l: y ≤ x E2: x <> y
y < x
A: Type Ale: Le A H: PartialOrder Ale H0: DecidablePaths A Alt: Lt A is_mere_relation0: is_mere_relation A lt lt_correct: forallxy : A,
x < y <-> (x ≤ y) * (x <> y) H1: Apart A TrivialApart0: TrivialApart A TotalRelation0: TotalRelation le x, y: A l: y ≤ x E2: x <> y