src/HOL/Nominal/Examples/VC_Condition.thy
changeset 26094 c6bd3185abb8
parent 26055 a7a537e0413a
child 26095 04ee0a14a9f6
equal deleted inserted replaced
26093:51e8d37b4e7b 26094:c6bd3185abb8
   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