Theory: common_holML_core

Parents


Type constants


Term constants


Axioms


Definitions

strid_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
strid_ISO_DEF
|- (!a. ABS_strid (REP_strid a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
     REP_strid (ABS_strid r) =
     r)
STRID_DEF
|- !s. STRID s = ABS_strid (Node s [])
STRID_arg_DEF
|- !s. STRID_arg (STRID s) = s
less_strid_DEF
|- !l1 l2. less_strid l1 l2 = ltstring (STRID_arg l1) (STRID_arg l2)
long_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?x. v = INL x) /\ (LENGTH tl = 0) \/
           (?s. v = INR s) /\ (LENGTH tl = SUC 0)))
       rep
long_ISO_DEF
|- (!a. ABS_long (REP_long a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?x. v = INL x) /\ (LENGTH tl = 0) \/
         (?s. v = INR s) /\ (LENGTH tl = SUC 0))
       r =
     REP_long (ABS_long r) =
     r)
BASE_DEF
|- !x. BASE x = ABS_long (Node (INL x) [])
QUALIFIED_DEF
|- !s l'. QUALIFIED s l' = ABS_long (Node (INR s) [REP_long l'])
long_base_DEF
|- (!x. long_base (BASE x) = x) /\
   (!long_x strid. long_base (QUALIFIED strid long_x) = long_base long_x)
var_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
var_ISO_DEF
|- (!a. ABS_var (REP_var a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r = REP_var (ABS_var r) = r)
VAR_DEF
|- !s. VAR s = ABS_var (Node s [])
VAR_arg_DEF
|- !s. VAR_arg (VAR s) = s
less_var_DEF
|- !l1 l2. less_var l1 l2 = ltstring (VAR_arg l1) (VAR_arg l2)
con_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
con_ISO_DEF
|- (!a. ABS_con (REP_con a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r = REP_con (ABS_con r) = r)
CON_DEF
|- !s. CON s = ABS_con (Node s [])
scon_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?i. v = INL i) /\ (LENGTH tl = 0) \/
           (?s. v = INR s) /\ (LENGTH tl = 0)))
       rep
scon_ISO_DEF
|- (!a. ABS_scon (REP_scon a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?i. v = INL i) /\ (LENGTH tl = 0) \/
         (?s. v = INR s) /\ (LENGTH tl = 0))
       r =
     REP_scon (ABS_scon r) =
     r)
SCINT_DEF
|- !i. SCINT i = ABS_scon (Node (INL i) [])
SCSTR_DEF
|- !s. SCSTR s = ABS_scon (Node (INR s) [])
excon_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
excon_ISO_DEF
|- (!a. ABS_excon (REP_excon a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
     REP_excon (ABS_excon r) =
     r)
EXCON_DEF
|- !s. EXCON s = ABS_excon (Node s [])
EXCON_arg_DEF
|- !s. EXCON_arg (EXCON s) = s
less_excon_DEF
|- !l1 l2. less_excon l1 l2 = ltstring (EXCON_arg l1) (EXCON_arg l2)
label_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
label_ISO_DEF
|- (!a. ABS_label (REP_label a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
     REP_label (ABS_label r) =
     r)
LABEL_DEF
|- !s. LABEL s = ABS_label (Node s [])
LABEL_arg_DEF
|- !s. LABEL_arg (LABEL s) = s
less_label_DEF
|- !l1 l2. less_label l1 l2 = ltstring (LABEL_arg l1) (LABEL_arg l2)
joint_ty_exbind_exbind_option_exbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?e. v = INL e) /\ (LENGTH tl = SUC 0) \/
           (?e l. v = INR (INL (e,l))) /\ (LENGTH tl = SUC 0) \/
           (v = INR (INR (INL one))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR one))) /\ (LENGTH tl = SUC 0)))
       rep
joint_ty_exbind_exbind_option_exbind_ISO_DEF
|- (!a.
     ABS_joint_ty_exbind_exbind_option_exbind
       (REP_joint_ty_exbind_exbind_option_exbind a) =
     a) /\
   (!r.
     TRP
       (\v tl.
         (?e. v = INL e) /\ (LENGTH tl = SUC 0) \/
         (?e l. v = INR (INL (e,l))) /\ (LENGTH tl = SUC 0) \/
         (v = INR (INR (INL one))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR one))) /\ (LENGTH tl = SUC 0))
       r =
     REP_joint_ty_exbind_exbind_option_exbind
       (ABS_joint_ty_exbind_exbind_option_exbind r) =
     r)
JOINT_int_EXBIND1_DEF
|- !e j.
     JOINT_int_EXBIND1 e j =
     ABS_joint_ty_exbind_exbind_option_exbind
       (Node (INL e) [REP_joint_ty_exbind_exbind_option_exbind j])
JOINT_int_EXBIND2_DEF
|- !e l' j.
     JOINT_int_EXBIND2 e l' j =
     ABS_joint_ty_exbind_exbind_option_exbind
       (Node (INR (INL (e,l'))) [REP_joint_ty_exbind_exbind_option_exbind j])
JOINT_int_exbind_NONE_exbind_DEF
|- JOINT_int_exbind_NONE_exbind =
   ABS_joint_ty_exbind_exbind_option_exbind (Node (INR (INR (INL one))) [])
JOINT_int_exbind_SOME_exbind_DEF
|- !j.
     JOINT_int_exbind_SOME_exbind j =
     ABS_joint_ty_exbind_exbind_option_exbind
       (Node (INR (INR (INR one)))
         [REP_joint_ty_exbind_exbind_option_exbind j])
joint_ty_exbind_exbind_option_exbind_select_DEF
|- (!e' j.
     joint_ty_exbind_exbind_option_exbind_select (JOINT_int_EXBIND1 e' j) =
     ((joint_ty_exbind_exbind_option_exbind_select j = 2) => 1 | 0)) /\
   (!e' l' j.
     joint_ty_exbind_exbind_option_exbind_select (JOINT_int_EXBIND2 e' l' j) =
     ((joint_ty_exbind_exbind_option_exbind_select j = 2) => 1 | 0)) /\
   (joint_ty_exbind_exbind_option_exbind_select JOINT_int_exbind_NONE_exbind =
    2) /\
   (!j.
     joint_ty_exbind_exbind_option_exbind_select
       (JOINT_int_exbind_SOME_exbind j) =
     ((joint_ty_exbind_exbind_option_exbind_select j = 1) => 2 | 0))
exbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION (\x. joint_ty_exbind_exbind_option_exbind_select x = 1)
       rep
exbind_REP_ABS
|- (!a. exbind_abs (exbind_rep a) = a) /\
   (!r.
     (\x. joint_ty_exbind_exbind_option_exbind_select x = 1) r =
     exbind_rep (exbind_abs r) =
     r)
exbind_option_exbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION (\x. joint_ty_exbind_exbind_option_exbind_select x = 2)
       rep
exbind_option_exbind_REP_ABS
|- (!a. exbind_option_exbind_abs (exbind_option_exbind_rep a) = a) /\
   (!r.
     (\x. joint_ty_exbind_exbind_option_exbind_select x = 2) r =
     exbind_option_exbind_rep (exbind_option_exbind_abs r) =
     r)
int_EXBIND1_DEF
|- !x1 x2.
     int_EXBIND1 x1 x2 =
     exbind_abs (JOINT_int_EXBIND1 x1 (exbind_option_exbind_rep x2))
int_EXBIND2_DEF
|- !x1 x2 x3.
     int_EXBIND2 x1 x2 x3 =
     exbind_abs (JOINT_int_EXBIND2 x1 x2 (exbind_option_exbind_rep x3))
int_exbind_NONE_exbind_DEF
|- int_exbind_NONE_exbind =
   exbind_option_exbind_abs JOINT_int_exbind_NONE_exbind
int_exbind_SOME_exbind_DEF
|- !x1.
     int_exbind_SOME_exbind x1 =
     exbind_option_exbind_abs (JOINT_int_exbind_SOME_exbind (exbind_rep x1))
int_inj_exbind_option_exbind
|- (int_inj_exbind_option_exbind NONE = int_exbind_NONE_exbind) /\
   (!x0. int_inj_exbind_option_exbind (SOME x0) = int_exbind_SOME_exbind x0)
int_inv_exbind_option_exbind
|- (int_inv_exbind_option_exbind int_exbind_NONE_exbind = NONE) /\
   (!x1. int_inv_exbind_option_exbind (int_exbind_SOME_exbind x1) = SOME x1)
EXBIND1
|- EXBIND1 = (\x0 x1. int_EXBIND1 x0 (int_inj_exbind_option_exbind x1))
EXBIND2
|- EXBIND2 = (\x0 x1 x2. int_EXBIND2 x0 x1 (int_inj_exbind_option_exbind x2))
dist_aux_ftn_exbind_DEF
|- (!x1 x2. dist_aux_ftn_exbind (int_EXBIND1 x1 x2) = 0) /\
   (!x1 x2 x3. dist_aux_ftn_exbind (int_EXBIND2 x1 x2 x3) = 1) /\
   (dist_aux_ftn_exbind_option_exbind int_exbind_NONE_exbind = 2) /\
   (!x1. dist_aux_ftn_exbind_option_exbind (int_exbind_SOME_exbind x1) = 3)
int_EXBIND1_arg1_DEF
|- (!x1 x2. int_EXBIND1_arg1 (int_EXBIND1 x1 x2) = x1) /\
   (!x1 x2 x3. int_EXBIND1_arg1 (int_EXBIND2 x1 x2 x3) = (@x. T))
int_EXBIND1_arg2_DEF
|- (!x1 x2. int_EXBIND1_arg2 (int_EXBIND1 x1 x2) = x2) /\
   (!x1 x2 x3. int_EXBIND1_arg2 (int_EXBIND2 x1 x2 x3) = (@x. T))
int_EXBIND2_arg1_DEF
|- (!x1 x2 x3. int_EXBIND2_arg1 (int_EXBIND2 x1 x2 x3) = x1) /\
   (!x1 x2. int_EXBIND2_arg1 (int_EXBIND1 x1 x2) = (@x. T))
int_EXBIND2_arg2_DEF
|- (!x1 x2 x3. int_EXBIND2_arg2 (int_EXBIND2 x1 x2 x3) = x2) /\
   (!x1 x2. int_EXBIND2_arg2 (int_EXBIND1 x1 x2) = (@x. T))
int_EXBIND2_arg3_DEF
|- (!x1 x2 x3. int_EXBIND2_arg3 (int_EXBIND2 x1 x2 x3) = x3) /\
   (!x1 x2. int_EXBIND2_arg3 (int_EXBIND1 x1 x2) = (@x. T))
int_exbind_SOME_exbind_arg_DEF
|- (!x1. int_exbind_SOME_exbind_arg (int_exbind_SOME_exbind x1) = x1) /\
   (int_exbind_SOME_exbind_arg int_exbind_NONE_exbind = (@x. T))
joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (v = INL one) /\ (LENGTH tl = 0) \/
           (?s. v = INR (INL s)) /\ (LENGTH tl = 0) \/
           (?v. v = INR (INR (INL v))) /\ (LENGTH tl = 0) \/
           (?l. v = INR (INR (INR (INL l)))) /\ (LENGTH tl = 0) \/
           (?l. v = INR (INR (INR (INR (INL l))))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INL one)))))) /\
           (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
           (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
           (LENGTH tl = SUC 0) \/
           (?l. v = INR (INR (INR (INR (INR (INR (INR (INR (INL l))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?l.
             v =
             INR (INR (INR (INR (INR (INR (INR (INR (INR (INL l)))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?v.
             v =
             INR
               (INR
                 (INR (INR (INR (INR (INR (INR (INR (INR (INL v))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
           (LENGTH tl = 0) \/
           (?l.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR (INR (INR (INR (INR (INR (INL l))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INR one)))))))))))))) /\
           (LENGTH tl = SUC 0)))
       rep
joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_ISO_DEF
|- (!a.
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow a) =
     a) /\
   (!r.
     TRP
       (\v tl.
         (v = INL one) /\ (LENGTH tl = 0) \/
         (?s. v = INR (INL s)) /\ (LENGTH tl = 0) \/
         (?v. v = INR (INR (INL v))) /\ (LENGTH tl = 0) \/
         (?l. v = INR (INR (INR (INL l)))) /\ (LENGTH tl = 0) \/
         (?l. v = INR (INR (INR (INR (INL l))))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
         (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
         (LENGTH tl = SUC 0) \/
         (?l. v = INR (INR (INR (INR (INR (INR (INR (INR (INL l))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?l.
           v = INR (INR (INR (INR (INR (INR (INR (INR (INR (INL l)))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?v.
           v =
           INR
             (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL v))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
         (LENGTH tl = 0) \/
         (?l.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR (INR (INR (INR (INR (INR (INR (INL l))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR (INR (INR (INR (INR (INR one)))))))))))))) /\
         (LENGTH tl = SUC 0))
       r =
     REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow r) =
     r)
JOINT_int_WILDCARDatpat_DEF
|- JOINT_int_WILDCARDatpat =
   ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
     (Node (INL one) [])
JOINT_int_SCONatpat_DEF
|- !s.
     JOINT_int_SCONatpat s =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INL s)) [])
JOINT_int_VARatpat_DEF
|- !v'.
     JOINT_int_VARatpat v' =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INL v'))) [])
JOINT_int_CONatpat_DEF
|- !l.
     JOINT_int_CONatpat l =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INL l)))) [])
JOINT_int_EXCONatpat_DEF
|- !l.
     JOINT_int_EXCONatpat l =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INL l))))) [])
JOINT_int_RECORDatpat_DEF
|- !j.
     JOINT_int_RECORDatpat j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INR (INL one))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_PARatpat_DEF
|- !j.
     JOINT_int_PARatpat j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INR (INR (INL one)))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_ATPATpat_DEF
|- !j.
     JOINT_int_ATPATpat j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INR (INR (INR (INL one))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_CONpat_DEF
|- !l' j.
     JOINT_int_CONpat l' j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INL l')))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_EXCONpat_DEF
|- !l' j.
     JOINT_int_EXCONpat l' j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL l'))))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_LAYEREDpat_DEF
|- !v' j.
     JOINT_int_LAYEREDpat v' j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node
          (INR (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL v')))))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
JOINT_int_DOTDOTDOT_DEF
|- JOINT_int_DOTDOTDOT =
   ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
     (Node
        (INR
          (INR
            (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))
       [])
JOINT_int_PATROW_DEF
|- !l' j1 j2.
     JOINT_int_PATROW l' j1 j2 =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR (INR (INR (INR (INR (INR (INR (INR (INL l')))))))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j1;
          REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j2])
JOINT_int_atpat_pat_patrow_NONE_patrow_DEF
|- JOINT_int_atpat_pat_patrow_NONE_patrow =
   ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))))
       [])
JOINT_int_atpat_pat_patrow_SOME_patrow_DEF
|- !j.
     JOINT_int_atpat_pat_patrow_SOME_patrow j =
     ABS_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INR one))))))))))))))
         [REP_joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow j])
joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select_DEF
|- (joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
      JOINT_int_WILDCARDatpat =
    1) /\
   (!s.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_SCONatpat s) =
     1) /\
   (!v'.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_VARatpat v') =
     1) /\
   (!l.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_CONatpat l) =
     1) /\
   (!l.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_EXCONatpat l) =
     1) /\
   (!j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_RECORDatpat j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 4)
      => 1
      | 0)) /\
   (!j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_PARatpat j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 2)
      => 1
      | 0)) /\
   (!j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_ATPATpat j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 1)
      => 2
      | 0)) /\
   (!l' j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_CONpat l' j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 1)
      => 2
      | 0)) /\
   (!l' j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_EXCONpat l' j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 1)
      => 2
      | 0)) /\
   (!v' j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_LAYEREDpat v' j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 2)
      => 2
      | 0)) /\
   (joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
      JOINT_int_DOTDOTDOT =
    3) /\
   (!l' j1 j2.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_PATROW l' j1 j2) =
     (((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j1 =
        2) /\
       (joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j2 =
        4))
      => 3
      | 0)) /\
   (joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
      JOINT_int_atpat_pat_patrow_NONE_patrow =
    4) /\
   (!j.
     joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select
       (JOINT_int_atpat_pat_patrow_SOME_patrow j) =
     ((joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select j = 3)
      => 4
      | 0))
patrow_option_atpat_pat_patrow_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x =
         4)
       rep
patrow_option_atpat_pat_patrow_REP_ABS
|- (!a.
     patrow_option_atpat_pat_patrow_abs
       (patrow_option_atpat_pat_patrow_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x = 4)
       r =
     patrow_option_atpat_pat_patrow_rep
       (patrow_option_atpat_pat_patrow_abs r) =
     r)
patrow_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x =
         3)
       rep
patrow_REP_ABS
|- (!a. patrow_abs (patrow_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x = 3)
       r =
     patrow_rep (patrow_abs r) =
     r)
pat_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x =
         2)
       rep
pat_REP_ABS
|- (!a. pat_abs (pat_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x = 2)
       r =
     pat_rep (pat_abs r) =
     r)
atpat_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x =
         1)
       rep
atpat_REP_ABS
|- (!a. atpat_abs (atpat_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_select x = 1)
       r =
     atpat_rep (atpat_abs r) =
     r)
int_WILDCARDatpat_DEF
|- int_WILDCARDatpat = atpat_abs JOINT_int_WILDCARDatpat
int_SCONatpat_DEF
|- !x1. int_SCONatpat x1 = atpat_abs (JOINT_int_SCONatpat x1)
int_VARatpat_DEF
|- !x1. int_VARatpat x1 = atpat_abs (JOINT_int_VARatpat x1)
int_CONatpat_DEF
|- !x1. int_CONatpat x1 = atpat_abs (JOINT_int_CONatpat x1)
int_EXCONatpat_DEF
|- !x1. int_EXCONatpat x1 = atpat_abs (JOINT_int_EXCONatpat x1)
int_RECORDatpat_DEF
|- !x1.
     int_RECORDatpat x1 =
     atpat_abs (JOINT_int_RECORDatpat (patrow_option_atpat_pat_patrow_rep x1))
int_PARatpat_DEF
|- !x1. int_PARatpat x1 = atpat_abs (JOINT_int_PARatpat (pat_rep x1))
int_ATPATpat_DEF
|- !x1. int_ATPATpat x1 = pat_abs (JOINT_int_ATPATpat (atpat_rep x1))
int_CONpat_DEF
|- !x1 x2. int_CONpat x1 x2 = pat_abs (JOINT_int_CONpat x1 (atpat_rep x2))
int_EXCONpat_DEF
|- !x1 x2. int_EXCONpat x1 x2 = pat_abs (JOINT_int_EXCONpat x1 (atpat_rep x2))
int_LAYEREDpat_DEF
|- !x1 x2.
     int_LAYEREDpat x1 x2 = pat_abs (JOINT_int_LAYEREDpat x1 (pat_rep x2))
int_DOTDOTDOT_DEF
|- int_DOTDOTDOT = patrow_abs JOINT_int_DOTDOTDOT
int_PATROW_DEF
|- !x1 x2 x3.
     int_PATROW x1 x2 x3 =
     patrow_abs
       (JOINT_int_PATROW x1 (pat_rep x2)
         (patrow_option_atpat_pat_patrow_rep x3))
int_atpat_pat_patrow_NONE_patrow_DEF
|- int_atpat_pat_patrow_NONE_patrow =
   patrow_option_atpat_pat_patrow_abs JOINT_int_atpat_pat_patrow_NONE_patrow
int_atpat_pat_patrow_SOME_patrow_DEF
|- !x1.
     int_atpat_pat_patrow_SOME_patrow x1 =
     patrow_option_atpat_pat_patrow_abs
       (JOINT_int_atpat_pat_patrow_SOME_patrow (patrow_rep x1))
ATPATpat
|- ATPATpat = (\x0. int_ATPATpat x0)
CONpat
|- CONpat = (\x0 x1. int_CONpat x0 x1)
EXCONpat
|- EXCONpat = (\x0 x1. int_EXCONpat x0 x1)
LAYEREDpat
|- LAYEREDpat = (\x0 x1. int_LAYEREDpat x0 x1)
int_inj_patrow_option_atpat_pat_patrow
|- (int_inj_patrow_option_atpat_pat_patrow NONE =
    int_atpat_pat_patrow_NONE_patrow) /\
   (!x0.
     int_inj_patrow_option_atpat_pat_patrow (SOME x0) =
     int_atpat_pat_patrow_SOME_patrow x0)
int_inv_patrow_option_atpat_pat_patrow
|- (int_inv_patrow_option_atpat_pat_patrow int_atpat_pat_patrow_NONE_patrow =
    NONE) /\
   (!x1.
     int_inv_patrow_option_atpat_pat_patrow
       (int_atpat_pat_patrow_SOME_patrow x1) =
     SOME x1)
WILDCARDatpat
|- WILDCARDatpat = int_WILDCARDatpat
SCONatpat
|- SCONatpat = (\x0. int_SCONatpat x0)
VARatpat
|- VARatpat = (\x0. int_VARatpat x0)
CONatpat
|- CONatpat = (\x0. int_CONatpat x0)
EXCONatpat
|- EXCONatpat = (\x0. int_EXCONatpat x0)
RECORDatpat
|- RECORDatpat =
   (\x0. int_RECORDatpat (int_inj_patrow_option_atpat_pat_patrow x0))
PARatpat
|- PARatpat = (\x0. int_PARatpat x0)
DOTDOTDOT
|- DOTDOTDOT = int_DOTDOTDOT
PATROW
|- PATROW =
   (\x0 x1 x2. int_PATROW x0 x1 (int_inj_patrow_option_atpat_pat_patrow x2))
dist_aux_ftn_atpat_DEF
|- (dist_aux_ftn_atpat int_WILDCARDatpat = 0) /\
   (!x1. dist_aux_ftn_atpat (int_SCONatpat x1) = 1) /\
   (!x1. dist_aux_ftn_atpat (int_VARatpat x1) = 2) /\
   (!x1. dist_aux_ftn_atpat (int_CONatpat x1) = 3) /\
   (!x1. dist_aux_ftn_atpat (int_EXCONatpat x1) = 4) /\
   (!x1. dist_aux_ftn_atpat (int_RECORDatpat x1) = 5) /\
   (!x1. dist_aux_ftn_atpat (int_PARatpat x1) = 6) /\
   (!x1. dist_aux_ftn_pat (int_ATPATpat x1) = 7) /\
   (!x1 x2. dist_aux_ftn_pat (int_CONpat x1 x2) = 8) /\
   (!x1 x2. dist_aux_ftn_pat (int_EXCONpat x1 x2) = 9) /\
   (!x1 x2. dist_aux_ftn_pat (int_LAYEREDpat x1 x2) = 10) /\
   (dist_aux_ftn_patrow int_DOTDOTDOT = 11) /\
   (!x1 x2 x3. dist_aux_ftn_patrow (int_PATROW x1 x2 x3) = 12) /\
   (dist_aux_ftn_patrow_option_atpat_pat_patrow
      int_atpat_pat_patrow_NONE_patrow =
    13) /\
   (!x1.
     dist_aux_ftn_patrow_option_atpat_pat_patrow
       (int_atpat_pat_patrow_SOME_patrow x1) =
     14)
int_SCONatpat_arg_DEF
|- (!x1. int_SCONatpat_arg (int_SCONatpat x1) = x1) /\
   (int_SCONatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_SCONatpat_arg (int_VARatpat x1) = (@x. T)) /\
   (!x1. int_SCONatpat_arg (int_CONatpat x1) = (@x. T)) /\
   (!x1. int_SCONatpat_arg (int_EXCONatpat x1) = (@x. T)) /\
   (!x1. int_SCONatpat_arg (int_RECORDatpat x1) = (@x. T)) /\
   (!x1. int_SCONatpat_arg (int_PARatpat x1) = (@x. T))
int_VARatpat_arg_DEF
|- (!x1. int_VARatpat_arg (int_VARatpat x1) = x1) /\
   (int_VARatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_VARatpat_arg (int_SCONatpat x1) = (@x. T)) /\
   (!x1. int_VARatpat_arg (int_CONatpat x1) = (@x. T)) /\
   (!x1. int_VARatpat_arg (int_EXCONatpat x1) = (@x. T)) /\
   (!x1. int_VARatpat_arg (int_RECORDatpat x1) = (@x. T)) /\
   (!x1. int_VARatpat_arg (int_PARatpat x1) = (@x. T))
int_CONatpat_arg_DEF
|- (!x1. int_CONatpat_arg (int_CONatpat x1) = x1) /\
   (int_CONatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_CONatpat_arg (int_SCONatpat x1) = (@x. T)) /\
   (!x1. int_CONatpat_arg (int_VARatpat x1) = (@x. T)) /\
   (!x1. int_CONatpat_arg (int_EXCONatpat x1) = (@x. T)) /\
   (!x1. int_CONatpat_arg (int_RECORDatpat x1) = (@x. T)) /\
   (!x1. int_CONatpat_arg (int_PARatpat x1) = (@x. T))
int_EXCONatpat_arg_DEF
|- (!x1. int_EXCONatpat_arg (int_EXCONatpat x1) = x1) /\
   (int_EXCONatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_EXCONatpat_arg (int_SCONatpat x1) = (@x. T)) /\
   (!x1. int_EXCONatpat_arg (int_VARatpat x1) = (@x. T)) /\
   (!x1. int_EXCONatpat_arg (int_CONatpat x1) = (@x. T)) /\
   (!x1. int_EXCONatpat_arg (int_RECORDatpat x1) = (@x. T)) /\
   (!x1. int_EXCONatpat_arg (int_PARatpat x1) = (@x. T))
int_RECORDatpat_arg_DEF
|- (!x1. int_RECORDatpat_arg (int_RECORDatpat x1) = x1) /\
   (int_RECORDatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_RECORDatpat_arg (int_SCONatpat x1) = (@x. T)) /\
   (!x1. int_RECORDatpat_arg (int_VARatpat x1) = (@x. T)) /\
   (!x1. int_RECORDatpat_arg (int_CONatpat x1) = (@x. T)) /\
   (!x1. int_RECORDatpat_arg (int_EXCONatpat x1) = (@x. T)) /\
   (!x1. int_RECORDatpat_arg (int_PARatpat x1) = (@x. T))
int_PARatpat_arg_DEF
|- (!x1. int_PARatpat_arg (int_PARatpat x1) = x1) /\
   (int_PARatpat_arg int_WILDCARDatpat = (@x. T)) /\
   (!x1. int_PARatpat_arg (int_SCONatpat x1) = (@x. T)) /\
   (!x1. int_PARatpat_arg (int_VARatpat x1) = (@x. T)) /\
   (!x1. int_PARatpat_arg (int_CONatpat x1) = (@x. T)) /\
   (!x1. int_PARatpat_arg (int_EXCONatpat x1) = (@x. T)) /\
   (!x1. int_PARatpat_arg (int_RECORDatpat x1) = (@x. T))
int_ATPATpat_arg_DEF
|- (!x1. int_ATPATpat_arg (int_ATPATpat x1) = x1) /\
   (!x1 x2. int_ATPATpat_arg (int_CONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_ATPATpat_arg (int_EXCONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_ATPATpat_arg (int_LAYEREDpat x1 x2) = (@x. T))
int_CONpat_arg1_DEF
|- (!x1 x2. int_CONpat_arg1 (int_CONpat x1 x2) = x1) /\
   (!x1. int_CONpat_arg1 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_CONpat_arg1 (int_EXCONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_CONpat_arg1 (int_LAYEREDpat x1 x2) = (@x. T))
int_CONpat_arg2_DEF
|- (!x1 x2. int_CONpat_arg2 (int_CONpat x1 x2) = x2) /\
   (!x1. int_CONpat_arg2 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_CONpat_arg2 (int_EXCONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_CONpat_arg2 (int_LAYEREDpat x1 x2) = (@x. T))
int_EXCONpat_arg1_DEF
|- (!x1 x2. int_EXCONpat_arg1 (int_EXCONpat x1 x2) = x1) /\
   (!x1. int_EXCONpat_arg1 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_EXCONpat_arg1 (int_CONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_EXCONpat_arg1 (int_LAYEREDpat x1 x2) = (@x. T))
int_EXCONpat_arg2_DEF
|- (!x1 x2. int_EXCONpat_arg2 (int_EXCONpat x1 x2) = x2) /\
   (!x1. int_EXCONpat_arg2 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_EXCONpat_arg2 (int_CONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_EXCONpat_arg2 (int_LAYEREDpat x1 x2) = (@x. T))
int_LAYEREDpat_arg1_DEF
|- (!x1 x2. int_LAYEREDpat_arg1 (int_LAYEREDpat x1 x2) = x1) /\
   (!x1. int_LAYEREDpat_arg1 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_LAYEREDpat_arg1 (int_CONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_LAYEREDpat_arg1 (int_EXCONpat x1 x2) = (@x. T))
int_LAYEREDpat_arg2_DEF
|- (!x1 x2. int_LAYEREDpat_arg2 (int_LAYEREDpat x1 x2) = x2) /\
   (!x1. int_LAYEREDpat_arg2 (int_ATPATpat x1) = (@x. T)) /\
   (!x1 x2. int_LAYEREDpat_arg2 (int_CONpat x1 x2) = (@x. T)) /\
   (!x1 x2. int_LAYEREDpat_arg2 (int_EXCONpat x1 x2) = (@x. T))
int_PATROW_arg1_DEF
|- (!x1 x2 x3. int_PATROW_arg1 (int_PATROW x1 x2 x3) = x1) /\
   (int_PATROW_arg1 int_DOTDOTDOT = (@x. T))
int_PATROW_arg2_DEF
|- (!x1 x2 x3. int_PATROW_arg2 (int_PATROW x1 x2 x3) = x2) /\
   (int_PATROW_arg2 int_DOTDOTDOT = (@x. T))
int_PATROW_arg3_DEF
|- (!x1 x2 x3. int_PATROW_arg3 (int_PATROW x1 x2 x3) = x3) /\
   (int_PATROW_arg3 int_DOTDOTDOT = (@x. T))
int_atpat_pat_patrow_SOME_patrow_arg_DEF
|- (!x1.
     int_atpat_pat_patrow_SOME_patrow_arg
       (int_atpat_pat_patrow_SOME_patrow x1) =
     x1) /\
   (int_atpat_pat_patrow_SOME_patrow_arg int_atpat_pat_patrow_NONE_patrow =
    (@x. T))
joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?s. v = INL s) /\ (LENGTH tl = 0) \/
           (?l. v = INR (INL l)) /\ (LENGTH tl = 0) \/
           (?l. v = INR (INR (INL l))) /\ (LENGTH tl = 0) \/
           (?l. v = INR (INR (INR (INL l)))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INL one))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v = INR (INR (INR (INR (INR (INL one)))))) /\
           (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
           (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
           (LENGTH tl = SUC 0) \/
           (?e. v = INR (INR (INR (INR (INR (INR (INR (INR (INL e))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (?n.
             v =
             INR
               (INR
                 (INR (INR (INR (INR (INR (INR (INR (INR (INL n))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR (INR (INR (INR (INL one))))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR (INR (INR (INL one)))))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR (INR (INL one))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR (INL one)))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?l.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INL l))))))))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INL
                                                    one)))))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INL
                                                      one))))))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INL
                                                        one)))))))))))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INL
                                                          one))))))))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INL
                                                            one)))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?p.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INR
                                                       (INR
                                                         (INR
                                                           (INR
                                                             (INL
                                                               p))))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?p.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INR
                                                       (INR
                                                         (INR
                                                           (INR
                                                             (INR
                                                               (INL
                                                                 p)))))))))))))))))))))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INL
                                                                  one))))))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INR
                                                                  (INL
                                                                    one)))))))))))))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INR
                                                                  (INR
                                                                    one)))))))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0)))
       rep
joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_ISO_DEF
|- (!a.
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
         a) =
     a) /\
   (!r.
     TRP
       (\v tl.
         (?s. v = INL s) /\ (LENGTH tl = 0) \/
         (?l. v = INR (INL l)) /\ (LENGTH tl = 0) \/
         (?l. v = INR (INR (INL l))) /\ (LENGTH tl = 0) \/
         (?l. v = INR (INR (INR (INL l)))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INL one))))) /\ (LENGTH tl = SUC (SUC 0)) \/
         (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
         (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
         (LENGTH tl = SUC 0) \/
         (?e. v = INR (INR (INR (INR (INR (INR (INR (INR (INL e))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (?n.
           v =
           INR
             (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL n))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR (INR (INR (INR (INR (INR (INL one))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR (INR (INR (INR (INL one))))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR (INR (INR (INL one)))))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR (INR (INL one))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR (INL one)))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?l.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR (INL l))))))))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INL
                                                  one)))))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INL
                                                    one))))))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INL
                                                      one)))))))))))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INL
                                                        one))))))))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INL
                                                          one)))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?p.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INR
                                                       (INR
                                                         (INR
                                                           (INL
                                                             p))))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?p.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INR
                                                       (INR
                                                         (INR
                                                           (INR
                                                             (INL
                                                               p)))))))))))))))))))))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INL
                                                                one))))))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INL
                                                                  one)))))))))))))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INR
                                                                  one)))))))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0))
       r =
     REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
         r) =
     r)
JOINT_int_SCONatexp_DEF
|- !s.
     JOINT_int_SCONatexp s =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INL s) [])
JOINT_int_VARatexp_DEF
|- !l.
     JOINT_int_VARatexp l =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INL l)) [])
JOINT_int_CONatexp_DEF
|- !l.
     JOINT_int_CONatexp l =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INL l))) [])
JOINT_int_EXCONatexp_DEF
|- !l.
     JOINT_int_EXCONatexp l =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INL l)))) [])
JOINT_int_LETatexp_DEF
|- !j1 j2.
     JOINT_int_LETatexp j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INL one)))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_PARatexp_DEF
|- !j.
     JOINT_int_PARatexp j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INR (INL one))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_RECORDatexp_DEF
|- !j.
     JOINT_int_RECORDatexp j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INR (INR (INL one)))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_VALdec_DEF
|- !j.
     JOINT_int_VALdec j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INR (INR (INR (INL one))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_EXCEPTdec_DEF
|- !e.
     JOINT_int_EXCEPTdec e =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INL e))))))))) [])
JOINT_int_LOCALdec_DEF
|- !j1 j2.
     JOINT_int_LOCALdec j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_OPENdec_DEF
|- !n.
     JOINT_int_OPENdec n =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL n)))))))))))
         [])
JOINT_int_SEQdec_DEF
|- !j1 j2.
     JOINT_int_SEQdec j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_EMPTYdec_DEF
|- JOINT_int_EMPTYdec =
   ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))))
       [])
JOINT_int_ATEXPexp_DEF
|- !j.
     JOINT_int_ATEXPexp j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_APPexp_DEF
|- !j1 j2.
     JOINT_int_APPexp j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INL one)))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_HANDLEexp_DEF
|- !j1 j2.
     JOINT_int_HANDLEexp j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR (INR (INR (INR (INL one))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_RAISEexp_DEF
|- !j.
     JOINT_int_RAISEexp j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR (INR (INR (INL one)))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_FNexp_DEF
|- !j.
     JOINT_int_FNexp j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR (INR (INL one))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_EXPROW_DEF
|- !l' j1 j2.
     JOINT_int_EXPROW l' j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR (INR (INL l')))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_DEF
|- JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
   ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR (INL one))))))))))))))))))))
       [])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_DEF
|- !j.
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INL
                                                    one)))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_MATCH_DEF
|- !j1 j2.
     JOINT_int_MATCH j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INL
                                                      one))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_DEF
|- JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
   ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INL
                                                      one)))))))))))))))))))))))
       [])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_DEF
|- !j.
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INL
                                                          one))))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_MRULE_DEF
|- !p j.
     JOINT_int_MRULE p j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INL
                                                            p)))))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_PLAINvalbind_DEF
|- !p j1 j2.
     JOINT_int_PLAINvalbind p j1 j2 =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INL
                                                              p))))))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j1;
          REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j2])
JOINT_int_RECvalbind_DEF
|- !j.
     JOINT_int_RECvalbind j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INL
                                                                one)))))))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_DEF
|- JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
   ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INL
                                                                one))))))))))))))))))))))))))))
       [])
JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_DEF
|- !j.
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind j =
     ABS_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INR
                                                      (INR
                                                        (INR
                                                          (INR
                                                            (INR
                                                              (INR
                                                                (INR
                                                                  one))))))))))))))))))))))))))))
         [REP_joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
            j])
joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select_DEF
|- (!s.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_SCONatexp s) =
     1) /\
   (!l.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_VARatexp l) =
     1) /\
   (!l.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_CONatexp l) =
     1) /\
   (!l.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_EXCONatexp l) =
     1) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_LETatexp j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        2) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        3))
      => 1
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_PARatexp j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       3)
      => 1
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_RECORDatexp j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       5)
      => 1
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_VALdec j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       9)
      => 2
      | 0)) /\
   (!e.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_EXCEPTdec e) =
     2) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_LOCALdec j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        2) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        2))
      => 2
      | 0)) /\
   (!n.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_OPENdec n) =
     2) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_SEQdec j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        2) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        2))
      => 2
      | 0)) /\
   (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
      JOINT_int_EMPTYdec =
    2) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_ATEXPexp j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       1)
      => 3
      | 0)) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_APPexp j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        3) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        1))
      => 3
      | 0)) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_HANDLEexp j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        3) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        6))
      => 3
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_RAISEexp j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       3)
      => 3
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_FNexp j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       6)
      => 3
      | 0)) /\
   (!l' j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_EXPROW l' j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        3) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        5))
      => 4
      | 0)) /\
   (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
      JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
    5) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       4)
      => 5
      | 0)) /\
   (!j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_MATCH j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        8) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        7))
      => 6
      | 0)) /\
   (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
      JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
    7) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       6)
      => 7
      | 0)) /\
   (!p j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_MRULE p j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       3)
      => 8
      | 0)) /\
   (!p j1 j2.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_PLAINvalbind p j1 j2) =
     (((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j1 =
        3) /\
       (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
          j2 =
        10))
      => 9
      | 0)) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_RECvalbind j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       9)
      => 9
      | 0)) /\
   (joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
      JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
    10) /\
   (!j.
     joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind j) =
     ((joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         j =
       9)
      => 10
      | 0))
exprow_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         4)
       rep
exprow_REP_ABS
|- (!a. exprow_abs (exprow_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       4)
       r =
     exprow_rep (exprow_abs r) =
     r)
match_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         6)
       rep
match_REP_ABS
|- (!a. match_abs (match_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       6)
       r =
     match_rep (match_abs r) =
     r)
valbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         9)
       rep
valbind_REP_ABS
|- (!a. valbind_abs (valbind_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       9)
       r =
     valbind_rep (valbind_abs r) =
     r)
valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         10)
       rep
valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_REP_ABS
|- (!a.
     valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       10)
       r =
     valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_rep
       (valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_abs r) =
     r)
mrule_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         8)
       rep
mrule_REP_ABS
|- (!a. mrule_abs (mrule_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       8)
       r =
     mrule_rep (mrule_abs r) =
     r)
match_option_atexp_dec_exp_exprow_match_mrule_valbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         7)
       rep
match_option_atexp_dec_exp_exprow_match_mrule_valbind_REP_ABS
|- (!a.
     match_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (match_option_atexp_dec_exp_exprow_match_mrule_valbind_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       7)
       r =
     match_option_atexp_dec_exp_exprow_match_mrule_valbind_rep
       (match_option_atexp_dec_exp_exprow_match_mrule_valbind_abs r) =
     r)
exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         5)
       rep
exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_REP_ABS
|- (!a.
     exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       5)
       r =
     exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_rep
       (exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_abs r) =
     r)
exp_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         3)
       rep
exp_REP_ABS
|- (!a. exp_abs (exp_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       3)
       r =
     exp_rep (exp_abs r) =
     r)
dec_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         2)
       rep
dec_REP_ABS
|- (!a. dec_abs (dec_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       2)
       r =
     dec_rep (dec_abs r) =
     r)
atexp_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
           x =
         1)
       rep
atexp_REP_ABS
|- (!a. atexp_abs (atexp_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_select
         x =
       1)
       r =
     atexp_rep (atexp_abs r) =
     r)
int_SCONatexp_DEF
|- !x1. int_SCONatexp x1 = atexp_abs (JOINT_int_SCONatexp x1)
int_VARatexp_DEF
|- !x1. int_VARatexp x1 = atexp_abs (JOINT_int_VARatexp x1)
int_CONatexp_DEF
|- !x1. int_CONatexp x1 = atexp_abs (JOINT_int_CONatexp x1)
int_EXCONatexp_DEF
|- !x1. int_EXCONatexp x1 = atexp_abs (JOINT_int_EXCONatexp x1)
int_LETatexp_DEF
|- !x1 x2.
     int_LETatexp x1 x2 =
     atexp_abs (JOINT_int_LETatexp (dec_rep x1) (exp_rep x2))
int_PARatexp_DEF
|- !x1. int_PARatexp x1 = atexp_abs (JOINT_int_PARatexp (exp_rep x1))
int_RECORDatexp_DEF
|- !x1.
     int_RECORDatexp x1 =
     atexp_abs
       (JOINT_int_RECORDatexp
         (exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_rep x1))
int_VALdec_DEF
|- !x1. int_VALdec x1 = dec_abs (JOINT_int_VALdec (valbind_rep x1))
int_EXCEPTdec_DEF
|- !x1. int_EXCEPTdec x1 = dec_abs (JOINT_int_EXCEPTdec x1)
int_LOCALdec_DEF
|- !x1 x2.
     int_LOCALdec x1 x2 =
     dec_abs (JOINT_int_LOCALdec (dec_rep x1) (dec_rep x2))
int_OPENdec_DEF
|- !x1. int_OPENdec x1 = dec_abs (JOINT_int_OPENdec x1)
int_SEQdec_DEF
|- !x1 x2.
     int_SEQdec x1 x2 = dec_abs (JOINT_int_SEQdec (dec_rep x1) (dec_rep x2))
int_EMPTYdec_DEF
|- int_EMPTYdec = dec_abs JOINT_int_EMPTYdec
int_ATEXPexp_DEF
|- !x1. int_ATEXPexp x1 = exp_abs (JOINT_int_ATEXPexp (atexp_rep x1))
int_APPexp_DEF
|- !x1 x2.
     int_APPexp x1 x2 = exp_abs (JOINT_int_APPexp (exp_rep x1) (atexp_rep x2))
int_HANDLEexp_DEF
|- !x1 x2.
     int_HANDLEexp x1 x2 =
     exp_abs (JOINT_int_HANDLEexp (exp_rep x1) (match_rep x2))
int_RAISEexp_DEF
|- !x1. int_RAISEexp x1 = exp_abs (JOINT_int_RAISEexp (exp_rep x1))
int_FNexp_DEF
|- !x1. int_FNexp x1 = exp_abs (JOINT_int_FNexp (match_rep x1))
int_EXPROW_DEF
|- !x1 x2 x3.
     int_EXPROW x1 x2 x3 =
     exprow_abs
       (JOINT_int_EXPROW x1 (exp_rep x2)
         (exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_rep x3))
int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_DEF
|- int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
   exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_DEF
|- !x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow x1 =
     exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow
         (exprow_rep x1))
int_MATCH_DEF
|- !x1 x2.
     int_MATCH x1 x2 =
     match_abs
       (JOINT_int_MATCH (mrule_rep x1)
         (match_option_atexp_dec_exp_exprow_match_mrule_valbind_rep x2))
int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_DEF
|- int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
   match_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_DEF
|- !x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match x1 =
     match_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match
         (match_rep x1))
int_MRULE_DEF
|- !x1 x2. int_MRULE x1 x2 = mrule_abs (JOINT_int_MRULE x1 (exp_rep x2))
int_PLAINvalbind_DEF
|- !x1 x2 x3.
     int_PLAINvalbind x1 x2 x3 =
     valbind_abs
       (JOINT_int_PLAINvalbind x1 (exp_rep x2)
         (valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_rep x3))
int_RECvalbind_DEF
|- !x1.
     int_RECvalbind x1 = valbind_abs (JOINT_int_RECvalbind (valbind_rep x1))
int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_DEF
|- int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
   valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
     JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_DEF
