diff -r 649680775e93 -r 998d6b491003 Quot/Nominal/Terms.thy --- a/Quot/Nominal/Terms.thy Thu Feb 11 16:05:15 2010 +0100 +++ b/Quot/Nominal/Terms.thy Thu Feb 11 16:54:04 2010 +0100 @@ -1216,6 +1216,7 @@ | "rfv_foo8 (Foo1 b t) = (rfv_foo8 t - rbv8 b) \ (rfv_bar8 b)" | "rfv_bar8 (Bar0 x) = {atom x}" | "rfv_bar8 (Bar1 v x t) = {atom v} \ (rfv_bar8 t - {atom x})" +print_theorems instantiation rfoo8 and rbar8 :: pt @@ -1240,7 +1241,7 @@ where a1: "a = b \ (Foo0 a) \f (Foo0 b)" | a2: "a = b \ (Bar0 a) \b (Bar0 b)" -| a3: "(\pi. (((rbv8 b1), t1) \gen alpha8f rfv_foo8 pi ((rbv8 b2), t2))) \ Foo1 b1 t1 \f Foo1 b2 t2" +| a3: "b1 \b b2 \ (\pi. (((rbv8 b1), t1) \gen alpha8f rfv_foo8 pi ((rbv8 b2), t2))) \ Foo1 b1 t1 \f Foo1 b2 t2" | a4: "v1 = v2 \ (\pi. (({atom x1}, t1) \gen alpha8b rfv_bar8 pi ({atom x2}, t2))) \ Bar1 v1 x1 t1 \b Bar1 v2 x2 t2" lemma "(alpha8b ===> op =) rbv8 rbv8" @@ -1248,28 +1249,25 @@ apply (erule alpha8f_alpha8b.inducts(2)) apply (simp_all) done -lemma "(alpha8b ===> op =) rfv_bar8 rfv_bar8" - apply simp apply clarify + +lemma rfv_bar8_rsp_hlp: "x \b y \ rfv_bar8 x = rfv_bar8 y" apply (erule alpha8f_alpha8b.inducts(2)) apply (simp_all add: alpha_gen) done +lemma "(alpha8b ===> op =) rfv_bar8 rfv_bar8" + apply simp apply clarify apply (simp add: rfv_bar8_rsp_hlp) +done -lemma "(c :: name2) \ b \ (atom (a :: name)) \ (atom b) \ \ (alpha8f ===> op =) rfv_foo8 rfv_foo8" - apply (simp_all) - apply (rule_tac x="Foo1 (Bar1 a c (Bar0 c)) (Foo0 a)" in exI) - apply (rule_tac x="Foo1 (Bar1 a c (Bar0 b)) (Foo0 a)" in exI) - apply (rule conjI) - apply (rule a3) - apply (rule_tac x="0 :: perm" in exI) - apply (simp add: alpha_gen fresh_star_def) - apply (rule a1) - apply (rule refl) - apply simp +lemma "(alpha8f ===> op =) rfv_foo8 rfv_foo8" + apply simp apply clarify + apply (erule alpha8f_alpha8b.inducts(1)) + apply (simp_all add: alpha_gen rfv_bar8_rsp_hlp) done + text {* type schemes *} datatype ty = Var "name"