- sigid_TY_DEF
-
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
- sigid_ISO_DEF
-
|- (!a. ABS_sigid (REP_sigid a) = a) /\
(!r.
TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
REP_sigid (ABS_sigid r) =
r)
- SIGID_DEF
-
|- !s. SIGID s = ABS_sigid (Node s [])
- SIGID_arg_DEF
-
|- !s. SIGID_arg (SIGID s) = s
- funid_TY_DEF
-
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
- funid_ISO_DEF
-
|- (!a. ABS_funid (REP_funid a) = a) /\
(!r.
TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
REP_funid (ABS_funid r) =
r)
- FUNID_DEF
-
|- !s. FUNID s = ABS_funid (Node s [])
- FUNID_arg_DEF
-
|- !s. FUNID_arg (FUNID s) = s
- less_funid_DEF
-
|- !f1 f2. less_funid f1 f2 = ltstring (FUNID_arg f1) (FUNID_arg f2)
- joint_ty_valdesc_valdesc_option_valdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(TRP
(\v tl.
(?v. v = INL v) /\ (LENGTH tl = SUC 0) \/
(v = INR (INL one)) /\ (LENGTH tl = 0) \/
(v = INR (INR one)) /\ (LENGTH tl = SUC 0)))
rep
- joint_ty_valdesc_valdesc_option_valdesc_ISO_DEF
-
|- (!a.
ABS_joint_ty_valdesc_valdesc_option_valdesc
(REP_joint_ty_valdesc_valdesc_option_valdesc a) =
a) /\
(!r.
TRP
(\v tl.
(?v. v = INL v) /\ (LENGTH tl = SUC 0) \/
(v = INR (INL one)) /\ (LENGTH tl = 0) \/
(v = INR (INR one)) /\ (LENGTH tl = SUC 0))
r =
REP_joint_ty_valdesc_valdesc_option_valdesc
(ABS_joint_ty_valdesc_valdesc_option_valdesc r) =
r)
- JOINT_int_VARvaldesc_DEF
-
|- !v' j.
JOINT_int_VARvaldesc v' j =
ABS_joint_ty_valdesc_valdesc_option_valdesc
(Node (INL v') [REP_joint_ty_valdesc_valdesc_option_valdesc j])
- JOINT_int_valdesc_NONE_valdesc_DEF
-
|- JOINT_int_valdesc_NONE_valdesc =
ABS_joint_ty_valdesc_valdesc_option_valdesc (Node (INR (INL one)) [])
- JOINT_int_valdesc_SOME_valdesc_DEF
-
|- !j.
JOINT_int_valdesc_SOME_valdesc j =
ABS_joint_ty_valdesc_valdesc_option_valdesc
(Node (INR (INR one)) [REP_joint_ty_valdesc_valdesc_option_valdesc j])
- joint_ty_valdesc_valdesc_option_valdesc_select_DEF
-
|- (!v' j.
joint_ty_valdesc_valdesc_option_valdesc_select
(JOINT_int_VARvaldesc v' j) =
((joint_ty_valdesc_valdesc_option_valdesc_select j = 2) => 1 | 0)) /\
(joint_ty_valdesc_valdesc_option_valdesc_select
JOINT_int_valdesc_NONE_valdesc =
2) /\
(!j.
joint_ty_valdesc_valdesc_option_valdesc_select
(JOINT_int_valdesc_SOME_valdesc j) =
((joint_ty_valdesc_valdesc_option_valdesc_select j = 1) => 2 | 0))
- valdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\x. joint_ty_valdesc_valdesc_option_valdesc_select x = 1)
rep
- valdesc_REP_ABS
-
|- (!a. valdesc_abs (valdesc_rep a) = a) /\
(!r.
(\x. joint_ty_valdesc_valdesc_option_valdesc_select x = 1) r =
valdesc_rep (valdesc_abs r) =
r)
- valdesc_option_valdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(\x. joint_ty_valdesc_valdesc_option_valdesc_select x = 2)
rep
- valdesc_option_valdesc_REP_ABS
-
|- (!a. valdesc_option_valdesc_abs (valdesc_option_valdesc_rep a) = a) /\
(!r.
(\x. joint_ty_valdesc_valdesc_option_valdesc_select x = 2) r =
valdesc_option_valdesc_rep (valdesc_option_valdesc_abs r) =
r)
- int_VARvaldesc_DEF
-
|- !x1 x2.
int_VARvaldesc x1 x2 =
valdesc_abs (JOINT_int_VARvaldesc x1 (valdesc_option_valdesc_rep x2))
- int_valdesc_NONE_valdesc_DEF
-
|- int_valdesc_NONE_valdesc =
valdesc_option_valdesc_abs JOINT_int_valdesc_NONE_valdesc
- int_valdesc_SOME_valdesc_DEF
-
|- !x1.
int_valdesc_SOME_valdesc x1 =
valdesc_option_valdesc_abs
(JOINT_int_valdesc_SOME_valdesc (valdesc_rep x1))
- int_inj_valdesc_option_valdesc
-
|- (int_inj_valdesc_option_valdesc NONE = int_valdesc_NONE_valdesc) /\
(!x0.
int_inj_valdesc_option_valdesc (SOME x0) = int_valdesc_SOME_valdesc x0)
- int_inv_valdesc_option_valdesc
-
|- (int_inv_valdesc_option_valdesc int_valdesc_NONE_valdesc = NONE) /\
(!x1.
int_inv_valdesc_option_valdesc (int_valdesc_SOME_valdesc x1) = SOME x1)
- VARvaldesc
-
|- VARvaldesc =
(\x0 x1. int_VARvaldesc x0 (int_inj_valdesc_option_valdesc x1))
- dist_aux_ftn_valdesc_DEF
-
|- (!x1 x2. dist_aux_ftn_valdesc (int_VARvaldesc x1 x2) = 0) /\
(dist_aux_ftn_valdesc_option_valdesc int_valdesc_NONE_valdesc = 1) /\
(!x1.
dist_aux_ftn_valdesc_option_valdesc (int_valdesc_SOME_valdesc x1) = 2)
- int_VARvaldesc_arg1_DEF
-
|- !x1 x2. int_VARvaldesc_arg1 (int_VARvaldesc x1 x2) = x1
- int_VARvaldesc_arg2_DEF
-
|- !x1 x2. int_VARvaldesc_arg2 (int_VARvaldesc x1 x2) = x2
- int_valdesc_SOME_valdesc_arg_DEF
-
|- (!x1. int_valdesc_SOME_valdesc_arg (int_valdesc_SOME_valdesc x1) = x1) /\
(int_valdesc_SOME_valdesc_arg int_valdesc_NONE_valdesc = (@x. T))
- joint_ty_exdesc_exdesc_option_exdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION
(TRP
(\v tl.
(?e. v = INL e) /\ (LENGTH tl = SUC 0) \/
(v = INR (INL one)) /\ (LENGTH tl = 0) \/
(v = INR (INR one)) /\ (LENGTH tl = SUC 0)))
rep
- joint_ty_exdesc_exdesc_option_exdesc_ISO_DEF
-
|- (!a.
ABS_joint_ty_exdesc_exdesc_option_exdesc
(REP_joint_ty_exdesc_exdesc_option_exdesc a) =
a) /\
(!r.
TRP
(\v tl.
(?e. v = INL e) /\ (LENGTH tl = SUC 0) \/
(v = INR (INL one)) /\ (LENGTH tl = 0) \/
(v = INR (INR one)) /\ (LENGTH tl = SUC 0))
r =
REP_joint_ty_exdesc_exdesc_option_exdesc
(ABS_joint_ty_exdesc_exdesc_option_exdesc r) =
r)
- JOINT_int_EXCONexdesc_DEF
-
|- !e j.
JOINT_int_EXCONexdesc e j =
ABS_joint_ty_exdesc_exdesc_option_exdesc
(Node (INL e) [REP_joint_ty_exdesc_exdesc_option_exdesc j])
- JOINT_int_exdesc_NONE_exdesc_DEF
-
|- JOINT_int_exdesc_NONE_exdesc =
ABS_joint_ty_exdesc_exdesc_option_exdesc (Node (INR (INL one)) [])
- JOINT_int_exdesc_SOME_exdesc_DEF
-
|- !j.
JOINT_int_exdesc_SOME_exdesc j =
ABS_joint_ty_exdesc_exdesc_option_exdesc
(Node (INR (INR one)) [REP_joint_ty_exdesc_exdesc_option_exdesc j])
- joint_ty_exdesc_exdesc_option_exdesc_select_DEF
-
|- (!e' j.
joint_ty_exdesc_exdesc_option_exdesc_select
(JOINT_int_EXCONexdesc e' j) =
((joint_ty_exdesc_exdesc_option_exdesc_select j = 2) => 1 | 0)) /\
(joint_ty_exdesc_exdesc_option_exdesc_select JOINT_int_exdesc_NONE_exdesc =
2) /\
(!j.
joint_ty_exdesc_exdesc_option_exdesc_select
(JOINT_int_exdesc_SOME_exdesc j) =
((joint_ty_exdesc_exdesc_option_exdesc_select j = 1) => 2 | 0))
- exdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION (\x. joint_ty_exdesc_exdesc_option_exdesc_select x = 1)
rep
- exdesc_REP_ABS
-
|- (!a. exdesc_abs (exdesc_rep a) = a) /\
(!r.
(\x. joint_ty_exdesc_exdesc_option_exdesc_select x = 1) r =
exdesc_rep (exdesc_abs r) =
r)
- exdesc_option_exdesc_TY_DEF
-
|- ?rep.
TYPE_DEFINITION (\x. joint_ty_exdesc_exdesc_option_exdesc_select x = 2)
rep
- exdesc_option_exdesc_REP_ABS
-
|- (!a. exdesc_option_exdesc_abs (exdesc_option_exdesc_rep a) = a) /\
(!r.
(\x. joint_ty_exdesc_exdesc_option_exdesc_select x = 2) r =
exdesc_option_exdesc_rep (exdesc_option_exdesc_abs r) =
r)
- int_EXCONexdesc_DEF
-
|- !x1 x2.
int_EXCONexdesc x1 x2 =
exdesc_abs (JOINT_int_EXCONexdesc x1 (exdesc_option_exdesc_rep x2))
- int_exdesc_NONE_exdesc_DEF
-
|- int_exdesc_NONE_exdesc =
exdesc_option_exdesc_abs JOINT_int_exdesc_NONE_exdesc
- int_exdesc_SOME_exdesc_DEF
-
|- !x1.
int_exdesc_SOME_exdesc x1 =
exdesc_option_exdesc_abs (JOINT_int_exdesc_SOME_exdesc (exdesc_rep x1))
- int_inj_exdesc_option_exdesc
-
|- (int_inj_exdesc_option_exdesc NONE = int_exdesc_NONE_exdesc) /\
(!x0. int_inj_exdesc_option_exdesc (SOME x0) = int_exdesc_SOME_exdesc x0)
- int_inv_exdesc_option_exdesc
-
|- (int_inv_exdesc_option_exdesc int_exdesc_NONE_exdesc = NONE) /\
(!x1. int_inv_exdesc_option_exdesc (int_exdesc_SOME_exdesc x1) = SOME x1)
- EXCONexdesc
-
|- EXCONexdesc =
(\x0 x1. int_EXCONexdesc x0 (int_inj_exdesc_option_exdesc x1))
- dist_aux_ftn_exdesc_DEF
-
|- (!x1 x2. dist_aux_ftn_exdesc (int_EXCONexdesc x1 x2) = 0) /\
(dist_aux_ftn_exdesc_option_exdesc int_exdesc_NONE_exdesc = 1) /\
(!x1. dist_aux_ftn_exdesc_option_exdesc (int_exdesc_SOME_exdesc x1) = 2)
- int_EXCONexdesc_arg1_DEF
-
|- !x1 x2. int_EXCONexdesc_arg1 (int_EXCONexdesc x1 x2) = x1
- int_EXCONexdesc_arg2_DEF
-
|- !x1 x2. int_EXCONexdesc_arg2 (int_EXCONexdesc x1 x2) = x2
- int_exdesc_SOME_exdesc_arg_DEF
-
|- (!x1. int_exdesc_SOME_exdesc_arg (int_exdesc_SOME_exdesc x1) = x1) /\
(int_exdesc_SOME_exdesc_arg int_exdesc_NONE_exdesc = (@x. T))
- eval_valdesc_DEF
-
|- ((!var s1 s2. eval_valdesc (VARvaldesc var NONE) s1 s2 {var}) /\
(!valdesc s1 s2 vars.
eval_valdesc valdesc s1 s2 vars ==>
(!var.
eval_valdesc (VARvaldesc var (SOME valdesc)) s1 s2
({var} UNION vars)))) /\
(!P.
(!var s1 s2. P (VARvaldesc var NONE) s1 s2 {var}) /\
(!valdesc s1 s2 vars.
P valdesc s1 s2 vars ==>
(!var. P (VARvaldesc var (SOME valdesc)) s1 s2 ({var} UNION vars))) ==>
(!valdesc s1 s2 vars.
eval_valdesc valdesc s1 s2 vars ==> P valdesc s1 s2 vars))
- eval_exdesc_DEF
-
|- ((!excon s1 s2. eval_exdesc (EXCONexdesc excon NONE) s1 s2 {excon}) /\
(!exdesc s1 s2 excons.
eval_exdesc exdesc s1 s2 excons ==>
(!excon.
eval_exdesc (EXCONexdesc excon (SOME exdesc)) s1 s2
({excon} UNION excons)))) /\
(!P.
(!excon s1 s2. P (EXCONexdesc excon NONE) s1 s2 {excon}) /\
(!exdesc s1 s2 excons.
P exdesc s1 s2 excons ==>
(!excon.
P (EXCONexdesc excon (SOME exdesc)) s1 s2
({excon} UNION excons))) ==>
(!exdesc s1 s2 excons.
eval_exdesc exdesc s1 s2 excons ==> P exdesc s1 s2 excons))
- sigid_Axiom
-
|- !f. ?!fn. !s. fn (SIGID s) = f s
- sigid_induction_thm
-
|- !P. (!s. P (SIGID s)) ==> (!s. P s)
- sigid_cases_thm
-
|- !s. ?s'. s = SIGID s'
- sigid_constructors_one_one
-
|- !s s'. (SIGID s = SIGID s') = s = s'
- funid_Axiom
-
|- !f. ?!fn. !s. fn (FUNID s) = f s
- funid_induction_thm
-
|- !P. (!s. P (FUNID s)) ==> (!f. P f)
- funid_cases_thm
-
|- !f. ?s. f = FUNID s
- funid_constructors_one_one
-
|- !s s'. (FUNID s = FUNID s') = s = s'
- joint_ty_valdesc_valdesc_option_valdesc_Axiom
-
|- !f0 e f1.
?!fn.
(!v' j. fn (JOINT_int_VARvaldesc v' j) = f0 (fn j) v' j) /\
(fn JOINT_int_valdesc_NONE_valdesc = e) /\
(!j. fn (JOINT_int_valdesc_SOME_valdesc j) = f1 (fn j) j)
- valdesc_rec_thm
-
|- !VARvaldesc_case valdesc_NONE_valdesc_case valdesc_SOME_valdesc_case.
?y y'.
(!x1 x2. y (VARvaldesc x1 x2) = VARvaldesc_case (y' x2) x1 x2) /\
(y' NONE = valdesc_NONE_valdesc_case) /\
(!x1. y' (SOME x1) = valdesc_SOME_valdesc_case (y x1) x1)
- valdesc_induction_thm
-
|- !valdesc_Prop valdesc_option_valdesc_Prop.
(!y y'.
valdesc_option_valdesc_Prop y' ==> valdesc_Prop (VARvaldesc y y')) /\
valdesc_option_valdesc_Prop NONE /\
(!y. valdesc_Prop y ==> valdesc_option_valdesc_Prop (SOME y)) ==>
(!x1. valdesc_Prop x1) /\ (!x2. valdesc_option_valdesc_Prop x2)
- valdesc_unique_thm
-
|- !VARvaldesc_case valdesc_NONE_valdesc_case valdesc_SOME_valdesc_case fn1
fn2 fn1' fn2'.
(!y y'. fn1 (VARvaldesc y y') = VARvaldesc_case (fn2 y') y y') /\
(fn2 NONE = valdesc_NONE_valdesc_case) /\
(!y. fn2 (SOME y) = valdesc_SOME_valdesc_case (fn1 y) y) ==>
(!y y'. fn1' (VARvaldesc y y') = VARvaldesc_case (fn2' y') y y') /\
(fn2' NONE = valdesc_NONE_valdesc_case) /\
(!y. fn2' (SOME y) = valdesc_SOME_valdesc_case (fn1' y) y) ==>
(fn1 = fn1') /\ (fn2 = fn2')
- valdesc_constructors_distinct
-
|- !x1'. ~(NONE = SOME x1')
- valdesc_constructors_one_one
-
|- (!x1 x2 x1' x2'.
(VARvaldesc x1 x2 = VARvaldesc x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
(!x1 x1'. (SOME x1 = SOME x1') = x1 = x1')
- valdesc_cases_thm
-
|- (!x1. ?y y'. x1 = VARvaldesc y y') /\
(!x2. (x2 = NONE) \/ (?y. x2 = SOME y))
- joint_ty_exdesc_exdesc_option_exdesc_Axiom
-
|- !f0 e f1.
?!fn.
(!e' j. fn (JOINT_int_EXCONexdesc e' j) = f0 (fn j) e' j) /\
(fn JOINT_int_exdesc_NONE_exdesc = e) /\
(!j. fn (JOINT_int_exdesc_SOME_exdesc j) = f1 (fn j) j)
- exdesc_rec_thm
-
|- !EXCONexdesc_case exdesc_NONE_exdesc_case exdesc_SOME_exdesc_case.
?y y'.
(!x1 x2. y (EXCONexdesc x1 x2) = EXCONexdesc_case (y' x2) x1 x2) /\
(y' NONE = exdesc_NONE_exdesc_case) /\
(!x1. y' (SOME x1) = exdesc_SOME_exdesc_case (y x1) x1)
- exdesc_induction_thm
-
|- !exdesc_Prop exdesc_option_exdesc_Prop.
(!y y'.
exdesc_option_exdesc_Prop y' ==> exdesc_Prop (EXCONexdesc y y')) /\
exdesc_option_exdesc_Prop NONE /\
(!y. exdesc_Prop y ==> exdesc_option_exdesc_Prop (SOME y)) ==>
(!x1. exdesc_Prop x1) /\ (!x2. exdesc_option_exdesc_Prop x2)
- exdesc_unique_thm
-
|- !EXCONexdesc_case exdesc_NONE_exdesc_case exdesc_SOME_exdesc_case fn1 fn2
fn1' fn2'.
(!y y'. fn1 (EXCONexdesc y y') = EXCONexdesc_case (fn2 y') y y') /\
(fn2 NONE = exdesc_NONE_exdesc_case) /\
(!y. fn2 (SOME y) = exdesc_SOME_exdesc_case (fn1 y) y) ==>
(!y y'. fn1' (EXCONexdesc y y') = EXCONexdesc_case (fn2' y') y y') /\
(fn2' NONE = exdesc_NONE_exdesc_case) /\
(!y. fn2' (SOME y) = exdesc_SOME_exdesc_case (fn1' y) y) ==>
(fn1 = fn1') /\ (fn2 = fn2')
- exdesc_constructors_distinct
-
|- !x1'. ~(NONE = SOME x1')
- exdesc_constructors_one_one
-
|- (!x1 x2 x1' x2'.
(EXCONexdesc x1 x2 = EXCONexdesc x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
(!x1 x1'. (SOME x1 = SOME x1') = x1 = x1')
- exdesc_cases_thm
-
|- (!x1. ?y y'. x1 = EXCONexdesc y y') /\
(!x2. (x2 = NONE) \/ (?y. x2 = SOME y))
- Rule184a
-
|- !var s1 s2. eval_valdesc (VARvaldesc var NONE) s1 s2 {var}
- Rule184b
-
|- !valdesc s1 s2 vars.
eval_valdesc valdesc s1 s2 vars ==>
(!var.
eval_valdesc (VARvaldesc var (SOME valdesc)) s1 s2 ({var} UNION vars))
- eval_valdesc_induction_thm
-
|- !P.
(!var s1 s2. P (VARvaldesc var NONE) s1 s2 {var}) /\
(!valdesc s1 s2 vars.
P valdesc s1 s2 vars ==>
(!var. P (VARvaldesc var (SOME valdesc)) s1 s2 ({var} UNION vars))) ==>
(!valdesc s1 s2 vars.
eval_valdesc valdesc s1 s2 vars ==> P valdesc s1 s2 vars)
- Rule185a
-
|- !excon s1 s2. eval_exdesc (EXCONexdesc excon NONE) s1 s2 {excon}
- Rule185b
-
|- !exdesc s1 s2 excons.
eval_exdesc exdesc s1 s2 excons ==>
(!excon.
eval_exdesc (EXCONexdesc excon (SOME exdesc)) s1 s2
({excon} UNION excons))
- eval_exdesc_induction_thm
-
|- !P.
(!excon s1 s2. P (EXCONexdesc excon NONE) s1 s2 {excon}) /\
(!exdesc s1 s2 excons.
P exdesc s1 s2 excons ==>
(!excon.
P (EXCONexdesc excon (SOME exdesc)) s1 s2
({excon} UNION excons))) ==>
(!exdesc s1 s2 excons.
eval_exdesc exdesc s1 s2 excons ==> P exdesc s1 s2 excons)