|- !x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind x1 =
     valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_abs
       (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind
         (valbind_rep x1))
VALdec
|- VALdec = (\x0. int_VALdec x0)
EXCEPTdec
|- EXCEPTdec = (\x0. int_EXCEPTdec x0)
LOCALdec
|- LOCALdec = (\x0 x1. int_LOCALdec x0 x1)
OPENdec
|- OPENdec = (\x0. int_OPENdec x0)
SEQdec
|- SEQdec = (\x0 x1. int_SEQdec x0 x1)
EMPTYdec
|- EMPTYdec = int_EMPTYdec
ATEXPexp
|- ATEXPexp = (\x0. int_ATEXPexp x0)
APPexp
|- APPexp = (\x0 x1. int_APPexp x0 x1)
HANDLEexp
|- HANDLEexp = (\x0 x1. int_HANDLEexp x0 x1)
RAISEexp
|- RAISEexp = (\x0. int_RAISEexp x0)
FNexp
|- FNexp = (\x0. int_FNexp x0)
int_inj_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inj_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind NONE =
    int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow) /\
   (!x0.
     int_inj_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
       (SOME x0) =
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow x0)
int_inv_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inv_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
    NONE) /\
   (!x1.
     int_inv_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow x1) =
     SOME x1)
SCONatexp
|- SCONatexp = (\x0. int_SCONatexp x0)
VARatexp
|- VARatexp = (\x0. int_VARatexp x0)
CONatexp
|- CONatexp = (\x0. int_CONatexp x0)
EXCONatexp
|- EXCONatexp = (\x0. int_EXCONatexp x0)
LETatexp
|- LETatexp = (\x0 x1. int_LETatexp x0 x1)
PARatexp
|- PARatexp = (\x0. int_PARatexp x0)
RECORDatexp
|- RECORDatexp =
   (\x0.
     int_RECORDatexp
       (int_inj_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind x0))
EXPROW
|- EXPROW =
   (\x0 x1 x2.
     int_EXPROW x0 x1
       (int_inj_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind x2))
int_inj_match_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inj_match_option_atexp_dec_exp_exprow_match_mrule_valbind NONE =
    int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match) /\
   (!x0.
     int_inj_match_option_atexp_dec_exp_exprow_match_mrule_valbind (SOME x0) =
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match x0)
int_inv_match_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inv_match_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
    NONE) /\
   (!x1.
     int_inv_match_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match x1) =
     SOME x1)
MATCH
|- MATCH =
   (\x0 x1.
     int_MATCH x0
       (int_inj_match_option_atexp_dec_exp_exprow_match_mrule_valbind x1))
MRULE
|- MRULE = (\x0 x1. int_MRULE x0 x1)
int_inj_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inj_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind NONE =
    int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind) /\
   (!x0.
     int_inj_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (SOME x0) =
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind x0)
int_inv_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
|- (int_inv_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
    NONE) /\
   (!x1.
     int_inv_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind x1) =
     SOME x1)
PLAINvalbind
|- PLAINvalbind =
   (\x0 x1 x2.
     int_PLAINvalbind x0 x1
       (int_inj_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind x2))
RECvalbind
|- RECvalbind = (\x0. int_RECvalbind x0)
dist_aux_ftn_atexp_DEF
|- (!x1. dist_aux_ftn_atexp (int_SCONatexp x1) = 0) /\
   (!x1. dist_aux_ftn_atexp (int_VARatexp x1) = 1) /\
   (!x1. dist_aux_ftn_atexp (int_CONatexp x1) = 2) /\
   (!x1. dist_aux_ftn_atexp (int_EXCONatexp x1) = 3) /\
   (!x1 x2. dist_aux_ftn_atexp (int_LETatexp x1 x2) = 4) /\
   (!x1. dist_aux_ftn_atexp (int_PARatexp x1) = 5) /\
   (!x1. dist_aux_ftn_atexp (int_RECORDatexp x1) = 6) /\
   (!x1. dist_aux_ftn_dec (int_VALdec x1) = 7) /\
   (!x1. dist_aux_ftn_dec (int_EXCEPTdec x1) = 8) /\
   (!x1 x2. dist_aux_ftn_dec (int_LOCALdec x1 x2) = 9) /\
   (!x1. dist_aux_ftn_dec (int_OPENdec x1) = 10) /\
   (!x1 x2. dist_aux_ftn_dec (int_SEQdec x1 x2) = 11) /\
   (dist_aux_ftn_dec int_EMPTYdec = 12) /\
   (!x1. dist_aux_ftn_exp (int_ATEXPexp x1) = 13) /\
   (!x1 x2. dist_aux_ftn_exp (int_APPexp x1 x2) = 14) /\
   (!x1 x2. dist_aux_ftn_exp (int_HANDLEexp x1 x2) = 15) /\
   (!x1. dist_aux_ftn_exp (int_RAISEexp x1) = 16) /\
   (!x1. dist_aux_ftn_exp (int_FNexp x1) = 17) /\
   (!x1 x2 x3. dist_aux_ftn_exprow (int_EXPROW x1 x2 x3) = 18) /\
   (dist_aux_ftn_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
    19) /\
   (!x1.
     dist_aux_ftn_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow x1) =
     20) /\
   (!x1 x2. dist_aux_ftn_match (int_MATCH x1 x2) = 21) /\
   (dist_aux_ftn_match_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
    22) /\
   (!x1.
     dist_aux_ftn_match_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match x1) =
     23) /\
   (!x1 x2. dist_aux_ftn_mrule (int_MRULE x1 x2) = 24) /\
   (!x1 x2 x3. dist_aux_ftn_valbind (int_PLAINvalbind x1 x2 x3) = 25) /\
   (!x1. dist_aux_ftn_valbind (int_RECvalbind x1) = 26) /\
   (dist_aux_ftn_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
    27) /\
   (!x1.
     dist_aux_ftn_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind x1) =
     28)
int_SCONatexp_arg_DEF
|- (!x1. int_SCONatexp_arg (int_SCONatexp x1) = x1) /\
   (!x1. int_SCONatexp_arg (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_SCONatexp_arg (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_SCONatexp_arg (int_EXCONatexp x1) = (@x. T)) /\
   (!x1 x2. int_SCONatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_SCONatexp_arg (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_SCONatexp_arg (int_RECORDatexp x1) = (@x. T))
int_VARatexp_arg_DEF
|- (!x1. int_VARatexp_arg (int_VARatexp x1) = x1) /\
   (!x1. int_VARatexp_arg (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_VARatexp_arg (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_VARatexp_arg (int_EXCONatexp x1) = (@x. T)) /\
   (!x1 x2. int_VARatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_VARatexp_arg (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_VARatexp_arg (int_RECORDatexp x1) = (@x. T))
int_CONatexp_arg_DEF
|- (!x1. int_CONatexp_arg (int_CONatexp x1) = x1) /\
   (!x1. int_CONatexp_arg (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_CONatexp_arg (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_CONatexp_arg (int_EXCONatexp x1) = (@x. T)) /\
   (!x1 x2. int_CONatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_CONatexp_arg (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_CONatexp_arg (int_RECORDatexp x1) = (@x. T))
int_EXCONatexp_arg_DEF
|- (!x1. int_EXCONatexp_arg (int_EXCONatexp x1) = x1) /\
   (!x1. int_EXCONatexp_arg (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_EXCONatexp_arg (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_EXCONatexp_arg (int_CONatexp x1) = (@x. T)) /\
   (!x1 x2. int_EXCONatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_EXCONatexp_arg (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_EXCONatexp_arg (int_RECORDatexp x1) = (@x. T))
int_LETatexp_arg1_DEF
|- (!x1 x2. int_LETatexp_arg1 (int_LETatexp x1 x2) = x1) /\
   (!x1. int_LETatexp_arg1 (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg1 (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg1 (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg1 (int_EXCONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg1 (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg1 (int_RECORDatexp x1) = (@x. T))
int_LETatexp_arg2_DEF
|- (!x1 x2. int_LETatexp_arg2 (int_LETatexp x1 x2) = x2) /\
   (!x1. int_LETatexp_arg2 (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg2 (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg2 (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg2 (int_EXCONatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg2 (int_PARatexp x1) = (@x. T)) /\
   (!x1. int_LETatexp_arg2 (int_RECORDatexp x1) = (@x. T))
int_PARatexp_arg_DEF
|- (!x1. int_PARatexp_arg (int_PARatexp x1) = x1) /\
   (!x1. int_PARatexp_arg (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_PARatexp_arg (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_PARatexp_arg (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_PARatexp_arg (int_EXCONatexp x1) = (@x. T)) /\
   (!x1 x2. int_PARatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_PARatexp_arg (int_RECORDatexp x1) = (@x. T))
int_RECORDatexp_arg_DEF
|- (!x1. int_RECORDatexp_arg (int_RECORDatexp x1) = x1) /\
   (!x1. int_RECORDatexp_arg (int_SCONatexp x1) = (@x. T)) /\
   (!x1. int_RECORDatexp_arg (int_VARatexp x1) = (@x. T)) /\
   (!x1. int_RECORDatexp_arg (int_CONatexp x1) = (@x. T)) /\
   (!x1. int_RECORDatexp_arg (int_EXCONatexp x1) = (@x. T)) /\
   (!x1 x2. int_RECORDatexp_arg (int_LETatexp x1 x2) = (@x. T)) /\
   (!x1. int_RECORDatexp_arg (int_PARatexp x1) = (@x. T))
int_VALdec_arg_DEF
|- (!x1. int_VALdec_arg (int_VALdec x1) = x1) /\
   (!x1. int_VALdec_arg (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1 x2. int_VALdec_arg (int_LOCALdec x1 x2) = (@x. T)) /\
   (!x1. int_VALdec_arg (int_OPENdec x1) = (@x. T)) /\
   (!x1 x2. int_VALdec_arg (int_SEQdec x1 x2) = (@x. T)) /\
   (int_VALdec_arg int_EMPTYdec = (@x. T))
int_EXCEPTdec_arg_DEF
|- (!x1. int_EXCEPTdec_arg (int_EXCEPTdec x1) = x1) /\
   (!x1. int_EXCEPTdec_arg (int_VALdec x1) = (@x. T)) /\
   (!x1 x2. int_EXCEPTdec_arg (int_LOCALdec x1 x2) = (@x. T)) /\
   (!x1. int_EXCEPTdec_arg (int_OPENdec x1) = (@x. T)) /\
   (!x1 x2. int_EXCEPTdec_arg (int_SEQdec x1 x2) = (@x. T)) /\
   (int_EXCEPTdec_arg int_EMPTYdec = (@x. T))
int_LOCALdec_arg1_DEF
|- (!x1 x2. int_LOCALdec_arg1 (int_LOCALdec x1 x2) = x1) /\
   (!x1. int_LOCALdec_arg1 (int_VALdec x1) = (@x. T)) /\
   (!x1. int_LOCALdec_arg1 (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1. int_LOCALdec_arg1 (int_OPENdec x1) = (@x. T)) /\
   (!x1 x2. int_LOCALdec_arg1 (int_SEQdec x1 x2) = (@x. T)) /\
   (int_LOCALdec_arg1 int_EMPTYdec = (@x. T))
int_LOCALdec_arg2_DEF
|- (!x1 x2. int_LOCALdec_arg2 (int_LOCALdec x1 x2) = x2) /\
   (!x1. int_LOCALdec_arg2 (int_VALdec x1) = (@x. T)) /\
   (!x1. int_LOCALdec_arg2 (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1. int_LOCALdec_arg2 (int_OPENdec x1) = (@x. T)) /\
   (!x1 x2. int_LOCALdec_arg2 (int_SEQdec x1 x2) = (@x. T)) /\
   (int_LOCALdec_arg2 int_EMPTYdec = (@x. T))
int_OPENdec_arg_DEF
|- (!x1. int_OPENdec_arg (int_OPENdec x1) = x1) /\
   (!x1. int_OPENdec_arg (int_VALdec x1) = (@x. T)) /\
   (!x1. int_OPENdec_arg (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1 x2. int_OPENdec_arg (int_LOCALdec x1 x2) = (@x. T)) /\
   (!x1 x2. int_OPENdec_arg (int_SEQdec x1 x2) = (@x. T)) /\
   (int_OPENdec_arg int_EMPTYdec = (@x. T))
int_SEQdec_arg1_DEF
|- (!x1 x2. int_SEQdec_arg1 (int_SEQdec x1 x2) = x1) /\
   (!x1. int_SEQdec_arg1 (int_VALdec x1) = (@x. T)) /\
   (!x1. int_SEQdec_arg1 (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1 x2. int_SEQdec_arg1 (int_LOCALdec x1 x2) = (@x. T)) /\
   (!x1. int_SEQdec_arg1 (int_OPENdec x1) = (@x. T)) /\
   (int_SEQdec_arg1 int_EMPTYdec = (@x. T))
int_SEQdec_arg2_DEF
|- (!x1 x2. int_SEQdec_arg2 (int_SEQdec x1 x2) = x2) /\
   (!x1. int_SEQdec_arg2 (int_VALdec x1) = (@x. T)) /\
   (!x1. int_SEQdec_arg2 (int_EXCEPTdec x1) = (@x. T)) /\
   (!x1 x2. int_SEQdec_arg2 (int_LOCALdec x1 x2) = (@x. T)) /\
   (!x1. int_SEQdec_arg2 (int_OPENdec x1) = (@x. T)) /\
   (int_SEQdec_arg2 int_EMPTYdec = (@x. T))
int_ATEXPexp_arg_DEF
|- (!x1. int_ATEXPexp_arg (int_ATEXPexp x1) = x1) /\
   (!x1 x2. int_ATEXPexp_arg (int_APPexp x1 x2) = (@x. T)) /\
   (!x1 x2. int_ATEXPexp_arg (int_HANDLEexp x1 x2) = (@x. T)) /\
   (!x1. int_ATEXPexp_arg (int_RAISEexp x1) = (@x. T)) /\
   (!x1. int_ATEXPexp_arg (int_FNexp x1) = (@x. T))
int_APPexp_arg1_DEF
|- (!x1 x2. int_APPexp_arg1 (int_APPexp x1 x2) = x1) /\
   (!x1. int_APPexp_arg1 (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_APPexp_arg1 (int_HANDLEexp x1 x2) = (@x. T)) /\
   (!x1. int_APPexp_arg1 (int_RAISEexp x1) = (@x. T)) /\
   (!x1. int_APPexp_arg1 (int_FNexp x1) = (@x. T))
int_APPexp_arg2_DEF
|- (!x1 x2. int_APPexp_arg2 (int_APPexp x1 x2) = x2) /\
   (!x1. int_APPexp_arg2 (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_APPexp_arg2 (int_HANDLEexp x1 x2) = (@x. T)) /\
   (!x1. int_APPexp_arg2 (int_RAISEexp x1) = (@x. T)) /\
   (!x1. int_APPexp_arg2 (int_FNexp x1) = (@x. T))
int_HANDLEexp_arg1_DEF
|- (!x1 x2. int_HANDLEexp_arg1 (int_HANDLEexp x1 x2) = x1) /\
   (!x1. int_HANDLEexp_arg1 (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_HANDLEexp_arg1 (int_APPexp x1 x2) = (@x. T)) /\
   (!x1. int_HANDLEexp_arg1 (int_RAISEexp x1) = (@x. T)) /\
   (!x1. int_HANDLEexp_arg1 (int_FNexp x1) = (@x. T))
int_HANDLEexp_arg2_DEF
|- (!x1 x2. int_HANDLEexp_arg2 (int_HANDLEexp x1 x2) = x2) /\
   (!x1. int_HANDLEexp_arg2 (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_HANDLEexp_arg2 (int_APPexp x1 x2) = (@x. T)) /\
   (!x1. int_HANDLEexp_arg2 (int_RAISEexp x1) = (@x. T)) /\
   (!x1. int_HANDLEexp_arg2 (int_FNexp x1) = (@x. T))
int_RAISEexp_arg_DEF
|- (!x1. int_RAISEexp_arg (int_RAISEexp x1) = x1) /\
   (!x1. int_RAISEexp_arg (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_RAISEexp_arg (int_APPexp x1 x2) = (@x. T)) /\
   (!x1 x2. int_RAISEexp_arg (int_HANDLEexp x1 x2) = (@x. T)) /\
   (!x1. int_RAISEexp_arg (int_FNexp x1) = (@x. T))
int_FNexp_arg_DEF
|- (!x1. int_FNexp_arg (int_FNexp x1) = x1) /\
   (!x1. int_FNexp_arg (int_ATEXPexp x1) = (@x. T)) /\
   (!x1 x2. int_FNexp_arg (int_APPexp x1 x2) = (@x. T)) /\
   (!x1 x2. int_FNexp_arg (int_HANDLEexp x1 x2) = (@x. T)) /\
   (!x1. int_FNexp_arg (int_RAISEexp x1) = (@x. T))
int_EXPROW_arg1_DEF
|- !x1 x2 x3. int_EXPROW_arg1 (int_EXPROW x1 x2 x3) = x1
int_EXPROW_arg2_DEF
|- !x1 x2 x3. int_EXPROW_arg2 (int_EXPROW x1 x2 x3) = x2
int_EXPROW_arg3_DEF
|- !x1 x2 x3. int_EXPROW_arg3 (int_EXPROW x1 x2 x3) = x3
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_arg_DEF
|- (!x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_arg
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow x1) =
     x1) /\
   (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_arg
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
    (@x. T))
int_MATCH_arg1_DEF
|- !x1 x2. int_MATCH_arg1 (int_MATCH x1 x2) = x1
int_MATCH_arg2_DEF
|- !x1 x2. int_MATCH_arg2 (int_MATCH x1 x2) = x2
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_arg_DEF
|- (!x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_arg
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match x1) =
     x1) /\
   (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_arg
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
    (@x. T))
int_MRULE_arg1_DEF
|- !x1 x2. int_MRULE_arg1 (int_MRULE x1 x2) = x1
int_MRULE_arg2_DEF
|- !x1 x2. int_MRULE_arg2 (int_MRULE x1 x2) = x2
int_PLAINvalbind_arg1_DEF
|- (!x1 x2 x3. int_PLAINvalbind_arg1 (int_PLAINvalbind x1 x2 x3) = x1) /\
   (!x1. int_PLAINvalbind_arg1 (int_RECvalbind x1) = (@x. T))
int_PLAINvalbind_arg2_DEF
|- (!x1 x2 x3. int_PLAINvalbind_arg2 (int_PLAINvalbind x1 x2 x3) = x2) /\
   (!x1. int_PLAINvalbind_arg2 (int_RECvalbind x1) = (@x. T))
int_PLAINvalbind_arg3_DEF
|- (!x1 x2 x3. int_PLAINvalbind_arg3 (int_PLAINvalbind x1 x2 x3) = x3) /\
   (!x1. int_PLAINvalbind_arg3 (int_RECvalbind x1) = (@x. T))
int_RECvalbind_arg_DEF
|- (!x1. int_RECvalbind_arg (int_RECvalbind x1) = x1) /\
   (!x1 x2 x3. int_RECvalbind_arg (int_PLAINvalbind x1 x2 x3) = (@x. T))
int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_arg_DEF
|- (!x1.
     int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_arg
       (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind x1) =
     x1) /\
   (int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_arg
      int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
    (@x. T))
sval_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?i. v = INL i) /\ (LENGTH tl = 0) \/
           (?s. v = INR s) /\ (LENGTH tl = 0)))
       rep
sval_ISO_DEF
|- (!a. ABS_sval (REP_sval a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?i. v = INL i) /\ (LENGTH tl = 0) \/
         (?s. v = INR s) /\ (LENGTH tl = 0))
       r =
     REP_sval (ABS_sval r) =
     r)
SVINT_DEF
|- !i. SVINT i = ABS_sval (Node (INL i) [])
SVSTR_DEF
|- !s. SVSTR s = ABS_sval (Node (INR s) [])
value_of_DEF
|- (!i. value_of (SCINT i) = SVINT i) /\ (!s. value_of (SCSTR s) = SVSTR s)
addr_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?n. v = n) /\ (LENGTH tl = 0))) rep
addr_ISO_DEF
|- (!a. ABS_addr (REP_addr a) = a) /\
   (!r.
     TRP (\v tl. (?n. v = n) /\ (LENGTH tl = 0)) r =
     REP_addr (ABS_addr r) =
     r)
ADDR_DEF
|- !n. ADDR n = ABS_addr (Node n [])
ADDR_arg_DEF
|- !n. ADDR_arg (ADDR n) = n
less_addr_DEF
|- !a1 a2. less_addr a1 a2 = ADDR_arg a1 < ADDR_arg a2
basval_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (v = INL one) /\ (LENGTH tl = 0) \/
           (v = INR (INL one)) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INL one))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INL one)))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INL one))))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
           (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
           (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR (INR (INR (INR (INL one))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR (INR (INR (INL one)))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR (INR (INL one))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (v =
            INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR (INR (INR one))))))))))))))))) /\
           (LENGTH tl = 0)))
       rep
basval_ISO_DEF
|- (!a. ABS_basval (REP_basval a) = a) /\
   (!r.
     TRP
       (\v tl.
         (v = INL one) /\ (LENGTH tl = 0) \/
         (v = INR (INL one)) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INL one))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INL one)))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INL one))))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
         (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
         (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR (INR (INR (INR (INR (INR (INL one))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR (INR (INR (INR (INR (INL one)))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR (INR (INR (INR (INL one))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR (INR (INR (INL one)))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR (INR (INL one))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (v =
          INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR (INR (INR one))))))))))))))))) /\
         (LENGTH tl = 0))
       r =
     REP_basval (ABS_basval r) =
     r)
