equal
deleted
inserted
replaced
143 apply(rotate_tac 4) |
143 apply(rotate_tac 4) |
144 apply(erule equ2.cases) |
144 apply(erule equ2.cases) |
145 apply(auto) |
145 apply(auto) |
146 oops |
146 oops |
147 |
147 |
148 |
148 lemma "a \<noteq> x \<Longrightarrow> x \<noteq> y \<Longrightarrow> y \<noteq> a \<Longrightarrow> y \<noteq> b \<Longrightarrow> (App (App (Lam[x]. Lam[y]. (App (Var y) (Var x))) (Var a)) (Var b) \<approx> App (Var b) (Var a))" |
149 |
149 apply (rule equ_trans) |
150 |
150 apply (rule equ_App1) |
|
151 apply (rule equ_beta) |
|
152 apply (simp add: lam.fresh fresh_at_base) |
|
153 apply (subst subst.simps) |
|
154 apply (simp add: lam.fresh fresh_at_base)+ |
|
155 apply (rule equ_trans) |
|
156 apply (rule equ_beta) |
|
157 apply (simp add: lam.fresh fresh_at_base) |
|
158 apply (simp add: equ_refl) |
|
159 done |
|
160 |
|
161 lemma "\<not> (Var b \<approx>2 Var a) \<Longrightarrow> \<not> (App (App (Lam[x]. Lam[y]. (App (Var y) (Var x))) (Var a)) (Var b) \<approx>2 App (Var b) (Var a))" |
|
162 apply rule |
|
163 apply (erule equ2.cases) |
|
164 apply auto |
|
165 done |
151 |
166 |
152 lemma [quot_respect]: |
167 lemma [quot_respect]: |
153 shows "(op = ===> equ) Var Var" |
168 shows "(op = ===> equ) Var Var" |
154 and "(equ ===> equ ===> equ) App App" |
169 and "(equ ===> equ ===> equ) App App" |
155 and "(op = ===> equ ===> equ) Beta.Lam Beta.Lam" |
170 and "(op = ===> equ ===> equ) Beta.Lam Beta.Lam" |