equal
deleted
inserted
replaced
185 by (cases s, cases "2 < length (fst s)", auto dest: 1 2) |
185 by (cases s, cases "2 < length (fst s)", auto dest: 1 2) |
186 |
186 |
187 |
187 |
188 lemma appIAdd[simp]: |
188 lemma appIAdd[simp]: |
189 "app (IAdd, G, rT, s) = (\<exists> ST LT. s = (PrimT Integer#PrimT Integer#ST,LT))" (is "?app s = ?P s") |
189 "app (IAdd, G, rT, s) = (\<exists> ST LT. s = (PrimT Integer#PrimT Integer#ST,LT))" (is "?app s = ?P s") |
190 proof (cases s) |
190 proof (cases (open) s) |
191 case Pair |
191 case Pair |
192 have "?app (a,b) = ?P (a,b)" |
192 have "?app (a,b) = ?P (a,b)" |
193 proof (cases "a") |
193 proof (cases "a") |
194 fix t ts assume a: "a = t#ts" |
194 fix t ts assume a: "a = t#ts" |
195 show ?thesis |
195 show ?thesis |
232 s = ((rev apTs) @ (X # ST), LT) \<and> |
232 s = ((rev apTs) @ (X # ST), LT) \<and> |
233 length apTs = length fpTs \<and> |
233 length apTs = length fpTs \<and> |
234 G \<turnstile> X \<preceq> Class C \<and> |
234 G \<turnstile> X \<preceq> Class C \<and> |
235 (\<forall>(aT,fT)\<in>set(zip apTs fpTs). G \<turnstile> aT \<preceq> fT) \<and> |
235 (\<forall>(aT,fT)\<in>set(zip apTs fpTs). G \<turnstile> aT \<preceq> fT) \<and> |
236 method (G,C) (mn,fpTs) \<noteq> None)" (is "?app s = ?P s") |
236 method (G,C) (mn,fpTs) \<noteq> None)" (is "?app s = ?P s") |
237 proof (cases s) |
237 proof (cases (open) s) |
238 case Pair |
238 case Pair |
239 have "?app (a,b) \<Longrightarrow> ?P (a,b)" |
239 have "?app (a,b) \<Longrightarrow> ?P (a,b)" |
240 proof - |
240 proof - |
241 assume app: "?app (a,b)" |
241 assume app: "?app (a,b)" |
242 hence "a = (rev (rev (take (length fpTs) a))) @ (drop (length fpTs) a) \<and> length fpTs < length a" |
242 hence "a = (rev (rev (take (length fpTs) a))) @ (drop (length fpTs) a) \<and> length fpTs < length a" |