diff -r a18e60f597b6 -r c8aa120fa05d doc-src/IsarAdvanced/Functions/Thy/Functions.thy --- 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 (\(i,N). N + 1 - i)") + by (relation "measure (\(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 [\(i, N). N, \(i,N). N + 1 - i]") + by (relation "measures [\(i, N). N, \(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 \ 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