- ordering_TY_DEF
-
⊢ ∃rep. TYPE_DEFINITION (λn. n < 3) rep
- ordering_BIJ
-
⊢ (∀a. num2ordering (ordering2num a) = a) ∧
∀r. (λn. n < 3) r ⇔ ordering2num (num2ordering r) = r
- ordering_size_def
-
⊢ ∀x. ordering_size x = 0
- ordering_CASE
-
⊢ ∀x v0 v1 v2.
(case x of Less => v0 | Equal => v1 | Greater => v2) =
(λm. if m < 1 then v0 else if m = 1 then v1 else v2) (ordering2num x)
- pair_compare_def
-
⊢ ∀c1 c2 a b x y.
pair_cmp c1 c2 (a,b) (x,y) =
case c1 a x of Less => Less | Equal => c2 b y | Greater => Greater
- num_compare_def
-
⊢ ∀n1 n2.
num_cmp n1 n2 = if n1 = n2 then Equal else if n1 < n2 then Less
else Greater
- char_compare_def
-
⊢ ∀c1 c2. char_cmp c1 c2 = num_cmp (ORD c1) (ORD c2)
- string_compare_def
-
⊢ string_cmp = list_cmp char_cmp
- invert_comparison_def
-
⊢ invert_comparison Greater = Less ∧ invert_comparison Less = Greater ∧
invert_comparison Equal = Equal
- num2ordering_ordering2num
-
⊢ ∀a. num2ordering (ordering2num a) = a
- ordering2num_num2ordering
-
⊢ ∀r. r < 3 ⇔ ordering2num (num2ordering r) = r
- num2ordering_11
-
⊢ ∀r r'. r < 3 ⇒ r' < 3 ⇒ (num2ordering r = num2ordering r' ⇔ r = r')
- ordering2num_11
-
⊢ ∀a a'. ordering2num a = ordering2num a' ⇔ a = a'
- num2ordering_ONTO
-
⊢ ∀a. ∃r. a = num2ordering r ∧ r < 3
- ordering2num_ONTO
-
⊢ ∀r. r < 3 ⇔ ∃a. r = ordering2num a
- num2ordering_thm
-
⊢ num2ordering 0 = Less ∧ num2ordering 1 = Equal ∧ num2ordering 2 = Greater
- ordering2num_thm
-
⊢ ordering2num Less = 0 ∧ ordering2num Equal = 1 ∧ ordering2num Greater = 2
- ordering_EQ_ordering
-
⊢ ∀a a'. a = a' ⇔ ordering2num a = ordering2num a'
- ordering_case_def
-
⊢ (∀v0 v1 v2. (case Less of Less => v0 | Equal => v1 | Greater => v2) = v0) ∧
(∀v0 v1 v2. (case Equal of Less => v0 | Equal => v1 | Greater => v2) = v1) ∧
∀v0 v1 v2. (case Greater of Less => v0 | Equal => v1 | Greater => v2) = v2
- datatype_ordering
-
⊢ DATATYPE (ordering Less Equal Greater)
- ordering_distinct
-
⊢ Less ≠ Equal ∧ Less ≠ Greater ∧ Equal ≠ Greater
- ordering_nchotomy
-
⊢ ∀a. a = Less ∨ a = Equal ∨ a = Greater
- ordering_Axiom
-
⊢ ∀x0 x1 x2. ∃f. f Less = x0 ∧ f Equal = x1 ∧ f Greater = x2
- ordering_induction
-
⊢ ∀P. P Equal ∧ P Greater ∧ P Less ⇒ ∀a. P a
- ordering_case_cong
-
⊢ ∀M M' v0 v1 v2.
M = M' ∧ (M' = Less ⇒ v0 = v0') ∧ (M' = Equal ⇒ v1 = v1') ∧
(M' = Greater ⇒ v2 = v2') ⇒
(case M of Less => v0 | Equal => v1 | Greater => v2) =
case M' of Less => v0' | Equal => v1' | Greater => v2'
- ordering_case_eq
-
⊢ (case x of Less => v0 | Equal => v1 | Greater => v2) = v ⇔
x = Less ∧ v0 = v ∨ x = Equal ∧ v1 = v ∨ x = Greater ∧ v2 = v
- ordering_eq_dec
-
⊢ (∀x. x = x ⇔ T) ∧ (Less = Equal ⇔ F) ∧ (Less = Greater ⇔ F) ∧
(Equal = Greater ⇔ F) ∧ (Equal = Less ⇔ F) ∧ (Greater = Less ⇔ F) ∧
(Greater = Equal ⇔ F) ∧
(ordering2num Less = 0 ∧ ordering2num Equal = 1 ∧ ordering2num Greater = 2) ∧
(num2ordering 0 = Less ∧ num2ordering 1 = Equal ∧ num2ordering 2 = Greater) ∧
((∀v0 v1 v2. (case Less of Less => v0 | Equal => v1 | Greater => v2) = v0) ∧
(∀v0 v1 v2. (case Equal of Less => v0 | Equal => v1 | Greater => v2) = v1) ∧
∀v0 v1 v2. (case Greater of Less => v0 | Equal => v1 | Greater => v2) = v2) ∧
(Less = Equal ⇔ F) ∧ (Less = Greater ⇔ F) ∧ (Equal = Greater ⇔ F) ∧
(Equal = Less ⇔ F) ∧ (Greater = Less ⇔ F) ∧ (Greater = Equal ⇔ F)
- bool_compare_ind
-
⊢ ∀P. P T T ∧ P F F ∧ P T F ∧ P F T ⇒ ∀v v1. P v v1
- bool_compare_def
-
⊢ bool_cmp T T = Equal ∧ bool_cmp F F = Equal ∧ bool_cmp T F = Greater ∧
bool_cmp F T = Less
- option_compare_ind
-
⊢ ∀P.
(∀c. P c NONE NONE) ∧ (∀c v0. P c NONE (SOME v0)) ∧
(∀c v3. P c (SOME v3) NONE) ∧ (∀c v1 v2. P c (SOME v1) (SOME v2)) ⇒
∀v v1 v2. P v v1 v2
- option_compare_def
-
⊢ option_cmp c NONE NONE = Equal ∧ option_cmp c NONE (SOME v0) = Less ∧
option_cmp c (SOME v3) NONE = Greater ∧
option_cmp c (SOME v1) (SOME v2) = c v1 v2
- list_compare_ind
-
⊢ ∀P.
(∀cmp. P cmp [] []) ∧ (∀cmp v8 v9. P cmp [] (v8::v9)) ∧
(∀cmp v4 v5. P cmp (v4::v5) []) ∧
(∀cmp x l1 y l2. (cmp x y = Equal ⇒ P cmp l1 l2) ⇒ P cmp (x::l1) (y::l2)) ⇒
∀v v1 v2. P v v1 v2
- list_compare_def
-
⊢ (∀cmp. list_cmp cmp [] [] = Equal) ∧
(∀v9 v8 cmp. list_cmp cmp [] (v8::v9) = Less) ∧
(∀v5 v4 cmp. list_cmp cmp (v4::v5) [] = Greater) ∧
∀y x l2 l1 cmp.
list_cmp cmp (x::l1) (y::l2) =
case cmp x y of
Less => Less
| Equal => list_cmp cmp l1 l2
| Greater => Greater
- compare_equal
-
⊢ (∀x y. cmp x y = Equal ⇔ x = y) ⇒
∀l1 l2. list_cmp cmp l1 l2 = Equal ⇔ l1 = l2
- list_merge_ind
-
⊢ ∀P.
(∀a_lt l1. P a_lt l1 []) ∧ (∀a_lt v4 v5. P a_lt [] (v4::v5)) ∧
(∀a_lt x l1 y l2.
(¬a_lt x y ⇒ P a_lt (x::l1) l2) ∧ (a_lt x y ⇒ P a_lt l1 (y::l2)) ⇒
P a_lt (x::l1) (y::l2)) ⇒
∀v v1 v2. P v v1 v2
- list_merge_def
-
⊢ (∀l1 a_lt. list_merge a_lt l1 [] = l1) ∧
(∀v5 v4 a_lt. list_merge a_lt [] (v4::v5) = v4::v5) ∧
∀y x l2 l1 a_lt.
list_merge a_lt (x::l1) (y::l2) =
if a_lt x y then x::list_merge a_lt l1 (y::l2)
else y::list_merge a_lt (x::l1) l2
- invert_eq_EQUAL
-
⊢ ∀x. invert_comparison x = Equal ⇔ x = Equal