Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.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 Variables A R. Local Set Universe Minimization ToSet. Global Instance decide_eqb `{DecidablePaths A} : Eqb A := fun a b => if decide_rel paths a b then true else false.
A: Type
H: DecidablePaths A

forall a b : A, (a =? b) = true <-> a = b
A: Type
H: DecidablePaths A

forall a b : A, (a =? b) = true <-> a = b
A: Type
H: DecidablePaths A

forall a b : A, (if decide_rel paths a b then true else false) = true <-> a = b
A: Type
H: DecidablePaths A
a, b: A
E1: a <> b
E2: false = true

a = b
A: Type
H: DecidablePaths A
a, b: A
E1: a <> b
E2: a = b
false = true
A: Type
H: DecidablePaths A
a, b: A
E1: a <> b
E2: false = true

a = b
destruct (false_ne_true E2).
A: Type
H: DecidablePaths A
a, b: A
E1: a <> b
E2: a = b

false = true
destruct (E1 E2). Qed.

LT <> EQ

LT <> EQ
E: LT = EQ

Empty
E: LT = EQ

(fun r : comparison => match r with | LT => Unit | _ => Empty end) EQ
E: LT = EQ

Unit
split. Qed.

LT <> GT

LT <> GT
E: LT = GT

Empty
E: LT = GT

(fun r : comparison => match r with | LT => Unit | _ => Empty end) GT
E: LT = GT

Unit
split. Qed.

EQ <> LT

EQ <> LT
apply symmetric_neq, LT_EQ. Qed.

EQ <> GT

EQ <> GT
E: EQ = GT

Empty
E: EQ = GT

(fun r : comparison => match r with | EQ => Unit | _ => Empty end) GT
E: EQ = GT

Unit
split. Qed.

GT <> EQ

GT <> EQ
apply symmetric_neq, EQ_GT. Qed. Global Instance compare_eqb `{Compare A} : Eqb A | 2 := fun a b => match a ?= b with | EQ => true | _ => false end.
A: Type
H: Compare A

forall a b : A, (a =? b) = true -> (a ?= b) = EQ
A: Type
H: Compare A

forall a b : A, (a =? b) = true -> (a ?= b) = EQ
A: Type
H: Compare A

forall a b : A, match a ?= b with | EQ => true | _ => false end = true -> (a ?= b) = EQ
A: Type
H: Compare A
a, b: A

match a ?= b with | EQ => true | _ => false end = true -> (a ?= b) = EQ
destruct (a ?= b);trivial;intros E;destruct (false_ne_true E). Qed. Global Instance tricho_compare `{Trichotomy A R} : Compare A | 2 := fun a b => match trichotomy R a b with | inl _ => LT | inr (inl _) => EQ | inr (inr _) => GT end.
A: Type
R: Relation A
H: Trichotomy R

forall a b : A, (a ?= b) = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R

forall a b : A, (a ?= b) = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R

forall a b : A, match trichotomy R a b with | inl _ => LT | inr (inl _) => EQ | inr (inr _) => GT end = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R
a, b: A
E: R a b

LT = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R
a, b: A
E: R b a
GT = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R
a, b: A
E: R a b

LT = EQ -> a = b
intros E1;destruct (LT_EQ E1).
A: Type
R: Relation A
H: Trichotomy R
a, b: A
E: R b a

GT = EQ -> a = b
intros E1;destruct (GT_EQ E1). Qed.
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R

forall a b : A, (a ?= b) = EQ <-> a = b
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R

forall a b : A, (a ?= b) = EQ <-> a = b
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R

forall a b : A, match trichotomy R a b with | inl _ => LT | inr (inl _) => EQ | inr (inr _) => GT end = EQ <-> a = b
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R a b

LT = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R a b
a = b -> LT = EQ
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b a
GT = EQ -> a = b
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b a
a = b -> GT = EQ
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R a b

LT = EQ -> a = b
intros E2;destruct (LT_EQ E2).
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R a b

a = b -> LT = EQ
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b b
E2: a = b

LT = EQ
destruct (irreflexivity R _ E1).
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b a

GT = EQ -> a = b
intros E2;destruct (GT_EQ E2).
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b a

a = b -> GT = EQ
A: Type
R: Relation A
H: Trichotomy R
H0: Irreflexive R
a, b: A
E1: R b b
E2: a = b

GT = EQ
destruct (irreflexivity R _ E1). Qed.
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le

forall x : A, ((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le

forall x : A, ((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A

((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: 0 ≤ x

((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: x ≤ 0
((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: 0 ≤ x

((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: 0 ≤ x

((0 ≤ x) * (abs x = x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: 0 ≤ x

abs x = x
apply ((abs_sig x).2);trivial.
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: x ≤ 0

((0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: x ≤ 0

((x ≤ 0) * (abs x = - x))%type
A: Type
H: Le A
H0: Zero A
H1: Negate A
H2: Abs A
TotalRelation0: TotalRelation le
x: A
E: x ≤ 0

abs x = - x
apply ((abs_sig x).2);trivial. Qed.