Size_DEF
|- Size = ABS_basval (Node (INL one) [])
Chr_DEF
|- Chr = ABS_basval (Node (INR (INL one)) [])
Ord_DEF
|- Ord = ABS_basval (Node (INR (INR (INL one))) [])
Explode_DEF
|- Explode = ABS_basval (Node (INR (INR (INR (INL one)))) [])
Implode_DEF
|- Implode = ABS_basval (Node (INR (INR (INR (INR (INL one))))) [])
Abs_DEF
|- Abs = ABS_basval (Node (INR (INR (INR (INR (INR (INL one)))))) [])
Div_DEF
|- Div = ABS_basval (Node (INR (INR (INR (INR (INR (INR (INL one))))))) [])
Mod_DEF
|- Mod =
   ABS_basval (Node (INR (INR (INR (INR (INR (INR (INR (INL one)))))))) [])
Neg_DEF
|- Neg =
   ABS_basval
     (Node (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))) [])
Times_DEF
|- Times =
   ABS_basval
     (Node (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) [])
Plus_DEF
|- Plus =
   ABS_basval
     (Node
        (INR (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))
       [])
Minus_DEF
|- Minus =
   ABS_basval
     (Node
        (INR
          (INR
            (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))
       [])
Eql_DEF
|- Eql =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))))
       [])
Noteql_DEF
|- Noteql =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))))
       [])
Less_DEF
|- Less =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one)))))))))))))))
       [])
Greater_DEF
|- Greater =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR (INR (INR (INR (INR (INL one))))))))))))))))
       [])
Lesseql_DEF
|- Lesseql =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR (INR (INR (INR (INL one)))))))))))))))))
       [])
Greatereql_DEF
|- Greatereql =
   ABS_basval
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR (INR (INR (INR (INR one)))))))))))))))))
       [])
exname_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?n. v = n) /\ (LENGTH tl = 0))) rep
exname_ISO_DEF
|- (!a. ABS_exname (REP_exname a) = a) /\
   (!r.
     TRP (\v tl. (?n. v = n) /\ (LENGTH tl = 0)) r =
     REP_exname (ABS_exname r) =
     r)
EXNAME_DEF
|- !n. EXNAME n = ABS_exname (Node n [])
EXNAME_arg_DEF
|- !n. EXNAME_arg (EXNAME n) = n
less_exname_DEF
|- !a1 a2. less_exname a1 a2 = EXNAME_arg a1 < EXNAME_arg a2
exnameset_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0))) rep
exnameset_ISO_DEF
|- (!a. ABS_exnameset (REP_exnameset a) = a) /\
   (!r.
     TRP (\v tl. (?s. v = s) /\ (LENGTH tl = 0)) r =
     REP_exnameset (ABS_exnameset r) =
     r)
EXNAMESET_DEF
|- !s. EXNAMESET s = ABS_exnameset (Node s [])
EXNAMESET_arg_DEF
|- !es. EXNAMESET_arg (EXNAMESET es) = es
SVINT_arg_DEF
|- !i. SVINT_arg (SVINT i) = i
SVSTR_arg_DEF
|- !s. SVSTR_arg (SVSTR s) = s
is_SVINT_DEF
|- (!i. is_SVINT (SVINT i) = T) /\ (!s. is_SVINT (SVSTR s) = F)
is_SVSTR_DEF
|- (!s. is_SVSTR (SVSTR s) = T) /\ (!i. is_SVSTR (SVINT i) = F)
exconenv_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?f. v = f) /\ (LENGTH tl = 0))) rep
exconenv_ISO_DEF
|- (!a. ABS_exconenv (REP_exconenv a) = a) /\
   (!r.
     TRP (\v tl. (?f. v = f) /\ (LENGTH tl = 0)) r =
     REP_exconenv (ABS_exconenv r) =
     r)
EXCONENV_DEF
|- !f'. EXCONENV f' = ABS_exconenv (Node f' [])
EXCONENV_arg_DEF
|- !f. EXCONENV_arg (EXCONENV f) = f
empty_exconenv_DEF
|- empty_exconenv = EXCONENV empty_finmap
lookupexcon_exconenv_DEF
|- !fm ec. lookupexcon_exconenv (EXCONENV fm) ec = finmap_lookup ec fm
insert_into_exconenv_DEF
|- !fm excon exname.
     insert_into_exconenv (EXCONENV fm) excon exname =
     EXCONENV (finmap_insert less_excon excon exname fm)
add_exconenv_DEF
|- !e1 e2.
     add_exconenv e1 e2 =
     EXCONENV (finmap_modify less_excon (EXCONENV_arg e1) (EXCONENV_arg e2))
excons_from_exconenv_DEF
|- !e. excons_from_exconenv (EXCONENV e) = finmap_dom e
cut_exconenv_DEF
|- !e excons.
     cut_exconenv (EXCONENV e) excons = EXCONENV (restrict_finmap e excons)

Theorems

strid_Axiom
|- !f. ?!fn. !s. fn (STRID s) = f s
strid_induction_thm
|- !P. (!s. P (STRID s)) ==> (!s. P s)
strid_cases_thm
|- !s. ?s'. s = STRID s'
strid_constructors_one_one
|- !s s'. (STRID s = STRID s') = s = s'
long_Axiom
|- !f0 f1.
     ?!fn.
       (!x. fn (BASE x) = f0 x) /\
       (!s l'. fn (QUALIFIED s l') = f1 (fn l') s l')
long_induction_thm
|- !P.
     (!x. P (BASE x)) /\ (!l'. P l' ==> (!s. P (QUALIFIED s l'))) ==>
     (!l. P l)
long_cases_thm
|- !l. (?x. l = BASE x) \/ (?l' s. l = QUALIFIED s l')
long_constructors_one_one
|- (!x x'. (BASE x = BASE x') = x = x') /\
   (!s l' s' l''.
     (QUALIFIED s l' = QUALIFIED s' l'') = (s = s') /\ (l' = l''))
long_constructors_distinct
|- !l' s x. ~(BASE x = QUALIFIED s l')
var_Axiom
|- !f. ?!fn. !s. fn (VAR s) = f s
var_induction_thm
|- !P. (!s. P (VAR s)) ==> (!v. P v)
var_cases_thm
|- !v. ?s. v = VAR s
var_constructors_one_one
|- !s s'. (VAR s = VAR s') = s = s'
con_Axiom
|- !f. ?!fn. !s. fn (CON s) = f s
con_induction_thm
|- !P. (!s. P (CON s)) ==> (!c. P c)
con_cases_thm
|- !c. ?s. c = CON s
con_constructors_one_one
|- !s s'. (CON s = CON s') = s = s'
scon_Axiom
|- !f0 f1. ?!fn. (!i. fn (SCINT i) = f0 i) /\ (!s. fn (SCSTR s) = f1 s)
scon_induction_thm
|- !P. (!i. P (SCINT i)) /\ (!s. P (SCSTR s)) ==> (!s. P s)
scon_cases_thm
|- !s. (?i. s = SCINT i) \/ (?s'. s = SCSTR s')
scon_constructors_one_one
|- (!i i'. (SCINT i = SCINT i') = i = i') /\
   (!s s'. (SCSTR s = SCSTR s') = s = s')
scon_constructors_distinct
|- !s i. ~(SCINT i = SCSTR s)
excon_Axiom
|- !f. ?!fn. !s. fn (EXCON s) = f s
excon_induction_thm
|- !P. (!s. P (EXCON s)) ==> (!e. P e)
excon_cases_thm
|- !e. ?s. e = EXCON s
excon_constructors_one_one
|- !s s'. (EXCON s = EXCON s') = s = s'
label_Axiom
|- !f. ?!fn. !s. fn (LABEL s) = f s
label_induction_thm
|- !P. (!s. P (LABEL s)) ==> (!l. P l)
label_cases_thm
|- !l. ?s. l = LABEL s
label_constructors_one_one
|- !s s'. (LABEL s = LABEL s') = s = s'
joint_ty_exbind_exbind_option_exbind_Axiom
|- !f0 f1 e f2.
     ?!fn.
       (!e' j. fn (JOINT_int_EXBIND1 e' j) = f0 (fn j) e' j) /\
       (!e' l' j. fn (JOINT_int_EXBIND2 e' l' j) = f1 (fn j) e' l' j) /\
       (fn JOINT_int_exbind_NONE_exbind = e) /\
       (!j. fn (JOINT_int_exbind_SOME_exbind j) = f2 (fn j) j)
