src/HOL/Nominal/nominal_atoms.ML
changeset 28083 103d9282a946
parent 28011 90074908db16
child 28372 291e7a158e95
equal deleted inserted replaced
28082:37350f301128 28083:103d9282a946
   263           val axiom3 = Logic.mk_implies
   263           val axiom3 = Logic.mk_implies
   264                        (HOLogic.mk_Trueprop (cprm_eq $ pi1 $ pi2),
   264                        (HOLogic.mk_Trueprop (cprm_eq $ pi1 $ pi2),
   265                         HOLogic.mk_Trueprop (HOLogic.mk_eq (cperm $ pi1 $ x, cperm $ pi2 $ x)));
   265                         HOLogic.mk_Trueprop (HOLogic.mk_eq (cperm $ pi1 $ x, cperm $ pi2 $ x)));
   266       in
   266       in
   267           AxClass.define_class (cl_name, ["HOL.type"]) []
   267           AxClass.define_class (cl_name, ["HOL.type"]) []
   268                 [((cl_name ^ "1", [Simplifier.simp_add]), [axiom1]),
   268                 [((Name.binding (cl_name ^ "1"), [Simplifier.simp_add]), [axiom1]),
   269                  ((cl_name ^ "2", []), [axiom2]),                           
   269                  ((Name.binding (cl_name ^ "2"), []), [axiom2]),                           
   270                  ((cl_name ^ "3", []), [axiom3])] thy                          
   270                  ((Name.binding (cl_name ^ "3"), []), [axiom3])] thy
   271       end) ak_names_types thy6;
   271       end) ak_names_types thy6;
   272 
   272 
   273     (* proves that every pt_<ak>-type together with <ak>-type *)
   273     (* proves that every pt_<ak>-type together with <ak>-type *)
   274     (* instance of pt                                         *)
   274     (* instance of pt                                         *)
   275     (* lemma pt_<ak>_inst:                                    *)
   275     (* lemma pt_<ak>_inst:                                    *)
   311           val cfinite  = Const ("Finite_Set.finite", HOLogic.mk_setT T --> HOLogic.boolT)
   311           val cfinite  = Const ("Finite_Set.finite", HOLogic.mk_setT T --> HOLogic.boolT)
   312           
   312           
   313           val axiom1   = HOLogic.mk_Trueprop (cfinite $ (csupp $ x));
   313           val axiom1   = HOLogic.mk_Trueprop (cfinite $ (csupp $ x));
   314 
   314 
   315        in  
   315        in  
   316         AxClass.define_class (cl_name, [pt_name]) [] [((cl_name ^ "1", []), [axiom1])] thy            
   316         AxClass.define_class (cl_name, [pt_name]) [] [((Name.binding (cl_name ^ "1"), []), [axiom1])] thy            
   317        end) ak_names_types thy8; 
   317        end) ak_names_types thy8; 
   318          
   318          
   319      (* proves that every fs_<ak>-type together with <ak>-type   *)
   319      (* proves that every fs_<ak>-type together with <ak>-type   *)
   320      (* instance of fs-type                                      *)
   320      (* instance of fs-type                                      *)
   321      (* lemma abst_<ak>_inst:                                    *)
   321      (* lemma abst_<ak>_inst:                                    *)
   360 
   360 
   361                val ax1   = HOLogic.mk_Trueprop 
   361                val ax1   = HOLogic.mk_Trueprop 
   362                            (HOLogic.mk_eq (cperm1 $ pi1 $ (cperm2 $ pi2 $ x), 
   362                            (HOLogic.mk_eq (cperm1 $ pi1 $ (cperm2 $ pi2 $ x), 
   363                                            cperm2 $ (cperm3 $ pi1 $ pi2) $ (cperm1 $ pi1 $ x)));
   363                                            cperm2 $ (cperm3 $ pi1 $ pi2) $ (cperm1 $ pi1 $ x)));
   364                in  
   364                in  
   365                  AxClass.define_class (cl_name, ["HOL.type"]) [] [((cl_name ^ "1", []), [ax1])] thy'  
   365                  AxClass.define_class (cl_name, ["HOL.type"]) []
       
   366                    [((Name.binding (cl_name ^ "1"), []), [ax1])] thy'  
   366                end) ak_names_types thy) ak_names_types thy12;
   367                end) ak_names_types thy) ak_names_types thy12;
   367 
   368 
   368         (* proves for every <ak>-combination a cp_<ak1>_<ak2>_inst theorem;     *)
   369         (* proves for every <ak>-combination a cp_<ak1>_<ak2>_inst theorem;     *)
   369         (* lemma cp_<ak1>_<ak2>_inst:                                           *)
   370         (* lemma cp_<ak1>_<ak2>_inst:                                           *)
   370         (* cp TYPE('a::cp_<ak1>_<ak2>) TYPE(<ak1>) TYPE(<ak2>)                  *)
   371         (* cp TYPE('a::cp_<ak1>_<ak2>) TYPE(<ak1>) TYPE(<ak2>)                  *)