doc-src/IsarAdvanced/Functions/Thy/Functions.thy
changeset 21346 c8aa120fa05d
parent 21212 547224bf9348
child 22065 cdd077905eee
--- a/doc-src/IsarAdvanced/Functions/Thy/Functions.thy	Mon Nov 13 20:10:02 2006 +0100
+++ b/doc-src/IsarAdvanced/Functions/Thy/Functions.thy	Mon Nov 13 21:52:14 2006 +0100
@@ -24,8 +24,6 @@
 | "fib (Suc 0) = 1"
 | "fib (Suc (Suc n)) = fib n + fib (Suc n)"
 
-(*<*)termination by lexicographic_order(*>*)
-
 text {*
   The function always terminates, since the argument of gets smaller in every
   recursive call. Termination is an
@@ -55,7 +53,6 @@
 where
   "sep a (x#y#xs) = x # a # sep a (y # xs)"
 | "sep a xs       = xs"
-(*<*)termination by lexicographic_order(*>*)
 
 text {* 
   Overlapping patterns are interpreted as "increments" to what is
@@ -165,11 +162,11 @@
   @{text "N + 1 - i"} decreases in every recursive call.
 
   We can use this expression as a measure function to construct a
-  wellfounded relation, which is a proof of termination:
+  wellfounded relation, which can prove termination.
 *}
 
 termination 
-  by (auto_term "measure (\<lambda>(i,N). N + 1 - i)")
+  by (relation "measure (\<lambda>(i,N). N + 1 - i)") auto
 
 text {*
   Note that the two (curried) function arguments appear as a pair in
@@ -199,7 +196,7 @@
 *}
 
 termination 
-  by (auto_term "measures [\<lambda>(i, N). N, \<lambda>(i,N). N + 1 - i]")
+  by (relation "measures [\<lambda>(i, N). N, \<lambda>(i,N). N + 1 - i]") auto
 
 
 section {* Mutual Recursion *}
@@ -208,7 +205,6 @@
   If two or more functions call one another mutually, they have to be defined
   in one step. The simplest example are probably @{text "even"} and @{text "odd"}:
 *}
-(*<*)hide const even odd(*>*)
 
 function even odd :: "nat \<Rightarrow> bool"
 where
@@ -228,7 +224,7 @@
 *}
 
 termination 
-  by (auto_term "measure (sum_case (%n. n) (%n. n))")
+  by (relation "measure (sum_case (%n. n) (%n. n))") auto