doc-src/TutorialI/Misc/prime_def.thy
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 12 Aug 2010 15:03:34 +0200
branchisac-from-Isabelle2009-2
changeset 37913 20e3616b2d9c
parent 16417 9bc16273c2d4
permissions -rw-r--r--
prepare reactivation of isac-update-Isa09-2
     1 (*<*)
     2 theory prime_def imports Main begin;
     3 consts prime :: "nat \<Rightarrow> bool"
     4 (*>*)
     5 text{*
     6 \begin{warn}
     7 A common mistake when writing definitions is to introduce extra free
     8 variables on the right-hand side.  Consider the following, flawed definition
     9 (where @{text"dvd"} means ``divides''):
    10 @{term[display,quotes]"prime(p) == 1 < p & (m dvd p --> (m=1 | m=p))"}
    11 \par\noindent\hangindent=0pt
    12 Isabelle rejects this ``definition'' because of the extra @{term"m"} on the
    13 right-hand side, which would introduce an inconsistency (why?). 
    14 The correct version is
    15 @{term[display,quotes]"prime(p) == 1 < p & (!m. m dvd p --> (m=1 | m=p))"}
    16 \end{warn}
    17 *}
    18 (*<*)
    19 end
    20 (*>*)