equal
deleted
inserted
replaced
271 definition %quote strict_dequeue :: "'a queue \<Rightarrow> 'a \<times> 'a queue" where |
271 definition %quote strict_dequeue :: "'a queue \<Rightarrow> 'a \<times> 'a queue" where |
272 "strict_dequeue q = (case dequeue q |
272 "strict_dequeue q = (case dequeue q |
273 of (Some x, q') \<Rightarrow> (x, q'))" |
273 of (Some x, q') \<Rightarrow> (x, q'))" |
274 |
274 |
275 lemma %quote strict_dequeue_AQueue [code]: |
275 lemma %quote strict_dequeue_AQueue [code]: |
276 "strict_dequeue (AQueue xs (y # ys)) = (y, AQueue xs ys)" |
|
277 "strict_dequeue (AQueue xs []) = |
276 "strict_dequeue (AQueue xs []) = |
278 (case rev xs of y # ys \<Rightarrow> (y, AQueue [] ys))" |
277 (case rev xs of y # ys \<Rightarrow> (y, AQueue [] ys))" |
|
278 "strict_dequeue (AQueue xs (y # ys)) = (y, AQueue xs ys)" |
279 by (simp_all add: strict_dequeue_def) (cases xs, simp_all split: list.split) |
279 by (simp_all add: strict_dequeue_def) (cases xs, simp_all split: list.split) |
280 |
280 |
281 text \<open> |
281 text \<open> |
282 \noindent In the corresponding code, there is no equation |
282 \noindent In the corresponding code, there is no equation |
283 for the pattern \<^term>\<open>AQueue [] []\<close>: |
283 for the pattern \<^term>\<open>AQueue [] []\<close>: |