2 theory prime_def imports Main begin;
3 consts prime :: "nat \<Rightarrow> bool"
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))"}