@@ -24,15 +24,16 @@ binder_inductive cong :: "trm \<Rightarrow> trm \<Rightarrow> bool" (infix "(\<e
2424 ( auto simp : isPerm_def term . rrename_comps
2525 | (( rule exI [ of _ "\<sigma> _" ] exI )+, ( rule conjI )?, rule refl )
2626 | (( rule exI [ of _ "\<sigma> _" ])+ ; auto ))+
27- subgoal premises prems for R B P Q
28- by ( tactic \<open>refreshability_tac false
29- [@{term "FFVars :: trm \<Rightarrow> var set"}, @{term "FFVars :: trm \<Rightarrow> var set"}]
30- [@{term "rrename :: (var \<Rightarrow> var) \<Rightarrow> trm \<Rightarrow> trm"}, @{term "(\<lambda>f x. f x) :: (var \<Rightarrow> var) \<Rightarrow> var \<Rightarrow> var"}]
31- [NONE, NONE, NONE, NONE, SOME [SOME 1, SOME 1, SOME 0], SOME [SOME 1], NONE, SOME [SOME 1, SOME 0, SOME 0]]
32- @{thm prems(3)} @{thm prems(2)} @{thms }
33- @{thms emp_bound singl_bound term.Un_bound term.card_of_FFVars_bounds infinite_UNIV}
34- @{thms Res_inject term.FFVars_rrenames} @{thms term.rrename_cong_ids[symmetric]}
35- @{thms id_onD} @{context}\<close> )
27+ subgoal premises prems for R B x1 x2
28+ apply simp
29+ using fresh [ of x1 x2 ] prems ( 2 -) unfolding
30+ (**) isPerm_def conj_assoc [ symmetric ] split_beta
31+ unfolding ex_push_inwards conj_disj_distribL ex_disj_distrib
32+ apply ( elim disj_forward exE ; simp )
33+ apply (( rule exI , rule conjI [ rotated ], assumption ) |
34+ ((( rule exI conjI )+)?, rule Res_refresh ) |
35+ ( auto ))+
36+ done
3637 done
3738
3839thm cong.strong_induct
@@ -65,15 +66,26 @@ binder_inductive trans :: "trm \<Rightarrow> trm \<Rightarrow> bool" (infix "(\<
6566 | (( rule exI [ of _ "\<sigma> _" ] exI )+, ( rule conjI )?, rule refl )
6667 | (( rule exI [ of _ "\<sigma> _" ])+ ; auto ))+
6768 by ( metis cong.equiv bij_imp_inv' term . rrename_bijs term . rrename_inv_simps )
68- subgoal premises prems for R B P Q
69- by ( tactic \<open>refreshability_tac false
70- [@{term "FFVars :: trm \<Rightarrow> var set"}, @{term "FFVars :: trm \<Rightarrow> var set"}]
71- [@{term "rrename :: (var \<Rightarrow> var) \<Rightarrow> trm \<Rightarrow> trm"}, @{term "(\<lambda>f x. f x) :: (var \<Rightarrow> var) \<Rightarrow> var \<Rightarrow> var"}]
72- [SOME [NONE, NONE, NONE, SOME 1, SOME 0], NONE, SOME [SOME 0, SOME 0, SOME 1], NONE]
73- @{thm prems(3)} @{thm prems(2)} @{thms }
74- @{thms emp_bound singl_bound term.Un_bound term.card_of_FFVars_bounds infinite_UNIV}
75- @{thms Res_inject Inp_inject term.FFVars_rrenames} @{thms Inp_eq_usub term.rrename_cong_ids[symmetric]}
76- @{thms } @{context}\<close> )
69+ subgoal for R B x1 x2
70+ unfolding ex_push_inwards conj_disj_distribL ex_disj_distrib ex_simps ( 1 , 2 )[ symmetric ]
71+ ex_comm [ where P = P for P :: "_ set \<Rightarrow> _ \<Rightarrow> _" ]
72+ apply ( elim disj_forward exE ; simp ; clarsimp )
73+ apply ( auto simp only : fst_conv snd_conv term . set )
74+ subgoal for x z P y Q
75+ apply ( rule exE [ OF exists_fresh [ of "[x, y, z]" P Q ]])
76+ subgoal for w
77+ apply ( rule exI [ of _ w ])
78+ apply simp
79+ by ( meson Inp_refresh usub_refresh )
80+ done
81+ subgoal for x z P y Q
82+ apply ( rule exE [ OF exists_fresh [ of "[x, y, z]" P Q ]])
83+ subgoal for w
84+ apply ( rule exI [ of _ w ])
85+ apply simp
86+ by ( meson Inp_refresh usub_refresh )
87+ done
88+ done
7789 done
7890
7991thm trans.strong_induct
0 commit comments