src/HOL/Proofs/Lambda/WeakNorm.thy
changeset 56073 29e308b56d23
parent 51143 0a2371e7ced3
child 58382 2ee61d28c667
equal deleted inserted replaced
56072:31e427387ab5 56073:29e308b56d23
    91           with eq have "(Var x \<degree>\<degree> [])[u/i] \<rightarrow>\<^sub>\<beta>\<^sup>* u" by simp
    91           with eq have "(Var x \<degree>\<degree> [])[u/i] \<rightarrow>\<^sub>\<beta>\<^sup>* u" by simp
    92           with Nil and uNF show ?thesis by simp iprover
    92           with Nil and uNF show ?thesis by simp iprover
    93         next
    93         next
    94           case (Cons a as)
    94           case (Cons a as)
    95           with argsT obtain T'' Ts where Us: "Us = T'' # Ts"
    95           with argsT obtain T'' Ts where Us: "Us = T'' # Ts"
    96             by (cases Us) (rule FalseE, simp+, erule that)
    96             by (cases Us) (rule FalseE, simp)
    97           from varT and Us have varT: "e\<langle>i:T\<rangle> \<turnstile> Var x : T'' \<Rightarrow> Ts \<Rrightarrow> T'"
    97           from varT and Us have varT: "e\<langle>i:T\<rangle> \<turnstile> Var x : T'' \<Rightarrow> Ts \<Rrightarrow> T'"
    98             by simp
    98             by simp
    99           from varT eq have T: "T = T'' \<Rightarrow> Ts \<Rrightarrow> T'" by cases auto
    99           from varT eq have T: "T = T'' \<Rightarrow> Ts \<Rrightarrow> T'" by cases auto
   100           with uT have uT': "e \<turnstile> u : T'' \<Rightarrow> Ts \<Rrightarrow> T'" by simp
   100           with uT have uT': "e \<turnstile> u : T'' \<Rightarrow> Ts \<Rrightarrow> T'" by simp
   101           from argsT Us Cons have argsT': "e\<langle>i:T\<rangle> \<tturnstile> as : Ts" by simp
   101           from argsT Us Cons have argsT': "e\<langle>i:T\<rangle> \<tturnstile> as : Ts" by simp