src/HOL/Nominal/nominal_atoms.ML
changeset 19972 89c5afe4139a
parent 19638 4358b88a9d12
child 19992 bb383dcec3d8
equal deleted inserted replaced
19971:ddf69abaffa8 19972:89c5afe4139a
   666        val pt_bij              = thm "Nominal.pt_bij";
   666        val pt_bij              = thm "Nominal.pt_bij";
   667        val pt_perm_compose     = thm "Nominal.pt_perm_compose";
   667        val pt_perm_compose     = thm "Nominal.pt_perm_compose";
   668        val pt_perm_compose'    = thm "Nominal.pt_perm_compose'";
   668        val pt_perm_compose'    = thm "Nominal.pt_perm_compose'";
   669        val perm_app            = thm "Nominal.pt_fun_app_eq";
   669        val perm_app            = thm "Nominal.pt_fun_app_eq";
   670        val at_fresh            = thm "Nominal.at_fresh";
   670        val at_fresh            = thm "Nominal.at_fresh";
       
   671        val at_fresh_ineq       = thm "Nominal.at_fresh_ineq";
   671        val at_calc             = thms "Nominal.at_calc";
   672        val at_calc             = thms "Nominal.at_calc";
   672        val at_supp             = thm "Nominal.at_supp";
   673        val at_supp             = thm "Nominal.at_supp";
   673        val dj_supp             = thm "Nominal.dj_supp";
   674        val dj_supp             = thm "Nominal.dj_supp";
   674        val fresh_left_ineq     = thm "Nominal.pt_fresh_left_ineq";
   675        val fresh_left_ineq     = thm "Nominal.pt_fresh_left_ineq";
   675        val fresh_left          = thm "Nominal.pt_fresh_left";
   676        val fresh_left          = thm "Nominal.pt_fresh_left";
   677        val fresh_right         = thm "Nominal.pt_fresh_right";
   678        val fresh_right         = thm "Nominal.pt_fresh_right";
   678        val fresh_bij_ineq      = thm "Nominal.pt_fresh_bij_ineq";
   679        val fresh_bij_ineq      = thm "Nominal.pt_fresh_bij_ineq";
   679        val fresh_bij           = thm "Nominal.pt_fresh_bij";
   680        val fresh_bij           = thm "Nominal.pt_fresh_bij";
   680        val fresh_aux_ineq      = thm "Nominal.pt_fresh_aux_ineq";
   681        val fresh_aux_ineq      = thm "Nominal.pt_fresh_aux_ineq";
   681        val fresh_aux           = thm "Nominal.pt_fresh_aux";
   682        val fresh_aux           = thm "Nominal.pt_fresh_aux";
       
   683        val fresh_eqvt          = thm "Nominal.pt_fresh_eqvt";
       
   684        val all_eqvt            = thm "Nominal.pt_all_eqvt";
   682        val pt_pi_rev           = thm "Nominal.pt_pi_rev";
   685        val pt_pi_rev           = thm "Nominal.pt_pi_rev";
   683        val pt_rev_pi           = thm "Nominal.pt_rev_pi";
   686        val pt_rev_pi           = thm "Nominal.pt_rev_pi";
       
   687        val at_exists_fresh     = thm "Nominal.at_exists_fresh";
   684   
   688   
   685 
   689 
   686        (* Now we collect and instantiate some lemmas w.r.t. all atom      *)
   690        (* Now we collect and instantiate some lemmas w.r.t. all atom      *)
   687        (* types; this allows for example to use abs_perm (which is a      *)
   691        (* types; this allows for example to use abs_perm (which is a      *)
   688        (* collection of theorems) instead of thm abs_fun_pi with explicit *)
   692        (* collection of theorems) instead of thm abs_fun_pi with explicit *)
   759 		  val thms2 = instR cp1 (Library.flat cps');
   763 		  val thms2 = instR cp1 (Library.flat cps');
   760               in [(("perm_compose",thms1 @ thms2),[])] end
   764               in [(("perm_compose",thms1 @ thms2),[])] end
   761             ||>> PureThy.add_thmss [(("perm_compose'",inst_pt_at [pt_perm_compose']),[])] 
   765             ||>> PureThy.add_thmss [(("perm_compose'",inst_pt_at [pt_perm_compose']),[])] 
   762             ||>> PureThy.add_thmss [(("perm_app", inst_pt_at [perm_app]),[])]
   766             ||>> PureThy.add_thmss [(("perm_app", inst_pt_at [perm_app]),[])]
   763             ||>> PureThy.add_thmss [(("supp_atm", (inst_at [at_supp]) @ (inst_dj [dj_supp])),[])]
   767             ||>> PureThy.add_thmss [(("supp_atm", (inst_at [at_supp]) @ (inst_dj [dj_supp])),[])]
   764             ||>> PureThy.add_thmss [(("fresh_atm", inst_at [at_fresh]),[])]
   768             ||>> PureThy.add_thmss [(("exists_fresh", inst_at [at_exists_fresh]),[])]
       
   769             ||>> PureThy.add_thmss [(("all_eqvt", inst_pt_at [all_eqvt]),[])]
       
   770             ||>> PureThy.add_thmss 
       
   771 	      let val thms1 = inst_at [at_fresh]
       
   772 		  val thms2 = inst_dj [at_fresh_ineq]
       
   773 	      in [(("fresh_atm", thms1 @ thms2),[])] end
   765             ||>> PureThy.add_thmss [(("calc_atm", inst_at at_calc),[])]
   774             ||>> PureThy.add_thmss [(("calc_atm", inst_at at_calc),[])]
   766             ||>> PureThy.add_thmss
   775             ||>> PureThy.add_thmss
   767 	      let val thms1 = inst_pt_at [abs_fun_pi]
   776 	      let val thms1 = inst_pt_at [abs_fun_pi]
   768 		  and thms2 = inst_pt_pt_at_cp [abs_fun_pi_ineq]
   777 		  and thms2 = inst_pt_pt_at_cp [abs_fun_pi_ineq]
   769 	      in [(("abs_perm", thms1 @ thms2),[])] end
   778 	      in [(("abs_perm", thms1 @ thms2),[])] end
   790 		  and thms2 = inst_pt_pt_at_cp [fresh_right_ineq]
   799 		  and thms2 = inst_pt_pt_at_cp [fresh_right_ineq]
   791 	      in [(("fresh_right", thms1 @ thms2),[])] end
   800 	      in [(("fresh_right", thms1 @ thms2),[])] end
   792             ||>> PureThy.add_thmss
   801             ||>> PureThy.add_thmss
   793 	      let val thms1 = inst_pt_at [fresh_bij]
   802 	      let val thms1 = inst_pt_at [fresh_bij]
   794 		  and thms2 = inst_pt_pt_at_cp [fresh_bij_ineq]
   803 		  and thms2 = inst_pt_pt_at_cp [fresh_bij_ineq]
   795 	      in [(("fresh_eqvt", thms1 @ thms2),[])] end
   804 	      in [(("fresh_bij", thms1 @ thms2),[])] end
       
   805             ||>> PureThy.add_thmss
       
   806 	      let val thms1 = inst_pt_at [fresh_eqvt]
       
   807 	      in [(("fresh_eqvt", thms1),[])] end
   796             ||>> PureThy.add_thmss
   808             ||>> PureThy.add_thmss
   797 	      let val thms1 = inst_pt_at [fresh_aux]
   809 	      let val thms1 = inst_pt_at [fresh_aux]
   798 		  and thms2 = inst_pt_pt_at_cp_dj [fresh_aux_ineq]
   810 		  and thms2 = inst_pt_pt_at_cp_dj [fresh_aux_ineq]
   799 	      in [(("fresh_aux", thms1 @ thms2),[])] end
   811 	      in [(("fresh_aux", thms1 @ thms2),[])] end
   800 	   end;
   812 	   end;