exbind_existence
|- !EXBIND1_case EXBIND2_case exbind_NONE_exbind_case exbind_SOME_exbind_case.
     ?y y'.
       (!x1 x2. y (EXBIND1 x1 x2) = EXBIND1_case (y' x2) x1 x2) /\
       (!x1 x2 x3. y (EXBIND2 x1 x2 x3) = EXBIND2_case (y' x3) x1 x2 x3) /\
       (y' NONE = exbind_NONE_exbind_case) /\
       (!x1. y' (SOME x1) = exbind_SOME_exbind_case (y x1) x1)
exbind_induct
|- !exbind_Prop exbind_option_exbind_Prop.
     (!y y'''.
       exbind_option_exbind_Prop y''' ==> exbind_Prop (EXBIND1 y y''')) /\
     (!y y'' y'.
       exbind_option_exbind_Prop y' ==> exbind_Prop (EXBIND2 y y'' y')) /\
     exbind_option_exbind_Prop NONE /\
     (!y. exbind_Prop y ==> exbind_option_exbind_Prop (SOME y)) ==>
     (!x1. exbind_Prop x1) /\ (!x2. exbind_option_exbind_Prop x2)
exbind_unique
|- !EXBIND1_case EXBIND2_case exbind_NONE_exbind_case exbind_SOME_exbind_case
    fn1 fn2 fn1' fn2'.
     (!y y'''. fn1 (EXBIND1 y y''') = EXBIND1_case (fn2 y''') y y''') /\
     (!y y'' y'. fn1 (EXBIND2 y y'' y') = EXBIND2_case (fn2 y') y y'' y') /\
     (fn2 NONE = exbind_NONE_exbind_case) /\
     (!y. fn2 (SOME y) = exbind_SOME_exbind_case (fn1 y) y) ==>
     (!y y'''. fn1' (EXBIND1 y y''') = EXBIND1_case (fn2' y''') y y''') /\
     (!y y'' y'. fn1' (EXBIND2 y y'' y') = EXBIND2_case (fn2' y') y y'' y') /\
     (fn2' NONE = exbind_NONE_exbind_case) /\
     (!y. fn2' (SOME y) = exbind_SOME_exbind_case (fn1' y) y) ==>
     (fn1 = fn1') /\ (fn2 = fn2')
exbind_distinct
|- (!x1 x2 x1' x2' x3'. ~(EXBIND1 x1 x2 = EXBIND2 x1' x2' x3')) /\
   (!x1'. ~(NONE = SOME x1'))
exbind_one_one
|- ((!x1 x2 x1' x2'.
      (EXBIND1 x1 x2 = EXBIND1 x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x2 x3 x1' x2' x3'.
      (EXBIND2 x1 x2 x3 = EXBIND2 x1' x2' x3') =
      (x1 = x1') /\ (x2 = x2') /\ (x3 = x3'))) /\
   (!x1 x1'. (SOME x1 = SOME x1') = x1 = x1')
exbind_cases
|- (!x1. (?y y'. x1 = EXBIND1 y y') \/ (?y y'' y'. x1 = EXBIND2 y y'' y')) /\
   (!x2. (x2 = NONE) \/ (?y. x2 = SOME y))
joint_ty_atpat_pat_patrow_patrow_option_atpat_pat_patrow_Axiom
|- !e0 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 e1 f10 e2 f11.
     ?!fn.
       (fn JOINT_int_WILDCARDatpat = e0) /\
       (!s. fn (JOINT_int_SCONatpat s) = f0 s) /\
       (!v'. fn (JOINT_int_VARatpat v') = f1 v') /\
       (!l. fn (JOINT_int_CONatpat l) = f2 l) /\
       (!l. fn (JOINT_int_EXCONatpat l) = f3 l) /\
       (!j. fn (JOINT_int_RECORDatpat j) = f4 (fn j) j) /\
       (!j. fn (JOINT_int_PARatpat j) = f5 (fn j) j) /\
       (!j. fn (JOINT_int_ATPATpat j) = f6 (fn j) j) /\
       (!l' j. fn (JOINT_int_CONpat l' j) = f7 (fn j) l' j) /\
       (!l' j. fn (JOINT_int_EXCONpat l' j) = f8 (fn j) l' j) /\
       (!v' j. fn (JOINT_int_LAYEREDpat v' j) = f9 (fn j) v' j) /\
       (fn JOINT_int_DOTDOTDOT = e1) /\
       (!l' j1 j2.
         fn (JOINT_int_PATROW l' j1 j2) = f10 (fn j1) (fn j2) l' j1 j2) /\
       (fn JOINT_int_atpat_pat_patrow_NONE_patrow = e2) /\
       (!j. fn (JOINT_int_atpat_pat_patrow_SOME_patrow j) = f11 (fn j) j)
pat_existence
|- !WILDCARDatpat_case SCONatpat_case VARatpat_case CONatpat_case
    EXCONatpat_case RECORDatpat_case PARatpat_case ATPATpat_case CONpat_case
    EXCONpat_case LAYEREDpat_case DOTDOTDOT_case PATROW_case
    atpat_pat_patrow_NONE_patrow_case atpat_pat_patrow_SOME_patrow_case.
     ?y y''' y'' y'.
       (y WILDCARDatpat = WILDCARDatpat_case) /\
       (!x1. y (SCONatpat x1) = SCONatpat_case x1) /\
       (!x1. y (VARatpat x1) = VARatpat_case x1) /\
       (!x1. y (CONatpat x1) = CONatpat_case x1) /\
       (!x1. y (EXCONatpat x1) = EXCONatpat_case x1) /\
       (!x1. y (RECORDatpat x1) = RECORDatpat_case (y' x1) x1) /\
       (!x1. y (PARatpat x1) = PARatpat_case (y''' x1) x1) /\
       (!x1. y''' (ATPATpat x1) = ATPATpat_case (y x1) x1) /\
       (!x1 x2. y''' (CONpat x1 x2) = CONpat_case (y x2) x1 x2) /\
       (!x1 x2. y''' (EXCONpat x1 x2) = EXCONpat_case (y x2) x1 x2) /\
       (!x1 x2. y''' (LAYEREDpat x1 x2) = LAYEREDpat_case (y''' x2) x1 x2) /\
       (y'' DOTDOTDOT = DOTDOTDOT_case) /\
       (!x1 x2 x3.
         y'' (PATROW x1 x2 x3) = PATROW_case (y''' x2) (y' x3) x1 x2 x3) /\
       (y' NONE = atpat_pat_patrow_NONE_patrow_case) /\
       (!x1. y' (SOME x1) = atpat_pat_patrow_SOME_patrow_case (y'' x1) x1)
pat_induct
|- !atpat_Prop pat_Prop patrow_Prop patrow_option_atpat_pat_patrow_Prop.
     atpat_Prop WILDCARDatpat /\
     (!y. atpat_Prop (SCONatpat y)) /\
     (!y. atpat_Prop (VARatpat y)) /\
     (!y. atpat_Prop (CONatpat y)) /\
     (!y. atpat_Prop (EXCONatpat y)) /\
     (!y.
       patrow_option_atpat_pat_patrow_Prop y ==>
       atpat_Prop (RECORDatpat y)) /\
     (!y. pat_Prop y ==> atpat_Prop (PARatpat y)) /\
     (!y. atpat_Prop y ==> pat_Prop (ATPATpat y)) /\
     (!y y'''''. atpat_Prop y''''' ==> pat_Prop (CONpat y y''''')) /\
     (!y y''''. atpat_Prop y'''' ==> pat_Prop (EXCONpat y y'''')) /\
     (!y y'''. pat_Prop y''' ==> pat_Prop (LAYEREDpat y y''')) /\
     patrow_Prop DOTDOTDOT /\
     (!y y'' y'.
       pat_Prop y'' ==>
       patrow_option_atpat_pat_patrow_Prop y' ==>
       patrow_Prop (PATROW y y'' y')) /\
     patrow_option_atpat_pat_patrow_Prop NONE /\
     (!y. patrow_Prop y ==> patrow_option_atpat_pat_patrow_Prop (SOME y)) ==>
     (!x1. atpat_Prop x1) /\
     (!x2. pat_Prop x2) /\
     (!x3. patrow_Prop x3) /\
     (!x4. patrow_option_atpat_pat_patrow_Prop x4)
pat_unique
|- !WILDCARDatpat_case SCONatpat_case VARatpat_case CONatpat_case
    EXCONatpat_case RECORDatpat_case PARatpat_case ATPATpat_case CONpat_case
    EXCONpat_case LAYEREDpat_case DOTDOTDOT_case PATROW_case
    atpat_pat_patrow_NONE_patrow_case atpat_pat_patrow_SOME_patrow_case fn1
    fn2 fn3 fn4 fn1' fn2' fn3' fn4'.
     (fn1 WILDCARDatpat = WILDCARDatpat_case) /\
     (!y. fn1 (SCONatpat y) = SCONatpat_case y) /\
     (!y. fn1 (VARatpat y) = VARatpat_case y) /\
     (!y. fn1 (CONatpat y) = CONatpat_case y) /\
     (!y. fn1 (EXCONatpat y) = EXCONatpat_case y) /\
     (!y. fn1 (RECORDatpat y) = RECORDatpat_case (fn4 y) y) /\
     (!y. fn1 (PARatpat y) = PARatpat_case (fn2 y) y) /\
     (!y. fn2 (ATPATpat y) = ATPATpat_case (fn1 y) y) /\
     (!y y'''''. fn2 (CONpat y y''''') = CONpat_case (fn1 y''''') y y''''') /\
     (!y y''''. fn2 (EXCONpat y y'''') = EXCONpat_case (fn1 y'''') y y'''') /\
     (!y y'''. fn2 (LAYEREDpat y y''') = LAYEREDpat_case (fn2 y''') y y''') /\
     (fn3 DOTDOTDOT = DOTDOTDOT_case) /\
     (!y y'' y'.
       fn3 (PATROW y y'' y') = PATROW_case (fn2 y'') (fn4 y') y y'' y') /\
     (fn4 NONE = atpat_pat_patrow_NONE_patrow_case) /\
     (!y. fn4 (SOME y) = atpat_pat_patrow_SOME_patrow_case (fn3 y) y) ==>
     (fn1' WILDCARDatpat = WILDCARDatpat_case) /\
     (!y. fn1' (SCONatpat y) = SCONatpat_case y) /\
     (!y. fn1' (VARatpat y) = VARatpat_case y) /\
     (!y. fn1' (CONatpat y) = CONatpat_case y) /\
     (!y. fn1' (EXCONatpat y) = EXCONatpat_case y) /\
     (!y. fn1' (RECORDatpat y) = RECORDatpat_case (fn4' y) y) /\
     (!y. fn1' (PARatpat y) = PARatpat_case (fn2' y) y) /\
     (!y. fn2' (ATPATpat y) = ATPATpat_case (fn1' y) y) /\
     (!y y'''''.
       fn2' (CONpat y y''''') = CONpat_case (fn1' y''''') y y''''') /\
     (!y y''''.
       fn2' (EXCONpat y y'''') = EXCONpat_case (fn1' y'''') y y'''') /\
     (!y y'''.
       fn2' (LAYEREDpat y y''') = LAYEREDpat_case (fn2' y''') y y''') /\
     (fn3' DOTDOTDOT = DOTDOTDOT_case) /\
     (!y y'' y'.
       fn3' (PATROW y y'' y') = PATROW_case (fn2' y'') (fn4' y') y y'' y') /\
     (fn4' NONE = atpat_pat_patrow_NONE_patrow_case) /\
     (!y. fn4' (SOME y) = atpat_pat_patrow_SOME_patrow_case (fn3' y) y) ==>
     (fn1 = fn1') /\ (fn2 = fn2') /\ (fn3 = fn3') /\ (fn4 = fn4')
pat_distinct
|- ((!x1'. ~(WILDCARDatpat = SCONatpat x1')) /\
    (!x1'. ~(WILDCARDatpat = VARatpat x1')) /\
    (!x1'. ~(WILDCARDatpat = CONatpat x1')) /\
    (!x1'. ~(WILDCARDatpat = EXCONatpat x1')) /\
    (!x1'. ~(WILDCARDatpat = RECORDatpat x1')) /\
    (!x1'. ~(WILDCARDatpat = PARatpat x1')) /\
    (!x1 x1'. ~(SCONatpat x1 = VARatpat x1')) /\
    (!x1 x1'. ~(SCONatpat x1 = CONatpat x1')) /\
    (!x1 x1'. ~(SCONatpat x1 = EXCONatpat x1')) /\
    (!x1 x1'. ~(SCONatpat x1 = RECORDatpat x1')) /\
    (!x1 x1'. ~(SCONatpat x1 = PARatpat x1')) /\
    (!x1 x1'. ~(VARatpat x1 = CONatpat x1')) /\
    (!x1 x1'. ~(VARatpat x1 = EXCONatpat x1')) /\
    (!x1 x1'. ~(VARatpat x1 = RECORDatpat x1')) /\
    (!x1 x1'. ~(VARatpat x1 = PARatpat x1')) /\
    (!x1 x1'. ~(CONatpat x1 = EXCONatpat x1')) /\
    (!x1 x1'. ~(CONatpat x1 = RECORDatpat x1')) /\
    (!x1 x1'. ~(CONatpat x1 = PARatpat x1')) /\
    (!x1 x1'. ~(EXCONatpat x1 = RECORDatpat x1')) /\
    (!x1 x1'. ~(EXCONatpat x1 = PARatpat x1')) /\
    (!x1 x1'. ~(RECORDatpat x1 = PARatpat x1'))) /\
   ((!x1 x1' x2'. ~(ATPATpat x1 = CONpat x1' x2')) /\
    (!x1 x1' x2'. ~(ATPATpat x1 = EXCONpat x1' x2')) /\
    (!x1 x1' x2'. ~(ATPATpat x1 = LAYEREDpat x1' x2')) /\
    (!x1 x2 x1' x2'. ~(CONpat x1 x2 = EXCONpat x1' x2')) /\
    (!x1 x2 x1' x2'. ~(CONpat x1 x2 = LAYEREDpat x1' x2')) /\
    (!x1 x2 x1' x2'. ~(EXCONpat x1 x2 = LAYEREDpat x1' x2'))) /\
   (!x1' x2' x3'. ~(DOTDOTDOT = PATROW x1' x2' x3')) /\
   (!x1'. ~(NONE = SOME x1'))
pat_one_one
|- ((!x1 x1'. (SCONatpat x1 = SCONatpat x1') = x1 = x1') /\
    (!x1 x1'. (VARatpat x1 = VARatpat x1') = x1 = x1') /\
    (!x1 x1'. (CONatpat x1 = CONatpat x1') = x1 = x1') /\
    (!x1 x1'. (EXCONatpat x1 = EXCONatpat x1') = x1 = x1') /\
    (!x1 x1'. (RECORDatpat x1 = RECORDatpat x1') = x1 = x1') /\
    (!x1 x1'. (PARatpat x1 = PARatpat x1') = x1 = x1')) /\
   ((!x1 x1'. (ATPATpat x1 = ATPATpat x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (CONpat x1 x2 = CONpat x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x2 x1' x2'.
      (EXCONpat x1 x2 = EXCONpat x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x2 x1' x2'.
      (LAYEREDpat x1 x2 = LAYEREDpat x1' x2') = (x1 = x1') /\ (x2 = x2'))) /\
   (!x1 x2 x3 x1' x2' x3'.
     (PATROW x1 x2 x3 = PATROW x1' x2' x3') =
     (x1 = x1') /\ (x2 = x2') /\ (x3 = x3')) /\
   (!x1 x1'. (SOME x1 = SOME x1') = x1 = x1')
pat_cases
|- (!x1.
     (x1 = WILDCARDatpat) \/
     (?y. x1 = SCONatpat y) \/
     (?y. x1 = VARatpat y) \/
     (?y. x1 = CONatpat y) \/
     (?y. x1 = EXCONatpat y) \/
     (?y. x1 = RECORDatpat y) \/
     (?y. x1 = PARatpat y)) /\
   (!x2.
     (?y. x2 = ATPATpat y) \/
     (?y y'. x2 = CONpat y y') \/
     (?y y'. x2 = EXCONpat y y') \/
     (?y y'. x2 = LAYEREDpat y y')) /\
   (!x3. (x3 = DOTDOTDOT) \/ (?y y'' y'. x3 = PATROW y y'' y')) /\
   (!x4. (x4 = NONE) \/ (?y. x4 = SOME y))
joint_ty_atexp_dec_exp_exprow_exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_match_match_option_atexp_dec_exp_exprow_match_mrule_valbind_mrule_valbind_valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Axiom
|- !f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 e0 f12 f13 f14 f15 f16 f17 e1 f18
    f19 e2 f20 f21 f22 f23 e3 f24.
     ?!fn.
       (!s. fn (JOINT_int_SCONatexp s) = f0 s) /\
       (!l. fn (JOINT_int_VARatexp l) = f1 l) /\
       (!l. fn (JOINT_int_CONatexp l) = f2 l) /\
       (!l. fn (JOINT_int_EXCONatexp l) = f3 l) /\
       (!j1 j2. fn (JOINT_int_LETatexp j1 j2) = f4 (fn j1) (fn j2) j1 j2) /\
       (!j. fn (JOINT_int_PARatexp j) = f5 (fn j) j) /\
       (!j. fn (JOINT_int_RECORDatexp j) = f6 (fn j) j) /\
       (!j. fn (JOINT_int_VALdec j) = f7 (fn j) j) /\
       (!e. fn (JOINT_int_EXCEPTdec e) = f8 e) /\
       (!j1 j2. fn (JOINT_int_LOCALdec j1 j2) = f9 (fn j1) (fn j2) j1 j2) /\
       (!n. fn (JOINT_int_OPENdec n) = f10 n) /\
       (!j1 j2. fn (JOINT_int_SEQdec j1 j2) = f11 (fn j1) (fn j2) j1 j2) /\
       (fn JOINT_int_EMPTYdec = e0) /\
       (!j. fn (JOINT_int_ATEXPexp j) = f12 (fn j) j) /\
       (!j1 j2. fn (JOINT_int_APPexp j1 j2) = f13 (fn j1) (fn j2) j1 j2) /\
       (!j1 j2. fn (JOINT_int_HANDLEexp j1 j2) = f14 (fn j1) (fn j2) j1 j2) /\
       (!j. fn (JOINT_int_RAISEexp j) = f15 (fn j) j) /\
       (!j. fn (JOINT_int_FNexp j) = f16 (fn j) j) /\
       (!l' j1 j2.
         fn (JOINT_int_EXPROW l' j1 j2) = f17 (fn j1) (fn j2) l' j1 j2) /\
       (fn JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow =
        e1) /\
       (!j.
         fn
           (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow
             j) =
         f18 (fn j) j) /\
       (!j1 j2. fn (JOINT_int_MATCH j1 j2) = f19 (fn j1) (fn j2) j1 j2) /\
       (fn JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_match =
        e2) /\
       (!j.
         fn
           (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_match j) =
         f20 (fn j) j) /\
       (!p j. fn (JOINT_int_MRULE p j) = f21 (fn j) p j) /\
       (!p j1 j2.
         fn (JOINT_int_PLAINvalbind p j1 j2) = f22 (fn j1) (fn j2) p j1 j2) /\
       (!j. fn (JOINT_int_RECvalbind j) = f23 (fn j) j) /\
       (fn JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind =
        e3) /\
       (!j.
         fn
           (JOINT_int_atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind
             j) =
         f24 (fn j) j)
gram_existence
|- !SCONatexp_case VARatexp_case CONatexp_case EXCONatexp_case LETatexp_case
    PARatexp_case RECORDatexp_case VALdec_case EXCEPTdec_case LOCALdec_case
    OPENdec_case SEQdec_case EMPTYdec_case ATEXPexp_case APPexp_case
    HANDLEexp_case RAISEexp_case FNexp_case EXPROW_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_case MATCH_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_case MRULE_case
    PLAINvalbind_case RECvalbind_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_case.
     ?y y''''''''' y'''''''' y''''''' y'''''' y''''' y'''' y''' y'' y'.
       (!x1. y (SCONatexp x1) = SCONatexp_case x1) /\
       (!x1. y (VARatexp x1) = VARatexp_case x1) /\
       (!x1. y (CONatexp x1) = CONatexp_case x1) /\
       (!x1. y (EXCONatexp x1) = EXCONatexp_case x1) /\
       (!x1 x2.
         y (LETatexp x1 x2) =
         LETatexp_case (y''''''''' x1) (y'''''''' x2) x1 x2) /\
       (!x1. y (PARatexp x1) = PARatexp_case (y'''''''' x1) x1) /\
       (!x1. y (RECORDatexp x1) = RECORDatexp_case (y'''''' x1) x1) /\
       (!x1. y''''''''' (VALdec x1) = VALdec_case (y'' x1) x1) /\
       (!x1. y''''''''' (EXCEPTdec x1) = EXCEPTdec_case x1) /\
       (!x1 x2.
         y''''''''' (LOCALdec x1 x2) =
         LOCALdec_case (y''''''''' x1) (y''''''''' x2) x1 x2) /\
       (!x1. y''''''''' (OPENdec x1) = OPENdec_case x1) /\
       (!x1 x2.
         y''''''''' (SEQdec x1 x2) =
         SEQdec_case (y''''''''' x1) (y''''''''' x2) x1 x2) /\
       (y''''''''' EMPTYdec = EMPTYdec_case) /\
       (!x1. y'''''''' (ATEXPexp x1) = ATEXPexp_case (y x1) x1) /\
       (!x1 x2.
         y'''''''' (APPexp x1 x2) =
         APPexp_case (y'''''''' x1) (y x2) x1 x2) /\
       (!x1 x2.
         y'''''''' (HANDLEexp x1 x2) =
         HANDLEexp_case (y'''''''' x1) (y''''' x2) x1 x2) /\
       (!x1. y'''''''' (RAISEexp x1) = RAISEexp_case (y'''''''' x1) x1) /\
       (!x1. y'''''''' (FNexp x1) = FNexp_case (y''''' x1) x1) /\
       (!x1 x2 x3.
         y''''''' (EXPROW x1 x2 x3) =
         EXPROW_case (y'''''''' x2) (y'''''' x3) x1 x2 x3) /\
       (y'''''' NONE =
        atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_case) /\
       (!x1.
         y'''''' (SOME x1) =
         atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_case
           (y''''''' x1)
           x1) /\
       (!x1 x2.
         y''''' (MATCH x1 x2) = MATCH_case (y''' x1) (y'''' x2) x1 x2) /\
       (y'''' NONE =
        atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_case) /\
       (!x1.
         y'''' (SOME x1) =
         atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_case (y''''' x1)
           x1) /\
       (!x1 x2. y''' (MRULE x1 x2) = MRULE_case (y'''''''' x2) x1 x2) /\
       (!x1 x2 x3.
         y'' (PLAINvalbind x1 x2 x3) =
         PLAINvalbind_case (y'''''''' x2) (y' x3) x1 x2 x3) /\
       (!x1. y'' (RECvalbind x1) = RECvalbind_case (y'' x1) x1) /\
       (y' NONE =
        atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_case) /\
       (!x1.
         y' (SOME x1) =
         atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_case (y'' x1)
           x1)
gram_induct
|- !atexp_Prop dec_Prop exp_Prop exprow_Prop
    exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop match_Prop
    match_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop mrule_Prop
    valbind_Prop valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop.
     (!y. atexp_Prop (SCONatexp y)) /\
     (!y. atexp_Prop (VARatexp y)) /\
     (!y. atexp_Prop (CONatexp y)) /\
     (!y. atexp_Prop (EXCONatexp y)) /\
     (!y y'''''''''''.
       dec_Prop y ==>
       exp_Prop y''''''''''' ==>
       atexp_Prop (LETatexp y y''''''''''')) /\
     (!y. exp_Prop y ==> atexp_Prop (PARatexp y)) /\
     (!y.
       exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop y ==>
       atexp_Prop (RECORDatexp y)) /\
     (!y. valbind_Prop y ==> dec_Prop (VALdec y)) /\
     (!y. dec_Prop (EXCEPTdec y)) /\
     (!y y''''''''''.
       dec_Prop y ==>
       dec_Prop y'''''''''' ==>
       dec_Prop (LOCALdec y y'''''''''')) /\
     (!y. dec_Prop (OPENdec y)) /\
     (!y y'''''''''.
       dec_Prop y ==>
       dec_Prop y''''''''' ==>
       dec_Prop (SEQdec y y''''''''')) /\
     dec_Prop EMPTYdec /\
     (!y. atexp_Prop y ==> exp_Prop (ATEXPexp y)) /\
     (!y y''''''''.
       exp_Prop y ==>
       atexp_Prop y'''''''' ==>
       exp_Prop (APPexp y y'''''''')) /\
     (!y y'''''''.
       exp_Prop y ==>
       match_Prop y''''''' ==>
       exp_Prop (HANDLEexp y y''''''')) /\
     (!y. exp_Prop y ==> exp_Prop (RAISEexp y)) /\
     (!y. match_Prop y ==> exp_Prop (FNexp y)) /\
     (!y y'''''' y'''''.
       exp_Prop y'''''' ==>
       exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop y''''' ==>
       exprow_Prop (EXPROW y y'''''' y''''')) /\
     exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop NONE /\
     (!y.
       exprow_Prop y ==>
       exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop
         (SOME y)) /\
     (!y y''''.
       mrule_Prop y ==>
       match_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop y'''' ==>
       match_Prop (MATCH y y'''')) /\
     match_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop NONE /\
     (!y.
       match_Prop y ==>
       match_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop (SOME y)) /\
     (!y y'''. exp_Prop y''' ==> mrule_Prop (MRULE y y''')) /\
     (!y y'' y'.
       exp_Prop y'' ==>
       valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop y' ==>
       valbind_Prop (PLAINvalbind y y'' y')) /\
     (!y. valbind_Prop y ==> valbind_Prop (RECvalbind y)) /\
     valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop NONE /\
     (!y.
       valbind_Prop y ==>
       valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop
         (SOME y)) ==>
     (!x1. atexp_Prop x1) /\
     (!x2. dec_Prop x2) /\
     (!x3. exp_Prop x3) /\
     (!x4. exprow_Prop x4) /\
     (!x5. exprow_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop x5) /\
     (!x6. match_Prop x6) /\
     (!x7. match_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop x7) /\
     (!x8. mrule_Prop x8) /\
     (!x9. valbind_Prop x9) /\
     (!x10. valbind_option_atexp_dec_exp_exprow_match_mrule_valbind_Prop x10)
gram_unique
|- !SCONatexp_case VARatexp_case CONatexp_case EXCONatexp_case LETatexp_case
    PARatexp_case RECORDatexp_case VALdec_case EXCEPTdec_case LOCALdec_case
    OPENdec_case SEQdec_case EMPTYdec_case ATEXPexp_case APPexp_case
    HANDLEexp_case RAISEexp_case FNexp_case EXPROW_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_case MATCH_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_case MRULE_case
    PLAINvalbind_case RECvalbind_case
    atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_case
    atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_case fn1 fn2 fn3 fn4
    fn5 fn6 fn7 fn8 fn9 fn10 fn1' fn2' fn3' fn4' fn5' fn6' fn7' fn8' fn9'
    fn10'.
     (!y. fn1 (SCONatexp y) = SCONatexp_case y) /\
     (!y. fn1 (VARatexp y) = VARatexp_case y) /\
     (!y. fn1 (CONatexp y) = CONatexp_case y) /\
     (!y. fn1 (EXCONatexp y) = EXCONatexp_case y) /\
     (!y y'''''''''''.
       fn1 (LETatexp y y''''''''''') =
       LETatexp_case (fn2 y) (fn3 y''''''''''') y y''''''''''') /\
     (!y. fn1 (PARatexp y) = PARatexp_case (fn3 y) y) /\
     (!y. fn1 (RECORDatexp y) = RECORDatexp_case (fn5 y) y) /\
     (!y. fn2 (VALdec y) = VALdec_case (fn9 y) y) /\
     (!y. fn2 (EXCEPTdec y) = EXCEPTdec_case y) /\
     (!y y''''''''''.
       fn2 (LOCALdec y y'''''''''') =
       LOCALdec_case (fn2 y) (fn2 y'''''''''') y y'''''''''') /\
     (!y. fn2 (OPENdec y) = OPENdec_case y) /\
     (!y y'''''''''.
       fn2 (SEQdec y y''''''''') =
       SEQdec_case (fn2 y) (fn2 y''''''''') y y''''''''') /\
     (fn2 EMPTYdec = EMPTYdec_case) /\
     (!y. fn3 (ATEXPexp y) = ATEXPexp_case (fn1 y) y) /\
     (!y y''''''''.
       fn3 (APPexp y y'''''''') =
       APPexp_case (fn3 y) (fn1 y'''''''') y y'''''''') /\
     (!y y'''''''.
       fn3 (HANDLEexp y y''''''') =
       HANDLEexp_case (fn3 y) (fn6 y''''''') y y''''''') /\
     (!y. fn3 (RAISEexp y) = RAISEexp_case (fn3 y) y) /\
     (!y. fn3 (FNexp y) = FNexp_case (fn6 y) y) /\
     (!y y'''''' y'''''.
       fn4 (EXPROW y y'''''' y''''') =
       EXPROW_case (fn3 y'''''') (fn5 y''''') y y'''''' y''''') /\
     (fn5 NONE = atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_case) /\
     (!y.
       fn5 (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_case (fn4 y) y) /\
     (!y y''''.
       fn6 (MATCH y y'''') = MATCH_case (fn8 y) (fn7 y'''') y y'''') /\
     (fn7 NONE = atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_case) /\
     (!y.
       fn7 (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_case (fn6 y) y) /\
     (!y y'''. fn8 (MRULE y y''') = MRULE_case (fn3 y''') y y''') /\
     (!y y'' y'.
       fn9 (PLAINvalbind y y'' y') =
       PLAINvalbind_case (fn3 y'') (fn10 y') y y'' y') /\
     (!y. fn9 (RECvalbind y) = RECvalbind_case (fn9 y) y) /\
     (fn10 NONE =
      atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_case) /\
     (!y.
       fn10 (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_case (fn9 y)
         y) ==>
     (!y. fn1' (SCONatexp y) = SCONatexp_case y) /\
     (!y. fn1' (VARatexp y) = VARatexp_case y) /\
     (!y. fn1' (CONatexp y) = CONatexp_case y) /\
     (!y. fn1' (EXCONatexp y) = EXCONatexp_case y) /\
     (!y y'''''''''''.
       fn1' (LETatexp y y''''''''''') =
       LETatexp_case (fn2' y) (fn3' y''''''''''') y y''''''''''') /\
     (!y. fn1' (PARatexp y) = PARatexp_case (fn3' y) y) /\
     (!y. fn1' (RECORDatexp y) = RECORDatexp_case (fn5' y) y) /\
     (!y. fn2' (VALdec y) = VALdec_case (fn9' y) y) /\
     (!y. fn2' (EXCEPTdec y) = EXCEPTdec_case y) /\
     (!y y''''''''''.
       fn2' (LOCALdec y y'''''''''') =
       LOCALdec_case (fn2' y) (fn2' y'''''''''') y y'''''''''') /\
     (!y. fn2' (OPENdec y) = OPENdec_case y) /\
     (!y y'''''''''.
       fn2' (SEQdec y y''''''''') =
       SEQdec_case (fn2' y) (fn2' y''''''''') y y''''''''') /\
     (fn2' EMPTYdec = EMPTYdec_case) /\
     (!y. fn3' (ATEXPexp y) = ATEXPexp_case (fn1' y) y) /\
     (!y y''''''''.
       fn3' (APPexp y y'''''''') =
       APPexp_case (fn3' y) (fn1' y'''''''') y y'''''''') /\
     (!y y'''''''.
       fn3' (HANDLEexp y y''''''') =
       HANDLEexp_case (fn3' y) (fn6' y''''''') y y''''''') /\
     (!y. fn3' (RAISEexp y) = RAISEexp_case (fn3' y) y) /\
     (!y. fn3' (FNexp y) = FNexp_case (fn6' y) y) /\
     (!y y'''''' y'''''.
       fn4' (EXPROW y y'''''' y''''') =
       EXPROW_case (fn3' y'''''') (fn5' y''''') y y'''''' y''''') /\
     (fn5' NONE =
      atexp_dec_exp_exprow_match_mrule_valbind_NONE_exprow_case) /\
     (!y.
       fn5' (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_exprow_case (fn4' y)
         y) /\
     (!y y''''.
       fn6' (MATCH y y'''') = MATCH_case (fn8' y) (fn7' y'''') y y'''') /\
     (fn7' NONE = atexp_dec_exp_exprow_match_mrule_valbind_NONE_match_case) /\
     (!y.
       fn7' (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_match_case (fn6' y) y) /\
     (!y y'''. fn8' (MRULE y y''') = MRULE_case (fn3' y''') y y''') /\
     (!y y'' y'.
       fn9' (PLAINvalbind y y'' y') =
       PLAINvalbind_case (fn3' y'') (fn10' y') y y'' y') /\
     (!y. fn9' (RECvalbind y) = RECvalbind_case (fn9' y) y) /\
     (fn10' NONE =
      atexp_dec_exp_exprow_match_mrule_valbind_NONE_valbind_case) /\
     (!y.
       fn10' (SOME y) =
       atexp_dec_exp_exprow_match_mrule_valbind_SOME_valbind_case (fn9' y)
         y) ==>
     (fn1 = fn1') /\
     (fn2 = fn2') /\
     (fn3 = fn3') /\
     (fn4 = fn4') /\
     (fn5 = fn5') /\
     (fn6 = fn6') /\
     (fn7 = fn7') /\
     (fn8 = fn8') /\
     (fn9 = fn9') /\
     (fn10 = fn10')
gram_distinct
|- ((!x1 x1'. ~(SCONatexp x1 = VARatexp x1')) /\
    (!x1 x1'. ~(SCONatexp x1 = CONatexp x1')) /\
    (!x1 x1'. ~(SCONatexp x1 = EXCONatexp x1')) /\
    (!x1 x1' x2'. ~(SCONatexp x1 = LETatexp x1' x2')) /\
    (!x1 x1'. ~(SCONatexp x1 = PARatexp x1')) /\
    (!x1 x1'. ~(SCONatexp x1 = RECORDatexp x1')) /\
    (!x1 x1'. ~(VARatexp x1 = CONatexp x1')) /\
    (!x1 x1'. ~(VARatexp x1 = EXCONatexp x1')) /\
    (!x1 x1' x2'. ~(VARatexp x1 = LETatexp x1' x2')) /\
    (!x1 x1'. ~(VARatexp x1 = PARatexp x1')) /\
    (!x1 x1'. ~(VARatexp x1 = RECORDatexp x1')) /\
    (!x1 x1'. ~(CONatexp x1 = EXCONatexp x1')) /\
    (!x1 x1' x2'. ~(CONatexp x1 = LETatexp x1' x2')) /\
    (!x1 x1'. ~(CONatexp x1 = PARatexp x1')) /\
    (!x1 x1'. ~(CONatexp x1 = RECORDatexp x1')) /\
    (!x1 x1' x2'. ~(EXCONatexp x1 = LETatexp x1' x2')) /\
    (!x1 x1'. ~(EXCONatexp x1 = PARatexp x1')) /\
    (!x1 x1'. ~(EXCONatexp x1 = RECORDatexp x1')) /\
    (!x1 x2 x1'. ~(LETatexp x1 x2 = PARatexp x1')) /\
    (!x1 x2 x1'. ~(LETatexp x1 x2 = RECORDatexp x1')) /\
    (!x1 x1'. ~(PARatexp x1 = RECORDatexp x1'))) /\
   ((!x1 x1'. ~(VALdec x1 = EXCEPTdec x1')) /\
    (!x1 x1' x2'. ~(VALdec x1 = LOCALdec x1' x2')) /\
    (!x1 x1'. ~(VALdec x1 = OPENdec x1')) /\
    (!x1 x1' x2'. ~(VALdec x1 = SEQdec x1' x2')) /\
    (!x1. ~(VALdec x1 = EMPTYdec)) /\
    (!x1 x1' x2'. ~(EXCEPTdec x1 = LOCALdec x1' x2')) /\
    (!x1 x1'. ~(EXCEPTdec x1 = OPENdec x1')) /\
    (!x1 x1' x2'. ~(EXCEPTdec x1 = SEQdec x1' x2')) /\
    (!x1. ~(EXCEPTdec x1 = EMPTYdec)) /\
    (!x1 x2 x1'. ~(LOCALdec x1 x2 = OPENdec x1')) /\
    (!x1 x2 x1' x2'. ~(LOCALdec x1 x2 = SEQdec x1' x2')) /\
    (!x1 x2. ~(LOCALdec x1 x2 = EMPTYdec)) /\
    (!x1 x1' x2'. ~(OPENdec x1 = SEQdec x1' x2')) /\
    (!x1. ~(OPENdec x1 = EMPTYdec)) /\
    (!x1 x2. ~(SEQdec x1 x2 = EMPTYdec))) /\
   ((!x1 x1' x2'. ~(ATEXPexp x1 = APPexp x1' x2')) /\
    (!x1 x1' x2'. ~(ATEXPexp x1 = HANDLEexp x1' x2')) /\
    (!x1 x1'. ~(ATEXPexp x1 = RAISEexp x1')) /\
    (!x1 x1'. ~(ATEXPexp x1 = FNexp x1')) /\
    (!x1 x2 x1' x2'. ~(APPexp x1 x2 = HANDLEexp x1' x2')) /\
    (!x1 x2 x1'. ~(APPexp x1 x2 = RAISEexp x1')) /\
    (!x1 x2 x1'. ~(APPexp x1 x2 = FNexp x1')) /\
    (!x1 x2 x1'. ~(HANDLEexp x1 x2 = RAISEexp x1')) /\
    (!x1 x2 x1'. ~(HANDLEexp x1 x2 = FNexp x1')) /\
    (!x1 x1'. ~(RAISEexp x1 = FNexp x1'))) /\
   (!x1'. ~(NONE = SOME x1')) /\
   (!x1'. ~(NONE = SOME x1')) /\
   (!x1 x2 x3 x1'. ~(PLAINvalbind x1 x2 x3 = RECvalbind x1')) /\
   (!x1'. ~(NONE = SOME x1'))
gram_one_one
|- ((!x1 x1'. (SCONatexp x1 = SCONatexp x1') = x1 = x1') /\
    (!x1 x1'. (VARatexp x1 = VARatexp x1') = x1 = x1') /\
    (!x1 x1'. (CONatexp x1 = CONatexp x1') = x1 = x1') /\
    (!x1 x1'. (EXCONatexp x1 = EXCONatexp x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (LETatexp x1 x2 = LETatexp x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x1'. (PARatexp x1 = PARatexp x1') = x1 = x1') /\
    (!x1 x1'. (RECORDatexp x1 = RECORDatexp x1') = x1 = x1')) /\
   ((!x1 x1'. (VALdec x1 = VALdec x1') = x1 = x1') /\
    (!x1 x1'. (EXCEPTdec x1 = EXCEPTdec x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (LOCALdec x1 x2 = LOCALdec x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x1'. (OPENdec x1 = OPENdec x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (SEQdec x1 x2 = SEQdec x1' x2') = (x1 = x1') /\ (x2 = x2'))) /\
   ((!x1 x1'. (ATEXPexp x1 = ATEXPexp x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (APPexp x1 x2 = APPexp x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x2 x1' x2'.
      (HANDLEexp x1 x2 = HANDLEexp x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x1'. (RAISEexp x1 = RAISEexp x1') = x1 = x1') /\
    (!x1 x1'. (FNexp x1 = FNexp x1') = x1 = x1')) /\
   (!x1 x2 x3 x1' x2' x3'.
     (EXPROW x1 x2 x3 = EXPROW x1' x2' x3') =
     (x1 = x1') /\ (x2 = x2') /\ (x3 = x3')) /\
   (!x1 x1'. (SOME x1 = SOME x1') = x1 = x1') /\
   (!x1 x2 x1' x2'.
     (MATCH x1 x2 = MATCH x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x1'. (SOME x1 = SOME x1') = x1 = x1') /\
   (!x1 x2 x1' x2'.
     (MRULE x1 x2 = MRULE x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
   ((!x1 x2 x3 x1' x2' x3'.
      (PLAINvalbind x1 x2 x3 = PLAINvalbind x1' x2' x3') =
      (x1 = x1') /\ (x2 = x2') /\ (x3 = x3')) /\
    (!x1 x1'. (RECvalbind x1 = RECvalbind x1') = x1 = x1')) /\
   (!x1 x1'. (SOME x1 = SOME x1') = x1 = x1')
gram_cases
|- (!x1.
     (?y. x1 = SCONatexp y) \/
     (?y. x1 = VARatexp y) \/
     (?y. x1 = CONatexp y) \/
     (?y. x1 = EXCONatexp y) \/
     (?y y'. x1 = LETatexp y y') \/
     (?y. x1 = PARatexp y) \/
     (?y. x1 = RECORDatexp y)) /\
   (!x2.
     (?y. x2 = VALdec y) \/
     (?y. x2 = EXCEPTdec y) \/
     (?y y'. x2 = LOCALdec y y') \/
     (?y. x2 = OPENdec y) \/
     (?y y'. x2 = SEQdec y y') \/
     (x2 = EMPTYdec)) /\
   (!x3.
     (?y. x3 = ATEXPexp y) \/
     (?y y'. x3 = APPexp y y') \/
     (?y y'. x3 = HANDLEexp y y') \/
     (?y. x3 = RAISEexp y) \/
     (?y. x3 = FNexp y)) /\
   (!x4. ?y y'' y'. x4 = EXPROW y y'' y') /\
   (!x5. (x5 = NONE) \/ (?y. x5 = SOME y)) /\
   (!x6. ?y y'. x6 = MATCH y y') /\
   (!x7. (x7 = NONE) \/ (?y. x7 = SOME y)) /\
   (!x8. ?y y'. x8 = MRULE y y') /\
   (!x9.
     (?y y'' y'. x9 = PLAINvalbind y y'' y') \/ (?y. x9 = RECvalbind y)) /\
   (!x10. (x10 = NONE) \/ (?y. x10 = SOME y))
sval_Axiom
|- !f0 f1. ?!fn. (!i. fn (SVINT i) = f0 i) /\ (!s. fn (SVSTR s) = f1 s)
addr_Axiom
|- !f. ?!fn. !n. fn (ADDR n) = f n
addr_constructors_one_one
|- !n n'. (ADDR n = ADDR n') = n = n'
addr_induction_thm
|- !P. (!n. P (ADDR n)) ==> (!a. P a)
addr_cases_thm
|- !a. ?n. a = ADDR n
basval_Axiom
|- !e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17.
     ?!fn.
       (fn Size = e0) /\
       (fn Chr = e1) /\
       (fn Ord = e2) /\
       (fn Explode = e3) /\
       (fn Implode = e4) /\
       (fn Abs = e5) /\
       (fn Div = e6) /\
       (fn Mod = e7) /\
       (fn Neg = e8) /\
       (fn Times = e9) /\
       (fn Plus = e10) /\
       (fn Minus = e11) /\
       (fn Eql = e12) /\
       (fn Noteql = e13) /\
       (fn Less = e14) /\
       (fn Greater = e15) /\
       (fn Lesseql = e16) /\
       (fn Greatereql = e17)
exname_Axiom
|- !f. ?!fn. !n. fn (EXNAME n) = f n
exnameset_Axiom
|- !f. ?!fn. !s. fn (EXNAMESET s) = f s
exconenv_Axiom
|- !f. ?!fn. !f'. fn (EXCONENV f') = f f'
exconenv_induction_thm
|- !P. (!f'. P (EXCONENV f')) ==> (!e. P e)
exconenv_cases_thm
|- !e. ?f'. e = EXCONENV f'
exconenv_constructors_one_one
|- !f' f''. (EXCONENV f' = EXCONENV f'') = f' = f''