1260 apply (rule_tac x="rev pi \<bullet> x" in exI) |
1260 apply (rule_tac x="rev pi \<bullet> x" in exI) |
1261 apply (simp add: pt_pi_rev [OF pt at]) |
1261 apply (simp add: pt_pi_rev [OF pt at]) |
1262 apply (simp add: pt_rev_pi [OF pt at]) |
1262 apply (simp add: pt_rev_pi [OF pt at]) |
1263 done |
1263 done |
1264 |
1264 |
1265 lemma insert_eqvt: |
1265 lemma pt_insert_eqvt: |
|
1266 fixes pi::"'x prm" |
|
1267 and x::"'a" |
1266 assumes pt: "pt TYPE('a) TYPE('x)" |
1268 assumes pt: "pt TYPE('a) TYPE('x)" |
1267 and at: "at TYPE('x)" |
1269 and at: "at TYPE('x)" |
1268 shows "(pi::'x prm)\<bullet>(insert (x::'a) X) = insert (pi\<bullet>x) (pi\<bullet>X)" |
1270 shows "(pi\<bullet>(insert x X)) = insert (pi\<bullet>x) (pi\<bullet>X)" |
1269 by (auto simp add: perm_set_eq [OF pt at]) |
1271 by (auto simp add: perm_set_eq [OF pt at]) |
1270 |
1272 |
1271 lemma set_eqvt: |
1273 lemma pt_set_eqvt: |
1272 fixes pi :: "'x prm" |
1274 fixes pi :: "'x prm" |
1273 and xs :: "'a list" |
1275 and xs :: "'a list" |
1274 assumes pt: "pt TYPE('a) TYPE('x)" |
1276 assumes pt: "pt TYPE('a) TYPE('x)" |
1275 and at: "at TYPE('x)" |
1277 and at: "at TYPE('x)" |
1276 shows "pi\<bullet>(set xs) = set (pi\<bullet>xs)" |
1278 shows "pi\<bullet>(set xs) = set (pi\<bullet>xs)" |
1277 by (induct xs) (auto simp add: empty_eqvt insert_eqvt [OF pt at]) |
1279 by (induct xs) (auto simp add: empty_eqvt pt_insert_eqvt [OF pt at]) |
1278 |
1280 |
1279 lemma supp_singleton: |
1281 lemma supp_singleton: |
1280 assumes pt: "pt TYPE('a) TYPE('x)" |
1282 assumes pt: "pt TYPE('a) TYPE('x)" |
1281 and at: "at TYPE('x)" |
1283 and at: "at TYPE('x)" |
1282 shows "(supp {x::'a} :: 'x set) = supp x" |
1284 shows "(supp {x::'a} :: 'x set) = supp x" |
1566 apply(drule_tac x="(rev pi)\<bullet>xa" in bspec) |
1568 apply(drule_tac x="(rev pi)\<bullet>xa" in bspec) |
1567 apply(simp add: pt_set_bij1[OF ptb, OF at]) |
1569 apply(simp add: pt_set_bij1[OF ptb, OF at]) |
1568 apply(simp add: pt_fresh_left_ineq[OF pta, OF ptb, OF at, OF cp]) |
1570 apply(simp add: pt_fresh_left_ineq[OF pta, OF ptb, OF at, OF cp]) |
1569 apply(drule_tac x="pi\<bullet>xa" in bspec) |
1571 apply(drule_tac x="pi\<bullet>xa" in bspec) |
1570 apply(simp add: pt_set_bij1[OF ptb, OF at]) |
1572 apply(simp add: pt_set_bij1[OF ptb, OF at]) |
1571 apply(simp add: set_eqvt [OF ptb at] pt_rev_pi[OF pt_list_inst[OF ptb], OF at]) |
1573 apply(simp add: pt_set_eqvt [OF ptb at] pt_rev_pi[OF pt_list_inst[OF ptb], OF at]) |
1572 apply(simp add: pt_fresh_bij_ineq[OF pta, OF ptb, OF at, OF cp]) |
1574 apply(simp add: pt_fresh_bij_ineq[OF pta, OF ptb, OF at, OF cp]) |
1573 apply(drule_tac x="(rev pi)\<bullet>xa" in bspec) |
1575 apply(drule_tac x="(rev pi)\<bullet>xa" in bspec) |
1574 apply(simp add: pt_set_bij1[OF ptb, OF at] set_eqvt [OF ptb at]) |
1576 apply(simp add: pt_set_bij1[OF ptb, OF at] pt_set_eqvt [OF ptb at]) |
1575 apply(simp add: pt_fresh_left_ineq[OF pta, OF ptb, OF at, OF cp]) |
1577 apply(simp add: pt_fresh_left_ineq[OF pta, OF ptb, OF at, OF cp]) |
1576 done |
1578 done |
1577 |
1579 |
1578 lemma pt_fresh_left: |
1580 lemma pt_fresh_left: |
1579 fixes pi :: "'x prm" |
1581 fixes pi :: "'x prm" |