- Empty_vm
-
|- Empty_vm = ii_internalquote3
- End_idx
-
|- End_idx = ii_internalquote2
- ii_internalquote0_def
-
|- ii_internalquote0 =
(\a.
ii_internal_mk_index
((\a. CONSTR 0 (@x. T) (FCONS a (\n. BOTTOM)))
(ii_internal_dest_index a)))
- ii_internalquote1_def
-
|- ii_internalquote1 =
(\a.
ii_internal_mk_index
((\a. CONSTR (SUC 0) (@x. T) (FCONS a (\n. BOTTOM)))
(ii_internal_dest_index a)))
- ii_internalquote2_def
-
|- ii_internalquote2 =
ii_internal_mk_index (CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM))
- ii_internalquote3_def
-
|- ii_internalquote3 = ii_internal_mk_varmap (CONSTR 0 (@v. T) (\n. BOTTOM))
- ii_internalquote4_def
-
|- ii_internalquote4 =
(\a0 a1 a2.
ii_internal_mk_varmap
((\a0 a1 a2. CONSTR (SUC 0) a0 (FCONS a1 (FCONS a2 (\n. BOTTOM)))) a0
(ii_internal_dest_varmap a1) (ii_internal_dest_varmap a2)))
- index_case_def
-
|- (!f f1 v a. index_case f f1 v (Left_idx a) = f a) /\
(!f f1 v a. index_case f f1 v (Right_idx a) = f1 a) /\
!f f1 v. index_case f f1 v End_idx = v
- index_compare_arg_munge_def
-
|- !x x1. index_compare x x1 = index_compare_tupled (x,x1)
- index_compare_tupled_primitive_def
-
|- index_compare_tupled =
WFREC
(@R.
WF R /\ (!m' n'. R (n',m') (Left_idx n',Left_idx m')) /\
!m' n'. R (n',m') (Right_idx n',Right_idx m'))
(\index_compare_tupled' a.
pair_case
(\v v1.
index_case
(\v4.
index_case (\v6. index_compare_tupled' (v4,v6)) (\v7. LESS)
GREATER v1)
(\v5.
index_case (\v8. GREATER)
(\v9. index_compare_tupled' (v5,v9)) GREATER v1)
(index_case (\v12. LESS) (\v13. LESS) EQUAL v1) v) a)
- index_lt_def
-
|- !i1 i2. index_lt i1 i2 = (index_compare i1 i2 = LESS)
- index_repfns
-
|- (!a. ii_internal_mk_index (ii_internal_dest_index a) = a) /\
!r.
(\a0.
!'index'.
(!a0.
(?a.
(a0 = (\a. CONSTR 0 (@x. T) (FCONS a (\n. BOTTOM))) a) /\
'index' a) \/
(?a.
(a0 =
(\a. CONSTR (SUC 0) (@x. T) (FCONS a (\n. BOTTOM))) a) /\
'index' a) \/
(a0 = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) ==>
'index' a0) ==>
'index' a0) r =
(ii_internal_dest_index (ii_internal_mk_index r) = r)
- index_size_def
-
|- (!a. index_size (Left_idx a) = 1 + index_size a) /\
(!a. index_size (Right_idx a) = 1 + index_size a) /\
(index_size End_idx = 0)
- index_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\a0.
!'index'.
(!a0.
(?a.
(a0 = (\a. CONSTR 0 (@x. T) (FCONS a (\n. BOTTOM))) a) /\
'index' a) \/
(?a.
(a0 =
(\a. CONSTR (SUC 0) (@x. T) (FCONS a (\n. BOTTOM))) a) /\
'index' a) \/
(a0 = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) ==>
'index' a0) ==>
'index' a0) rep
- Left_idx
-
|- Left_idx = ii_internalquote0
- Node_vm
-
|- Node_vm = ii_internalquote4
- Right_idx
-
|- Right_idx = ii_internalquote1
- varmap_case_def
-
|- (!v f. varmap_case v f Empty_vm = v) /\
!v f a0 a1 a2. varmap_case v f (Node_vm a0 a1 a2) = f a0 a1 a2
- varmap_find_arg_munge_def
-
|- !x x1. varmap_find x x1 = varmap_find_tupled (x,x1)
- varmap_find_tupled_primitive_def
-
|- varmap_find_tupled =
WFREC
(@R.
WF R /\ (!v1 x v2 i1. R (i1,v2) (Right_idx i1,Node_vm x v1 v2)) /\
!v2 x v1 i1. R (i1,v1) (Left_idx i1,Node_vm x v1 v2))
(\varmap_find_tupled' a.
pair_case
(\v v3.
index_case
(\v6.
varmap_case (@x. T)
(\v11 v12 v13. varmap_find_tupled' (v6,v12)) v3)
(\v7.
varmap_case (@x. T)
(\v17 v18 v19. varmap_find_tupled' (v7,v19)) v3)
(varmap_case (@x. T) (\v23 v24 v25. v23) v3) v) a)
- varmap_repfns
-
|- (!a. ii_internal_mk_varmap (ii_internal_dest_varmap a) = a) /\
!r.
(\a0'.
!'varmap'.
(!a0'.
(a0' = CONSTR 0 (@v. T) (\n. BOTTOM)) \/
(?a0 a1 a2.
(a0' =
(\a0 a1 a2.
CONSTR (SUC 0) a0 (FCONS a1 (FCONS a2 (\n. BOTTOM)))) a0
a1 a2) /\ 'varmap' a1 /\ 'varmap' a2) ==>
'varmap' a0') ==>
'varmap' a0') r =
(ii_internal_dest_varmap (ii_internal_mk_varmap r) = r)
- varmap_size_def
-
|- (!f. varmap_size f Empty_vm = 0) /\
!f a0 a1 a2.
varmap_size f (Node_vm a0 a1 a2) =
1 + (f a0 + (varmap_size f a1 + varmap_size f a2))
- varmap_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\a0'.
!'varmap'.
(!a0'.
(a0' = CONSTR 0 (@v. T) (\n. BOTTOM)) \/
(?a0 a1 a2.
(a0' =
(\a0 a1 a2.
CONSTR (SUC 0) a0 (FCONS a1 (FCONS a2 (\n. BOTTOM)))) a0
a1 a2) /\ 'varmap' a1 /\ 'varmap' a2) ==>
'varmap' a0') ==>
'varmap' a0') rep
- compare_index_equal
-
|- !i1 i2. (index_compare i1 i2 = EQUAL) = (i1 = i2)
- compare_list_index
-
|- !l1 l2. (list_compare index_compare l1 l2 = EQUAL) = (l1 = l2)
- index_11
-
|- (!a a'. (Left_idx a = Left_idx a') = (a = a')) /\
!a a'. (Right_idx a = Right_idx a') = (a = a')
- index_Axiom
-
|- !f0 f1 f2.
?fn.
(!a. fn (Left_idx a) = f0 a (fn a)) /\
(!a. fn (Right_idx a) = f1 a (fn a)) /\ (fn End_idx = f2)
- index_case_cong
-
|- !v' v f1' f1 f' f M' M.
(M = M') /\ (!a. (M' = Left_idx a) ==> (f a = f' a)) /\
(!a. (M' = Right_idx a) ==> (f1 a = f1' a)) /\
((M' = End_idx) ==> (v = v')) ==>
(index_case f f1 v M = index_case f' f1' v' M')
- index_compare_def
-
|- (index_compare End_idx End_idx = EQUAL) /\
(index_compare End_idx (Right_idx v11) = LESS) /\
(index_compare End_idx (Left_idx v10) = LESS) /\
(index_compare (Right_idx v3) End_idx = GREATER) /\
(index_compare (Left_idx v2) End_idx = GREATER) /\
(index_compare (Left_idx n') (Left_idx m') = index_compare n' m') /\
(index_compare (Left_idx n') (Right_idx m') = LESS) /\
(index_compare (Right_idx n') (Right_idx m') = index_compare n' m') /\
(index_compare (Right_idx n') (Left_idx m') = GREATER)
- index_compare_ind
-
|- !P.
P End_idx End_idx /\ (!v11. P End_idx (Right_idx v11)) /\
(!v10. P End_idx (Left_idx v10)) /\ (!v3. P (Right_idx v3) End_idx) /\
(!v2. P (Left_idx v2) End_idx) /\
(!n' m'. P n' m' ==> P (Left_idx n') (Left_idx m')) /\
(!n' m'. P (Left_idx n') (Right_idx m')) /\
(!n' m'. P n' m' ==> P (Right_idx n') (Right_idx m')) /\
(!n' m'. P (Right_idx n') (Left_idx m')) ==>
!v v1. P v v1
- index_distinct
-
|- (!a' a. ~(Left_idx a = Right_idx a')) /\ (!a. ~(Left_idx a = End_idx)) /\
!a. ~(Right_idx a = End_idx)
- index_induction
-
|- !P.
(!i. P i ==> P (Left_idx i)) /\ (!i. P i ==> P (Right_idx i)) /\
P End_idx ==>
!i. P i
- index_nchotomy
-
|- !i. (?i'. i = Left_idx i') \/ (?i'. i = Right_idx i') \/ (i = End_idx)
- varmap_11
-
|- !a0 a1 a2 a0' a1' a2'.
(Node_vm a0 a1 a2 = Node_vm a0' a1' a2') =
(a0 = a0') /\ (a1 = a1') /\ (a2 = a2')
- varmap_Axiom
-
|- !f0 f1.
?fn.
(fn Empty_vm = f0) /\
!a0 a1 a2. fn (Node_vm a0 a1 a2) = f1 a0 a1 a2 (fn a1) (fn a2)
- varmap_case_cong
-
|- !f' f v' v M' M.
(M = M') /\ ((M' = Empty_vm) ==> (v = v')) /\
(!a0 a1 a2. (M' = Node_vm a0 a1 a2) ==> (f a0 a1 a2 = f' a0 a1 a2)) ==>
(varmap_case v f M = varmap_case v' f' M')
- varmap_distinct
-
|- !a2 a1 a0. ~(Empty_vm = Node_vm a0 a1 a2)
- varmap_find_def
-
|- (varmap_find End_idx (Node_vm x v1 v2) = x) /\
(varmap_find (Right_idx i1) (Node_vm x v1 v2) = varmap_find i1 v2) /\
(varmap_find (Left_idx i1) (Node_vm x v1 v2) = varmap_find i1 v1) /\
(varmap_find End_idx Empty_vm = @x. T) /\
(varmap_find (Right_idx v5) Empty_vm = @x. T) /\
(varmap_find (Left_idx v4) Empty_vm = @x. T)
- varmap_find_ind
-
|- !P.
(!x v1 v2. P End_idx (Node_vm x v1 v2)) /\
(!i1 x v1 v2. P i1 v2 ==> P (Right_idx i1) (Node_vm x v1 v2)) /\
(!i1 x v1 v2. P i1 v1 ==> P (Left_idx i1) (Node_vm x v1 v2)) /\
P End_idx Empty_vm /\ (!v5. P (Right_idx v5) Empty_vm) /\
(!v4. P (Left_idx v4) Empty_vm) ==>
!v v1. P v v1
- varmap_induction
-
|- !P.
P Empty_vm /\ (!v v0. P v /\ P v0 ==> !a. P (Node_vm a v v0)) ==> !v. P v
- varmap_nchotomy
-
|- !v. (v = Empty_vm) \/ ?a v' v0. v = Node_vm a v' v0