doc-src/TutorialI/Sets/Recur.thy
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 12 Aug 2010 15:03:34 +0200
branchisac-from-Isabelle2009-2
changeset 37913 20e3616b2d9c
parent 36754 403585a89772
child 43508 381fdcab0f36
permissions -rw-r--r--
prepare reactivation of isac-update-Isa09-2
     1 (* ID:         $Id$ *)
     2 theory Recur imports Main begin
     3 
     4 ML "Pretty.margin_default := 64"
     5 
     6 
     7 text{*
     8 @{thm[display] mono_def[no_vars]}
     9 \rulename{mono_def}
    10 
    11 @{thm[display] monoI[no_vars]}
    12 \rulename{monoI}
    13 
    14 @{thm[display] monoD[no_vars]}
    15 \rulename{monoD}
    16 
    17 @{thm[display] lfp_unfold[no_vars]}
    18 \rulename{lfp_unfold}
    19 
    20 @{thm[display] lfp_induct[no_vars]}
    21 \rulename{lfp_induct}
    22 
    23 @{thm[display] gfp_unfold[no_vars]}
    24 \rulename{gfp_unfold}
    25 
    26 @{thm[display] coinduct[no_vars]}
    27 \rulename{coinduct}
    28 *}
    29 
    30 text{*\noindent
    31 A relation $<$ is
    32 \bfindex{wellfounded} if it has no infinite descending chain $\cdots <
    33 a@2 < a@1 < a@0$. Clearly, a function definition is total iff the set
    34 of all pairs $(r,l)$, where $l$ is the argument on the left-hand side
    35 of an equation and $r$ the argument of some recursive call on the
    36 corresponding right-hand side, induces a wellfounded relation. 
    37 
    38 The HOL library formalizes
    39 some of the theory of wellfounded relations. For example
    40 @{prop"wf r"}\index{*wf|bold} means that relation @{term[show_types]"r::('a*'a)set"} is
    41 wellfounded.
    42 Finally we should mention that HOL already provides the mother of all
    43 inductions, \textbf{wellfounded
    44 induction}\indexbold{induction!wellfounded}\index{wellfounded
    45 induction|see{induction, wellfounded}} (@{thm[source]wf_induct}):
    46 @{thm[display]wf_induct[no_vars]}
    47 where @{term"wf r"} means that the relation @{term r} is wellfounded
    48 
    49 *}
    50 
    51 text{*
    52 
    53 @{thm[display] wf_induct[no_vars]}
    54 \rulename{wf_induct}
    55 
    56 @{thm[display] less_than_iff[no_vars]}
    57 \rulename{less_than_iff}
    58 
    59 @{thm[display] inv_image_def[no_vars]}
    60 \rulename{inv_image_def}
    61 
    62 @{thm[display] measure_def[no_vars]}
    63 \rulename{measure_def}
    64 
    65 @{thm[display] wf_less_than[no_vars]}
    66 \rulename{wf_less_than}
    67 
    68 @{thm[display] wf_inv_image[no_vars]}
    69 \rulename{wf_inv_image}
    70 
    71 @{thm[display] wf_measure[no_vars]}
    72 \rulename{wf_measure}
    73 
    74 @{thm[display] lex_prod_def[no_vars]}
    75 \rulename{lex_prod_def}
    76 
    77 @{thm[display] wf_lex_prod[no_vars]}
    78 \rulename{wf_lex_prod}
    79 
    80 *}
    81 
    82 end
    83