equal
deleted
inserted
replaced
294 argument,~@{term"[]"}, prevents it from rewriting the conclusion. |
294 argument,~@{term"[]"}, prevents it from rewriting the conclusion. |
295 This example suggests a heuristic: |
295 This example suggests a heuristic: |
296 \begin{quote} |
296 \begin{quote} |
297 \emph{Generalize goals for induction by replacing constants by variables.} |
297 \emph{Generalize goals for induction by replacing constants by variables.} |
298 \end{quote} |
298 \end{quote} |
299 Of course one cannot do this na\"{\i}vely: @{prop"itrev xs ys = rev xs"} is |
299 Of course one cannot do this naively: @{prop"itrev xs ys = rev xs"} is |
300 just not true. The correct generalization is |
300 just not true. The correct generalization is |
301 *}; |
301 *}; |
302 (*<*)oops;(*>*) |
302 (*<*)oops;(*>*) |
303 lemma "itrev xs ys = rev xs @ ys" |
303 lemma "itrev xs ys = rev xs @ ys" |
304 (*<*)apply(induction xs, auto)(*>*) |
304 (*<*)apply(induction xs, auto)(*>*) |