Theory: holML_Plain_Core

Parents


Type constants


Term constants


Axioms


Definitions

joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?m. v = INL m) /\ (LENGTH tl = SUC (SUC 0)) \/
           (?e. v = INR (INL e)) /\ (LENGTH tl = SUC (SUC 0)) \/
           (?e. v = INR (INR (INL e))) /\ (LENGTH tl = 0) \/
           (?e. v = INR (INR (INR (INL e)))) /\ (LENGTH tl = SUC 0) \/
           (?l. v = INR (INR (INR (INR (INL l))))) /\ (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = 0) \/
           (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
           (LENGTH tl = SUC (SUC 0)) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
           (LENGTH tl = SUC 0) \/
           (v = INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))) /\
           (LENGTH tl = SUC 0) \/
           (v =
            INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?s.
             v =
             INR
               (INR
                 (INR (INR (INR (INR (INR (INR (INR (INR (INL s))))))))))) /\
           (LENGTH tl = SUC 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 = SUC (SUC 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 = 0) \/
           (?s.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR (INR (INR (INL s)))))))))))))))) /\
           (LENGTH tl = 0) \/
           (?b.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR (INR (INL b))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (?c.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR (INL c)))))))))))))))))) /\
           (LENGTH tl = 0) \/
           (?c.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INL c))))))))))))))))))) /\
           (LENGTH tl = 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 = SUC 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) \/
           (?a.
             v =
             INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INR
                                                       (INL
                                                         a)))))))))))))))))))))) /\
           (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
                                                        (INL
                                                          one))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0) \/
           (?v.
             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
                                                             v)))))))))))))))))))))))) /\
           (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
                                                            (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
                                                              (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
                                                        (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
                                                                  one))))))))))))))))))))))))))) /\
           (LENGTH tl = SUC 0)))
       rep
joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_ISO_DEF
|- (!a.
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
         a) =
     a) /\
   (!r.
     TRP
       (\v tl.
         (?m. v = INL m) /\ (LENGTH tl = SUC (SUC 0)) \/
         (?e. v = INR (INL e)) /\ (LENGTH tl = SUC (SUC 0)) \/
         (?e. v = INR (INR (INL e))) /\ (LENGTH tl = 0) \/
         (?e. v = INR (INR (INR (INL e)))) /\ (LENGTH tl = SUC 0) \/
         (?l. v = INR (INR (INR (INR (INL l))))) /\ (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INL one)))))) /\ (LENGTH tl = 0) \/
         (v = INR (INR (INR (INR (INR (INR (INL one))))))) /\
         (LENGTH tl = SUC (SUC 0)) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INL one)))))))) /\
         (LENGTH tl = SUC 0) \/
         (v = INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))) /\
         (LENGTH tl = SUC 0) \/
         (v =
          INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?s.
           v =
           INR
             (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL s))))))))))) /\
         (LENGTH tl = SUC 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 = SUC (SUC 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 = 0) \/
         (?s.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR (INR (INR (INR (INL s)))))))))))))))) /\
         (LENGTH tl = 0) \/
         (?b.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR (INR (INR (INL b))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (?c.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR (INR (INL c)))))))))))))))))) /\
         (LENGTH tl = 0) \/
         (?c.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR (INL c))))))))))))))))))) /\
         (LENGTH tl = 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 = SUC 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) \/
         (?a.
           v =
           INR
             (INR
               (INR
                 (INR
                   (INR
                     (INR
                       (INR
                         (INR
                           (INR
                             (INR
                               (INR
                                 (INR
                                   (INR
                                     (INR
                                       (INR
                                         (INR
                                           (INR
                                             (INR
                                               (INR
                                                 (INR
                                                   (INR
                                                     (INL
                                                       a)))))))))))))))))))))) /\
         (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
                                                      (INL
                                                        one))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0) \/
         (?v.
           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
                                                           v)))))))))))))))))))))))) /\
         (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
                                                          (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
                                                            (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
                                                      (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
                                                                one))))))))))))))))))))))))))) /\
         (LENGTH tl = SUC 0))
       r =
     REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
         r) =
     r)
JOINT_int_CLOSURE_DEF
|- !m j1 j2.
     JOINT_int_CLOSURE m j1 j2 =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INL m)
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j1;
          REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j2])
JOINT_int_ENV_DEF
|- !j1 j2 e.
     JOINT_int_ENV j1 j2 e =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INL e))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j1;
          REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j2])
JOINT_int_NAMEexval_DEF
|- !e.
     JOINT_int_NAMEexval e =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INL e))) [])
JOINT_int_NAMEVALexval_DEF
|- !e j.
     JOINT_int_NAMEVALexval e j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INL e))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_DEF
|- !l' j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_label_val l'
       j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INR (INL l')))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
   ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
     (Node (INR (INR (INR (INR (INR (INL one)))))) [])
JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !j1 j2.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
       j1
       j2 =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INR (INR (INR (INL one)))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j1;
          REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j2])
JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INR (INR (INR (INR (INL one))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_RECORD_DEF
|- !j.
     JOINT_int_RECORD j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_STRENV_DEF
|- !j.
     JOINT_int_STRENV j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_DEF
|- !s j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env s j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL s)))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
   ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
     (Node
        (INR
          (INR
            (INR (INR (INR (INR (INR (INR (INR (INR (INR (INL one))))))))))))
       [])
JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !j1 j2.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       j1
       j2 =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR (INR (INR (INR (INR (INR (INR (INL one)))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j1;
          REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j2])
JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_ASSGval_DEF
|- JOINT_int_ASSGval =
   ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
     (Node
        (INR
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR (INR (INR (INR (INR (INR (INL one)))))))))))))))
       [])
JOINT_int_SVALval_DEF
|- !s.
     JOINT_int_SVALval s =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR (INR (INR (INR (INR (INL s))))))))))))))))
         [])
JOINT_int_BASval_DEF
|- !b.
     JOINT_int_BASval b =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR (INR (INR (INR (INL b)))))))))))))))))
         [])
JOINT_int_CONval_DEF
|- !c.
     JOINT_int_CONval c =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR (INR (INR (INL c))))))))))))))))))
         [])
JOINT_int_APPCONval_DEF
|- !c j.
     JOINT_int_APPCONval c j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR (INR (INL c)))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_EXVALval_DEF
|- !j.
     JOINT_int_EXVALval j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INL one))))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_RECORDval_DEF
|- !j.
     JOINT_int_RECORDval j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_ADDRval_DEF
|- !a.
     JOINT_int_ADDRval a =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (Node
          (INR
            (INR
              (INR
                (INR
                  (INR
                    (INR
                      (INR
                        (INR
                          (INR
                            (INR
                              (INR
                                (INR
                                  (INR
                                    (INR
                                      (INR
                                        (INR
                                          (INR
                                            (INR
                                              (INR
                                                (INR
                                                  (INR
                                                    (INL
                                                      a))))))))))))))))))))))
         [])
JOINT_int_CLOSUREval_DEF
|- !j.
     JOINT_int_CLOSUREval j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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)))))))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_DEF
|- !v' j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_var_val v' j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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
                                                          v'))))))))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
   ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
     (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
                                                          one)))))))))))))))))))))))))
       [])
JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !j1 j2.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
       j1
       j2 =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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
                                                              one))))))))))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j1;
          REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j2])
JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !j.
     JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
JOINT_int_VARENV_DEF
|- !j.
     JOINT_int_VARENV j =
     ABS_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
       (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
                                                                one)))))))))))))))))))))))))))
         [REP_joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv
            j])
joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select_DEF
|- (!m j1 j2.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_CLOSURE m j1 j2) =
     (((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j1 =
        2) /\
       (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j2 =
        16))
      => 1
      | 0)) /\
   (!j1 j2 e.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_ENV j1 j2 e) =
     (((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j1 =
        8) /\
       (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j2 =
        16))
      => 2
      | 0)) /\
   (!e.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_NAMEexval e) =
     3) /\
   (!e j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_NAMEVALexval e j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       12)
      => 3
      | 0)) /\
   (!l' j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_label_val l'
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       12)
      => 4
      | 0)) /\
   (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
      JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
    5) /\
   (!j1 j2.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          j1
         j2) =
     (((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j1 =
        4) /\
       (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j2 =
        5))
      => 5
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       5)
      => 6
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_RECORD j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       6)
      => 7
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_STRENV j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       11)
      => 8
      | 0)) /\
   (!s j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env s
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       2)
      => 9
      | 0)) /\
   (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
      JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
    10) /\
   (!j1 j2.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          j1
         j2) =
     (((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j1 =
        9) /\
       (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j2 =
        10))
      => 10
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       10)
      => 11
      | 0)) /\
   (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
      JOINT_int_ASSGval =
    12) /\
   (!s.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_SVALval s) =
     12) /\
   (!b.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_BASval b) =
     12) /\
   (!c.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_CONval c) =
     12) /\
   (!c j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_APPCONval c j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       12)
      => 12
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_EXVALval j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       3)
      => 12
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_RECORDval j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       7)
      => 12
      | 0)) /\
   (!a.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_ADDRval a) =
     12) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_CLOSUREval j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       1)
      => 12
      | 0)) /\
   (!v' j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_var_val v'
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       12)
      => 13
      | 0)) /\
   (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
      JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
    14) /\
   (!j1 j2.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          j1
         j2) =
     (((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j1 =
        13) /\
       (joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
          j2 =
        14))
      => 14
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       14)
      => 15
      | 0)) /\
   (!j.
     joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
       (JOINT_int_VARENV j) =
     ((joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         j =
       15)
      => 16
      | 0))
strid_env_prod_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         9)
       rep
strid_env_prod_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_abs
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       9)
       r =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_rep
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_abs r) =
     r)
closure_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         1)
       rep
closure_REP_ABS
|- (!a. closure_abs (closure_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       1)
       r =
     closure_rep (closure_abs r) =
     r)
env_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         2)
       rep
env_REP_ABS
|- (!a. env_abs (env_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       2)
       r =
     env_rep (env_abs r) =
     r)
label_val_prod_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         4)
       rep
label_val_prod_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     label_val_prod_closure_env_exval_record_strenv_val_varenv_abs
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       4)
       r =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_rep
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_abs r) =
     r)
strenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         8)
       rep
strenv_REP_ABS
|- (!a. strenv_abs (strenv_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       8)
       r =
     strenv_rep (strenv_abs r) =
     r)
varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         16)
       rep
varenv_REP_ABS
|- (!a. varenv_abs (varenv_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       16)
       r =
     varenv_rep (varenv_abs r) =
     r)
var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         15)
       rep
var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       15)
       r =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         14)
       rep
var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       14)
       r =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
var_val_prod_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         13)
       rep
var_val_prod_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     var_val_prod_closure_env_exval_record_strenv_val_varenv_abs
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_rep a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       13)
       r =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_rep
       (var_val_prod_closure_env_exval_record_strenv_val_varenv_abs r) =
     r)
val_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         12)
       rep
val_REP_ABS
|- (!a. val_abs (val_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       12)
       r =
     val_rep (val_abs r) =
     r)
strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         11)
       rep
strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       11)
       r =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         10)
       rep
strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       10)
       r =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
       (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
record_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         7)
       rep
record_REP_ABS
|- (!a. record_abs (record_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       7)
       r =
     record_rep (record_abs r) =
     r)
label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         6)
       rep
label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       6)
       r =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         5)
       rep
label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_REP_ABS
|- (!a.
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
         a) =
     a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       5)
       r =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
       (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
         r) =
     r)
exval_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (\x.
         joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
           x =
         3)
       rep
exval_REP_ABS
|- (!a. exval_abs (exval_rep a) = a) /\
   (!r.
     (\x.
       joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_select
         x =
       3)
       r =
     exval_rep (exval_abs r) =
     r)
int_CLOSURE_DEF
|- !x1 x2 x3.
     int_CLOSURE x1 x2 x3 =
     closure_abs (JOINT_int_CLOSURE x1 (env_rep x2) (varenv_rep x3))
int_ENV_DEF
|- !x1 x2 x3.
     int_ENV x1 x2 x3 =
     env_abs (JOINT_int_ENV (strenv_rep x1) (varenv_rep x2) x3)
int_NAMEexval_DEF
|- !x1. int_NAMEexval x1 = exval_abs (JOINT_int_NAMEexval x1)
int_NAMEVALexval_DEF
|- !x1 x2.
     int_NAMEVALexval x1 x2 =
     exval_abs (JOINT_int_NAMEVALexval x1 (val_rep x2))
int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1 x2 =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1
         (val_rep x2))
int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
   label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
     JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv
int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
       x1
       x2 =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          (label_val_prod_closure_env_exval_record_strenv_val_varenv_rep x1)
         (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x2))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       x1 =
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x1))
int_RECORD_DEF
|- !x1.
     int_RECORD x1 =
     record_abs
       (JOINT_int_RECORD
         (label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
           x1))
int_STRENV_DEF
|- !x1.
     int_STRENV x1 =
     strenv_abs
       (JOINT_int_STRENV
         (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
           x1))
int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1 x2 =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1
         (env_rep x2))
int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
   strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
     JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv
int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       x1
       x2 =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          (strid_env_prod_closure_env_exval_record_strenv_val_varenv_rep x1)
         (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x2))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       x1 =
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         (strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x1))
int_ASSGval_DEF
|- int_ASSGval = val_abs JOINT_int_ASSGval
int_SVALval_DEF
|- !x1. int_SVALval x1 = val_abs (JOINT_int_SVALval x1)
int_BASval_DEF
|- !x1. int_BASval x1 = val_abs (JOINT_int_BASval x1)
int_CONval_DEF
|- !x1. int_CONval x1 = val_abs (JOINT_int_CONval x1)
int_APPCONval_DEF
|- !x1 x2. int_APPCONval x1 x2 = val_abs (JOINT_int_APPCONval x1 (val_rep x2))
int_EXVALval_DEF
|- !x1. int_EXVALval x1 = val_abs (JOINT_int_EXVALval (exval_rep x1))
int_RECORDval_DEF
|- !x1. int_RECORDval x1 = val_abs (JOINT_int_RECORDval (record_rep x1))
int_ADDRval_DEF
|- !x1. int_ADDRval x1 = val_abs (JOINT_int_ADDRval x1)
int_CLOSUREval_DEF
|- !x1. int_CLOSUREval x1 = val_abs (JOINT_int_CLOSUREval (closure_rep x1))
int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1 x2 =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1
         (val_rep x2))
int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
   var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
     JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv
int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
       x1
       x2 =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          (var_val_prod_closure_env_exval_record_strenv_val_varenv_rep x1)
         (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x2))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       x1 =
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_abs
       (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_rep
           x1))
int_VARENV_DEF
|- !x1.
     int_VARENV x1 =
     varenv_abs
       (JOINT_int_VARENV
         (var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_rep
           x1))
CLOSURE
|- CLOSURE = (\x0 x1 x2. int_CLOSURE x0 x1 x2)
ENV
|- ENV = (\x0 x1 x2. int_ENV x0 x1 x2)
NAMEexval
|- NAMEexval = (\x0. int_NAMEexval x0)
NAMEVALexval
|- NAMEVALexval = (\x0 x1. int_NAMEVALexval x0 x1)
int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x0.
     int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv
       (x0,x1) =
     int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x0 x1
int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x2.
     int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1 x2) =
     (x1,x2)
int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      [] =
    int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv) /\
   (!x1 x0.
     int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (CONS x0 x1) =
     int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv x0)
       (int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1))
int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
    []) /\
   (!x1 x2.
     int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     CONS
       (int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv x1)
       (int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x2))
int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x0.
     int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (FINMAP x0) =
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x0)
int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x1.
     int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     FINMAP
       (int_inv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1)
RECORD
|- RECORD =
   (\x0.
     int_RECORD
       (int_inj_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
         x0))
int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x0.
     int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       (x0,x1) =
     int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x0 x1
int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x2.
     int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1 x2) =
     (x1,x2)
int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      [] =
    int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv) /\
   (!x1 x0.
     int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (CONS x0 x1) =
     int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       (int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv x0)
       (int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1))
int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
    []) /\
   (!x1 x2.
     int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     CONS
       (int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv x1)
       (int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x2))
int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x0.
     int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (FINMAP x0) =
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x0)
int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x1.
     int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     FINMAP
       (int_inv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1)
STRENV
|- STRENV =
   (\x0.
     int_STRENV
       (int_inj_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
         x0))
ASSGval
|- ASSGval = int_ASSGval
SVALval
|- SVALval = (\x0. int_SVALval x0)
BASval
|- BASval = (\x0. int_BASval x0)
CONval
|- CONval = (\x0. int_CONval x0)
APPCONval
|- APPCONval = (\x0 x1. int_APPCONval x0 x1)
EXVALval
|- EXVALval = (\x0. int_EXVALval x0)
RECORDval
|- RECORDval = (\x0. int_RECORDval x0)
ADDRval
|- ADDRval = (\x0. int_ADDRval x0)
CLOSUREval
|- CLOSUREval = (\x0. int_CLOSUREval x0)
int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x0.
     int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv (x0,x1) =
     int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x0 x1
int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv
|- !x1 x2.
     int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1 x2) =
     (x1,x2)
int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      [] =
    int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv) /\
   (!x1 x0.
     int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (CONS x0 x1) =
     int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv x0)
       (int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1))
int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
|- (int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
    []) /\
   (!x1 x2.
     int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     CONS (int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv x1)
       (int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x2))
int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x0.
     int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (FINMAP x0) =
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x0)
int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
|- !x1.
     int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     FINMAP
       (int_inv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1)
VARENV
|- VARENV =
   (\x0.
     int_VARENV
       (int_inj_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
         x0))
