src/HOL/HOLCF/Tutorial/Fixrec_ex.thy
changeset 69597 ff784d5a5bfb
parent 62175 8ffc4d0e652d
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
    85 | "from_sinr_up\<cdot>(sinr\<cdot>(up\<cdot>x)) = x"
    85 | "from_sinr_up\<cdot>(sinr\<cdot>(up\<cdot>x)) = x"
    86 
    86 
    87 text \<open>
    87 text \<open>
    88   If the function is already strict in that argument, then the bottom
    88   If the function is already strict in that argument, then the bottom
    89   pattern does not change the meaning of the function.  For example,
    89   pattern does not change the meaning of the function.  For example,
    90   in the definition of @{term from_sinr_up}, the first equation is
    90   in the definition of \<^term>\<open>from_sinr_up\<close>, the first equation is
    91   actually redundant, and could have been proven separately by
    91   actually redundant, and could have been proven separately by
    92   \<open>fixrec_simp\<close>.
    92   \<open>fixrec_simp\<close>.
    93 \<close>
    93 \<close>
    94 
    94 
    95 text \<open>
    95 text \<open>
   195   repeat :: "'a \<rightarrow> 'a llist"
   195   repeat :: "'a \<rightarrow> 'a llist"
   196 where
   196 where
   197   [simp del]: "repeat\<cdot>x = lCons\<cdot>x\<cdot>(repeat\<cdot>x)"
   197   [simp del]: "repeat\<cdot>x = lCons\<cdot>x\<cdot>(repeat\<cdot>x)"
   198 
   198 
   199 text \<open>
   199 text \<open>
   200   We can derive other non-looping simp rules for @{const repeat} by
   200   We can derive other non-looping simp rules for \<^const>\<open>repeat\<close> by
   201   using the \<open>subst\<close> method with the \<open>repeat.simps\<close> rule.
   201   using the \<open>subst\<close> method with the \<open>repeat.simps\<close> rule.
   202 \<close>
   202 \<close>
   203 
   203 
   204 lemma repeat_simps [simp]:
   204 lemma repeat_simps [simp]:
   205   "repeat\<cdot>x \<noteq> \<bottom>"
   205   "repeat\<cdot>x \<noteq> \<bottom>"