- compare_def
-
|- (!lt eq gt. compare LESS lt eq gt = lt) /\
(!lt eq gt. compare EQUAL lt eq gt = eq) /\
!lt eq gt. compare GREATER lt eq gt = gt
- EQUAL_def
-
|- EQUAL = ii_internalprelim1
- GREATER_def
-
|- GREATER = ii_internalprelim2
- ii_internalprelim0_def
-
|- ii_internalprelim0 =
ii_internal_mk_ordering (CONSTR 0 (@x. T) (\n. BOTTOM))
- ii_internalprelim1_def
-
|- ii_internalprelim1 =
ii_internal_mk_ordering (CONSTR (SUC 0) (@x. T) (\n. BOTTOM))
- ii_internalprelim2_def
-
|- ii_internalprelim2 =
ii_internal_mk_ordering (CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM))
- LESS_def
-
|- LESS = ii_internalprelim0
- list_compare_arg_munge_def
-
|- !x x1 x2. list_compare x x1 x2 = list_compare_tupled (x,x1,x2)
- list_compare_tupled_primitive_def
-
|- list_compare_tupled =
WFREC (@R. WF R /\ !y x l2 l1 cmp. R (cmp,l1,l2) (cmp,x::l1,y::l2))
(\list_compare_tupled' a.
pair_case
(\v v1.
pair_case
(\v2 v3.
list_case (list_case EQUAL (\v10 v11. LESS) v3)
(\v6 v7.
list_case GREATER
(\v12 v13.
compare (v v6 v12) LESS
(list_compare_tupled' (v,v7,v13)) GREATER) v3)
v2) v1) a)
- list_merge_arg_munge_def
-
|- !x x1 x2. list_merge x x1 x2 = list_merge_tupled (x,x1,x2)
- list_merge_tupled_primitive_def
-
|- list_merge_tupled =
WFREC
(@R.
WF R /\
(!l2 l1 y x a_lt.
a_lt x y ==> R (a_lt,l1,y::l2) (a_lt,x::l1,y::l2)) /\
!l2 l1 y x a_lt. ~a_lt x y ==> R (a_lt,x::l1,l2) (a_lt,x::l1,y::l2))
(\list_merge_tupled' a.
pair_case
(\v v1.
pair_case
(\v2 v3.
list_case (list_case [] (\v10 v11. v10::v11) v3)
(\v6 v7.
list_case (v6::v7)
(\v12 v13.
(if v v6 v12 then
v6::list_merge_tupled' (v,v7,v12::v13)
else
v12::list_merge_tupled' (v,v6::v7,v13))) v3)
v2) v1) a)
- ordering_case_def
-
|- (!v v1 v2. ordering_case v v1 v2 LESS = v) /\
(!v v1 v2. ordering_case v v1 v2 EQUAL = v1) /\
!v v1 v2. ordering_case v v1 v2 GREATER = v2
- ordering_repfns
-
|- (!a. ii_internal_mk_ordering (ii_internal_dest_ordering a) = a) /\
!r.
(\a0.
!'ordering'.
(!a0.
(a0 = CONSTR 0 (@x. T) (\n. BOTTOM)) \/
(a0 = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/
(a0 = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) ==>
'ordering' a0) ==>
'ordering' a0) r =
(ii_internal_dest_ordering (ii_internal_mk_ordering r) = r)
- ordering_size_def
-
|- (ordering_size LESS = 0) /\ (ordering_size EQUAL = 0) /\
(ordering_size GREATER = 0)
- ordering_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\a0.
!'ordering'.
(!a0.
(a0 = CONSTR 0 (@x. T) (\n. BOTTOM)) \/
(a0 = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/
(a0 = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) ==>
'ordering' a0) ==>
'ordering' a0) rep
- compare_equal
-
|- (!x y. (cmp x y = EQUAL) = (x = y)) ==>
!l1 l2. (list_compare cmp l1 l2 = EQUAL) = (l1 = l2)
- list_compare_def
-
|- (list_compare cmp [] [] = EQUAL) /\
(list_compare cmp [] (v8::v9) = LESS) /\
(list_compare cmp (v4::v5) [] = GREATER) /\
(list_compare cmp (x::l1) (y::l2) =
compare (cmp x y) LESS (list_compare cmp l1 l2) GREATER)
- 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. P cmp l1 l2 ==> P cmp (x::l1) (y::l2)) ==>
!v v1 v2. P v v1 v2
- list_merge_def
-
|- (list_merge a_lt (v4::v5) [] = v4::v5) /\ (list_merge a_lt [] [] = []) /\
(list_merge a_lt [] (v8::v9) = v8::v9) /\
(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))
- list_merge_ind
-
|- !P.
(!a_lt v4 v5. P a_lt (v4::v5) []) /\ (!a_lt. P a_lt [] []) /\
(!a_lt v8 v9. P a_lt [] (v8::v9)) /\
(!a_lt x l1 y l2.
(a_lt x y ==> P a_lt l1 (y::l2)) /\
(~a_lt x y ==> P a_lt (x::l1) l2) ==>
P a_lt (x::l1) (y::l2)) ==>
!v v1 v2. P v v1 v2
- ordering_Axiom
-
|- !f0 f1 f2. ?fn. (fn LESS = f0) /\ (fn EQUAL = f1) /\ (fn GREATER = f2)
- ordering_case_cong
-
|- !v2' v2 v1' v1 v' v M' M.
(M = M') /\ ((M' = LESS) ==> (v = v')) /\
((M' = EQUAL) ==> (v1 = v1')) /\ ((M' = GREATER) ==> (v2 = v2')) ==>
(ordering_case v v1 v2 M = ordering_case v' v1' v2' M')
- ordering_distinct
-
|- ~(LESS = EQUAL) /\ ~(LESS = GREATER) /\ ~(EQUAL = GREATER)
- 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)
- ordering_induction
-
|- !P. P LESS /\ P EQUAL /\ P GREATER ==> !o'. P o'
- ordering_nchotomy
-
|- !o'. (o' = LESS) \/ (o' = EQUAL) \/ (o' = GREATER)