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; |