dist_aux_ftn_closure_DEF
|- (!x1 x2 x3. dist_aux_ftn_closure (int_CLOSURE x1 x2 x3) = 0) /\
   (!x1 x2 x3. dist_aux_ftn_env (int_ENV x1 x2 x3) = 1) /\
   (!x1. dist_aux_ftn_exval (int_NAMEexval x1) = 2) /\
   (!x1 x2. dist_aux_ftn_exval (int_NAMEVALexval x1 x2) = 3) /\
   (!x1 x2.
     dist_aux_ftn_label_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1 x2) =
     4) /\
   (dist_aux_ftn_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
    5) /\
   (!x1 x2.
     dist_aux_ftn_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     6) /\
   (!x1.
     dist_aux_ftn_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     7) /\
   (!x1. dist_aux_ftn_record (int_RECORD x1) = 8) /\
   (!x1. dist_aux_ftn_strenv (int_STRENV x1) = 9) /\
   (!x1 x2.
     dist_aux_ftn_strid_env_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1 x2) =
     10) /\
   (dist_aux_ftn_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
    11) /\
   (!x1 x2.
     dist_aux_ftn_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     12) /\
   (!x1.
     dist_aux_ftn_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     13) /\
   (dist_aux_ftn_val int_ASSGval = 14) /\
   (!x1. dist_aux_ftn_val (int_SVALval x1) = 15) /\
   (!x1. dist_aux_ftn_val (int_BASval x1) = 16) /\
   (!x1. dist_aux_ftn_val (int_CONval x1) = 17) /\
   (!x1 x2. dist_aux_ftn_val (int_APPCONval x1 x2) = 18) /\
   (!x1. dist_aux_ftn_val (int_EXVALval x1) = 19) /\
   (!x1. dist_aux_ftn_val (int_RECORDval x1) = 20) /\
   (!x1. dist_aux_ftn_val (int_ADDRval x1) = 21) /\
   (!x1. dist_aux_ftn_val (int_CLOSUREval x1) = 22) /\
   (!x1 x2.
     dist_aux_ftn_var_val_prod_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1 x2) =
     23) /\
   (dist_aux_ftn_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
      int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
    24) /\
   (!x1 x2.
     dist_aux_ftn_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     25) /\
   (!x1.
     dist_aux_ftn_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     26) /\
   (!x1. dist_aux_ftn_varenv (int_VARENV x1) = 27)
int_CLOSURE_arg1_DEF
|- !x1 x2 x3. int_CLOSURE_arg1 (int_CLOSURE x1 x2 x3) = x1
int_CLOSURE_arg2_DEF
|- !x1 x2 x3. int_CLOSURE_arg2 (int_CLOSURE x1 x2 x3) = x2
int_CLOSURE_arg3_DEF
|- !x1 x2 x3. int_CLOSURE_arg3 (int_CLOSURE x1 x2 x3) = x3
int_ENV_arg1_DEF
|- !x1 x2 x3. int_ENV_arg1 (int_ENV x1 x2 x3) = x1
int_ENV_arg2_DEF
|- !x1 x2 x3. int_ENV_arg2 (int_ENV x1 x2 x3) = x2
int_ENV_arg3_DEF
|- !x1 x2 x3. int_ENV_arg3 (int_ENV x1 x2 x3) = x3
int_NAMEexval_arg_DEF
|- (!x1. int_NAMEexval_arg (int_NAMEexval x1) = x1) /\
   (!x1 x2. int_NAMEexval_arg (int_NAMEVALexval x1 x2) = (@x. T))
int_NAMEVALexval_arg1_DEF
|- (!x1 x2. int_NAMEVALexval_arg1 (int_NAMEVALexval x1 x2) = x1) /\
   (!x1. int_NAMEVALexval_arg1 (int_NAMEexval x1) = (@x. T))
int_NAMEVALexval_arg2_DEF
|- (!x1 x2. int_NAMEVALexval_arg2 (int_NAMEVALexval x1 x2) = x2) /\
   (!x1. int_NAMEVALexval_arg2 (int_NAMEexval x1) = (@x. T))
int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_arg1_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_arg1
       (int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1 x2) =
     x1
int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_arg2_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_label_val_arg2
       (int_closure_env_exval_record_strenv_val_varenv_ch44_label_val x1 x2) =
     x2
int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg1_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg1
       (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x1) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg1
      int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg2_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg2
       (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x2) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_arg2
      int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     x1
int_RECORD_arg_DEF
|- !x1. int_RECORD_arg (int_RECORD x1) = x1
int_STRENV_arg_DEF
|- !x1. int_STRENV_arg (int_STRENV x1) = x1
int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_arg1_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_arg1
       (int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1 x2) =
     x1
int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_arg2_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env_arg2
       (int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env x1 x2) =
     x2
int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg1_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg1
       (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x1) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg1
      int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg2_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg2
       (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x2) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_arg2
      int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     x1
int_SVALval_arg_DEF
|- (!x1. int_SVALval_arg (int_SVALval x1) = x1) /\
   (int_SVALval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_SVALval_arg (int_BASval x1) = (@x. T)) /\
   (!x1. int_SVALval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_SVALval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_SVALval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_SVALval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_SVALval_arg (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_SVALval_arg (int_CLOSUREval x1) = (@x. T))
int_BASval_arg_DEF
|- (!x1. int_BASval_arg (int_BASval x1) = x1) /\
   (int_BASval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_BASval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_BASval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_BASval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_BASval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_BASval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_BASval_arg (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_BASval_arg (int_CLOSUREval x1) = (@x. T))
int_CONval_arg_DEF
|- (!x1. int_CONval_arg (int_CONval x1) = x1) /\
   (int_CONval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_CONval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_CONval_arg (int_BASval x1) = (@x. T)) /\
   (!x1 x2. int_CONval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_CONval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_CONval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_CONval_arg (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_CONval_arg (int_CLOSUREval x1) = (@x. T))
int_APPCONval_arg1_DEF
|- (!x1 x2. int_APPCONval_arg1 (int_APPCONval x1 x2) = x1) /\
   (int_APPCONval_arg1 int_ASSGval = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_SVALval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_BASval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_CONval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg1 (int_CLOSUREval x1) = (@x. T))
int_APPCONval_arg2_DEF
|- (!x1 x2. int_APPCONval_arg2 (int_APPCONval x1 x2) = x2) /\
   (int_APPCONval_arg2 int_ASSGval = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_SVALval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_BASval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_CONval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_APPCONval_arg2 (int_CLOSUREval x1) = (@x. T))
int_EXVALval_arg_DEF
|- (!x1. int_EXVALval_arg (int_EXVALval x1) = x1) /\
   (int_EXVALval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_BASval x1) = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_EXVALval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_EXVALval_arg (int_CLOSUREval x1) = (@x. T))
int_RECORDval_arg_DEF
|- (!x1. int_RECORDval_arg (int_RECORDval x1) = x1) /\
   (int_RECORDval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_BASval x1) = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_RECORDval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_ADDRval x1) = (@x. T)) /\
   (!x1. int_RECORDval_arg (int_CLOSUREval x1) = (@x. T))
int_ADDRval_arg_DEF
|- (!x1. int_ADDRval_arg (int_ADDRval x1) = x1) /\
   (int_ADDRval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_BASval x1) = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_ADDRval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_ADDRval_arg (int_CLOSUREval x1) = (@x. T))
int_CLOSUREval_arg_DEF
|- (!x1. int_CLOSUREval_arg (int_CLOSUREval x1) = x1) /\
   (int_CLOSUREval_arg int_ASSGval = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_SVALval x1) = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_BASval x1) = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_CONval x1) = (@x. T)) /\
   (!x1 x2. int_CLOSUREval_arg (int_APPCONval x1 x2) = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_EXVALval x1) = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_RECORDval x1) = (@x. T)) /\
   (!x1. int_CLOSUREval_arg (int_ADDRval x1) = (@x. T))
int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_arg1_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_arg1
       (int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1 x2) =
     x1
int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_arg2_DEF
|- !x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_ch44_var_val_arg2
       (int_closure_env_exval_record_strenv_val_varenv_ch44_var_val x1 x2) =
     x2
int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg1_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg1
       (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x1) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg1
      int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg2_DEF
|- (!x1 x2.
     int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg2
       (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
          x1
         x2) =
     x2) /\
   (int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_arg2
      int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
    (@x. T))
int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg_DEF
|- !x1.
     int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_arg
       (int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
         x1) =
     x1
int_VARENV_arg_DEF
|- !x1. int_VARENV_arg (int_VARENV x1) = x1
is_ASSGval_DEF
|- is_ASSGval ASSGval /\
   (!x1. ~(is_ASSGval (SVALval x1))) /\
   (!x1. ~(is_ASSGval (BASval x1))) /\
   (!x1. ~(is_ASSGval (CONval x1))) /\
   (!x1 x2. ~(is_ASSGval (APPCONval x1 x2))) /\
   (!x1. ~(is_ASSGval (EXVALval x1))) /\
   (!x1. ~(is_ASSGval (RECORDval x1))) /\
   (!x1. ~(is_ASSGval (ADDRval x1))) /\
   (!x1. ~(is_ASSGval (CLOSUREval x1)))
is_SVALval_DEF
|- (!x1. is_SVALval (SVALval x1)) /\
   ~(is_SVALval ASSGval) /\
   (!x1. ~(is_SVALval (BASval x1))) /\
   (!x1. ~(is_SVALval (CONval x1))) /\
   (!x1 x2. ~(is_SVALval (APPCONval x1 x2))) /\
   (!x1. ~(is_SVALval (EXVALval x1))) /\
   (!x1. ~(is_SVALval (RECORDval x1))) /\
   (!x1. ~(is_SVALval (ADDRval x1))) /\
   (!x1. ~(is_SVALval (CLOSUREval x1)))
is_BASval_DEF
|- (!x1. is_BASval (BASval x1)) /\
   ~(is_BASval ASSGval) /\
   (!x1. ~(is_BASval (SVALval x1))) /\
   (!x1. ~(is_BASval (CONval x1))) /\
   (!x1 x2. ~(is_BASval (APPCONval x1 x2))) /\
   (!x1. ~(is_BASval (EXVALval x1))) /\
   (!x1. ~(is_BASval (RECORDval x1))) /\
   (!x1. ~(is_BASval (ADDRval x1))) /\
   (!x1. ~(is_BASval (CLOSUREval x1)))
is_CONval_DEF
|- (!x1. is_CONval (CONval x1)) /\
   ~(is_CONval ASSGval) /\
   (!x1. ~(is_CONval (SVALval x1))) /\
   (!x1. ~(is_CONval (BASval x1))) /\
   (!x1 x2. ~(is_CONval (APPCONval x1 x2))) /\
   (!x1. ~(is_CONval (EXVALval x1))) /\
   (!x1. ~(is_CONval (RECORDval x1))) /\
   (!x1. ~(is_CONval (ADDRval x1))) /\
   (!x1. ~(is_CONval (CLOSUREval x1)))
is_APPCONval_DEF
|- (!x1 x2. is_APPCONval (APPCONval x1 x2)) /\
   ~(is_APPCONval ASSGval) /\
   (!x1. ~(is_APPCONval (SVALval x1))) /\
   (!x1. ~(is_APPCONval (BASval x1))) /\
   (!x1. ~(is_APPCONval (CONval x1))) /\
   (!x1. ~(is_APPCONval (EXVALval x1))) /\
   (!x1. ~(is_APPCONval (RECORDval x1))) /\
   (!x1. ~(is_APPCONval (ADDRval x1))) /\
   (!x1. ~(is_APPCONval (CLOSUREval x1)))
is_EXVALval_DEF
|- (!x1. is_EXVALval (EXVALval x1)) /\
   ~(is_EXVALval ASSGval) /\
   (!x1. ~(is_EXVALval (SVALval x1))) /\
   (!x1. ~(is_EXVALval (BASval x1))) /\
   (!x1. ~(is_EXVALval (CONval x1))) /\
   (!x1 x2. ~(is_EXVALval (APPCONval x1 x2))) /\
   (!x1. ~(is_EXVALval (RECORDval x1))) /\
   (!x1. ~(is_EXVALval (ADDRval x1))) /\
   (!x1. ~(is_EXVALval (CLOSUREval x1)))
is_RECORDval_DEF
|- (!x1. is_RECORDval (RECORDval x1)) /\
   ~(is_RECORDval ASSGval) /\
   (!x1. ~(is_RECORDval (SVALval x1))) /\
   (!x1. ~(is_RECORDval (BASval x1))) /\
   (!x1. ~(is_RECORDval (CONval x1))) /\
   (!x1 x2. ~(is_RECORDval (APPCONval x1 x2))) /\
   (!x1. ~(is_RECORDval (EXVALval x1))) /\
   (!x1. ~(is_RECORDval (ADDRval x1))) /\
   (!x1. ~(is_RECORDval (CLOSUREval x1)))
is_ADDRval_DEF
|- (!x1. is_ADDRval (ADDRval x1)) /\
   ~(is_ADDRval ASSGval) /\
   (!x1. ~(is_ADDRval (SVALval x1))) /\
   (!x1. ~(is_ADDRval (BASval x1))) /\
   (!x1. ~(is_ADDRval (CONval x1))) /\
   (!x1 x2. ~(is_ADDRval (APPCONval x1 x2))) /\
   (!x1. ~(is_ADDRval (EXVALval x1))) /\
   (!x1. ~(is_ADDRval (RECORDval x1))) /\
   (!x1. ~(is_ADDRval (CLOSUREval x1)))
is_CLOSUREval_DEF
|- (!x1. is_CLOSUREval (CLOSUREval x1)) /\
   ~(is_CLOSUREval ASSGval) /\
   (!x1. ~(is_CLOSUREval (SVALval x1))) /\
   (!x1. ~(is_CLOSUREval (BASval x1))) /\
   (!x1. ~(is_CLOSUREval (CONval x1))) /\
   (!x1 x2. ~(is_CLOSUREval (APPCONval x1 x2))) /\
   (!x1. ~(is_CLOSUREval (EXVALval x1))) /\
   (!x1. ~(is_CLOSUREval (RECORDval x1))) /\
   (!x1. ~(is_CLOSUREval (ADDRval x1)))
is_NAMEexval_DEF
|- (!x1. is_NAMEexval (NAMEexval x1)) /\
   (!x1 x2. ~(is_NAMEexval (NAMEVALexval x1 x2)))
is_NAMEVALexval_DEF
|- (!x1. ~(is_NAMEVALexval (NAMEexval x1))) /\
   (!x1 x2. is_NAMEVALexval (NAMEVALexval x1 x2))
RECORD_arg_DEF
|- !x1. RECORD_arg (RECORD x1) = x1
SVALval_arg_DEF
|- (!x1. SVALval_arg (SVALval x1) = x1) /\
   (SVALval_arg ASSGval = (@x. T)) /\
   (!x1. SVALval_arg (BASval x1) = (@x. T)) /\
   (!x1. SVALval_arg (CONval x1) = (@x. T)) /\
   (!x1 x2. SVALval_arg (APPCONval x1 x2) = (@x. T)) /\
   (!x1. SVALval_arg (EXVALval x1) = (@x. T)) /\
   (!x1. SVALval_arg (RECORDval x1) = (@x. T)) /\
   (!x1. SVALval_arg (ADDRval x1) = (@x. T)) /\
   (!x1. SVALval_arg (CLOSUREval x1) = (@x. T))
ENV_arg1_DEF
|- !x1 x2 x3. ENV_arg1 (ENV x1 x2 x3) = x1
ENV_arg2_DEF
|- !x1 x2 x3. ENV_arg2 (ENV x1 x2 x3) = x2
ENV_arg3_DEF
|- !x1 x2 x3. ENV_arg3 (ENV x1 x2 x3) = x3
VARENV_arg_DEF
|- !x1. VARENV_arg (VARENV x1) = x1
CLOSURE_arg1_DEF
|- !x1 x2 x3. CLOSURE_arg1 (CLOSURE x1 x2 x3) = x1
CLOSURE_arg2_DEF
|- !x1 x2 x3. CLOSURE_arg2 (CLOSURE x1 x2 x3) = x2
CLOSURE_arg3_DEF
|- !x1 x2 x3. CLOSURE_arg3 (CLOSURE x1 x2 x3) = x3
CLOSUREval_arg_DEF
|- (!x1. CLOSUREval_arg (CLOSUREval x1) = x1) /\
   (CLOSUREval_arg ASSGval = (@x. T)) /\
   (!x1. CLOSUREval_arg (SVALval x1) = (@x. T)) /\
   (!x1. CLOSUREval_arg (BASval x1) = (@x. T)) /\
   (!x1. CLOSUREval_arg (CONval x1) = (@x. T)) /\
   (!x1 x2. CLOSUREval_arg (APPCONval x1 x2) = (@x. T)) /\
   (!x1. CLOSUREval_arg (EXVALval x1) = (@x. T)) /\
   (!x1. CLOSUREval_arg (RECORDval x1) = (@x. T)) /\
   (!x1. CLOSUREval_arg (ADDRval x1) = (@x. T))
STRENV_arg_DEF
|- !x1. STRENV_arg (STRENV x1) = x1
label_in_rec_DEF
|- !x1. label_in_rec (RECORD x1) = (\l. in_dom x1 l)
lookup_label_DEF
|- !x1. lookup_label (RECORD x1) = (\l. finmap_lookup l x1)
empty_record_DEF
|- empty_record = RECORD empty_finmap
insert_into_record_DEF
|- !x1.
     insert_into_record (RECORD x1) =
     (\l v. RECORD (finmap_insert less_label l v x1))
add_record_DEF
|- !rec1 rec2.
     add_record rec1 rec2 =
     RECORD (finmap_modify less_label (RECORD_arg rec1) (RECORD_arg rec2))
field1_val_DEF
|- (!x1. field1_val (RECORDval x1) = lower (lookup_label x1 (LABEL "1"))) /\
   (field1_val ASSGval = (@x. T)) /\
   (!x1. field1_val (SVALval x1) = (@x. T)) /\
   (!x1. field1_val (BASval x1) = (@x. T)) /\
   (!x1. field1_val (CONval x1) = (@x. T)) /\
   (!x1 x2. field1_val (APPCONval x1 x2) = (@x. T)) /\
   (!x1. field1_val (EXVALval x1) = (@x. T)) /\
   (!x1. field1_val (ADDRval x1) = (@x. T)) /\
   (!x1. field1_val (CLOSUREval x1) = (@x. T))
field2_val_DEF
|- (!x1. field2_val (RECORDval x1) = lower (lookup_label x1 (LABEL "2"))) /\
   (field2_val ASSGval = (@x. T)) /\
   (!x1. field2_val (SVALval x1) = (@x. T)) /\
   (!x1. field2_val (BASval x1) = (@x. T)) /\
   (!x1. field2_val (CONval x1) = (@x. T)) /\
   (!x1 x2. field2_val (APPCONval x1 x2) = (@x. T)) /\
   (!x1. field2_val (EXVALval x1) = (@x. T)) /\
   (!x1. field2_val (ADDRval x1) = (@x. T)) /\
   (!x1. field2_val (CLOSUREval x1) = (@x. T))
