diff -r 4eca2c3e59f7 -r 5dffcd087e30 LamEx.thy --- a/LamEx.thy Sat Dec 05 23:35:09 2009 +0100 +++ b/LamEx.thy Sun Dec 06 00:00:47 2009 +0100 @@ -190,14 +190,20 @@ lemma fv_var: "fv (Var (a\name)) = {a}" apply (tactic {* lift_tac_lam @{context} @{thm rfv_var} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma fv_app: "fv (App (x\lam) (xa\lam)) = fv x \ fv xa" apply (tactic {* lift_tac_lam @{context} @{thm rfv_app} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma fv_lam: "fv (Lam (a\name) (x\lam)) = fv x - {a}" apply (tactic {* lift_tac_lam @{context} @{thm rfv_lam} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma a1: "(a\name) = (b\name) \ Var a = Var b" @@ -210,6 +216,8 @@ lemma a3: "\(x\lam) = [(a\name, b\name)] \ (xa\lam); a \ fv (Lam b x)\ \ Lam a x = Lam b xa" apply (tactic {* lift_tac_lam @{context} @{thm a3} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma alpha_cases: "\a1 = a2; \a b. \a1 = Var a; a2 = Var b; a = b\ \ P; @@ -217,6 +225,8 @@ \x a b xa. \a1 = Lam a x; a2 = Lam b xa; x = [(a, b)] \ xa; a \ fv (Lam b x)\ \ P\ \ P" apply (tactic {* lift_tac_lam @{context} @{thm alpha.cases} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma alpha_induct: "\(qx\lam) = (qxa\lam); \(a\name) b\name. a = b \ (qxb\lam \ lam \ bool) (Var a) (Var b); @@ -225,6 +235,8 @@ \x = [(a, b)] \ xa; qxb x ([(a, b)] \ xa); a \ fv (Lam b x)\ \ qxb (Lam a x) (Lam b xa)\ \ qxb qx qxa" apply (tactic {* lift_tac_lam @{context} @{thm alpha.induct} 1 *}) +apply (unfold fv_def[simplified id_simps]) +apply (tactic {* clean_tac @{context} 1 *}) done lemma var_inject: "(Var a = Var b) = (a = b)"