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 R.Local Set Universe Minimization ToSet.Instancedecide_eqb `{DecidablePaths A} : Eqb A
:= funab => if decide_rel paths a b then true else false.
A: Type H: DecidablePaths A
forallab : A, (a =? b) = true <-> a = b
A: Type H: DecidablePaths A
forallab : A, (a =? b) = true <-> a = b
A: Type H: DecidablePaths A
forallab : 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
(funr : 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
(funr : 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
(funr : 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.Instancecompare_eqb `{Compare A} : Eqb A | 2 := funab =>
match a ?= b with
| EQ => true
| _ => false
end.
A: Type H: Compare A
forallab : A, (a =? b) = true -> (a ?= b) = EQ
A: Type H: Compare A
forallab : A, (a =? b) = true -> (a ?= b) = EQ
A: Type H: Compare A
forallab : 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.Instancetricho_compare `{Trichotomy A R} : Compare A | 2
:= funab =>
match trichotomy R a b with
| inl _ => LT
| inr (inl _) => EQ
| inr (inr _) => GT
end.
A: Type R: Relation A H: Trichotomy R
forallab : A, (a ?= b) = EQ -> a = b
A: Type R: Relation A H: Trichotomy R
forallab : A, (a ?= b) = EQ -> a = b
A: Type R: Relation A H: Trichotomy R
forallab : 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
forallab : A, (a ?= b) = EQ <-> a = b
A: Type R: Relation A H: Trichotomy R H0: Irreflexive R
forallab : A, (a ?= b) = EQ <-> a = b
A: Type R: Relation A H: Trichotomy R H0: Irreflexive R
forallab : 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
forallx : A,
(0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x)
A: Type H: Le A H0: Zero A H1: Negate A H2: Abs A TotalRelation0: TotalRelation le
forallx : A,
(0 ≤ x) * (abs x = x) + (x ≤ 0) * (abs x = - x)
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