intfield1_DEF
|- !v. intfield1 v = SVINT_arg (SVALval_arg (field1_val v))
intfield2_DEF
|- !v. intfield2 v = SVINT_arg (SVALval_arg (field2_val v))
strfield1_DEF
|- !v. strfield1 v = SVSTR_arg (SVALval_arg (field1_val v))
strfield2_DEF
|- !v. strfield2 v = SVSTR_arg (SVALval_arg (field2_val v))
lookupstrid_DEF
|- (!x1 x2 x3. lookupstrid_env (ENV x1 x2 x3) = lookupstrid_strenv x1) /\
   (!x1. lookupstrid_strenv (STRENV x1) = (\strid. finmap_lookup strid x1))
lookuplongstrid_env_DEF
|- (!E s.
     lookuplongstrid_env E (BASE s) = lookupstrid_strenv (ENV_arg1 E) s) /\
   (!E ls strid.
     lookuplongstrid_env E (QUALIFIED strid ls) =
     ((lookupstrid_strenv (ENV_arg1 E) strid = undefined)
      => undefined
      | (lookuplongstrid_env (lower (lookupstrid_strenv (ENV_arg1 E) strid))
          ls)))
lookupvar_DEF
|- (!x1 x2 x3. lookupvar_env (ENV x1 x2 x3) = lookupvar_varenv x2) /\
   (!x1. lookupvar_varenv (VARENV x1) = (\v. finmap_lookup v x1))
lookupexcon_DEF
|- !x1 x2 x3. lookupexcon_env (ENV x1 x2 x3) = lookupexcon_exconenv x3
lookuplongvar_env_DEF
|- (!E v. lookuplongvar_env E (BASE v) = lookupvar_varenv (ENV_arg2 E) v) /\
   (!E lv strid.
     lookuplongvar_env E (QUALIFIED strid lv) =
     ((lookupstrid_strenv (ENV_arg1 E) strid = undefined)
      => undefined
      | (lookuplongvar_env (lower (lookupstrid_strenv (ENV_arg1 E) strid))
          lv)))
lookuplongexcon_env_DEF
|- (!E ex.
     lookuplongexcon_env E (BASE ex) =
     lookupexcon_exconenv (ENV_arg3 E) ex) /\
   (!E lex strid.
     lookuplongexcon_env E (QUALIFIED strid lex) =
     ((lookupstrid_strenv (ENV_arg1 E) strid = undefined)
      => undefined
      | (lookuplongexcon_env (lower (lookupstrid_strenv (ENV_arg1 E) strid))
          lex)))
empty_varenv_DEF
|- empty_varenv = VARENV empty_finmap
insert_into_varenv_DEF
|- !x1.
     insert_into_varenv (VARENV x1) =
     (\var val. VARENV (finmap_insert less_var var val x1))
add_varenv_DEF
|- !VE1 VE2.
     add_varenv VE1 VE2 =
     VARENV (finmap_modify less_var (VARENV_arg VE1) (VARENV_arg VE2))
empty_strenv_DEF
|- empty_strenv = STRENV empty_finmap
insert_into_strenv_DEF
|- !x1.
     insert_into_strenv (STRENV x1) =
     (\strid env. STRENV (finmap_insert less_strid strid env x1))
add_strenv_DEF
|- !SE1 SE2.
     add_strenv SE1 SE2 =
     STRENV (finmap_modify less_strid (STRENV_arg SE1) (STRENV_arg SE2))
add_env_DEF
|- !x1 x2 x3.
     add_env (ENV x1 x2 x3) =
     (\e.
       ENV (add_strenv x1 (ENV_arg1 e)) (add_varenv x2 (ENV_arg2 e))
         (add_exconenv x3 (ENV_arg3 e)))
add_nonemptylist_env_DEF
|- (!E. add_nonemptylist_env (ONE E) = E) /\
   (!Es E.
     add_nonemptylist_env (MORE E Es) = add_env E (add_nonemptylist_env Es))
rec_helper_DEF
|- (!VE. rec_helper [] VE = []) /\
   (!h t VE.
     rec_helper (CONS h t) VE =
     ((is_CLOSUREval (SND h))
      => (CONS
            (FST h,
             CLOSUREval
               (CLOSURE (CLOSURE_arg1 (CLOSUREval_arg (SND h)))
                  (CLOSURE_arg2 (CLOSUREval_arg (SND h)))
                 VE))
           (rec_helper t VE))
      | (CONS h (rec_helper t VE))))
rec_varenv_DEF
|- !VE.
     rec_varenv VE =
     VARENV (FINMAP (rec_helper (FINMAP_arg (VARENV_arg VE)) VE))
vars_from_varenv_DEF
|- !x1. vars_from_varenv (VARENV x1) = finmap_dom x1
cut_varenv_DEF
|- !x1. cut_varenv (VARENV x1) = (\vars. VARENV (restrict_finmap x1 vars))
pack_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?e. v = e) /\ (LENGTH tl = 0))) rep
pack_ISO_DEF
|- (!a. ABS_pack (REP_pack a) = a) /\
   (!r.
     TRP (\v tl. (?e. v = e) /\ (LENGTH tl = 0)) r =
     REP_pack (ABS_pack r) =
     r)
PACK_DEF
|- !e. PACK e = ABS_pack (Node e [])
PACK_arg_DEF
|- !ev. PACK_arg (PACK ev) = ev
val_pack_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?v. v = INL v) /\ (LENGTH tl = 0) \/
           (?p. v = INR p) /\ (LENGTH tl = 0)))
       rep
val_pack_ISO_DEF
|- (!a. ABS_val_pack (REP_val_pack a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?v. v = INL v) /\ (LENGTH tl = 0) \/
         (?p. v = INR p) /\ (LENGTH tl = 0))
       r =
     REP_val_pack (ABS_val_pack r) =
     r)
VALvp_DEF
|- !v'. VALvp v' = ABS_val_pack (Node (INL v') [])
PACKvp_DEF
|- !p. PACKvp p = ABS_val_pack (Node (INR p) [])
is_VALvp_DEF
|- (!v. is_VALvp (VALvp v) = T) /\ (!p. is_VALvp (PACKvp p) = F)
is_PACKvp_DEF
|- (!p. is_PACKvp (PACKvp p) = T) /\ (!v. is_PACKvp (VALvp v) = F)
VALvp_arg_DEF
|- !v. VALvp_arg (VALvp v) = v
PACKvp_arg_DEF
|- !v. PACKvp_arg (PACKvp v) = v
record_pack_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?r. v = INL r) /\ (LENGTH tl = 0) \/
           (?p. v = INR p) /\ (LENGTH tl = 0)))
       rep
record_pack_ISO_DEF
|- (!a. ABS_record_pack (REP_record_pack a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?r. v = INL r) /\ (LENGTH tl = 0) \/
         (?p. v = INR p) /\ (LENGTH tl = 0))
       r =
     REP_record_pack (ABS_record_pack r) =
     r)
RECORDrp_DEF
|- !r. RECORDrp r = ABS_record_pack (Node (INL r) [])
PACKrp_DEF
|- !p. PACKrp p = ABS_record_pack (Node (INR p) [])
is_RECORDrp_DEF
|- (!r. is_RECORDrp (RECORDrp r) = T) /\ (!p. is_RECORDrp (PACKrp p) = F)
RECORDrp_arg_DEF
|- !r. RECORDrp_arg (RECORDrp r) = r
PACKrp_arg_DEF
|- !p. PACKrp_arg (PACKrp p) = p
val_pack_fail_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?v. v = INL v) /\ (LENGTH tl = 0) \/
           (?p. v = INR (INL p)) /\ (LENGTH tl = 0) \/
           (v = INR (INR one)) /\ (LENGTH tl = 0)))
       rep
val_pack_fail_ISO_DEF
|- (!a. ABS_val_pack_fail (REP_val_pack_fail a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?v. v = INL v) /\ (LENGTH tl = 0) \/
         (?p. v = INR (INL p)) /\ (LENGTH tl = 0) \/
         (v = INR (INR one)) /\ (LENGTH tl = 0))
       r =
     REP_val_pack_fail (ABS_val_pack_fail r) =
     r)
VALvpf_DEF
|- !v'. VALvpf v' = ABS_val_pack_fail (Node (INL v') [])
PACKvpf_DEF
|- !p. PACKvpf p = ABS_val_pack_fail (Node (INR (INL p)) [])
FAILvpf_DEF
|- FAILvpf = ABS_val_pack_fail (Node (INR (INR one)) [])
is_VALvpf_DEF
|- (!v. is_VALvpf (VALvpf v) = T) /\
   (!p. is_VALvpf (PACKvpf p) = F) /\
   (is_VALvpf FAILvpf = F)
is_PACKvpf_DEF
|- (!v. is_PACKvpf (VALvpf v) = F) /\
   (!p. is_PACKvpf (PACKvpf p) = T) /\
   (is_PACKvpf FAILvpf = F)
VALvpf_arg_DEF
|- !v. VALvpf_arg (VALvpf v) = v
PACKvpf_arg_DEF
|- !p. PACKvpf_arg (PACKvpf p) = p
env_pack_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?e. v = INL e) /\ (LENGTH tl = 0) \/
           (?p. v = INR p) /\ (LENGTH tl = 0)))
       rep
env_pack_ISO_DEF
|- (!a. ABS_env_pack (REP_env_pack a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?e. v = INL e) /\ (LENGTH tl = 0) \/
         (?p. v = INR p) /\ (LENGTH tl = 0))
       r =
     REP_env_pack (ABS_env_pack r) =
     r)
ENVep_DEF
|- !e. ENVep e = ABS_env_pack (Node (INL e) [])
PACKep_DEF
|- !p. PACKep p = ABS_env_pack (Node (INR p) [])
is_ENVep_DEF
|- (!e. is_ENVep (ENVep e) = T) /\ (!p. is_ENVep (PACKep p) = F)
ENVep_arg_DEF
|- !e. ENVep_arg (ENVep e) = e
PACKep_arg_DEF
|- !p. PACKep_arg (PACKep p) = p
varenv_pack_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?v. v = INL v) /\ (LENGTH tl = 0) \/
           (?p. v = INR p) /\ (LENGTH tl = 0)))
       rep
varenv_pack_ISO_DEF
|- (!a. ABS_varenv_pack (REP_varenv_pack a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?v. v = INL v) /\ (LENGTH tl = 0) \/
         (?p. v = INR p) /\ (LENGTH tl = 0))
       r =
     REP_varenv_pack (ABS_varenv_pack r) =
     r)
VARENVvep_DEF
|- !v'. VARENVvep v' = ABS_varenv_pack (Node (INL v') [])
PACKvep_DEF
|- !p. PACKvep p = ABS_varenv_pack (Node (INR p) [])
is_VARENVvep_DEF
|- (!ve. is_VARENVvep (VARENVvep ve) = T) /\
   (!p. is_VARENVvep (PACKvep p) = F)
VARENVvep_arg_DEF
|- !ve. VARENVvep_arg (VARENVvep ve) = ve
PACKvep_arg_DEF
|- !ve. PACKvep_arg (PACKvep ve) = ve
exconenv_pack_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?e. v = INL e) /\ (LENGTH tl = 0) \/
           (?p. v = INR p) /\ (LENGTH tl = 0)))
       rep
exconenv_pack_ISO_DEF
|- (!a. ABS_exconenv_pack (REP_exconenv_pack a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?e. v = INL e) /\ (LENGTH tl = 0) \/
         (?p. v = INR p) /\ (LENGTH tl = 0))
       r =
     REP_exconenv_pack (ABS_exconenv_pack r) =
     r)
EXCONENVeep_DEF
|- !e. EXCONENVeep e = ABS_exconenv_pack (Node (INL e) [])
PACKeep_DEF
|- !p. PACKeep p = ABS_exconenv_pack (Node (INR p) [])
is_EXCONENVeep_DEF
|- (!ee. is_EXCONENVeep (EXCONENVeep ee) = T) /\
   (!p. is_EXCONENVeep (PACKeep p) = F)
EXCONENVeep_arg_DEF
|- !ee. EXCONENVeep_arg (EXCONENVeep ee) = ee
PACKeep_arg_DEF
|- !ee. PACKeep_arg (PACKeep ee) = ee
varenv_fail_TY_DEF
|- ?rep.
     TYPE_DEFINITION
       (TRP
         (\v tl.
           (?v. v = INL v) /\ (LENGTH tl = 0) \/
           (v = INR one) /\ (LENGTH tl = 0)))
       rep
varenv_fail_ISO_DEF
|- (!a. ABS_varenv_fail (REP_varenv_fail a) = a) /\
   (!r.
     TRP
       (\v tl.
         (?v. v = INL v) /\ (LENGTH tl = 0) \/
         (v = INR one) /\ (LENGTH tl = 0))
       r =
     REP_varenv_fail (ABS_varenv_fail r) =
     r)
