equal
deleted
inserted
replaced
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>" |