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 B C R S f g z.(* If a function between strict partial orders is order preserving (back), we can derive that it is strictly order preserving (back) *)Sectionstrictly_order_preserving.Context `{FullPartialOrder A} `{FullPartialOrder B}.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f
StrictlyOrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f
StrictlyOrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E: x < y
f x < f y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E: ((x ≤ y) * (x ≶ y))%type
f x < f y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E: ((x ≤ y) * (x ≶ y))%type
((f x ≤ f y) * (f x ≶ f y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E1: x ≤ y E2: x ≶ y
((f x ≤ f y) * (f x ≶ f y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E1: x ≤ y E2: x ≶ y
f x ≤ f y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E1: x ≤ y E2: x ≶ y
f x ≶ f y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E1: x ≤ y E2: x ≶ y
f x ≤ f y
apply (order_preserving f);trivial.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsStrongInjective0: IsStrongInjective f x, y: A E1: x ≤ y E2: x ≶ y
f x ≶ f y
apply (strong_injective f);trivial.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f
StrictlyOrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f
StrictlyOrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E: f x < f y
x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E: ((f x ≤ f y) * (f x ≶ f y))%type
x < y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E: ((f x ≤ f y) * (f x ≶ f y))%type
((x ≤ y) * (x ≶ y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E1: f x ≤ f y E2: f x ≶ f y
((x ≤ y) * (x ≶ y))%type
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E1: f x ≤ f y E2: f x ≶ f y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E1: f x ≤ f y E2: f x ≶ f y
x ≶ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E1: f x ≤ f y E2: f x ≶ f y
x ≤ y
apply (order_reflecting f);trivial.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) StrongExtensionality0: StrongExtensionality f x, y: A E1: f x ≤ f y E2: f x ≶ f y
x ≶ y
apply (strong_extensionality f);trivial.Qed.Endstrictly_order_preserving.(* For structures with a trivial apartness relation we have a stronger result of the above *)Sectionstrictly_order_preserving_dec.Context `{FullPartialOrder A} `{!TrivialApart A}
`{FullPartialOrder B} `{!TrivialApart B}.Local Existing Instancestrict_po_apart.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsInjective0: IsInjective f
StrictlyOrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsInjective0: IsInjective f
StrictlyOrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderPreserving0: OrderPreserving (f : A -> B) IsInjective0: IsInjective f X: IsStrongInjective f
StrictlyOrderPreserving f
exact _.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderReflecting0: OrderReflecting (f : A -> B)
StrictlyOrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderReflecting0: OrderReflecting (f : A -> B)
StrictlyOrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPartialOrder Ale Alt TrivialApart0: TrivialApart A B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPartialOrder Ale0 Alt0 TrivialApart1: TrivialApart B f: A -> B OrderReflecting0: OrderReflecting (f : A -> B) X: StrongExtensionality f
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B)
StrongExtensionality f
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B)
StrongExtensionality f
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B) x, y: A E: f x ≶ f y
x ≶ y
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B) x, y: A E: ((f x < f y) + (f y < f x))%type
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B)
IsStrongInjective f
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B)
IsStrongInjective f
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B)
forallxy : A, x ≶ y -> f x ≶ f y
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B) x, y: A E: x ≶ y
f x ≶ f y
A: Type Aap: Apart A Alt: Lt A H: PseudoOrder Alt B: Type Aap0: Apart B Alt0: Lt B H0: PseudoOrder Alt0 f: A -> B StrictOrderEmbedding0: StrictOrderEmbedding
(f : A -> B) x, y: A E: ((x < y) + (y < x))%type
((f x < f y) + (f y < f x))%type
destruct E; [left | right]; apply (strictly_order_preserving f);trivial.Qed.Endpseudo_injective.(* If a function between pseudo partial orders is strictly order preserving (back), we can derive that it is order preserving (back) *)Sectionfull_pseudo_strictly_preserving.Context `{FullPseudoOrder A} `{FullPseudoOrder B}.Local Existing Instancepseudo_order_apart.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B)
OrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B)
OrderPreserving f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B) x, y: A E1: x ≤ y
f x ≤ f y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B) x, y: A E1: ~ (y < x)
~ (f y < f x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B) x, y: A E1: ~ (y < x) E2: f y < f x
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B) x, y: A E1: ~ (y < x) E2: f y < f x
y < x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderReflecting0: StrictlyOrderReflecting
(f : A -> B) x, y: A E1: ~ (y < x) E2: f y < f x
f y < f x
trivial.Qed.
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B)
OrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B)
OrderReflecting f
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B) x, y: A E1: f x ≤ f y
x ≤ y
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B) x, y: A E1: ~ (f y < f x)
~ (y < x)
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B) x, y: A E1: ~ (f y < f x) E2: y < x
Empty
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B) x, y: A E1: ~ (f y < f x) E2: y < x
f y < f x
A: Type Aap: Apart A Ale: Le A Alt: Lt A H: FullPseudoOrder Ale Alt B: Type Aap0: Apart B Ale0: Le B Alt0: Lt B H0: FullPseudoOrder Ale0 Alt0 f: A -> B StrictlyOrderPreserving0: StrictlyOrderPreserving
(f : A -> B) x, y: A E1: ~ (f y < f x) E2: y < x
y < x
trivial.Qed.Endfull_pseudo_strictly_preserving.(* Some helper lemmas to easily transform order preserving instances. *)Sectionorder_preserving_ops.Context `{Le R}.
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderPreserving0: OrderPreserving (op z)
OrderPreserving (funy : R => op y z)
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderPreserving0: OrderPreserving (op z)
OrderPreserving (funy : R => op y z)
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderPreserving0: OrderPreserving (op z) x, y: R E: x ≤ y
op x z ≤ op y z
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderPreserving0: OrderPreserving (op z) x, y: R E: x ≤ y
op z x ≤ op z y
apply order_preserving;trivial.Qed.
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderReflecting0: OrderReflecting (op z)
OrderReflecting (funy : R => op y z)
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderReflecting0: OrderReflecting (op z)
OrderReflecting (funy : R => op y z)
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderReflecting0: OrderReflecting (op z) x, y: R E: op x z ≤ op y z
x ≤ y
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderReflecting0: OrderReflecting (op z) x, y: R E: op x z ≤ op y z
op z x ≤ op z y
R: Type H: Le R op: R -> R -> R Commutative0: Commutative op z: R OrderReflecting0: OrderReflecting (op z) x, y: R E: op x z ≤ op y z
op x z ≤ op y z
trivial.Qed.
R: Type H: Le R op: R -> R -> R Zero0: Zero R H0: forallz : R,
PropHolds (0 ≤ z) -> OrderPreserving (op z) z: R
0 ≤ z -> forallxy : R, x ≤ y -> op z x ≤ op z y
R: Type H: Le R op: R -> R -> R Zero0: Zero R H0: forallz : R,
PropHolds (0 ≤ z) -> OrderPreserving (op z) z: R
0 ≤ z -> forallxy : R, x ≤ y -> op z x ≤ op z y
auto.Qed.
R: Type H: Le R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 ≤ z) ->
OrderPreserving (funy : R => op y z) z: R
0 ≤ z -> forallxy : R, x ≤ y -> op x z ≤ op y z
R: Type H: Le R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 ≤ z) ->
OrderPreserving (funy : R => op y z) z: R
0 ≤ z -> forallxy : R, x ≤ y -> op x z ≤ op y z
apply E.Qed.Context `{Lt R}.
R: Type H: Le R H0: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) -> OrderReflecting (op z) z: R
0 < z -> forallxy : R, op z x ≤ op z y -> x ≤ y
R: Type H: Le R H0: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) -> OrderReflecting (op z) z: R
0 < z -> forallxy : R, op z x ≤ op z y -> x ≤ y
apply E.Qed.
R: Type H: Le R H0: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
OrderReflecting (funy : R => op y z) z: R
0 < z -> forallxy : R, op x z ≤ op y z -> x ≤ y
R: Type H: Le R H0: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
OrderReflecting (funy : R => op y z) z: R
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderPreserving0: StrictlyOrderPreserving
(op z)
StrictlyOrderPreserving (funy : R => op y z)
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderPreserving0: StrictlyOrderPreserving
(op z)
StrictlyOrderPreserving (funy : R => op y z)
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderPreserving0: StrictlyOrderPreserving
(op z) x, y: R E: x < y
op x z < op y z
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderPreserving0: StrictlyOrderPreserving
(op z) x, y: R E: x < y
op z x < op z y
apply strictly_order_preserving;trivial.Qed.
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderReflecting0: StrictlyOrderReflecting
(op z)
StrictlyOrderReflecting (funy : R => op y z)
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderReflecting0: StrictlyOrderReflecting
(op z)
StrictlyOrderReflecting (funy : R => op y z)
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderReflecting0: StrictlyOrderReflecting
(op z) x, y: R E: op x z < op y z
x < y
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderReflecting0: StrictlyOrderReflecting
(op z) x, y: R E: op x z < op y z
op z x < op z y
R: Type H: Lt R op: R -> R -> R Commutative0: Commutative op z: R StrictlyOrderReflecting0: StrictlyOrderReflecting
(op z) x, y: R E: op x z < op y z
op x z < op y z
trivial.Qed.
R: Type H: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
StrictlyOrderPreserving (op z) z: R
0 < z -> forallxy : R, x < y -> op z x < op z y
R: Type H: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
StrictlyOrderPreserving (op z) z: R
0 < z -> forallxy : R, x < y -> op z x < op z y
apply E.Qed.
R: Type H: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
StrictlyOrderPreserving (funy : R => op y z) z: R
0 < z -> forallxy : R, x < y -> op x z < op y z
R: Type H: Lt R op: R -> R -> R Zero0: Zero R E: forallz : R,
PropHolds (0 < z) ->
StrictlyOrderPreserving (funy : R => op y z) z: R
0 < z -> forallxy : R, x < y -> op x z < op y z
apply E.Qed.Endstrict_order_preserving_ops.
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
PartialOrder Ale
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
PartialOrder Ale
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
PartialOrder Ale
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
IsHSet A
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
is_mere_relation A Ale
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
Reflexive le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
Transitive le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
AntiSymmetric le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
IsHSet A
exact _.
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
is_mere_relation A Ale
exact _.
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
Reflexive le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x: A
x ≤ x
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x: A
f x ≤ f x
applyreflexivity.
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
Transitive le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x, y, z: A E1: x ≤ y E2: y ≤ z
x ≤ z
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x, y, z: A E1: x ≤ y E2: y ≤ z
f x ≤ f z
transitivity (f y); apply P;trivial.
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y
AntiSymmetric le
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x, y: A E1: x ≤ y E2: y ≤ x
x = y
A: Type IsHSet0: IsHSet A Ale: Le A is_mere_relation0: is_mere_relation A Ale B: Type Ble: Le B f: A -> B IsInjective0: IsInjective f PartialOrder0: PartialOrder Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x, y: A E1: x ≤ y E2: y ≤ x
f x = f y
apply (antisymmetry (≤)); apply P;trivial.Qed.
A: Type Ale: Le A B: Type Ble: Le B f: A -> B TotalRelation0: TotalRelation Ble
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
TotalRelation Ale
A: Type Ale: Le A B: Type Ble: Le B f: A -> B TotalRelation0: TotalRelation Ble
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
TotalRelation Ale
A: Type Ale: Le A B: Type Ble: Le B f: A -> B TotalRelation0: TotalRelation Ble P: forallxy : A, x ≤ y <-> f x ≤ f y x, y: A
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt
(forallxy : A, x < y <-> f x < f y) ->
StrictOrder Alt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt
(forallxy : A, x < y <-> f x < f y) ->
StrictOrder Alt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
StrictOrder Alt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
is_mere_relation A lt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
Irreflexive lt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
Transitive lt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
is_mere_relation A lt
exact _.
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
Irreflexive lt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y x: A E: x < x
Empty
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y x: A E: x < x
f x < f x
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y x: A E: x < x
x < x
trivial.
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y
Transitive lt
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y x, y, z: A E1: x < y E2: y < z
x < z
A: Type Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type Blt: Lt B f: A -> B StrictOrder0: StrictOrder Blt P: forallxy : A, x < y <-> f x < f y x, y, z: A E1: x < y E2: y < z
f x < f z
transitivity (f y); apply P;trivial.Qed.
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt
(forallxy : A, x < y <-> f x < f y) ->
PseudoOrder Alt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt
(forallxy : A, x < y <-> f x < f y) ->
PseudoOrder Alt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f
(forallxy : A, x < y <-> f x < f y) ->
PseudoOrder Alt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
PseudoOrder Alt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
forallxy : A, ~ (x < y < x)
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
CoTransitive lt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
forallxy : A, x ≶ y <-> (x < y) + (y < x)
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
forallxy : A, ~ (x < y < x)
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: x < y < x
Empty
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: x < y < x
f x < f y < f x
split; apply P,E.
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
CoTransitive lt
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: x < y z: A
hor (x < z) (z < y)
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: f x < f y z: A
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y
forallxy : A, x ≶ y <-> (x < y) + (y < x)
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: x ≶ y
((x < y) + (y < x))%type
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: ((x < y) + (y < x))%type
x ≶ y
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: x ≶ y
((x < y) + (y < x))%type
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: f x ≶ f y
((x < y) + (y < x))%type
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: ((f x < f y) + (f y < f x))%type
((x < y) + (y < x))%type
destruct E; [left | right]; apply P;trivial.
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: ((x < y) + (y < x))%type
x ≶ y
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: ((x < y) + (y < x))%type
f x ≶ f y
A: Type Aap: Apart A H: IsApart A Alt: Lt A is_mere_relation0: is_mere_relation A lt B: Type H0: Apart B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f PseudoOrder0: PseudoOrder Blt X: StrongExtensionality f P: forallxy : A, x < y <-> f x < f y x, y: A E: ((x < y) + (y < x))%type
((f x < f y) + (f y < f x))%type
destruct E; [left | right]; apply P;trivial.Qed.
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
(forallxy : A, x < y <-> f x < f y) ->
FullPseudoOrder Ale Alt
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt
(forallxy : A, x ≤ y <-> f x ≤ f y) ->
(forallxy : A, x < y <-> f x < f y) ->
FullPseudoOrder Ale Alt
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
FullPseudoOrder Ale Alt
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
is_mere_relation A Ale
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
PseudoOrder Alt
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
forallxy : A, x ≤ y <-> ~ (y < x)
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
is_mere_relation A Ale
exact _.
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
PseudoOrder Alt
apply (projected_pseudo_order f);assumption.
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y
forallxy : A, x ≤ y <-> ~ (y < x)
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: x ≤ y
~ (y < x)
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x)
x ≤ y
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: x ≤ y
~ (y < x)
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: x ≤ y F: y < x
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x)
x ≤ y
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x)
f x ≤ f y
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x)
~ (f y < f x)
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x) F: f y < f x
Empty
A: Type Aap: Apart A H: IsApart A Ale: Le A Alt: Lt A is_mere_relation0: is_mere_relation A le is_mere_relation1: is_mere_relation A lt B: Type H0: Apart B Ble: Le B Blt: Lt B f: A -> B IsStrongInjective0: IsStrongInjective f FullPseudoOrder0: FullPseudoOrder Ble Blt P1: forallxy : A, x ≤ y <-> f x ≤ f y P2: forallxy : A, x < y <-> f x < f y x, y: A E: ~ (y < x) F: f y < f x
f y < f x
trivial.Qed.
A: Type Ale: Le A H: PartialOrder Ale
OrderPreserving id
A: Type Ale: Le A H: PartialOrder Ale
OrderPreserving id
red;trivial.Qed.
A: Type Ale: Le A H: PartialOrder Ale
OrderReflecting id
A: Type Ale: Le A H: PartialOrder Ale
OrderReflecting id
red;trivial.Qed.Sectioncomposition.Context {ABC} `{Le A} `{Le B} `{Le C} (f : A -> B) (g : B -> C).
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C
OrderPreserving f ->
OrderPreserving g -> OrderPreserving (g ∘ f)
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C
OrderPreserving f ->
OrderPreserving g -> OrderPreserving (g ∘ f)
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderPreserving f X0: OrderPreserving g x, y: A X1: x ≤ y
(g ∘ f) x ≤ (g ∘ f) y
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderPreserving f X0: OrderPreserving g x, y: A X1: x ≤ y
g (f x) ≤ g (f y)
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderPreserving f X0: OrderPreserving g x, y: A X1: x ≤ y
x ≤ y
trivial.Qed.
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C
OrderReflecting f ->
OrderReflecting g -> OrderReflecting (g ∘ f)
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C
OrderReflecting f ->
OrderReflecting g -> OrderReflecting (g ∘ f)
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderReflecting f X0: OrderReflecting g x, y: A E: (g ∘ f) x ≤ (g ∘ f) y
x ≤ y
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderReflecting f X0: OrderReflecting g x, y: A E: g (f x) ≤ g (f y)
x ≤ y
A, B, C: Type H: Le A H0: Le B H1: Le C f: A -> B g: B -> C X: OrderReflecting f X0: OrderReflecting g x, y: A E: x ≤ y
x ≤ y
trivial.Qed.Instancecompose_order_embedding:
OrderEmbedding f -> OrderEmbedding g -> OrderEmbedding (g ∘ f) := {}.Endcomposition.#[export]
Hint Extern4 (OrderPreserving (_ ∘ _)) =>
class_apply @compose_order_preserving : typeclass_instances.#[export]
Hint Extern4 (OrderReflecting (_ ∘ _)) =>
class_apply @compose_order_reflecting : typeclass_instances.#[export]
Hint Extern4 (OrderEmbedding (_ ∘ _)) =>
class_apply @compose_order_embedding : typeclass_instances.