VARENVvef_DEF
|- !v'. VARENVvef v' = ABS_varenv_fail (Node (INL v') [])
FAILvef_DEF
|- FAILvef = ABS_varenv_fail (Node (INR one) [])
is_VARENVvef_DEF
|- (!ve. is_VARENVvef (VARENVvef ve) = T) /\ (is_VARENVvef FAILvef = F)
is_FAILvef_DEF
|- (is_FAILvef FAILvef = T) /\ (!ve. is_FAILvef (VARENVvef ve) = F)
VARENVvef_arg_DEF
|- !ve. VARENVvef_arg (VARENVvef ve) = ve
mem_TY_DEF
|- ?rep. TYPE_DEFINITION (TRP (\v tl. (?f. v = f) /\ (LENGTH tl = 0))) rep
mem_ISO_DEF
|- (!a. ABS_mem (REP_mem a) = a) /\
   (!r.
     TRP (\v tl. (?f. v = f) /\ (LENGTH tl = 0)) r = REP_mem (ABS_mem r) = r)
MEM_DEF
|- !f'. MEM f' = ABS_mem (Node f' [])
lookupaddr_mem_DEF
|- !fm a. lookupaddr_mem (MEM fm) a = finmap_lookup a fm
MEM_arg_DEF
|- !fm. MEM_arg (MEM fm) = fm
state_TY_DEF
|- ?rep.
     TYPE_DEFINITION (TRP (\v tl. (?m e. v = (m,e)) /\ (LENGTH tl = 0))) rep
state_ISO_DEF
|- (!a. ABS_state (REP_state a) = a) /\
   (!r.
     TRP (\v tl. (?m e. v = (m,e)) /\ (LENGTH tl = 0)) r =
     REP_state (ABS_state r) =
     r)
STATE_DEF
|- !m e. STATE m e = ABS_state (Node (m,e) [])
STATE_arg1_DEF
|- !ens m. STATE_arg1 (STATE m ens) = m
STATE_arg2_DEF
|- !ens m. STATE_arg2 (STATE m ens) = ens
lookupaddr_DEF
|- !m ens a. lookupaddr_state (STATE m ens) a = lookupaddr_mem m a
new_exname_DEF
|- !es.
     new_exname (EXNAMESET es) =
     (@en. ~(en IN es) /\ (!en'. less_exname en' en ==> en' IN es))
add_exname_DEF
|- !exname ens m.
     add_exname exname (STATE m ens) =
     STATE m (EXNAMESET (exname INSERT EXNAMESET_arg ens))
new_addr_DEF
|- !ens m. new_addr (STATE m ens) = next_dom less_addr (MEM_arg m)
insert_into_mem_DEF
|- !f a v. insert_into_mem (MEM f) a v = MEM (finmap_insert less_addr a v f)
insert_into_state_mem_DEF
|- !m ens a v.
     insert_into_state_mem (STATE m ens) a v =
     STATE (insert_into_mem m a v) ens
explode_str_DEF
|- (explode_str "" = CONval (CON "nil")) /\
   (!s a.
     explode_str (STRING a s) =
     APPCONval (CON "::")
       (RECORDval
         (insert_into_record
            (insert_into_record empty_record (LABEL "1")
              (SVALval (SVSTR (STRING a ""))))
            (LABEL "2")
           (explode_str s))))
implode_DEF
|- (!x1. implode_str (CONval x1) = "") /\
   (!x1 x2.
     implode_str (APPCONval x1 x2) =
     STRING (first_char (strfield1 x2)) (implode_str x2)) /\
   (!x1. implode_str (RECORDval x1) = implode10 x1) /\
   (implode_str ASSGval = (@x. T)) /\
   (!x1. implode_str (SVALval x1) = (@x. T)) /\
   (!x1. implode_str (BASval x1) = (@x. T)) /\
   (!x1. implode_str (EXVALval x1) = (@x. T)) /\
   (!x1. implode_str (ADDRval x1) = (@x. T)) /\
   (!x1. implode_str (CLOSUREval x1) = (@x. T)) /\
   (!x1. implode10 (RECORD x1) = implode11 x1) /\
   (!x1. implode11 (FINMAP x1) = implode12 x1) /\
   (!x1 x2.
     implode12 (CONS x1 x2) =
     ((FST x1 = LABEL "2") => (implode13 x1) | (implode12 x2))) /\
   (implode12 [] = "") /\
   (!x1 x2. implode13 (x1,x2) = implode_str x2)
initial_varenv_DEF
|- initial_varenv =
   insert_into_varenv
     (insert_into_varenv
        (insert_into_varenv
           (insert_into_varenv
              (insert_into_varenv
                 (insert_into_varenv
                    (insert_into_varenv
                       (insert_into_varenv
                          (insert_into_varenv
                             (insert_into_varenv
                                (insert_into_varenv
                                   (insert_into_varenv
                                      (insert_into_varenv
                                         (insert_into_varenv
                                            (insert_into_varenv
                                               (insert_into_varenv
                                                  (insert_into_varenv
                                                     (insert_into_varenv
                                                        (insert_into_varenv
                                                           empty_varenv
                                                           (VAR ">=")
                                                          (BASval Greatereql))
                                                        (VAR "<=")
                                                       (BASval Lesseql))
                                                     (VAR ">")
                                                    (BASval Greater))
                                                  (VAR "<")
                                                 (BASval Less))
                                               (VAR "<>")
                                              (BASval Noteql))
                                            (VAR "=")
                                           (BASval Eql))
                                         (VAR "-")
                                        (BASval Minus))
                                      (VAR "+")
                                     (BASval Plus))
                                   (VAR "*")
                                  (BASval Times))
                                (VAR "~")
                               (BASval Neg))
                             (VAR "mod")
                            (BASval Mod))
                          (VAR "div")
                         (BASval Div))
                       (VAR "abs")
                      (BASval Abs))
                    (VAR "implode")
                   (BASval Implode))
                 (VAR "explode")
                (BASval Explode))
              (VAR "ord")
             (BASval Ord))
           (VAR "chr")
          (BASval Chr))
        (VAR "size")
       (BASval Size))
     (VAR ":=")
     ASSGval
initial_exconenv_DEF
|- initial_exconenv =
   insert_into_exconenv
     (insert_into_exconenv
        (insert_into_exconenv
           (insert_into_exconenv
              (insert_into_exconenv
                 (insert_into_exconenv
                    (insert_into_exconenv
                       (insert_into_exconenv
                          (insert_into_exconenv empty_exconenv (EXCON "Abs")
                            (EXNAME 0))
                          (EXCON "Div")
                         (EXNAME 1))
                       (EXCON "Mod")
                      (EXNAME 2))
                    (EXCON "Prod")
                   (EXNAME 3))
                 (EXCON "Neg")
                (EXNAME 4))
              (EXCON "Sum")
             (EXNAME 5))
           (EXCON "Diff")
          (EXNAME 6))
        (EXCON "Match")
       (EXNAME 7))
     (EXCON "Bind")
     (EXNAME 8)
initial_strenv_DEF
|- initial_strenv = empty_strenv
initial_env_DEF
|- initial_env = ENV initial_strenv initial_varenv initial_exconenv
initial_state_DEF
|- initial_state =
   STATE (MEM empty_finmap)
     (EXNAMESET
       {EXNAME 0; EXNAME 1; EXNAME 2; EXNAME 3; EXNAME 4; EXNAME 5; EXNAME 6;
        EXNAME 7; EXNAME 8})
apply_DEF
|- (!v.
     apply Size v =
     VALvp (SVALval (SVINT (string_size (SVSTR_arg (SVALval_arg v)))))) /\
   (!v.
     apply Chr v =
     VALvp (SVALval (SVSTR (getchar (SVINT_arg (SVALval_arg v)))))) /\
   (!v.
     apply Ord v =
     VALvp (SVALval (SVINT (ord_str (SVSTR_arg (SVALval_arg v)))))) /\
   (!v. apply Explode v = VALvp (explode_str (SVSTR_arg (SVALval_arg v)))) /\
   (!v. apply Implode v = VALvp (SVALval (SVSTR (implode_str v)))) /\
   (!v.
     apply Abs v =
     VALvp (SVALval (SVINT (integer_abs (SVINT_arg (SVALval_arg v)))))) /\
   (!v.
     apply Div v =
     ((intfield2 v = INT 0)
      => (PACKvp (PACK (NAMEexval (EXNAME 1))))
      | (VALvp (SVALval (SVINT (intfield1 v div intfield2 v)))))) /\
   (!v.
     apply Mod v =
     ((intfield2 v = INT 0)
      => (PACKvp (PACK (NAMEexval (EXNAME 2))))
      | (VALvp (SVALval (SVINT (intfield1 v mod intfield2 v)))))) /\
   (!v.
     apply Neg v =
     ((SVINT_arg (SVALval_arg v) = INT 0)
      => (VALvp v)
      | (VALvp (SVALval (SVINT (neg (SVINT_arg (SVALval_arg v)))))))) /\
   (!v.
     apply Times v =
     VALvp (SVALval (SVINT (intfield1 v times intfield2 v)))) /\
   (!v.
     apply Plus v = VALvp (SVALval (SVINT (intfield1 v plus intfield2 v)))) /\
   (!v.
     apply Minus v =
     VALvp (SVALval (SVINT (intfield1 v minus intfield2 v)))) /\
   (!v.
     apply Eql v =
     ((field1_val v = field2_val v)
      => (VALvp (CONval (CON "true")))
      | (VALvp (CONval (CON "false"))))) /\
   (!v.
     apply Noteql v =
     ((field1_val v = field2_val v)
      => (VALvp (CONval (CON "false")))
      | (VALvp (CONval (CON "true"))))) /\
   (!v.
     apply Less v =
     ((is_SVINT (SVALval_arg (field1_val v)))
      => ((intfield1 v below intfield2 v)
          => (VALvp (CONval (CON "true")))
          | (VALvp (CONval (CON "false"))))
      | ((ltstring (strfield1 v) (strfield2 v))
         => (VALvp (CONval (CON "true")))
         | (VALvp (CONval (CON "false")))))) /\
   (!v.
     apply Greater v =
     ((is_SVINT (SVALval_arg (field1_val v)))
      => ((intfield2 v below intfield2 v)
          => (VALvp (CONval (CON "true")))
          | (VALvp (CONval (CON "false"))))
      | ((ltstring (strfield2 v) (strfield1 v))
         => (VALvp (CONval (CON "true")))
         | (VALvp (CONval (CON "false")))))) /\
   (!v.
     apply Lesseql v =
     ((is_SVINT (SVALval_arg (field1_val v)))
      => ((intfield2 v below intfield1 v)
          => (VALvp (CONval (CON "false")))
          | (VALvp (CONval (CON "true"))))
      | ((ltstring (strfield2 v) (strfield1 v))
         => (VALvp (CONval (CON "false")))
         | (VALvp (CONval (CON "true")))))) /\
   (!v.
     apply Greatereql v =
     ((is_SVINT (SVALval_arg (field1_val v)))
      => ((intfield1 v below intfield2 v)
          => (VALvp (CONval (CON "false")))
          | (VALvp (CONval (CON "true"))))
      | ((ltstring (strfield1 v) (strfield2 v))
         => (VALvp (CONval (CON "false")))
         | (VALvp (CONval (CON "true"))))))
eval_exbind_pred_DEF
|- !eval_exbind.
     eval_exbind_pred eval_exbind =
     (!excon s E s' en.
       (en = new_exname (STATE_arg2 s)) /\ (s' = add_exname en s) ==>
       eval_exbind (EXBIND1 excon NONE) s E s'
         (EXCONENVeep (insert_into_exconenv empty_exconenv excon en))) /\
     (!excon eb s E s'' en EE.
       (?s'.
         (en = new_exname (STATE_arg2 s)) /\
         (s' = add_exname en s) /\
         eval_exbind eb s' E s'' (EXCONENVeep EE)) ==>
       eval_exbind (EXBIND1 excon (SOME eb)) s E s''
         (EXCONENVeep
           (add_exconenv (insert_into_exconenv empty_exconenv excon en)
             EE))) /\
     (!excon eb s E s'' p.
       (?en s'.
         (en = new_exname (STATE_arg2 s)) /\
         (s' = add_exname en s) /\
         eval_exbind eb s' E s'' (PACKeep p)) ==>
       eval_exbind (EXBIND1 excon (SOME eb)) s E s'' (PACKeep p)) /\
     (!excon longexcon s E en.
       (lookuplongexcon_env E longexcon = lift en) ==>
       eval_exbind (EXBIND2 excon longexcon NONE) s E s
         (EXCONENVeep (insert_into_exconenv empty_exconenv excon en))) /\
     (!excon longexcon eb s E s' en EE.
       (lookuplongexcon_env E longexcon = lift en) /\
       eval_exbind eb s E s' (EXCONENVeep EE) ==>
       eval_exbind (EXBIND2 excon longexcon (SOME eb)) s E s'
         (EXCONENVeep
           (add_exconenv (insert_into_exconenv empty_exconenv excon en)
             EE))) /\
     (!excon longexcon eb s E s' p.
       (?en.
         (lookuplongexcon_env E longexcon = lift en) /\
         eval_exbind eb s E s' (PACKeep p)) ==>
       eval_exbind (EXBIND2 excon longexcon (SOME eb)) s E s' (PACKeep p))
eval_exbind_DEF
|- !eb s E s' eep.
     eval_exbind eb s E s' eep =
     (!poss_eval_exbind.
       eval_exbind_pred poss_eval_exbind ==> poss_eval_exbind eb s E s' eep)
eval_pat_pred_DEF
|- !eval_atpat eval_patrow eval_pat.
     eval_pat_pred eval_atpat eval_patrow eval_pat =
     (!s E v. eval_atpat WILDCARDatpat s E v s (VARENVvef empty_varenv)) /\
     (!s E scon v.
       (v = SVALval (value_of scon)) ==>
       eval_atpat (SCONatpat scon) s E v s (VARENVvef empty_varenv)) /\
     (!s E scon v.
       ~(v = SVALval (value_of scon)) ==>
       eval_atpat (SCONatpat scon) s E v s FAILvef) /\
     (!s E var v.
       eval_atpat (VARatpat var) s E v s
         (VARENVvef (insert_into_varenv empty_varenv var v))) /\
     (!s E longcon v.
       (v = CONval (long_base longcon)) ==>
       eval_atpat (CONatpat longcon) s E v s (VARENVvef empty_varenv)) /\
     (!s E longcon v.
       ~(v = CONval (long_base longcon)) ==>
       eval_atpat (CONatpat longcon) s E v s FAILvef) /\
     (!s E longexcon en.
       (lookuplongexcon_env E longexcon = lift en) ==>
       eval_atpat (EXCONatpat longexcon) s E (EXVALval (NAMEexval en)) s
         (VARENVvef empty_varenv)) /\
     (!s E longexcon en.
       (?en'. (lookuplongexcon_env E longexcon = lift en') /\ ~(en = en')) ==>
       eval_atpat (EXCONatpat longexcon) s E (EXVALval (NAMEexval en)) s
         FAILvef) /\
     (!s E v.
       (v = RECORDval empty_record) ==>
       eval_atpat (RECORDatpat NONE) s E v s (VARENVvef empty_varenv)) /\
     (!s1 s2 E v VE patrow.
       (?r.
         (v = RECORDval (add_record empty_record r)) /\
         eval_patrow patrow s1 E r s2 (VARENVvef VE)) ==>
       eval_atpat (RECORDatpat (SOME patrow)) s1 E v s2
         (VARENVvef (add_varenv empty_varenv VE))) /\
     (!s1 s2 E v patrow.
       (?r.
         (v = RECORDval (add_record empty_record r)) /\
         eval_patrow patrow s1 E r s2 FAILvef) ==>
       eval_atpat (RECORDatpat (SOME patrow)) s1 E v s2 FAILvef) /\
     (!s1 s2 E v vef pat.
       eval_pat pat s1 E v s2 vef ==>
       eval_atpat (PARatpat pat) s1 E v s2 vef) /\
     (!s E r. eval_patrow DOTDOTDOT s E r s (VARENVvef empty_varenv)) /\
     (!s1 s2 E r lab pat.
       eval_pat pat s1 E (lower (lookup_label r lab)) s2 FAILvef ==>
       eval_patrow (PATROW lab pat NONE) s1 E r s2 FAILvef) /\
     (!s1 s2 E r lab pat patrow.
       eval_pat pat s1 E (lower (lookup_label r lab)) s2 FAILvef ==>
       eval_patrow (PATROW lab pat (SOME patrow)) s1 E r s2 FAILvef) /\
     (!s1 s2 E r lab pat VE.
       eval_pat pat s1 E (lower (lookup_label r lab)) s2 (VARENVvef VE) ==>
       eval_patrow (PATROW lab pat NONE) s1 E r s2 (VARENVvef VE)) /\
     (!s1 s2 E r lab pat patrow VE VE'.
       (?s'.
         eval_pat pat s1 E (lower (lookup_label r lab)) s' (VARENVvef VE) /\
         eval_patrow patrow s' E r s2 (VARENVvef VE')) ==>
       eval_patrow (PATROW lab pat (SOME patrow)) s1 E r s2
         (VARENVvef (add_varenv VE VE'))) /\
     (!s1 s2 E r lab pat patrow.
       (?s' VE.
         eval_pat pat s1 E (lower (lookup_label r lab)) s' (VARENVvef VE) /\
         eval_patrow patrow s' E r s2 FAILvef) ==>
       eval_patrow (PATROW lab pat (SOME patrow)) s1 E r s2 FAILvef) /\
     (!s1 s2 E v atpat vef.
       eval_atpat atpat s1 E v s2 vef ==>
       eval_pat (ATPATpat atpat) s1 E v s2 vef) /\
     (!s1 s2 E v longcon atpat vef.
       (?con v'.
         (long_base longcon = con) /\
         ~(con = CON "ref") /\
         (v = APPCONval con v') /\
         eval_atpat atpat s1 E v' s2 vef) ==>
       eval_pat (CONpat longcon atpat) s1 E v s2 vef) /\
     (!s E v longcon atpat.
       (?con.
         (long_base longcon = con) /\
         ~(con = CON "ref") /\
         (!v'. ~(v = APPCONval con v'))) ==>
       eval_pat (CONpat longcon atpat) s E v s FAILvef) /\
     (!s1 s2 E v longexcon atpat vef.
       (?v' en.
         (lookuplongexcon_env E longexcon = lift en) /\
         (v = EXVALval (NAMEVALexval en v')) /\
         eval_atpat atpat s1 E v' s2 vef) ==>
       eval_pat (EXCONpat longexcon atpat) s1 E v s2 vef) /\
     (!s E v longexcon atpat.
       (?en.
         (lookuplongexcon_env E longexcon = lift en) /\
         (!v'. ~(v = EXVALval (NAMEVALexval en v')))) ==>
       eval_pat (EXCONpat longexcon atpat) s E v s FAILvef) /\
     (!s E a atpat vef.
       (?v.
         (lookupaddr_state s a = lift v) /\ eval_atpat atpat s E v s vef) ==>
       eval_pat (CONpat (BASE (CON "ref")) atpat) s E (ADDRval a) s vef) /\
     (!s1 s2 E v var pat VE.
       eval_pat pat s1 E v s2 (VARENVvef VE) ==>
       eval_pat (LAYEREDpat var pat) s1 E v s2
         (VARENVvef
           (add_varenv (insert_into_varenv empty_varenv var v) VE))) /\
     (!s1 s2 E v var pat.
       eval_pat pat s1 E v s2 FAILvef ==>
       eval_pat (LAYEREDpat var pat) s1 E v s2 FAILvef)
eval_atpat_DEF
|- !ap s1 v e s2 vef.
     eval_atpat ap s1 v e s2 vef =
     (!poss_eval_atpat poss_eval_patrow poss_eval_pat.
       eval_pat_pred poss_eval_atpat poss_eval_patrow poss_eval_pat ==>
       poss_eval_atpat ap s1 v e s2 vef)
eval_patrow_DEF
|- !pr s1 r e s2 vef.
     eval_patrow pr s1 r e s2 vef =
     (!poss_eval_atpat poss_eval_patrow poss_eval_pat.
       eval_pat_pred poss_eval_atpat poss_eval_patrow poss_eval_pat ==>
       poss_eval_patrow pr s1 r e s2 vef)
eval_pat_DEF
|- !p s1 v e s2 vef.
     eval_pat p s1 v e s2 vef =
     (!poss_eval_atpat poss_eval_patrow poss_eval_pat.
       eval_pat_pred poss_eval_atpat poss_eval_patrow poss_eval_pat ==>
       poss_eval_pat p s1 v e s2 vef)
eval_pred_DEF
|- !eval_atexp eval_exprow eval_exp eval_match eval_mrule eval_dec
    eval_valbind.
     eval_pred eval_atexp eval_exprow eval_exp eval_match eval_mrule eval_dec
       eval_valbind =
     (!s E scon.
       eval_atexp (SCONatexp scon) s E s (VALvp (SVALval (value_of scon)))) /\
     (!s E longvar v.
       (lookuplongvar_env E longvar = lift v) ==>
       eval_atexp (VARatexp longvar) s E s (VALvp v)) /\
     (!s E longcon con.
       (long_base longcon = con) ==>
       eval_atexp (CONatexp longcon) s E s (VALvp (CONval con))) /\
     (!s E en longexcon.
       (lookuplongexcon_env E longexcon = lift en) ==>
       eval_atexp (EXCONatexp longexcon) s E s
         (VALvp (EXVALval (NAMEexval en)))) /\
     (!s E.
       eval_atexp (RECORDatexp NONE) s E s
         (VALvp (RECORDval empty_record))) /\
     (!s1 E s2 exprow r.
       eval_exprow exprow s1 E s2 (RECORDrp r) ==>
       eval_atexp (RECORDatexp (SOME exprow)) s1 E s2
         (VALvp (RECORDval (add_record empty_record r)))) /\
     (!s1 E s2 exprow p.
       eval_exprow exprow s1 E s2 (PACKrp p) ==>
       eval_atexp (RECORDatexp (SOME exprow)) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 dec exp v.
       (?s' E'.
         eval_dec dec s1 E s' (ENVep E') /\
         eval_exp exp s' (add_env E E') s2 (VALvp v)) ==>
       eval_atexp (LETatexp dec exp) s1 E s2 (VALvp v)) /\
     (!s1 E s2 dec exp p.
       eval_dec dec s1 E s2 (PACKep p) ==>
       eval_atexp (LETatexp dec exp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 dec exp p.
       (?s' E'.
         eval_dec dec s1 E s' (ENVep E') /\
         eval_exp exp s' (add_env E E') s2 (PACKvp p)) ==>
       eval_atexp (LETatexp dec exp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp vp.
       eval_exp exp s1 E s2 vp ==> eval_atexp (PARatexp exp) s1 E s2 vp) /\
     (!s1 E s2 lab exp v.
       eval_exp exp s1 E s2 (VALvp v) ==>
       eval_exprow (EXPROW lab exp NONE) s1 E s2
         (RECORDrp (insert_into_record empty_record lab v))) /\
     (!s1 E s2 lab exp exprow_op p.
       eval_exp exp s1 E s2 (PACKvp p) ==>
       eval_exprow (EXPROW lab exp exprow_op) s1 E s2 (PACKrp p)) /\
     (!s1 E s2 lab exp exprow v r.
       (?s'.
         eval_exp exp s1 E s' (VALvp v) /\
         eval_exprow exprow s' E s2 (RECORDrp r)) ==>
       eval_exprow (EXPROW lab exp (SOME exprow)) s1 E s2
         (RECORDrp (add_record (insert_into_record empty_record lab v) r))) /\
     (!s1 E s2 lab exp exprow p.
       (?s' v.
         eval_exp exp s1 E s' (VALvp v) /\
         eval_exprow exprow s' E s2 (PACKrp p)) ==>
       eval_exprow (EXPROW lab exp (SOME exprow)) s1 E s2 (PACKrp p)) /\
     (!s1 E s2 atexp vp.
       eval_atexp atexp s1 E s2 vp ==>
       eval_exp (ATEXPexp atexp) s1 E s2 vp) /\
     (!s1 E s2 exp atexp c v.
       (?s'.
         eval_exp exp s1 E s' (VALvp (CONval c)) /\
         ~(c = CON "ref") /\
         eval_atexp atexp s' E s2 (VALvp v)) ==>
       eval_exp (APPexp exp atexp) s1 E s2 (VALvp (APPCONval c v))) /\
     (!s1 E s2 exp atexp p.
       eval_exp exp s1 E s2 (PACKvp p) ==>
       eval_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp atexp p.
       (?s' c.
         eval_exp exp s1 E s' (VALvp (CONval c)) /\
         ~(c = CON "ref") /\
         eval_atexp atexp s' E s2 (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp atexp en v.
       (?s'.
         eval_exp exp s1 E s' (VALvp (EXVALval (NAMEexval en))) /\
         eval_atexp atexp s' E s2 (VALvp v)) ==>
       eval_exp (APPexp exp atexp) s1 E s2
         (VALvp (EXVALval (NAMEVALexval en v)))) /\
     (!s1 E s2 exp atexp p.
       (?s' en.
         eval_exp exp s1 E s' (VALvp (EXVALval (NAMEexval en))) /\
         eval_atexp atexp s' E s2 (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s E s'' exp atexp a v.
       (?s'.
         eval_exp exp s E s' (VALvp (CONval (CON "ref"))) /\
         eval_atexp atexp s' E s'' (VALvp v) /\
         (a = new_addr s'')) ==>
       eval_exp (APPexp exp atexp) s E (insert_into_state_mem s'' a v)
         (VALvp (ADDRval a))) /\
     (!s E s'' exp atexp p.
       (?s'.
         eval_exp exp s E s' (VALvp (CONval (CON "ref"))) /\
         eval_atexp atexp s' E s'' (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s E s'' (PACKvp p)) /\
     (!s E s'' exp atexp a v.
       (?s'.
         eval_exp exp s E s' (VALvp ASSGval) /\
         eval_atexp atexp s' E s''
           (VALvp
             (RECORDval
               (insert_into_record
                  (insert_into_record empty_record (LABEL "1") (ADDRval a))
                  (LABEL "2")
                 v)))) ==>
       eval_exp (APPexp exp atexp) s E (insert_into_state_mem s'' a v)
         (VALvp (RECORDval empty_record))) /\
     (!s E s'' exp atexp p.
       (?s'.
         eval_exp exp s E s' (VALvp ASSGval) /\
         eval_atexp atexp s' E s'' (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s E s'' (PACKvp p)) /\
     (!s1 E s2 exp atexp v'.
       (?s' b v.
         eval_exp exp s1 E s' (VALvp (BASval b)) /\
         eval_atexp atexp s' E s2 (VALvp v) /\
         (apply b v = v')) ==>
       eval_exp (APPexp exp atexp) s1 E s2 v') /\
     (!s1 E s2 exp atexp p.
       (?s' b.
         eval_exp exp s1 E s' (VALvp (BASval b)) /\
         eval_atexp atexp s' E s2 (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s4 exp atexp v'.
       (?s2 s3 match E' VE v.
         eval_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
         eval_atexp atexp s2 E s3 (VALvp v) /\
         eval_match match s3
           (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
           v
           s4
           (VALvpf v')) ==>
       eval_exp (APPexp exp atexp) s1 E s4 (VALvp v')) /\
     (!s1 E s3 exp atexp p.
       (?s2 match E' VE.
         eval_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
         eval_atexp atexp s2 E s3 (PACKvp p)) ==>
       eval_exp (APPexp exp atexp) s1 E s3 (PACKvp p)) /\
     (!s1 E s4 exp atexp p.
       (?s2 s3 match E' VE v.
         eval_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
         eval_atexp atexp s2 E s3 (VALvp v) /\
         eval_match match s3
           (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
           v
           s4
           (PACKvpf p)) ==>
       eval_exp (APPexp exp atexp) s1 E s4 (PACKvp p)) /\
     (!s1 E s4 exp atexp.
       (?s2 s3 match E' VE v.
         eval_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
         eval_atexp atexp s2 E s3 (VALvp v) /\
         eval_match match s3
           (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
           v
           s4
           FAILvpf) ==>
       eval_exp (APPexp exp atexp) s1 E s4
         (PACKvp (PACK (NAMEexval (EXNAME 7))))) /\
     (!s1 E s2 exp match v.
       eval_exp exp s1 E s2 (VALvp v) ==>
       eval_exp (HANDLEexp exp match) s1 E s2 (VALvp v)) /\
     (!s1 E s2 exp match v.
       (?s' e.
         eval_exp exp s1 E s' (PACKvp (PACK e)) /\
         eval_match match s' E (EXVALval e) s2 (VALvpf v)) ==>
       eval_exp (HANDLEexp exp match) s1 E s2 (VALvp v)) /\
     (!s1 E s2 exp match p.
       (?s' e.
         eval_exp exp s1 E s' (PACKvp (PACK e)) /\
         eval_match match s' E (EXVALval e) s2 (PACKvpf p)) ==>
       eval_exp (HANDLEexp exp match) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp match e.
       (?s'.
         eval_exp exp s1 E s' (PACKvp (PACK e)) /\
         eval_match match s' E (EXVALval e) s2 FAILvpf) ==>
       eval_exp (HANDLEexp exp match) s1 E s2 (PACKvp (PACK e))) /\
     (!s1 E s2 exp e.
       eval_exp exp s1 E s2 (VALvp (EXVALval e)) ==>
       eval_exp (RAISEexp exp) s1 E s2 (PACKvp (PACK e))) /\
     (!s1 E s2 exp p.
       eval_exp exp s1 E s2 (PACKvp p) ==>
       eval_exp (RAISEexp exp) s1 E s2 (PACKvp p)) /\
     (!s E match.
       eval_exp (FNexp match) s E s
         (VALvp (CLOSUREval (CLOSURE match E empty_varenv)))) /\
     (!s1 E s2 mrule match_op v v'.
       eval_mrule mrule s1 E v s2 (VALvpf v') ==>
       eval_match (MATCH mrule match_op) s1 E v s2 (VALvpf v')) /\
     (!s1 E s2 mrule match_op v p.
       eval_mrule mrule s1 E v s2 (PACKvpf p) ==>
       eval_match (MATCH mrule match_op) s1 E v s2 (PACKvpf p)) /\
     (!s1 E s2 mrule v.
       eval_mrule mrule s1 E v s2 FAILvpf ==>
       eval_match (MATCH mrule NONE) s1 E v s2 FAILvpf) /\
     (!s1 E s2 mrule match v vpf.
       (?s'.
         eval_mrule mrule s1 E v s' FAILvpf /\
         eval_match match s' E v s2 vpf) ==>
       eval_match (MATCH mrule (SOME match)) s1 E v s2 vpf) /\
     (!s1 E s2 pat exp v v'.
       (?s' VE.
         eval_pat pat s1 E v s' (VARENVvef VE) /\
         eval_exp exp s' (add_env E (ENV empty_strenv VE empty_exconenv)) s2
           (VALvp v')) ==>
       eval_mrule (MRULE pat exp) s1 E v s2 (VALvpf v')) /\
     (!s1 E s2 pat exp v p.
       (?s' VE.
         eval_pat pat s1 E v s' (VARENVvef VE) /\
         eval_exp exp s' (add_env E (ENV empty_strenv VE empty_exconenv)) s2
           (PACKvp p)) ==>
       eval_mrule (MRULE pat exp) s1 E v s2 (PACKvpf p)) /\
     (!s1 E s2 pat exp v.
       eval_pat pat s1 E v s2 FAILvef ==>
       eval_mrule (MRULE pat exp) s1 E v s2 FAILvpf) /\
     (!s1 E s2 valbind VE.
       eval_valbind valbind s1 E s2 (VARENVvep VE) ==>
       eval_dec (VALdec valbind) s1 E s2
         (ENVep (ENV empty_strenv VE empty_exconenv))) /\
     (!s1 E s2 valbind p.
       eval_valbind valbind s1 E s2 (PACKvep p) ==>
       eval_dec (VALdec valbind) s1 E s2 (PACKep p)) /\
     (!s1 E s2 exbind EE.
       eval_exbind exbind s1 E s2 (EXCONENVeep EE) ==>
       eval_dec (EXCEPTdec exbind) s1 E s2
         (ENVep (ENV empty_strenv empty_varenv EE))) /\
     (!s1 E s2 exbind p.
       eval_exbind exbind s1 E s2 (PACKeep p) ==>
       eval_dec (EXCEPTdec exbind) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 E2.
       (?E1 s'.
         eval_dec dec1 s1 E s' (ENVep E1) /\
         eval_dec dec2 s' (add_env E E1) s2 (ENVep E2)) ==>
       eval_dec (LOCALdec dec1 dec2) s1 E s2 (ENVep E2)) /\
     (!s1 E s2 dec1 dec2 p.
       eval_dec dec1 s1 E s2 (PACKep p) ==>
       eval_dec (LOCALdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 p.
       (?E1 s'.
         eval_dec dec1 s1 E s' (ENVep E1) /\
         eval_dec dec2 s' (add_env E E1) s2 (PACKep p)) ==>
       eval_dec (LOCALdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s E longstrid_1_n E_1_n.
       (nonempty_MAP (lookuplongstrid_env E) longstrid_1_n =
        nonempty_MAP lift E_1_n) ==>
       eval_dec (OPENdec longstrid_1_n) s E s
         (ENVep (add_nonemptylist_env E_1_n))) /\
     (!s E.
       eval_dec EMPTYdec s E s
         (ENVep (ENV empty_strenv empty_varenv empty_exconenv))) /\
     (!s1 E s2 dec1 dec2 E1 E2.
       (?s'.
         eval_dec dec1 s1 E s' (ENVep E1) /\
         eval_dec dec2 s' (add_env E E1) s2 (ENVep E2)) ==>
       eval_dec (SEQdec dec1 dec2) s1 E s2 (ENVep (add_env E1 E2))) /\
     (!s1 E s2 dec1 dec2 p.
       eval_dec dec1 s1 E s2 (PACKep p) ==>
       eval_dec (SEQdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 p.
       (?E1 s'.
         eval_dec dec1 s1 E s' (ENVep E1) /\
         eval_dec dec2 s' (add_env E E1) s2 (PACKep p)) ==>
       eval_dec (SEQdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 pat exp VE.
       (?v s'.
         eval_exp exp s1 E s' (VALvp v) /\
         eval_pat pat s' E v s2 (VARENVvef VE)) ==>
       eval_valbind (PLAINvalbind pat exp NONE) s1 E s2 (VARENVvep VE)) /\
     (!s1 E s2 pat exp p.
       eval_exp exp s1 E s2 (PACKvp p) ==>
       eval_valbind (PLAINvalbind pat exp NONE) s1 E s2 (PACKvep p)) /\
     (!s1 E s4 pat exp valbind VE VE'.
       (?v s2 s3.
         eval_exp exp s1 E s2 (VALvp v) /\
         eval_pat pat s2 E v s3 (VARENVvef VE) /\
         eval_valbind valbind s3 E s4 (VARENVvep VE')) ==>
       eval_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s4
         (VARENVvep (add_varenv VE VE'))) /\
     (!s1 E s2 pat exp valbind p.
       eval_exp exp s1 E s2 (PACKvp p) ==>
       eval_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s2
         (PACKvep p)) /\
     (!s1 E s4 pat exp valbind p.
       (?v VE s2 s3.
         eval_exp exp s1 E s2 (VALvp v) /\
         eval_pat pat s2 E v s3 (VARENVvef VE) /\
         eval_valbind valbind s3 E s4 (PACKvep p)) ==>
       eval_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s4
         (PACKvep p)) /\
     (!s1 E s2 pat exp.
       (?v s'.
         eval_exp exp s1 E s' (VALvp v) /\ eval_pat pat s' E v s2 FAILvef) ==>
       eval_valbind (PLAINvalbind pat exp NONE) s1 E s2
         (PACKvep (PACK (NAMEexval (EXNAME 8))))) /\
     (!s1 E s2 pat exp valbind.
       (?v s'.
         eval_exp exp s1 E s' (VALvp v) /\ eval_pat pat s' E v s2 FAILvef) ==>
       eval_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s2
         (PACKvep (PACK (NAMEexval (EXNAME 8))))) /\
     (!s1 E s2 valbind VE.
       eval_valbind valbind s1 E s2 (VARENVvep VE) ==>
       eval_valbind (RECvalbind valbind) s1 E s2
         (VARENVvep (rec_varenv VE))) /\
     (!s1 E s2 valbind p.
       eval_valbind valbind s1 E s2 (PACKvep p) ==>
       eval_valbind (RECvalbind valbind) s1 E s2 (PACKvep p))
eval_atexp_DEF
|- !ae s1 e s2 vp.
     eval_atexp ae s1 e s2 vp =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_atexp ae s1 e s2 vp)
eval_exprow_DEF
|- !er s1 e s2 rp.
     eval_exprow er s1 e s2 rp =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_exprow er s1 e s2 rp)
eval_exp_DEF
|- !ex s1 e s2 vp.
     eval_exp ex s1 e s2 vp =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_exp ex s1 e s2 vp)
eval_match_DEF
|- !mat s1 v e s2 vpf.
     eval_match mat s1 v e s2 vpf =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_match mat s1 v e s2 vpf)
eval_mrule_DEF
|- !mr s1 v e s2 vpf.
     eval_mrule mr s1 v e s2 vpf =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_mrule mr s1 v e s2 vpf)
eval_dec_DEF
|- !d s1 e s2 ep.
     eval_dec d s1 e s2 ep =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_dec d s1 e s2 ep)
eval_valbind_DEF
|- !vb s1 e s2 vep.
     eval_valbind vb s1 e s2 vep =
     (!poss_eval_atexp poss_eval_exprow poss_eval_exp poss_eval_match
       poss_eval_mrule poss_eval_dec poss_eval_valbind.
       eval_pred poss_eval_atexp poss_eval_exprow poss_eval_exp
         poss_eval_match
         poss_eval_mrule
         poss_eval_dec
         poss_eval_valbind ==>
       poss_eval_valbind vb s1 e s2 vep)

Theorems

joint_ty_closure_env_exval_label_val_prod_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_record_strenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_val_var_val_prod_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_varenv_Axiom
|- !f0 f1 f2 f3 f4 e0 f5 f6 f7 f8 f9 e1 f10 f11 e2 f12 f13 f14 f15 f16 f17 f18
    f19 f20 e3 f21 f22 f23.
     ?!fn.
       (!m j1 j2.
         fn (JOINT_int_CLOSURE m j1 j2) = f0 (fn j1) (fn j2) m j1 j2) /\
       (!j1 j2 e. fn (JOINT_int_ENV j1 j2 e) = f1 (fn j1) (fn j2) e j1 j2) /\
       (!e. fn (JOINT_int_NAMEexval e) = f2 e) /\
       (!e j. fn (JOINT_int_NAMEVALexval e j) = f3 (fn j) e j) /\
       (!l' j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_label_val
              l'
             j) =
         f4 (fn j) l' j) /\
       (fn
          JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv =
        e0) /\
       (!j1 j2.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv
              j1
             j2) =
         f5 (fn j1) (fn j2) j1 j2) /\
       (!j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
             j) =
         f6 (fn j) j) /\
       (!j. fn (JOINT_int_RECORD j) = f7 (fn j) j) /\
       (!j. fn (JOINT_int_STRENV j) = f8 (fn j) j) /\
       (!s j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_strid_env
              s
             j) =
         f9 (fn j) s j) /\
       (fn
          JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv =
        e1) /\
       (!j1 j2.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv
              j1
             j2) =
         f10 (fn j1) (fn j2) j1 j2) /\
       (!j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
             j) =
         f11 (fn j) j) /\
       (fn JOINT_int_ASSGval = e2) /\
       (!s. fn (JOINT_int_SVALval s) = f12 s) /\
       (!b. fn (JOINT_int_BASval b) = f13 b) /\
       (!c. fn (JOINT_int_CONval c) = f14 c) /\
       (!c j. fn (JOINT_int_APPCONval c j) = f15 (fn j) c j) /\
       (!j. fn (JOINT_int_EXVALval j) = f16 (fn j) j) /\
       (!j. fn (JOINT_int_RECORDval j) = f17 (fn j) j) /\
       (!a. fn (JOINT_int_ADDRval a) = f18 a) /\
       (!j. fn (JOINT_int_CLOSUREval j) = f19 (fn j) j) /\
       (!v' j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_ch44_var_val
              v'
             j) =
         f20 (fn j) v' j) /\
       (fn
          JOINT_int_closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv =
        e3) /\
       (!j1 j2.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv
              j1
             j2) =
         f21 (fn j1) (fn j2) j1 j2) /\
       (!j.
         fn
           (JOINT_int_closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv
             j) =
         f22 (fn j) j) /\
       (!j. fn (JOINT_int_VARENV j) = f23 (fn j) j)
env_existence
|- !CLOSURE_case ENV_case NAMEexval_case NAMEVALexval_case
    closure_env_exval_record_strenv_val_varenv_ch44_label_val_case
    closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    RECORD_case STRENV_case
    closure_env_exval_record_strenv_val_varenv_ch44_strid_env_case
    closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    ASSGval_case SVALval_case BASval_case CONval_case APPCONval_case
    EXVALval_case RECORDval_case ADDRval_case CLOSUREval_case
    closure_env_exval_record_strenv_val_varenv_ch44_var_val_case
    closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    VARENV_case.
     ?y y''''''''''''''' y'''''''''''''' y''''''''''''' y''''''''''''
      y''''''''''' y'''''''''' y''''''''' y'''''''' y''''''' y'''''' y'''''
      y'''' y''' y'' y'.
       (!x1 x2 x3.
         y (CLOSURE x1 x2 x3) =
         CLOSURE_case (y''''''''''''''' x2) (y' x3) x1 x2 x3) /\
       (!x1 x2 x3.
         y''''''''''''''' (ENV x1 x2 x3) =
         ENV_case (y''''''''' x1) (y' x2) x3 x1 x2) /\
       (!x1. y'''''''''''''' (NAMEexval x1) = NAMEexval_case x1) /\
       (!x1 x2.
         y'''''''''''''' (NAMEVALexval x1 x2) =
         NAMEVALexval_case (y''''' x2) x1 x2) /\
       (!x1 x2.
         y''''''''''''' (x1,x2) =
         closure_env_exval_record_strenv_val_varenv_ch44_label_val_case
           (y''''' x2)
           x1
           x2) /\
       (y'''''''''''' [] =
        closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
       (!x1 x2.
         y'''''''''''' (CONS x1 x2) =
         closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
           (y''''''''''''' x1)
           (y'''''''''''' x2)
           x1
           x2) /\
       (!x1.
         y''''''''''' (FINMAP x1) =
         closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
           (y'''''''''''' x1)
           x1) /\
       (!x1. y'''''''''' (RECORD x1) = RECORD_case (y''''''''''' x1) x1) /\
       (!x1. y''''''''' (STRENV x1) = STRENV_case (y'''''' x1) x1) /\
       (!x1 x2.
         y'''''''' (x1,x2) =
         closure_env_exval_record_strenv_val_varenv_ch44_strid_env_case
           (y''''''''''''''' x2)
           x1
           x2) /\
       (y''''''' [] =
        closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case) /\
       (!x1 x2.
         y''''''' (CONS x1 x2) =
         closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
           (y'''''''' x1)
           (y''''''' x2)
           x1
           x2) /\
       (!x1.
         y'''''' (FINMAP x1) =
         closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
           (y''''''' x1)
           x1) /\
       (y''''' ASSGval = ASSGval_case) /\
       (!x1. y''''' (SVALval x1) = SVALval_case x1) /\
       (!x1. y''''' (BASval x1) = BASval_case x1) /\
       (!x1. y''''' (CONval x1) = CONval_case x1) /\
       (!x1 x2.
         y''''' (APPCONval x1 x2) = APPCONval_case (y''''' x2) x1 x2) /\
       (!x1. y''''' (EXVALval x1) = EXVALval_case (y'''''''''''''' x1) x1) /\
       (!x1. y''''' (RECORDval x1) = RECORDval_case (y'''''''''' x1) x1) /\
       (!x1. y''''' (ADDRval x1) = ADDRval_case x1) /\
       (!x1. y''''' (CLOSUREval x1) = CLOSUREval_case (y x1) x1) /\
       (!x1 x2.
         y'''' (x1,x2) =
         closure_env_exval_record_strenv_val_varenv_ch44_var_val_case
           (y''''' x2)
           x1
           x2) /\
       (y''' [] =
        closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
       (!x1 x2.
         y''' (CONS x1 x2) =
         closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
           (y'''' x1)
           (y''' x2)
           x1
           x2) /\
       (!x1.
         y'' (FINMAP x1) =
         closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
           (y''' x1)
           x1) /\
       (!x1. y' (VARENV x1) = VARENV_case (y'' x1) x1)
env_induct
|- !closure_Prop env_Prop exval_Prop
    label_val_prod_closure_env_exval_record_strenv_val_varenv_Prop
    label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
    label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
    record_Prop strenv_Prop
    strid_env_prod_closure_env_exval_record_strenv_val_varenv_Prop
    strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
    strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
    val_Prop var_val_prod_closure_env_exval_record_strenv_val_varenv_Prop
    var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
    var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
    varenv_Prop.
     (!y y'''''''''''' y'''''''''''.
       env_Prop y'''''''''''' ==>
       varenv_Prop y''''''''''' ==>
       closure_Prop (CLOSURE y y'''''''''''' y''''''''''')) /\
     (!y y'''''''''' y'''''''''.
       strenv_Prop y ==>
       varenv_Prop y'''''''''' ==>
       env_Prop (ENV y y'''''''''' y''''''''')) /\
     (!y. exval_Prop (NAMEexval y)) /\
     (!y y''''''''.
       val_Prop y'''''''' ==> exval_Prop (NAMEVALexval y y'''''''')) /\
     (!y y'''''''.
       val_Prop y''''''' ==>
       label_val_prod_closure_env_exval_record_strenv_val_varenv_Prop
         (y,y''''''')) /\
     label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
       [] /\
     (!y y''''''.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_Prop y ==>
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y'''''' ==>
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         (CONS y y'''''')) /\
     (!y.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         (FINMAP y)) /\
     (!y.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       record_Prop (RECORD y)) /\
     (!y.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       strenv_Prop (STRENV y)) /\
     (!y y'''''.
       env_Prop y''''' ==>
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_Prop
         (y,y''''')) /\
     strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
       [] /\
     (!y y''''.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_Prop y ==>
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y'''' ==>
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         (CONS y y'''')) /\
     (!y.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         (FINMAP y)) /\
     val_Prop ASSGval /\
     (!y. val_Prop (SVALval y)) /\
     (!y. val_Prop (BASval y)) /\
     (!y. val_Prop (CONval y)) /\
     (!y y'''. val_Prop y''' ==> val_Prop (APPCONval y y''')) /\
     (!y. exval_Prop y ==> val_Prop (EXVALval y)) /\
     (!y. record_Prop y ==> val_Prop (RECORDval y)) /\
     (!y. val_Prop (ADDRval y)) /\
     (!y. closure_Prop y ==> val_Prop (CLOSUREval y)) /\
     (!y y''.
       val_Prop y'' ==>
       var_val_prod_closure_env_exval_record_strenv_val_varenv_Prop
         (y,y'')) /\
     var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
       [] /\
     (!y y'.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_Prop y ==>
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y' ==>
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         (CONS y y')) /\
     (!y.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         (FINMAP y)) /\
     (!y.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         y ==>
       varenv_Prop (VARENV y)) ==>
     (!x1. closure_Prop x1) /\
     (!x2. env_Prop x2) /\
     (!x3. exval_Prop x3) /\
     (!x4.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_Prop x4) /\
     (!x5.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         x5) /\
     (!x6.
       label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         x6) /\
     (!x7. record_Prop x7) /\
     (!x8. strenv_Prop x8) /\
     (!x9.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_Prop x9) /\
     (!x10.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         x10) /\
     (!x11.
       strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         x11) /\
     (!x12. val_Prop x12) /\
     (!x13.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_Prop x13) /\
     (!x14.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_Prop
         x14) /\
     (!x15.
       var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_finmap_closure_env_exval_record_strenv_val_varenv_Prop
         x15) /\
     (!x16. varenv_Prop x16)
env_unique
|- !CLOSURE_case ENV_case NAMEexval_case NAMEVALexval_case
    closure_env_exval_record_strenv_val_varenv_ch44_label_val_case
    closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    RECORD_case STRENV_case
    closure_env_exval_record_strenv_val_varenv_ch44_strid_env_case
    closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    ASSGval_case SVALval_case BASval_case CONval_case APPCONval_case
    EXVALval_case RECORDval_case ADDRval_case CLOSUREval_case
    closure_env_exval_record_strenv_val_varenv_ch44_var_val_case
    closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
    closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
    VARENV_case fn1 fn2 fn3 fn4 fn5 fn6 fn7 fn8 fn9 fn10 fn11 fn12 fn13 fn14
    fn15 fn16 fn1' fn2' fn3' fn4' fn5' fn6' fn7' fn8' fn9' fn10' fn11' fn12'
    fn13' fn14' fn15' fn16'.
     (!y y'''''''''''' y'''''''''''.
       fn1 (CLOSURE y y'''''''''''' y''''''''''') =
       CLOSURE_case (fn2 y'''''''''''') (fn16 y''''''''''') y y''''''''''''
         y''''''''''') /\
     (!y y'''''''''' y'''''''''.
       fn2 (ENV y y'''''''''' y''''''''') =
       ENV_case (fn8 y) (fn16 y'''''''''') y''''''''' y y'''''''''') /\
     (!y. fn3 (NAMEexval y) = NAMEexval_case y) /\
     (!y y''''''''.
       fn3 (NAMEVALexval y y'''''''') =
       NAMEVALexval_case (fn12 y'''''''') y y'''''''') /\
     (!y y'''''''.
       fn4 (y,y''''''') =
       closure_env_exval_record_strenv_val_varenv_ch44_label_val_case
         (fn12 y''''''')
         y
         y''''''') /\
     (fn5 [] =
      closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y''''''.
       fn5 (CONS y y'''''') =
       closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn4 y)
         (fn5 y'''''')
         y
         y'''''') /\
     (!y.
       fn6 (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn5 y)
         y) /\
     (!y. fn7 (RECORD y) = RECORD_case (fn6 y) y) /\
     (!y. fn8 (STRENV y) = STRENV_case (fn11 y) y) /\
     (!y y'''''.
       fn9 (y,y''''') =
       closure_env_exval_record_strenv_val_varenv_ch44_strid_env_case
         (fn2 y''''')
         y
         y''''') /\
     (fn10 [] =
      closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y''''.
       fn10 (CONS y y'''') =
       closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn9 y)
         (fn10 y'''')
         y
         y'''') /\
     (!y.
       fn11 (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn10 y)
         y) /\
     (fn12 ASSGval = ASSGval_case) /\
     (!y. fn12 (SVALval y) = SVALval_case y) /\
     (!y. fn12 (BASval y) = BASval_case y) /\
     (!y. fn12 (CONval y) = CONval_case y) /\
     (!y y'''. fn12 (APPCONval y y''') = APPCONval_case (fn12 y''') y y''') /\
     (!y. fn12 (EXVALval y) = EXVALval_case (fn3 y) y) /\
     (!y. fn12 (RECORDval y) = RECORDval_case (fn7 y) y) /\
     (!y. fn12 (ADDRval y) = ADDRval_case y) /\
     (!y. fn12 (CLOSUREval y) = CLOSUREval_case (fn1 y) y) /\
     (!y y''.
       fn13 (y,y'') =
       closure_env_exval_record_strenv_val_varenv_ch44_var_val_case (fn12 y'')
         y
         y'') /\
     (fn14 [] =
      closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y'.
       fn14 (CONS y y') =
       closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn13 y)
         (fn14 y')
         y
         y') /\
     (!y.
       fn15 (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn14 y)
         y) /\
     (!y. fn16 (VARENV y) = VARENV_case (fn15 y) y) ==>
     (!y y'''''''''''' y'''''''''''.
       fn1' (CLOSURE y y'''''''''''' y''''''''''') =
       CLOSURE_case (fn2' y'''''''''''') (fn16' y''''''''''') y y''''''''''''
         y''''''''''') /\
     (!y y'''''''''' y'''''''''.
       fn2' (ENV y y'''''''''' y''''''''') =
       ENV_case (fn8' y) (fn16' y'''''''''') y''''''''' y y'''''''''') /\
     (!y. fn3' (NAMEexval y) = NAMEexval_case y) /\
     (!y y''''''''.
       fn3' (NAMEVALexval y y'''''''') =
       NAMEVALexval_case (fn12' y'''''''') y y'''''''') /\
     (!y y'''''''.
       fn4' (y,y''''''') =
       closure_env_exval_record_strenv_val_varenv_ch44_label_val_case
         (fn12' y''''''')
         y
         y''''''') /\
     (fn5' [] =
      closure_env_exval_record_strenv_val_varenv_NIL_label_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y''''''.
       fn5' (CONS y y'''''') =
       closure_env_exval_record_strenv_val_varenv_CONS_label_val_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn4' y)
         (fn5' y'''''')
         y
         y'''''') /\
     (!y.
       fn6' (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_label_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn5' y)
         y) /\
     (!y. fn7' (RECORD y) = RECORD_case (fn6' y) y) /\
     (!y. fn8' (STRENV y) = STRENV_case (fn11' y) y) /\
     (!y y'''''.
       fn9' (y,y''''') =
       closure_env_exval_record_strenv_val_varenv_ch44_strid_env_case
         (fn2' y''''')
         y
         y''''') /\
     (fn10' [] =
      closure_env_exval_record_strenv_val_varenv_NIL_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y''''.
       fn10' (CONS y y'''') =
       closure_env_exval_record_strenv_val_varenv_CONS_strid_env_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn9' y)
         (fn10' y'''')
         y
         y'''') /\
     (!y.
       fn11' (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_strid_env_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn10' y)
         y) /\
     (fn12' ASSGval = ASSGval_case) /\
     (!y. fn12' (SVALval y) = SVALval_case y) /\
     (!y. fn12' (BASval y) = BASval_case y) /\
     (!y. fn12' (CONval y) = CONval_case y) /\
     (!y y'''.
       fn12' (APPCONval y y''') = APPCONval_case (fn12' y''') y y''') /\
     (!y. fn12' (EXVALval y) = EXVALval_case (fn3' y) y) /\
     (!y. fn12' (RECORDval y) = RECORDval_case (fn7' y) y) /\
     (!y. fn12' (ADDRval y) = ADDRval_case y) /\
     (!y. fn12' (CLOSUREval y) = CLOSUREval_case (fn1' y) y) /\
     (!y y''.
       fn13' (y,y'') =
       closure_env_exval_record_strenv_val_varenv_ch44_var_val_case
         (fn12' y'')
         y
         y'') /\
     (fn14' [] =
      closure_env_exval_record_strenv_val_varenv_NIL_var_val_prod_closure_env_exval_record_strenv_val_varenv_case) /\
     (!y y'.
       fn14' (CONS y y') =
       closure_env_exval_record_strenv_val_varenv_CONS_var_val_prod_closure_env_exval_record_strenv_val_varenv_case
         (fn13' y)
         (fn14' y')
         y
         y') /\
     (!y.
       fn15' (FINMAP y) =
       closure_env_exval_record_strenv_val_varenv_FINMAP_var_val_prod_closure_env_exval_record_strenv_val_varenv_list_closure_env_exval_record_strenv_val_varenv_case
         (fn14' y)
         y) /\
     (!y. fn16' (VARENV y) = VARENV_case (fn15' y) y) ==>
     (fn1 = fn1') /\
     (fn2 = fn2') /\
     (fn3 = fn3') /\
     (fn4 = fn4') /\
     (fn5 = fn5') /\
     (fn6 = fn6') /\
     (fn7 = fn7') /\
     (fn8 = fn8') /\
     (fn9 = fn9') /\
     (fn10 = fn10') /\
     (fn11 = fn11') /\
     (fn12 = fn12') /\
     (fn13 = fn13') /\
     (fn14 = fn14') /\
     (fn15 = fn15') /\
     (fn16 = fn16')
env_constructors_distinct
|- (!x1 x1' x2'. ~(NAMEexval x1 = NAMEVALexval x1' x2')) /\
   (!x1' x2'. ~([] = CONS x1' x2')) /\
   (!x1' x2'. ~([] = CONS x1' x2')) /\
   ((!x1'. ~(ASSGval = SVALval x1')) /\
    (!x1'. ~(ASSGval = BASval x1')) /\
    (!x1'. ~(ASSGval = CONval x1')) /\
    (!x1' x2'. ~(ASSGval = APPCONval x1' x2')) /\
    (!x1'. ~(ASSGval = EXVALval x1')) /\
    (!x1'. ~(ASSGval = RECORDval x1')) /\
    (!x1'. ~(ASSGval = ADDRval x1')) /\
    (!x1'. ~(ASSGval = CLOSUREval x1')) /\
    (!x1 x1'. ~(SVALval x1 = BASval x1')) /\
    (!x1 x1'. ~(SVALval x1 = CONval x1')) /\
    (!x1 x1' x2'. ~(SVALval x1 = APPCONval x1' x2')) /\
    (!x1 x1'. ~(SVALval x1 = EXVALval x1')) /\
    (!x1 x1'. ~(SVALval x1 = RECORDval x1')) /\
    (!x1 x1'. ~(SVALval x1 = ADDRval x1')) /\
    (!x1 x1'. ~(SVALval x1 = CLOSUREval x1')) /\
    (!x1 x1'. ~(BASval x1 = CONval x1')) /\
    (!x1 x1' x2'. ~(BASval x1 = APPCONval x1' x2')) /\
    (!x1 x1'. ~(BASval x1 = EXVALval x1')) /\
    (!x1 x1'. ~(BASval x1 = RECORDval x1')) /\
    (!x1 x1'. ~(BASval x1 = ADDRval x1')) /\
    (!x1 x1'. ~(BASval x1 = CLOSUREval x1')) /\
    (!x1 x1' x2'. ~(CONval x1 = APPCONval x1' x2')) /\
    (!x1 x1'. ~(CONval x1 = EXVALval x1')) /\
    (!x1 x1'. ~(CONval x1 = RECORDval x1')) /\
    (!x1 x1'. ~(CONval x1 = ADDRval x1')) /\
    (!x1 x1'. ~(CONval x1 = CLOSUREval x1')) /\
    (!x1 x2 x1'. ~(APPCONval x1 x2 = EXVALval x1')) /\
    (!x1 x2 x1'. ~(APPCONval x1 x2 = RECORDval x1')) /\
    (!x1 x2 x1'. ~(APPCONval x1 x2 = ADDRval x1')) /\
    (!x1 x2 x1'. ~(APPCONval x1 x2 = CLOSUREval x1')) /\
    (!x1 x1'. ~(EXVALval x1 = RECORDval x1')) /\
    (!x1 x1'. ~(EXVALval x1 = ADDRval x1')) /\
    (!x1 x1'. ~(EXVALval x1 = CLOSUREval x1')) /\
    (!x1 x1'. ~(RECORDval x1 = ADDRval x1')) /\
    (!x1 x1'. ~(RECORDval x1 = CLOSUREval x1')) /\
    (!x1 x1'. ~(ADDRval x1 = CLOSUREval x1'))) /\
   (!x1' x2'. ~([] = CONS x1' x2'))
env_constructors_one_one
|- (!x1 x2 x3 x1' x2' x3'.
     (CLOSURE x1 x2 x3 = CLOSURE x1' x2' x3') =
     (x1 = x1') /\ (x2 = x2') /\ (x3 = x3')) /\
   (!x1 x2 x3 x1' x2' x3'.
     (ENV x1 x2 x3 = ENV x1' x2' x3') =
     (x1 = x1') /\ (x2 = x2') /\ (x3 = x3')) /\
   ((!x1 x1'. (NAMEexval x1 = NAMEexval x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (NAMEVALexval x1 x2 = NAMEVALexval x1' x2') =
      (x1 = x1') /\ (x2 = x2'))) /\
   (!x1 x2 x1' x2'. ((x1,x2) = (x1',x2')) = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x2 x1' x2'. (CONS x1 x2 = CONS x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x1'. (FINMAP x1 = FINMAP x1') = x1 = x1') /\
   (!x1 x1'. (RECORD x1 = RECORD x1') = x1 = x1') /\
   (!x1 x1'. (STRENV x1 = STRENV x1') = x1 = x1') /\
   (!x1 x2 x1' x2'. ((x1,x2) = (x1',x2')) = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x2 x1' x2'. (CONS x1 x2 = CONS x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x1'. (FINMAP x1 = FINMAP x1') = x1 = x1') /\
   ((!x1 x1'. (SVALval x1 = SVALval x1') = x1 = x1') /\
    (!x1 x1'. (BASval x1 = BASval x1') = x1 = x1') /\
    (!x1 x1'. (CONval x1 = CONval x1') = x1 = x1') /\
    (!x1 x2 x1' x2'.
      (APPCONval x1 x2 = APPCONval x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
    (!x1 x1'. (EXVALval x1 = EXVALval x1') = x1 = x1') /\
    (!x1 x1'. (RECORDval x1 = RECORDval x1') = x1 = x1') /\
    (!x1 x1'. (ADDRval x1 = ADDRval x1') = x1 = x1') /\
    (!x1 x1'. (CLOSUREval x1 = CLOSUREval x1') = x1 = x1')) /\
   (!x1 x2 x1' x2'. ((x1,x2) = (x1',x2')) = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x2 x1' x2'. (CONS x1 x2 = CONS x1' x2') = (x1 = x1') /\ (x2 = x2')) /\
   (!x1 x1'. (FINMAP x1 = FINMAP x1') = x1 = x1') /\
   (!x1 x1'. (VARENV x1 = VARENV x1') = x1 = x1')
env_cases
|- (!x1. ?y y'' y'. x1 = CLOSURE y y'' y') /\
   (!x2. ?y y'' y'. x2 = ENV y y'' y') /\
   (!x3. (?y. x3 = NAMEexval y) \/ (?y y'. x3 = NAMEVALexval y y')) /\
   (!x4. ?y y'. x4 = (y,y')) /\
   (!x5. (x5 = []) \/ (?y y'. x5 = CONS y y')) /\
   (!x6. ?y. x6 = FINMAP y) /\
   (!x7. ?y. x7 = RECORD y) /\
   (!x8. ?y. x8 = STRENV y) /\
   (!x9. ?y y'. x9 = (y,y')) /\
   (!x10. (x10 = []) \/ (?y y'. x10 = CONS y y')) /\
   (!x11. ?y. x11 = FINMAP y) /\
   (!x12.
     (x12 = ASSGval) \/
     (?y. x12 = SVALval y) \/
     (?y. x12 = BASval y) \/
     (?y. x12 = CONval y) \/
     (?y y'. x12 = APPCONval y y') \/
     (?y. x12 = EXVALval y) \/
     (?y. x12 = RECORDval y) \/
     (?y. x12 = ADDRval y) \/
     (?y. x12 = CLOSUREval y)) /\
   (!x13. ?y y'. x13 = (y,y')) /\
   (!x14. (x14 = []) \/ (?y y'. x14 = CONS y y')) /\
   (!x15. ?y. x15 = FINMAP y) /\
   (!x16. ?y. x16 = VARENV y)
label_in_rec_lemma
|- !f l. label_in_rec (RECORD f) l = in_dom f l
lookup_label_lemma
|- !f l. lookup_label (RECORD f) l = finmap_lookup l f
insert_into_record_lemma
|- !f l v.
     insert_into_record (RECORD f) l v =
     RECORD (finmap_insert less_label l v f)
LABEL_11
|- !s s'. (LABEL s = LABEL s') = s = s'
lookupstrid_lemma
|- (!se ve ee. lookupstrid_env (ENV se ve ee) = lookupstrid_strenv se) /\
   (!f strid. lookupstrid_strenv (STRENV f) strid = finmap_lookup strid f)
lookupvar_lemma
|- (!se ve ee. lookupvar_env (ENV se ve ee) = lookupvar_varenv ve) /\
   (!f v. lookupvar_varenv (VARENV f) v = finmap_lookup v f)
insert_into_strenv_lemma
|- !f s e.
     insert_into_strenv (STRENV f) s e =
     STRENV (finmap_insert less_strid s e f)
pack_Axiom
|- !f. ?!fn. !e. fn (PACK e) = f e
pack_induction_thm
|- !P. (!e. P (PACK e)) ==> (!p. P p)
pack_cases_thm
|- !p. ?e. p = PACK e
pack_constructors_one_one
|- !e e'. (PACK e = PACK e') = e = e'
val_pack_Axiom
|- !f0 f1. ?!fn. (!v'. fn (VALvp v') = f0 v') /\ (!p. fn (PACKvp p) = f1 p)
val_pack_induction_thm
|- !P. (!v'. P (VALvp v')) /\ (!p. P (PACKvp p)) ==> (!v. P v)
val_pack_cases_thm
|- !v. (?v'. v = VALvp v') \/ (?p. v = PACKvp p)
val_pack_constructors_one_one
|- (!v' v''. (VALvp v' = VALvp v'') = v' = v'') /\
   (!p p'. (PACKvp p = PACKvp p') = p = p')
val_pack_constructors_distinct
|- !p v'. ~(VALvp v' = PACKvp p)
record_pack_Axiom
|- !f0 f1. ?!fn. (!r. fn (RECORDrp r) = f0 r) /\ (!p. fn (PACKrp p) = f1 p)
record_pack_induction_thm
|- !P. (!r. P (RECORDrp r)) /\ (!p. P (PACKrp p)) ==> (!r. P r)
record_pack_cases_thm
|- !r. (?r'. r = RECORDrp r') \/ (?p. r = PACKrp p)
record_pack_constructors_one_one
|- (!r r'. (RECORDrp r = RECORDrp r') = r = r') /\
   (!p p'. (PACKrp p = PACKrp p') = p = p')
record_pack_constructors_distinct
|- !p r. ~(RECORDrp r = PACKrp p)
val_pack_fail_Axiom
|- !f0 f1 e.
     ?!fn.
       (!v'. fn (VALvpf v') = f0 v') /\
       (!p. fn (PACKvpf p) = f1 p) /\
       (fn FAILvpf = e)
val_pack_fail_induction_thm
|- !P. (!v'. P (VALvpf v')) /\ (!p. P (PACKvpf p)) /\ P FAILvpf ==> (!v. P v)
val_pack_fail_cases_thm
|- !v. (?v'. v = VALvpf v') \/ (?p. v = PACKvpf p) \/ (v = FAILvpf)
val_pack_fail_constructors_one_one
|- (!v' v''. (VALvpf v' = VALvpf v'') = v' = v'') /\
   (!p p'. (PACKvpf p = PACKvpf p') = p = p')
val_pack_fail_constructors_distinct
|- (!p v'. ~(VALvpf v' = PACKvpf p)) /\
   (!v'. ~(VALvpf v' = FAILvpf)) /\
   (!p. ~(PACKvpf p = FAILvpf))
env_pack_Axiom
|- !f0 f1. ?!fn. (!e. fn (ENVep e) = f0 e) /\ (!p. fn (PACKep p) = f1 p)
env_pack_induction_thm
|- !P. (!e. P (ENVep e)) /\ (!p. P (PACKep p)) ==> (!e. P e)
env_pack_cases_thm
|- !e. (?e'. e = ENVep e') \/ (?p. e = PACKep p)
env_pack_constructors_one_one
|- (!e e'. (ENVep e = ENVep e') = e = e') /\
   (!p p'. (PACKep p = PACKep p') = p = p')
env_pack_constructors_distinct
|- !p e. ~(ENVep e = PACKep p)
varenv_pack_Axiom
|- !f0 f1.
     ?!fn. (!v'. fn (VARENVvep v') = f0 v') /\ (!p. fn (PACKvep p) = f1 p)
varenv_pack_induction_thm
|- !P. (!v'. P (VARENVvep v')) /\ (!p. P (PACKvep p)) ==> (!v. P v)
varenv_pack_cases_thm
|- !v. (?v'. v = VARENVvep v') \/ (?p. v = PACKvep p)
varenv_pack_constructors_one_one
|- (!v' v''. (VARENVvep v' = VARENVvep v'') = v' = v'') /\
   (!p p'. (PACKvep p = PACKvep p') = p = p')
varenv_pack_constructors_distinct
|- !p v'. ~(VARENVvep v' = PACKvep p)
exconenv_pack_Axiom
|- !f0 f1.
     ?!fn. (!e. fn (EXCONENVeep e) = f0 e) /\ (!p. fn (PACKeep p) = f1 p)
exconenv_pack_induction_thm
|- !P. (!e. P (EXCONENVeep e)) /\ (!p. P (PACKeep p)) ==> (!e. P e)
exconenv_pack_cases_thm
|- !e. (?e'. e = EXCONENVeep e') \/ (?p. e = PACKeep p)
exconenv_pack_constructors_one_one
|- (!e e'. (EXCONENVeep e = EXCONENVeep e') = e = e') /\
   (!p p'. (PACKeep p = PACKeep p') = p = p')
exconenv_pack_constructors_distinct
|- !p e. ~(EXCONENVeep e = PACKeep p)
varenv_fail_Axiom
|- !f e. ?!fn. (!v'. fn (VARENVvef v') = f v') /\ (fn FAILvef = e)
varenv_fail_induction_thm
|- !P. (!v'. P (VARENVvef v')) /\ P FAILvef ==> (!v. P v)
varenv_fail_cases_thm
|- !v. (?v'. v = VARENVvef v') \/ (v = FAILvef)
varenv_fail_constructors_one_one
|- !v' v''. (VARENVvef v' = VARENVvef v'') = v' = v''
varenv_fail_constructors_distinct
|- !v'. ~(VARENVvef v' = FAILvef)
mem_Axiom
|- !f. ?!fn. !f'. fn (MEM f') = f f'
mem_induction_thm
|- !P. (!f'. P (MEM f')) ==> (!m. P m)
mem_cases_thm
|- !m. ?f'. m = MEM f'
mem_constructors_one_one
|- !f' f''. (MEM f' = MEM f'') = f' = f''
state_Axiom
|- !f. ?!fn. !m e. fn (STATE m e) = f m e
state_induction_thm
|- !P. (!m e. P (STATE m e)) ==> (!s. P s)
state_cases_thm
|- !s. ?m e. s = STATE m e
state_constructors_one_one
|- !m e m' e'. (STATE m e = STATE m' e') = (m = m') /\ (e = e')
EVAL_EXBIND_RULES_SATISFIED
|- eval_exbind_pred eval_exbind
eval_exbind_induction
|- !P_exbind.
     (!excon s E s' en.
       (en = new_exname (STATE_arg2 s)) /\ (s' = add_exname en s) ==>
       P_exbind (EXBIND1 excon NONE) s E s'
         (EXCONENVeep (insert_into_exconenv empty_exconenv excon en))) /\
     (!excon eb s E s'' en EE s'.
       (en = new_exname (STATE_arg2 s)) /\
       (s' = add_exname en s) /\
       P_exbind eb s' E s'' (EXCONENVeep EE) ==>
       P_exbind (EXBIND1 excon (SOME eb)) s E s''
         (EXCONENVeep
           (add_exconenv (insert_into_exconenv empty_exconenv excon en)
             EE))) /\
     (!excon eb s E s'' p en s'.
       (en = new_exname (STATE_arg2 s)) /\
       (s' = add_exname en s) /\
       P_exbind eb s' E s'' (PACKeep p) ==>
       P_exbind (EXBIND1 excon (SOME eb)) s E s'' (PACKeep p)) /\
     (!excon longexcon s E en.
       (lookuplongexcon_env E longexcon = lift en) ==>
       P_exbind (EXBIND2 excon longexcon NONE) s E s
         (EXCONENVeep (insert_into_exconenv empty_exconenv excon en))) /\
     (!excon longexcon eb s E s' en EE.
       (lookuplongexcon_env E longexcon = lift en) /\
       P_exbind eb s E s' (EXCONENVeep EE) ==>
       P_exbind (EXBIND2 excon longexcon (SOME eb)) s E s'
         (EXCONENVeep
           (add_exconenv (insert_into_exconenv empty_exconenv excon en)
             EE))) /\
     (!excon longexcon eb s E s' p en.
       (lookuplongexcon_env E longexcon = lift en) /\
       P_exbind eb s E s' (PACKeep p) ==>
       P_exbind (EXBIND2 excon longexcon (SOME eb)) s E s' (PACKeep p)) ==>
     (!eb s E s' eep. eval_exbind eb s E s' eep ==> P_exbind eb s E s' eep)
EVAL_PAT_RULES_SATISFIED
|- eval_pat_pred eval_atpat eval_patrow eval_pat
eval_pat_induction
|- !P_atpat P_patrow P_pat.
     (!s E v. P_atpat WILDCARDatpat s E v s (VARENVvef empty_varenv)) /\
     (!s E scon v.
       (v = SVALval (value_of scon)) ==>
       P_atpat (SCONatpat scon) s E v s (VARENVvef empty_varenv)) /\
     (!s E scon v.
       ~(v = SVALval (value_of scon)) ==>
       P_atpat (SCONatpat scon) s E v s FAILvef) /\
     (!s E var v.
       P_atpat (VARatpat var) s E v s
         (VARENVvef (insert_into_varenv empty_varenv var v))) /\
     (!s E longcon v.
       (v = CONval (long_base longcon)) ==>
       P_atpat (CONatpat longcon) s E v s (VARENVvef empty_varenv)) /\
     (!s E longcon v.
       ~(v = CONval (long_base longcon)) ==>
       P_atpat (CONatpat longcon) s E v s FAILvef) /\
     (!s E longexcon en.
       (lookuplongexcon_env E longexcon = lift en) ==>
       P_atpat (EXCONatpat longexcon) s E (EXVALval (NAMEexval en)) s
         (VARENVvef empty_varenv)) /\
     (!s E longexcon en en'.
       (lookuplongexcon_env E longexcon = lift en') /\ ~(en = en') ==>
       P_atpat (EXCONatpat longexcon) s E (EXVALval (NAMEexval en)) s
         FAILvef) /\
     (!s E v.
       (v = RECORDval empty_record) ==>
       P_atpat (RECORDatpat NONE) s E v s (VARENVvef empty_varenv)) /\
     (!s1 s2 E v VE patrow r.
       (v = RECORDval (add_record empty_record r)) /\
       P_patrow patrow s1 E r s2 (VARENVvef VE) ==>
       P_atpat (RECORDatpat (SOME patrow)) s1 E v s2
         (VARENVvef (add_varenv empty_varenv VE))) /\
     (!s1 s2 E v patrow r.
       (v = RECORDval (add_record empty_record r)) /\
       P_patrow patrow s1 E r s2 FAILvef ==>
       P_atpat (RECORDatpat (SOME patrow)) s1 E v s2 FAILvef) /\
     (!s1 s2 E v vef pat.
       P_pat pat s1 E v s2 vef ==> P_atpat (PARatpat pat) s1 E v s2 vef) /\
     (!s E r. P_patrow DOTDOTDOT s E r s (VARENVvef empty_varenv)) /\
     (!s1 s2 E r lab pat.
       P_pat pat s1 E (lower (lookup_label r lab)) s2 FAILvef ==>
       P_patrow (PATROW lab pat NONE) s1 E r s2 FAILvef) /\
     (!s1 s2 E r lab pat patrow.
       P_pat pat s1 E (lower (lookup_label r lab)) s2 FAILvef ==>
       P_patrow (PATROW lab pat (SOME patrow)) s1 E r s2 FAILvef) /\
     (!s1 s2 E r lab pat VE.
       P_pat pat s1 E (lower (lookup_label r lab)) s2 (VARENVvef VE) ==>
       P_patrow (PATROW lab pat NONE) s1 E r s2 (VARENVvef VE)) /\
     (!s1 s2 E r lab pat patrow VE VE' s'.
       P_pat pat s1 E (lower (lookup_label r lab)) s' (VARENVvef VE) /\
       P_patrow patrow s' E r s2 (VARENVvef VE') ==>
       P_patrow (PATROW lab pat (SOME patrow)) s1 E r s2
         (VARENVvef (add_varenv VE VE'))) /\
     (!s1 s2 E r lab pat patrow s' VE.
       P_pat pat s1 E (lower (lookup_label r lab)) s' (VARENVvef VE) /\
       P_patrow patrow s' E r s2 FAILvef ==>
       P_patrow (PATROW lab pat (SOME patrow)) s1 E r s2 FAILvef) /\
     (!s1 s2 E v atpat vef.
       P_atpat atpat s1 E v s2 vef ==>
       P_pat (ATPATpat atpat) s1 E v s2 vef) /\
     (!s1 s2 E v longcon atpat vef con v'.
       (long_base longcon = con) /\
       ~(con = CON "ref") /\
       (v = APPCONval con v') /\
       P_atpat atpat s1 E v' s2 vef ==>
       P_pat (CONpat longcon atpat) s1 E v s2 vef) /\
     (!s E v longcon atpat con.
       (long_base longcon = con) /\
       ~(con = CON "ref") /\
       (!v'. ~(v = APPCONval con v')) ==>
       P_pat (CONpat longcon atpat) s E v s FAILvef) /\
     (!s1 s2 E v longexcon atpat vef v' en.
       (lookuplongexcon_env E longexcon = lift en) /\
       (v = EXVALval (NAMEVALexval en v')) /\
       P_atpat atpat s1 E v' s2 vef ==>
       P_pat (EXCONpat longexcon atpat) s1 E v s2 vef) /\
     (!s E v longexcon atpat en.
       (lookuplongexcon_env E longexcon = lift en) /\
       (!v'. ~(v = EXVALval (NAMEVALexval en v'))) ==>
       P_pat (EXCONpat longexcon atpat) s E v s FAILvef) /\
     (!s E a atpat vef v.
       (lookupaddr_state s a = lift v) /\ P_atpat atpat s E v s vef ==>
       P_pat (CONpat (BASE (CON "ref")) atpat) s E (ADDRval a) s vef) /\
     (!s1 s2 E v var pat VE.
       P_pat pat s1 E v s2 (VARENVvef VE) ==>
       P_pat (LAYEREDpat var pat) s1 E v s2
         (VARENVvef
           (add_varenv (insert_into_varenv empty_varenv var v) VE))) /\
     (!s1 s2 E v var pat.
       P_pat pat s1 E v s2 FAILvef ==>
       P_pat (LAYEREDpat var pat) s1 E v s2 FAILvef) ==>
     (!ap s1 v e s2 vef.
       eval_atpat ap s1 v e s2 vef ==> P_atpat ap s1 v e s2 vef) /\
     (!pr s1 r e s2 vef.
       eval_patrow pr s1 r e s2 vef ==> P_patrow pr s1 r e s2 vef) /\
     (!p s1 v e s2 vef. eval_pat p s1 v e s2 vef ==> P_pat p s1 v e s2 vef)
EVAL_RULES_SATISFIED
|- eval_pred eval_atexp eval_exprow eval_exp eval_match eval_mrule eval_dec
     eval_valbind
eval_induction
|- !P_atexp P_exprow P_exp P_match P_mrule P_dec P_valbind.
     (!s E scon.
       P_atexp (SCONatexp scon) s E s (VALvp (SVALval (value_of scon)))) /\
     (!s E longvar v.
       (lookuplongvar_env E longvar = lift v) ==>
       P_atexp (VARatexp longvar) s E s (VALvp v)) /\
     (!s E longcon con.
       (long_base longcon = con) ==>
       P_atexp (CONatexp longcon) s E s (VALvp (CONval con))) /\
     (!s E en longexcon.
       (lookuplongexcon_env E longexcon = lift en) ==>
       P_atexp (EXCONatexp longexcon) s E s
         (VALvp (EXVALval (NAMEexval en)))) /\
     (!s E.
       P_atexp (RECORDatexp NONE) s E s (VALvp (RECORDval empty_record))) /\
     (!s1 E s2 exprow r.
       P_exprow exprow s1 E s2 (RECORDrp r) ==>
       P_atexp (RECORDatexp (SOME exprow)) s1 E s2
         (VALvp (RECORDval (add_record empty_record r)))) /\
     (!s1 E s2 exprow p.
       P_exprow exprow s1 E s2 (PACKrp p) ==>
       P_atexp (RECORDatexp (SOME exprow)) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 dec exp v s' E'.
       P_dec dec s1 E s' (ENVep E') /\
       P_exp exp s' (add_env E E') s2 (VALvp v) ==>
       P_atexp (LETatexp dec exp) s1 E s2 (VALvp v)) /\
     (!s1 E s2 dec exp p.
       P_dec dec s1 E s2 (PACKep p) ==>
       P_atexp (LETatexp dec exp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 dec exp p s' E'.
       P_dec dec s1 E s' (ENVep E') /\
       P_exp exp s' (add_env E E') s2 (PACKvp p) ==>
       P_atexp (LETatexp dec exp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp vp.
       P_exp exp s1 E s2 vp ==> P_atexp (PARatexp exp) s1 E s2 vp) /\
     (!s1 E s2 lab exp v.
       P_exp exp s1 E s2 (VALvp v) ==>
       P_exprow (EXPROW lab exp NONE) s1 E s2
         (RECORDrp (insert_into_record empty_record lab v))) /\
     (!s1 E s2 lab exp exprow_op p.
       P_exp exp s1 E s2 (PACKvp p) ==>
       P_exprow (EXPROW lab exp exprow_op) s1 E s2 (PACKrp p)) /\
     (!s1 E s2 lab exp exprow v r s'.
       P_exp exp s1 E s' (VALvp v) /\ P_exprow exprow s' E s2 (RECORDrp r) ==>
       P_exprow (EXPROW lab exp (SOME exprow)) s1 E s2
         (RECORDrp (add_record (insert_into_record empty_record lab v) r))) /\
     (!s1 E s2 lab exp exprow p s' v.
       P_exp exp s1 E s' (VALvp v) /\ P_exprow exprow s' E s2 (PACKrp p) ==>
       P_exprow (EXPROW lab exp (SOME exprow)) s1 E s2 (PACKrp p)) /\
     (!s1 E s2 atexp vp.
       P_atexp atexp s1 E s2 vp ==> P_exp (ATEXPexp atexp) s1 E s2 vp) /\
     (!s1 E s2 exp atexp c v s'.
       P_exp exp s1 E s' (VALvp (CONval c)) /\
       ~(c = CON "ref") /\
       P_atexp atexp s' E s2 (VALvp v) ==>
       P_exp (APPexp exp atexp) s1 E s2 (VALvp (APPCONval c v))) /\
     (!s1 E s2 exp atexp p.
       P_exp exp s1 E s2 (PACKvp p) ==>
       P_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp atexp p s' c.
       P_exp exp s1 E s' (VALvp (CONval c)) /\
       ~(c = CON "ref") /\
       P_atexp atexp s' E s2 (PACKvp p) ==>
       P_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp atexp en v s'.
       P_exp exp s1 E s' (VALvp (EXVALval (NAMEexval en))) /\
       P_atexp atexp s' E s2 (VALvp v) ==>
       P_exp (APPexp exp atexp) s1 E s2
         (VALvp (EXVALval (NAMEVALexval en v)))) /\
     (!s1 E s2 exp atexp p s' en.
       P_exp exp s1 E s' (VALvp (EXVALval (NAMEexval en))) /\
       P_atexp atexp s' E s2 (PACKvp p) ==>
       P_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s E s'' exp atexp a v s'.
       P_exp exp s E s' (VALvp (CONval (CON "ref"))) /\
       P_atexp atexp s' E s'' (VALvp v) /\
       (a = new_addr s'') ==>
       P_exp (APPexp exp atexp) s E (insert_into_state_mem s'' a v)
         (VALvp (ADDRval a))) /\
     (!s E s'' exp atexp p s'.
       P_exp exp s E s' (VALvp (CONval (CON "ref"))) /\
       P_atexp atexp s' E s'' (PACKvp p) ==>
       P_exp (APPexp exp atexp) s E s'' (PACKvp p)) /\
     (!s E s'' exp atexp a v s'.
       P_exp exp s E s' (VALvp ASSGval) /\
       P_atexp atexp s' E s''
         (VALvp
           (RECORDval
             (insert_into_record
                (insert_into_record empty_record (LABEL "1") (ADDRval a))
                (LABEL "2")
               v))) ==>
       P_exp (APPexp exp atexp) s E (insert_into_state_mem s'' a v)
         (VALvp (RECORDval empty_record))) /\
     (!s E s'' exp atexp p s'.
       P_exp exp s E s' (VALvp ASSGval) /\
       P_atexp atexp s' E s'' (PACKvp p) ==>
       P_exp (APPexp exp atexp) s E s'' (PACKvp p)) /\
     (!s1 E s2 exp atexp v' s' b v.
       P_exp exp s1 E s' (VALvp (BASval b)) /\
       P_atexp atexp s' E s2 (VALvp v) /\
       (apply b v = v') ==>
       P_exp (APPexp exp atexp) s1 E s2 v') /\
     (!s1 E s2 exp atexp p s' b.
       P_exp exp s1 E s' (VALvp (BASval b)) /\
       P_atexp atexp s' E s2 (PACKvp p) ==>
       P_exp (APPexp exp atexp) s1 E s2 (PACKvp p)) /\
     (!s1 E s4 exp atexp v' s2 s3 match E' VE v.
       P_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
       P_atexp atexp s2 E s3 (VALvp v) /\
       P_match match s3
         (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
         v
         s4
         (VALvpf v') ==>
       P_exp (APPexp exp atexp) s1 E s4 (VALvp v')) /\
     (!s1 E s3 exp atexp p s2 match E' VE.
       P_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
       P_atexp atexp s2 E s3 (PACKvp p) ==>
       P_exp (APPexp exp atexp) s1 E s3 (PACKvp p)) /\
     (!s1 E s4 exp atexp p s2 s3 match E' VE v.
       P_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
       P_atexp atexp s2 E s3 (VALvp v) /\
       P_match match s3
         (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
         v
         s4
         (PACKvpf p) ==>
       P_exp (APPexp exp atexp) s1 E s4 (PACKvp p)) /\
     (!s1 E s4 exp atexp s2 s3 match E' VE v.
       P_exp exp s1 E s2 (VALvp (CLOSUREval (CLOSURE match E' VE))) /\
       P_atexp atexp s2 E s3 (VALvp v) /\
       P_match match s3
         (add_env E' (ENV empty_strenv (rec_varenv VE) empty_exconenv))
         v
         s4
         FAILvpf ==>
       P_exp (APPexp exp atexp) s1 E s4
         (PACKvp (PACK (NAMEexval (EXNAME 7))))) /\
     (!s1 E s2 exp match v.
       P_exp exp s1 E s2 (VALvp v) ==>
       P_exp (HANDLEexp exp match) s1 E s2 (VALvp v)) /\
     (!s1 E s2 exp match v s' e.
       P_exp exp s1 E s' (PACKvp (PACK e)) /\
       P_match match s' E (EXVALval e) s2 (VALvpf v) ==>
       P_exp (HANDLEexp exp match) s1 E s2 (VALvp v)) /\
     (!s1 E s2 exp match p s' e.
       P_exp exp s1 E s' (PACKvp (PACK e)) /\
       P_match match s' E (EXVALval e) s2 (PACKvpf p) ==>
       P_exp (HANDLEexp exp match) s1 E s2 (PACKvp p)) /\
     (!s1 E s2 exp match e s'.
       P_exp exp s1 E s' (PACKvp (PACK e)) /\
       P_match match s' E (EXVALval e) s2 FAILvpf ==>
       P_exp (HANDLEexp exp match) s1 E s2 (PACKvp (PACK e))) /\
     (!s1 E s2 exp e.
       P_exp exp s1 E s2 (VALvp (EXVALval e)) ==>
       P_exp (RAISEexp exp) s1 E s2 (PACKvp (PACK e))) /\
     (!s1 E s2 exp p.
       P_exp exp s1 E s2 (PACKvp p) ==>
       P_exp (RAISEexp exp) s1 E s2 (PACKvp p)) /\
     (!s E match.
       P_exp (FNexp match) s E s
         (VALvp (CLOSUREval (CLOSURE match E empty_varenv)))) /\
     (!s1 E s2 mrule match_op v v'.
       P_mrule mrule s1 E v s2 (VALvpf v') ==>
       P_match (MATCH mrule match_op) s1 E v s2 (VALvpf v')) /\
     (!s1 E s2 mrule match_op v p.
       P_mrule mrule s1 E v s2 (PACKvpf p) ==>
       P_match (MATCH mrule match_op) s1 E v s2 (PACKvpf p)) /\
     (!s1 E s2 mrule v.
       P_mrule mrule s1 E v s2 FAILvpf ==>
       P_match (MATCH mrule NONE) s1 E v s2 FAILvpf) /\
     (!s1 E s2 mrule match v vpf s'.
       P_mrule mrule s1 E v s' FAILvpf /\ P_match match s' E v s2 vpf ==>
       P_match (MATCH mrule (SOME match)) s1 E v s2 vpf) /\
     (!s1 E s2 pat exp v v' s' VE.
       eval_pat pat s1 E v s' (VARENVvef VE) /\
       P_exp exp s' (add_env E (ENV empty_strenv VE empty_exconenv)) s2
         (VALvp v') ==>
       P_mrule (MRULE pat exp) s1 E v s2 (VALvpf v')) /\
     (!s1 E s2 pat exp v p s' VE.
       eval_pat pat s1 E v s' (VARENVvef VE) /\
       P_exp exp s' (add_env E (ENV empty_strenv VE empty_exconenv)) s2
         (PACKvp p) ==>
       P_mrule (MRULE pat exp) s1 E v s2 (PACKvpf p)) /\
     (!s1 E s2 pat exp v.
       eval_pat pat s1 E v s2 FAILvef ==>
       P_mrule (MRULE pat exp) s1 E v s2 FAILvpf) /\
     (!s1 E s2 valbind VE.
       P_valbind valbind s1 E s2 (VARENVvep VE) ==>
       P_dec (VALdec valbind) s1 E s2
         (ENVep (ENV empty_strenv VE empty_exconenv))) /\
     (!s1 E s2 valbind p.
       P_valbind valbind s1 E s2 (PACKvep p) ==>
       P_dec (VALdec valbind) s1 E s2 (PACKep p)) /\
     (!s1 E s2 exbind EE.
       eval_exbind exbind s1 E s2 (EXCONENVeep EE) ==>
       P_dec (EXCEPTdec exbind) s1 E s2
         (ENVep (ENV empty_strenv empty_varenv EE))) /\
     (!s1 E s2 exbind p.
       eval_exbind exbind s1 E s2 (PACKeep p) ==>
       P_dec (EXCEPTdec exbind) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 E2 E1 s'.
       P_dec dec1 s1 E s' (ENVep E1) /\
       P_dec dec2 s' (add_env E E1) s2 (ENVep E2) ==>
       P_dec (LOCALdec dec1 dec2) s1 E s2 (ENVep E2)) /\
     (!s1 E s2 dec1 dec2 p.
       P_dec dec1 s1 E s2 (PACKep p) ==>
       P_dec (LOCALdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 p E1 s'.
       P_dec dec1 s1 E s' (ENVep E1) /\
       P_dec dec2 s' (add_env E E1) s2 (PACKep p) ==>
       P_dec (LOCALdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s E longstrid_1_n E_1_n.
       (nonempty_MAP (lookuplongstrid_env E) longstrid_1_n =
        nonempty_MAP lift E_1_n) ==>
       P_dec (OPENdec longstrid_1_n) s E s
         (ENVep (add_nonemptylist_env E_1_n))) /\
     (!s E.
       P_dec EMPTYdec s E s
         (ENVep (ENV empty_strenv empty_varenv empty_exconenv))) /\
     (!s1 E s2 dec1 dec2 E1 E2 s'.
       P_dec dec1 s1 E s' (ENVep E1) /\
       P_dec dec2 s' (add_env E E1) s2 (ENVep E2) ==>
       P_dec (SEQdec dec1 dec2) s1 E s2 (ENVep (add_env E1 E2))) /\
     (!s1 E s2 dec1 dec2 p.
       P_dec dec1 s1 E s2 (PACKep p) ==>
       P_dec (SEQdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 dec1 dec2 p E1 s'.
       P_dec dec1 s1 E s' (ENVep E1) /\
       P_dec dec2 s' (add_env E E1) s2 (PACKep p) ==>
       P_dec (SEQdec dec1 dec2) s1 E s2 (PACKep p)) /\
     (!s1 E s2 pat exp VE v s'.
       P_exp exp s1 E s' (VALvp v) /\
       eval_pat pat s' E v s2 (VARENVvef VE) ==>
       P_valbind (PLAINvalbind pat exp NONE) s1 E s2 (VARENVvep VE)) /\
     (!s1 E s2 pat exp p.
       P_exp exp s1 E s2 (PACKvp p) ==>
       P_valbind (PLAINvalbind pat exp NONE) s1 E s2 (PACKvep p)) /\
     (!s1 E s4 pat exp valbind VE VE' v s2 s3.
       P_exp exp s1 E s2 (VALvp v) /\
       eval_pat pat s2 E v s3 (VARENVvef VE) /\
       P_valbind valbind s3 E s4 (VARENVvep VE') ==>
       P_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s4
         (VARENVvep (add_varenv VE VE'))) /\
     (!s1 E s2 pat exp valbind p.
       P_exp exp s1 E s2 (PACKvp p) ==>
       P_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s2 (PACKvep p)) /\
     (!s1 E s4 pat exp valbind p v VE s2 s3.
       P_exp exp s1 E s2 (VALvp v) /\
       eval_pat pat s2 E v s3 (VARENVvef VE) /\
       P_valbind valbind s3 E s4 (PACKvep p) ==>
       P_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s4 (PACKvep p)) /\
     (!s1 E s2 pat exp v s'.
       P_exp exp s1 E s' (VALvp v) /\ eval_pat pat s' E v s2 FAILvef ==>
       P_valbind (PLAINvalbind pat exp NONE) s1 E s2
         (PACKvep (PACK (NAMEexval (EXNAME 8))))) /\
     (!s1 E s2 pat exp valbind v s'.
       P_exp exp s1 E s' (VALvp v) /\ eval_pat pat s' E v s2 FAILvef ==>
       P_valbind (PLAINvalbind pat exp (SOME valbind)) s1 E s2
         (PACKvep (PACK (NAMEexval (EXNAME 8))))) /\
     (!s1 E s2 valbind VE.
       P_valbind valbind s1 E s2 (VARENVvep VE) ==>
       P_valbind (RECvalbind valbind) s1 E s2 (VARENVvep (rec_varenv VE))) /\
     (!s1 E s2 valbind p.
       P_valbind valbind s1 E s2 (PACKvep p) ==>
       P_valbind (RECvalbind valbind) s1 E s2 (PACKvep p)) ==>
     (!ae s1 e s2 vp. eval_atexp ae s1 e s2 vp ==> P_atexp ae s1 e s2 vp) /\
     (!er s1 e s2 rp. eval_exprow er s1 e s2 rp ==> P_exprow er s1 e s2 rp) /\
     (!ex s1 e s2 vp. eval_exp ex s1 e s2 vp ==> P_exp ex s1 e s2 vp) /\
     (!mat s1 v e s2 vpf.
       eval_match mat s1 v e s2 vpf ==> P_match mat s1 v e s2 vpf) /\
     (!mr s1 v e s2 vpf.
       eval_mrule mr s1 v e s2 vpf ==> P_mrule mr s1 v e s2 vpf) /\
     (!d s1 e s2 ep. eval_dec d s1 e s2 ep ==> P_dec d s1 e s2 ep) /\
     (!vb s1 e s2 vep.
       eval_valbind vb s1 e s2 vep ==> P_valbind vb s1 e s2 vep)