diff -r ef34da709a0b -r b4f956137114 Quot/Nominal/Abs.thy --- a/Quot/Nominal/Abs.thy Mon Feb 01 12:48:18 2010 +0100 +++ b/Quot/Nominal/Abs.thy Mon Feb 01 13:00:01 2010 +0100 @@ -1,5 +1,5 @@ theory Abs -imports "Nominal2_Atoms" "Nominal2_Eqvt" "Nominal2_Supp" "../QuotMain" +imports "Nominal2_Atoms" "Nominal2_Eqvt" "Nominal2_Supp" "../QuotMain" "../QuotProd" begin (* lemmas that should be in Nominal \\must be cleaned *) @@ -73,17 +73,17 @@ done fun - alpha_abst + alpha_abs where - "alpha_abst (bs, x) (cs, y) = (\p. (bs, x) \gen (op=) supp p (cs, y))" + "alpha_abs (bs, x) (cs, y) = (\p. (bs, x) \gen (op=) supp p (cs, y))" notation - alpha_abst ("_ \abst _") + alpha_abs ("_ \abs _") lemma test1: assumes a1: "a \ (supp x) - bs" and a2: "b \ (supp x) - bs" - shows "(bs, x) \abst ((a \ b) \ bs, (a \ b) \ x)" + shows "(bs, x) \abs ((a \ b) \ bs, (a \ b) \ x)" apply(simp) apply(rule_tac x="(a \ b)" in exI) apply(simp add: alpha_gen) @@ -102,14 +102,14 @@ "s_test (bs, x) = (supp x) - bs" lemma s_test_lemma: - assumes a: "x \abst y" + assumes a: "x \abs y" shows "s_test x = s_test y" using a -apply(induct rule: alpha_abst.induct) +apply(induct rule: alpha_abs.induct) apply(simp add: alpha_gen) done -quotient_type 'a abst = "(atom set \ 'a::pt)" / "alpha_abst" +quotient_type 'a abs = "(atom set \ 'a::pt)" / "alpha_abs" apply(rule equivpI) unfolding reflp_def symp_def transp_def apply(simp_all) @@ -131,12 +131,12 @@ done quotient_definition - "Abst::atom set \ ('a::pt) \ 'a abst" + "Abs::atom set \ ('a::pt) \ 'a abs" as "Pair::atom set \ ('a::pt) \ (atom set \ 'a)" lemma [quot_respect]: - shows "((op =) ===> (op =) ===> alpha_abst) Pair Pair" + shows "((op =) ===> (op =) ===> alpha_abs) Pair Pair" apply(clarsimp) apply(rule exI) apply(rule alpha_gen_refl) @@ -144,7 +144,7 @@ done lemma [quot_respect]: - shows "((op =) ===> alpha_abst ===> alpha_abst) permute permute" + shows "((op =) ===> alpha_abs ===> alpha_abs) permute permute" apply(clarsimp) apply(rule exI) apply(rule alpha_gen_eqvt) @@ -153,32 +153,32 @@ done lemma [quot_respect]: - shows "(alpha_abst ===> (op =)) s_test s_test" + shows "(alpha_abs ===> (op =)) s_test s_test" apply(simp add: s_test_lemma) done -lemma abst_induct: - "\\as (x::'a::pt). P (Abst as x)\ \ P t" +lemma abs_induct: + "\\as (x::'a::pt). P (Abs as x)\ \ P t" apply(lifting prod.induct[where 'a="atom set" and 'b="'a"]) done -instantiation abst :: (pt) pt +instantiation abs :: (pt) pt begin quotient_definition - "permute_abst::perm \ ('a::pt abst) \ 'a abst" + "permute_abs::perm \ ('a::pt abs) \ 'a abs" as "permute:: perm \ (atom set \ 'a::pt) \ (atom set \ 'a::pt)" lemma permute_ABS [simp]: fixes x::"'a::pt" (* ??? has to be 'a \ 'b does not work *) - shows "(p \ (Abst as x)) = Abst (p \ as) (p \ x)" + shows "(p \ (Abs as x)) = Abs (p \ as) (p \ x)" apply(lifting permute_prod.simps(1)[where 'a="atom set" and 'b="'a"]) done instance apply(default) - apply(induct_tac [!] x rule: abst_induct) + apply(induct_tac [!] x rule: abs_induct) apply(simp_all) done @@ -187,13 +187,13 @@ lemma test1_lifted: assumes a1: "a \ (supp x) - bs" and a2: "b \ (supp x) - bs" - shows "(Abst bs x) = (Abst ((a \ b) \ bs) ((a \ b) \ x))" + shows "(Abs bs x) = (Abs ((a \ b) \ bs) ((a \ b) \ x))" using a1 a2 apply(lifting test1) done -lemma Abst_supports: - shows "((supp x) - as) supports (Abst as x)" +lemma Abs_supports: + shows "((supp x) - as) supports (Abs as x)" unfolding supports_def apply(clarify) apply(simp (no_asm)) @@ -202,18 +202,18 @@ done quotient_definition - "s_test_lifted :: ('a::pt) abst \ atom \ bool" + "s_test_lifted :: ('a::pt) abs \ atom \ bool" as "s_test" lemma s_test_lifted_simp: - shows "s_test_lifted (Abst bs x) = (supp x) - bs" + shows "s_test_lifted (Abs bs x) = (supp x) - bs" apply(lifting s_test.simps(1)) done lemma s_test_lifted_eqvt: shows "(p \ (s_test_lifted ab)) = s_test_lifted (p \ ab)" -apply(induct ab rule: abst_induct) +apply(induct ab rule: abs_induct) apply(simp add: s_test_lifted_simp supp_eqvt Diff_eqvt) done @@ -232,7 +232,7 @@ lemma s_test_fresh_lemma: - shows "(a \ Abst bs x) \ (a \ s_test_lifted (Abst bs x))" + shows "(a \ Abs bs x) \ (a \ s_test_lifted (Abs bs x))" apply(rule fresh_f_empty_supp) apply(rule allI) apply(subst permute_fun_def) @@ -255,7 +255,7 @@ lemma s_test_subset: fixes x::"'a::fs" - shows "((supp x) - as) \ (supp (Abst as x))" + shows "((supp x) - as) \ (supp (Abs as x))" apply(rule subsetI) apply(rule contrapos_pp) apply(assumption) @@ -269,34 +269,34 @@ apply(simp add: finite_supp) done -lemma supp_Abst: +lemma supp_Abs: fixes x::"'a::fs" - shows "supp (Abst as x) = (supp x) - as" + shows "supp (Abs as x) = (supp x) - as" apply(rule subset_antisym) apply(rule supp_is_subset) -apply(rule Abst_supports) +apply(rule Abs_supports) apply(simp add: finite_supp) apply(rule s_test_subset) done -instance abst :: (fs) fs +instance abs :: (fs) fs apply(default) -apply(induct_tac x rule: abst_induct) -apply(simp add: supp_Abst) +apply(induct_tac x rule: abs_induct) +apply(simp add: supp_Abs) apply(simp add: finite_supp) done lemma fresh_abs: fixes x::"'a::fs" - shows "a \ Abst bs x = (a \ bs \ (a \ bs \ a \ x))" + shows "a \ Abs bs x = (a \ bs \ (a \ bs \ a \ x))" apply(simp add: fresh_def) -apply(simp add: supp_Abst) +apply(simp add: supp_Abs) apply(auto) done lemma abs_eq: - shows "(Abst bs x) = (Abst cs y) \ (\p. (bs, x) \gen (op =) supp p (cs, y))" -apply(lifting alpha_abst.simps(1)) + shows "(Abs bs x) = (Abs cs y) \ (\p. (bs, x) \gen (op =) supp p (cs, y))" +apply(lifting alpha_abs.simps(1)) done end