src/Doc/Codegen/Foundations.thy
changeset 82774 2865a6618cba
parent 76673 059a68d21f0f
equal deleted inserted replaced
82773:4ec8e654112f 82774:2865a6618cba
   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>: