src/HOL/Nominal/Nominal.thy
changeset 29128 4c243e6a71b2
parent 28965 1de908189869
child 29903 2c0046b26f80
equal deleted inserted replaced
29127:2a684ee023e7 29128:4c243e6a71b2
  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"