equal
deleted
inserted
replaced
394 fixes xs::"'a list" |
394 fixes xs::"'a list" |
395 shows "xs\<sharp>*(a,b) = (xs\<sharp>*a \<and> xs\<sharp>*b)" |
395 shows "xs\<sharp>*(a,b) = (xs\<sharp>*a \<and> xs\<sharp>*b)" |
396 by (auto simp add: fresh_star_def fresh_prod) |
396 by (auto simp add: fresh_star_def fresh_prod) |
397 |
397 |
398 lemmas fresh_star_prod = fresh_star_prod_list fresh_star_prod_set |
398 lemmas fresh_star_prod = fresh_star_prod_list fresh_star_prod_set |
|
399 |
|
400 text {* Normalization of freshness results; cf.\ @{text nominal_induct} *} |
|
401 |
|
402 lemma fresh_star_unit_elim: |
|
403 shows "((a::'a set)\<sharp>*() \<Longrightarrow> PROP C) \<equiv> PROP C" |
|
404 and "((b::'a list)\<sharp>*() \<Longrightarrow> PROP C) \<equiv> PROP C" |
|
405 by (simp_all add: fresh_star_def fresh_def supp_unit) |
|
406 |
|
407 lemma fresh_star_prod_elim: |
|
408 shows "((a::'a set)\<sharp>*(x,y) \<Longrightarrow> PROP C) \<equiv> (a\<sharp>*x \<Longrightarrow> a\<sharp>*y \<Longrightarrow> PROP C)" |
|
409 and "((b::'a list)\<sharp>*(x,y) \<Longrightarrow> PROP C) \<equiv> (b\<sharp>*x \<Longrightarrow> b\<sharp>*y \<Longrightarrow> PROP C)" |
|
410 by (rule, simp_all add: fresh_star_prod)+ |
399 |
411 |
400 section {* Abstract Properties for Permutations and Atoms *} |
412 section {* Abstract Properties for Permutations and Atoms *} |
401 (*=========================================================*) |
413 (*=========================================================*) |
402 |
414 |
403 (* properties for being a permutation type *) |
415 (* properties for being a permutation type *) |