diff -r 67451725fb41 -r 8ae1c2e6369e Tutorial/Lambda.thy --- a/Tutorial/Lambda.thy Tue Jan 25 02:46:05 2011 +0900 +++ b/Tutorial/Lambda.thy Tue Jan 25 02:51:44 2011 +0900 @@ -105,18 +105,13 @@ shows "(p \ t[x ::= s]) = (p \ t)[(p \ x) ::= (p \ s)]" by (induct t x s rule: subst.induct) (simp_all) - -subsection {* Single-Step Beta-Reduction *} - -inductive - beta :: "lam \ lam \ bool" (" _ \b _" [80,80] 80) -where - b1[intro]: "t1 \b t2 \ App t1 s \b App t2 s" -| b2[intro]: "s1 \b s2 \ App t s1 \b App t s2" -| b3[intro]: "t1 \b t2 \ Lam [x]. t1 \b Lam [x]. t2" -| b4[intro]: "App (Lam [x]. t) s \b t[x ::= s]" - - +lemma fresh_fact: + assumes a: "atom z \ s" + and b: "z = y \ atom z \ t" + shows "atom z \ t[y ::= s]" +using a b +by (nominal_induct t avoiding: z y s rule: lam.strong_induct) + (auto simp add: lam.fresh fresh_at_base) end