equal
deleted
inserted
replaced
181 have "x\<sharp>Lam [x].(Var x)" by (simp add: abs_fresh) |
181 have "x\<sharp>Lam [x].(Var x)" by (simp add: abs_fresh) |
182 ultimately have "x\<sharp>(Var x)" by (simp only: faulty2) |
182 ultimately have "x\<sharp>(Var x)" by (simp only: faulty2) |
183 then show "False" by (simp add: fresh_atm) |
183 then show "False" by (simp add: fresh_atm) |
184 qed |
184 qed |
185 |
185 |
|
186 text {* A similar effect can be achieved using the strong case analysis rule. *} |
|
187 |
|
188 lemma false3: "False" |
|
189 proof - |
|
190 have "Lam [x].(Var x) \<rightarrow> (Var x)" by (iprover intro: strip.intros) |
|
191 moreover obtain y::name where y: "y \<sharp> x" |
|
192 by (rule exists_fresh) (rule fin_supp) |
|
193 then have "(Lam [x].(Var x)) = (Lam [y].(Var y))" |
|
194 by (simp add: lam.inject alpha calc_atm fresh_atm) |
|
195 ultimately have "Lam [y].(Var y) \<rightarrow> (Var x)" by simp |
|
196 then have "Var y \<rightarrow> Var x" using y |
|
197 by (cases rule: strip.strong_cases [where x=y]) |
|
198 (simp_all add: lam.inject alpha abs_fresh) |
|
199 then show "False" using y |
|
200 by cases (simp_all add: lam.inject fresh_atm) |
|
201 qed |
|
202 |
186 text {* |
203 text {* |
187 Moral: Who would have thought that the variable convention |
204 Moral: Who would have thought that the variable convention |
188 is in general an unsound reasoning principle. |
205 is in general an unsound reasoning principle. |
189 *} |
206 *} |
190 |
207 |