| 10365 |      1 | %
 | 
|  |      2 | \begin{isabellebody}%
 | 
|  |      3 | \def\isabellecontext{Even}%
 | 
| 17056 |      4 | %
 | 
|  |      5 | \isadelimtheory
 | 
| 10365 |      6 | \isanewline
 | 
| 17056 |      7 | %
 | 
|  |      8 | \endisadelimtheory
 | 
|  |      9 | %
 | 
|  |     10 | \isatagtheory
 | 
| 17175 |     11 | \isacommand{theory}\isamarkupfalse%
 | 
|  |     12 | \ Even\ \isakeyword{imports}\ Main\ \isakeyword{begin}%
 | 
| 17056 |     13 | \endisatagtheory
 | 
|  |     14 | {\isafoldtheory}%
 | 
|  |     15 | %
 | 
|  |     16 | \isadelimtheory
 | 
|  |     17 | \isanewline
 | 
|  |     18 | %
 | 
|  |     19 | \endisadelimtheory
 | 
| 10878 |     20 | \isanewline
 | 
|  |     21 | \isanewline
 | 
| 17175 |     22 | \isacommand{consts}\isamarkupfalse%
 | 
|  |     23 | \ even\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}nat\ set{\isachardoublequoteclose}\isanewline
 | 
|  |     24 | \isacommand{inductive}\isamarkupfalse%
 | 
|  |     25 | \ even\isanewline
 | 
| 10365 |     26 | \isakeyword{intros}\isanewline
 | 
| 17175 |     27 | zero{\isacharbrackleft}intro{\isacharbang}{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isadigit{0}}\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
|  |     28 | step{\isacharbrackleft}intro{\isacharbang}{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}n\ {\isasymin}\ even\ {\isasymLongrightarrow}\ {\isacharparenleft}Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}{\isacharparenright}\ {\isasymin}\ even{\isachardoublequoteclose}%
 | 
| 10365 |     29 | \begin{isamarkuptext}%
 | 
| 10878 |     30 | An inductive definition consists of introduction rules. 
 | 
| 10365 |     31 | 
 | 
|  |     32 | \begin{isabelle}%
 | 
| 14470 |     33 | \ \ \ \ \ n\ {\isasymin}\ Even{\isachardot}even\ {\isasymLongrightarrow}\ Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isasymin}\ Even{\isachardot}even%
 | 
| 10365 |     34 | \end{isabelle}
 | 
|  |     35 | \rulename{even.step}
 | 
|  |     36 | 
 | 
|  |     37 | \begin{isabelle}%
 | 
| 14470 |     38 | \ \ \ \ \ {\isasymlbrakk}xa\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ P\ {\isadigit{0}}{\isacharsemicolon}\ {\isasymAnd}n{\isachardot}\ {\isasymlbrakk}n\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ P\ n{\isasymrbrakk}\ {\isasymLongrightarrow}\ P\ {\isacharparenleft}Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}{\isacharparenright}{\isasymrbrakk}\isanewline
 | 
|  |     39 | \isaindent{\ \ \ \ \ }{\isasymLongrightarrow}\ P\ xa%
 | 
| 10365 |     40 | \end{isabelle}
 | 
|  |     41 | \rulename{even.induct}
 | 
|  |     42 | 
 | 
|  |     43 | Attributes can be given to the introduction rules.  Here both rules are
 | 
| 10878 |     44 | specified as \isa{intro!}
 | 
|  |     45 | 
 | 
|  |     46 | Our first lemma states that numbers of the form $2\times k$ are even.%
 | 
| 10365 |     47 | \end{isamarkuptext}%
 | 
| 17175 |     48 | \isamarkuptrue%
 | 
|  |     49 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |     50 | \ two{\isacharunderscore}times{\isacharunderscore}even{\isacharbrackleft}intro{\isacharbang}{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isadigit{2}}{\isacharasterisk}k\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
| 17056 |     51 | %
 | 
|  |     52 | \isadelimproof
 | 
|  |     53 | %
 | 
|  |     54 | \endisadelimproof
 | 
|  |     55 | %
 | 
|  |     56 | \isatagproof
 | 
| 17175 |     57 | \isacommand{apply}\isamarkupfalse%
 | 
|  |     58 | \ {\isacharparenleft}induct{\isacharunderscore}tac\ k{\isacharparenright}%
 | 
| 16069 |     59 | \begin{isamarkuptxt}%
 | 
|  |     60 | The first step is induction on the natural number \isa{k}, which leaves
 | 
|  |     61 | two subgoals:
 | 
|  |     62 | \begin{isabelle}%
 | 
|  |     63 | \ {\isadigit{1}}{\isachardot}\ {\isadigit{2}}\ {\isacharasterisk}\ {\isadigit{0}}\ {\isasymin}\ Even{\isachardot}even\isanewline
 | 
|  |     64 | \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}n{\isachardot}\ {\isadigit{2}}\ {\isacharasterisk}\ n\ {\isasymin}\ Even{\isachardot}even\ {\isasymLongrightarrow}\ {\isadigit{2}}\ {\isacharasterisk}\ Suc\ n\ {\isasymin}\ Even{\isachardot}even%
 | 
|  |     65 | \end{isabelle}
 | 
|  |     66 | Here \isa{auto} simplifies both subgoals so that they match the introduction
 | 
|  |     67 | rules, which then are applied automatically.%
 | 
|  |     68 | \end{isamarkuptxt}%
 | 
| 17175 |     69 | \isamarkuptrue%
 | 
|  |     70 | \ \isacommand{apply}\isamarkupfalse%
 | 
|  |     71 | \ auto\isanewline
 | 
|  |     72 | \isacommand{done}\isamarkupfalse%
 | 
|  |     73 | %
 | 
| 17056 |     74 | \endisatagproof
 | 
|  |     75 | {\isafoldproof}%
 | 
|  |     76 | %
 | 
|  |     77 | \isadelimproof
 | 
|  |     78 | %
 | 
|  |     79 | \endisadelimproof
 | 
| 11866 |     80 | %
 | 
| 10365 |     81 | \begin{isamarkuptext}%
 | 
|  |     82 | Our goal is to prove the equivalence between the traditional definition
 | 
|  |     83 | of even (using the divides relation) and our inductive definition.  Half of
 | 
|  |     84 | this equivalence is trivial using the lemma just proved, whose \isa{intro!}
 | 
|  |     85 | attribute ensures it will be applied automatically.%
 | 
|  |     86 | \end{isamarkuptext}%
 | 
| 17175 |     87 | \isamarkuptrue%
 | 
|  |     88 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |     89 | \ dvd{\isacharunderscore}imp{\isacharunderscore}even{\isacharcolon}\ {\isachardoublequoteopen}{\isadigit{2}}\ dvd\ n\ {\isasymLongrightarrow}\ n\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
| 17056 |     90 | %
 | 
|  |     91 | \isadelimproof
 | 
|  |     92 | %
 | 
|  |     93 | \endisadelimproof
 | 
|  |     94 | %
 | 
|  |     95 | \isatagproof
 | 
| 17175 |     96 | \isacommand{by}\isamarkupfalse%
 | 
|  |     97 | \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ dvd{\isacharunderscore}def{\isacharparenright}%
 | 
| 17056 |     98 | \endisatagproof
 | 
|  |     99 | {\isafoldproof}%
 | 
|  |    100 | %
 | 
|  |    101 | \isadelimproof
 | 
|  |    102 | %
 | 
|  |    103 | \endisadelimproof
 | 
| 11866 |    104 | %
 | 
| 10365 |    105 | \begin{isamarkuptext}%
 | 
|  |    106 | our first rule induction!%
 | 
|  |    107 | \end{isamarkuptext}%
 | 
| 17175 |    108 | \isamarkuptrue%
 | 
|  |    109 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |    110 | \ even{\isacharunderscore}imp{\isacharunderscore}dvd{\isacharcolon}\ {\isachardoublequoteopen}n\ {\isasymin}\ even\ {\isasymLongrightarrow}\ {\isadigit{2}}\ dvd\ n{\isachardoublequoteclose}\isanewline
 | 
| 17056 |    111 | %
 | 
|  |    112 | \isadelimproof
 | 
|  |    113 | %
 | 
|  |    114 | \endisadelimproof
 | 
|  |    115 | %
 | 
|  |    116 | \isatagproof
 | 
| 17175 |    117 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    118 | \ {\isacharparenleft}erule\ even{\isachardot}induct{\isacharparenright}%
 | 
| 16069 |    119 | \begin{isamarkuptxt}%
 | 
|  |    120 | \begin{isabelle}%
 | 
|  |    121 | \ {\isadigit{1}}{\isachardot}\ {\isadigit{2}}\ dvd\ {\isadigit{0}}\isanewline
 | 
|  |    122 | \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}n{\isachardot}\ {\isasymlbrakk}n\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ {\isadigit{2}}\ dvd\ n{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isadigit{2}}\ dvd\ Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}%
 | 
|  |    123 | \end{isabelle}%
 | 
|  |    124 | \end{isamarkuptxt}%
 | 
| 17175 |    125 | \isamarkuptrue%
 | 
|  |    126 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    127 | \ {\isacharparenleft}simp{\isacharunderscore}all\ add{\isacharcolon}\ dvd{\isacharunderscore}def{\isacharparenright}%
 | 
| 16069 |    128 | \begin{isamarkuptxt}%
 | 
|  |    129 | \begin{isabelle}%
 | 
|  |    130 | \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}n{\isachardot}\ {\isasymlbrakk}n\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ {\isasymexists}k{\isachardot}\ n\ {\isacharequal}\ {\isadigit{2}}\ {\isacharasterisk}\ k{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isasymexists}k{\isachardot}\ Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isacharequal}\ {\isadigit{2}}\ {\isacharasterisk}\ k%
 | 
|  |    131 | \end{isabelle}%
 | 
|  |    132 | \end{isamarkuptxt}%
 | 
| 17175 |    133 | \isamarkuptrue%
 | 
|  |    134 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    135 | \ clarify%
 | 
| 16069 |    136 | \begin{isamarkuptxt}%
 | 
|  |    137 | \begin{isabelle}%
 | 
|  |    138 | \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}n\ k{\isachardot}\ {\isadigit{2}}\ {\isacharasterisk}\ k\ {\isasymin}\ Even{\isachardot}even\ {\isasymLongrightarrow}\ {\isasymexists}ka{\isachardot}\ Suc\ {\isacharparenleft}Suc\ {\isacharparenleft}{\isadigit{2}}\ {\isacharasterisk}\ k{\isacharparenright}{\isacharparenright}\ {\isacharequal}\ {\isadigit{2}}\ {\isacharasterisk}\ ka%
 | 
|  |    139 | \end{isabelle}%
 | 
|  |    140 | \end{isamarkuptxt}%
 | 
| 17175 |    141 | \isamarkuptrue%
 | 
|  |    142 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    143 | \ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}Suc\ k{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharcomma}\ simp{\isacharparenright}\isanewline
 | 
|  |    144 | \isacommand{done}\isamarkupfalse%
 | 
|  |    145 | %
 | 
| 17056 |    146 | \endisatagproof
 | 
|  |    147 | {\isafoldproof}%
 | 
|  |    148 | %
 | 
|  |    149 | \isadelimproof
 | 
|  |    150 | %
 | 
|  |    151 | \endisadelimproof
 | 
| 11866 |    152 | %
 | 
| 10365 |    153 | \begin{isamarkuptext}%
 | 
|  |    154 | no iff-attribute because we don't always want to use it%
 | 
|  |    155 | \end{isamarkuptext}%
 | 
| 17056 |    156 | \isamarkuptrue%
 | 
| 17175 |    157 | \isacommand{theorem}\isamarkupfalse%
 | 
|  |    158 | \ even{\isacharunderscore}iff{\isacharunderscore}dvd{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}n\ {\isasymin}\ even{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isadigit{2}}\ dvd\ n{\isacharparenright}{\isachardoublequoteclose}\isanewline
 | 
| 17056 |    159 | %
 | 
|  |    160 | \isadelimproof
 | 
|  |    161 | %
 | 
|  |    162 | \endisadelimproof
 | 
|  |    163 | %
 | 
|  |    164 | \isatagproof
 | 
| 17175 |    165 | \isacommand{by}\isamarkupfalse%
 | 
|  |    166 | \ {\isacharparenleft}blast\ intro{\isacharcolon}\ dvd{\isacharunderscore}imp{\isacharunderscore}even\ even{\isacharunderscore}imp{\isacharunderscore}dvd{\isacharparenright}%
 | 
| 17056 |    167 | \endisatagproof
 | 
|  |    168 | {\isafoldproof}%
 | 
|  |    169 | %
 | 
|  |    170 | \isadelimproof
 | 
|  |    171 | %
 | 
|  |    172 | \endisadelimproof
 | 
| 11866 |    173 | %
 | 
| 10365 |    174 | \begin{isamarkuptext}%
 | 
| 17175 |    175 | this result ISN'T inductive...%
 | 
| 10365 |    176 | \end{isamarkuptext}%
 | 
| 17175 |    177 | \isamarkuptrue%
 | 
|  |    178 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |    179 | \ Suc{\isacharunderscore}Suc{\isacharunderscore}even{\isacharunderscore}imp{\isacharunderscore}even{\isacharcolon}\ {\isachardoublequoteopen}Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isasymin}\ even\ {\isasymLongrightarrow}\ n\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
| 17056 |    180 | %
 | 
|  |    181 | \isadelimproof
 | 
|  |    182 | %
 | 
|  |    183 | \endisadelimproof
 | 
|  |    184 | %
 | 
|  |    185 | \isatagproof
 | 
| 17175 |    186 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    187 | \ {\isacharparenleft}erule\ even{\isachardot}induct{\isacharparenright}%
 | 
|  |    188 | \begin{isamarkuptxt}%
 | 
|  |    189 | \begin{isabelle}%
 | 
|  |    190 | \ {\isadigit{1}}{\isachardot}\ n\ {\isasymin}\ Even{\isachardot}even\isanewline
 | 
|  |    191 | \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}na{\isachardot}\ {\isasymlbrakk}na\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ n\ {\isasymin}\ Even{\isachardot}even{\isasymrbrakk}\ {\isasymLongrightarrow}\ n\ {\isasymin}\ Even{\isachardot}even%
 | 
|  |    192 | \end{isabelle}%
 | 
|  |    193 | \end{isamarkuptxt}%
 | 
|  |    194 | \isamarkuptrue%
 | 
|  |    195 | \isacommand{oops}\isamarkupfalse%
 | 
|  |    196 | %
 | 
|  |    197 | \endisatagproof
 | 
|  |    198 | {\isafoldproof}%
 | 
|  |    199 | %
 | 
|  |    200 | \isadelimproof
 | 
| 16069 |    201 | %
 | 
| 17175 |    202 | \endisadelimproof
 | 
|  |    203 | %
 | 
|  |    204 | \begin{isamarkuptext}%
 | 
|  |    205 | ...so we need an inductive lemma...%
 | 
|  |    206 | \end{isamarkuptext}%
 | 
|  |    207 | \isamarkuptrue%
 | 
|  |    208 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |    209 | \ even{\isacharunderscore}imp{\isacharunderscore}even{\isacharunderscore}minus{\isacharunderscore}{\isadigit{2}}{\isacharcolon}\ {\isachardoublequoteopen}n\ {\isasymin}\ even\ {\isasymLongrightarrow}\ n\ {\isacharminus}\ {\isadigit{2}}\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
|  |    210 | %
 | 
|  |    211 | \isadelimproof
 | 
|  |    212 | %
 | 
|  |    213 | \endisadelimproof
 | 
|  |    214 | %
 | 
|  |    215 | \isatagproof
 | 
|  |    216 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    217 | \ {\isacharparenleft}erule\ even{\isachardot}induct{\isacharparenright}%
 | 
| 16069 |    218 | \begin{isamarkuptxt}%
 | 
|  |    219 | \begin{isabelle}%
 | 
|  |    220 | \ {\isadigit{1}}{\isachardot}\ {\isadigit{0}}\ {\isacharminus}\ {\isadigit{2}}\ {\isasymin}\ Even{\isachardot}even\isanewline
 | 
|  |    221 | \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}n{\isachardot}\ {\isasymlbrakk}n\ {\isasymin}\ Even{\isachardot}even{\isacharsemicolon}\ n\ {\isacharminus}\ {\isadigit{2}}\ {\isasymin}\ Even{\isachardot}even{\isasymrbrakk}\isanewline
 | 
|  |    222 | \isaindent{\ {\isadigit{2}}{\isachardot}\ {\isasymAnd}n{\isachardot}\ }{\isasymLongrightarrow}\ Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isacharminus}\ {\isadigit{2}}\ {\isasymin}\ Even{\isachardot}even%
 | 
|  |    223 | \end{isabelle}%
 | 
|  |    224 | \end{isamarkuptxt}%
 | 
| 17175 |    225 | \isamarkuptrue%
 | 
|  |    226 | \isacommand{apply}\isamarkupfalse%
 | 
|  |    227 | \ auto\isanewline
 | 
|  |    228 | \isacommand{done}\isamarkupfalse%
 | 
|  |    229 | %
 | 
| 17056 |    230 | \endisatagproof
 | 
|  |    231 | {\isafoldproof}%
 | 
|  |    232 | %
 | 
|  |    233 | \isadelimproof
 | 
|  |    234 | %
 | 
|  |    235 | \endisadelimproof
 | 
| 11866 |    236 | %
 | 
| 10365 |    237 | \begin{isamarkuptext}%
 | 
|  |    238 | ...and prove it in a separate step%
 | 
|  |    239 | \end{isamarkuptext}%
 | 
| 17175 |    240 | \isamarkuptrue%
 | 
|  |    241 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |    242 | \ Suc{\isacharunderscore}Suc{\isacharunderscore}even{\isacharunderscore}imp{\isacharunderscore}even{\isacharcolon}\ {\isachardoublequoteopen}Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}\ {\isasymin}\ even\ {\isasymLongrightarrow}\ n\ {\isasymin}\ even{\isachardoublequoteclose}\isanewline
 | 
| 17056 |    243 | %
 | 
|  |    244 | \isadelimproof
 | 
|  |    245 | %
 | 
|  |    246 | \endisadelimproof
 | 
|  |    247 | %
 | 
|  |    248 | \isatagproof
 | 
| 17175 |    249 | \isacommand{by}\isamarkupfalse%
 | 
|  |    250 | \ {\isacharparenleft}drule\ even{\isacharunderscore}imp{\isacharunderscore}even{\isacharunderscore}minus{\isacharunderscore}{\isadigit{2}}{\isacharcomma}\ simp{\isacharparenright}%
 | 
| 17056 |    251 | \endisatagproof
 | 
|  |    252 | {\isafoldproof}%
 | 
|  |    253 | %
 | 
|  |    254 | \isadelimproof
 | 
|  |    255 | \isanewline
 | 
|  |    256 | %
 | 
|  |    257 | \endisadelimproof
 | 
| 15481 |    258 | \isanewline
 | 
| 10878 |    259 | \isanewline
 | 
| 17175 |    260 | \isacommand{lemma}\isamarkupfalse%
 | 
|  |    261 | \ {\isacharbrackleft}iff{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}{\isacharparenleft}Suc\ {\isacharparenleft}Suc\ n{\isacharparenright}{\isacharparenright}\ {\isasymin}\ even{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}n\ {\isasymin}\ even{\isacharparenright}{\isachardoublequoteclose}\isanewline
 | 
| 17056 |    262 | %
 | 
|  |    263 | \isadelimproof
 | 
|  |    264 | %
 | 
|  |    265 | \endisadelimproof
 | 
|  |    266 | %
 | 
|  |    267 | \isatagproof
 | 
| 17175 |    268 | \isacommand{by}\isamarkupfalse%
 | 
|  |    269 | \ {\isacharparenleft}blast\ dest{\isacharcolon}\ Suc{\isacharunderscore}Suc{\isacharunderscore}even{\isacharunderscore}imp{\isacharunderscore}even{\isacharparenright}%
 | 
| 17056 |    270 | \endisatagproof
 | 
|  |    271 | {\isafoldproof}%
 | 
|  |    272 | %
 | 
|  |    273 | \isadelimproof
 | 
|  |    274 | \isanewline
 | 
|  |    275 | %
 | 
|  |    276 | \endisadelimproof
 | 
|  |    277 | %
 | 
|  |    278 | \isadelimtheory
 | 
| 10365 |    279 | \isanewline
 | 
| 17056 |    280 | %
 | 
|  |    281 | \endisadelimtheory
 | 
|  |    282 | %
 | 
|  |    283 | \isatagtheory
 | 
| 17175 |    284 | \isacommand{end}\isamarkupfalse%
 | 
|  |    285 | %
 | 
| 17056 |    286 | \endisatagtheory
 | 
|  |    287 | {\isafoldtheory}%
 | 
|  |    288 | %
 | 
|  |    289 | \isadelimtheory
 | 
|  |    290 | \isanewline
 | 
|  |    291 | %
 | 
|  |    292 | \endisadelimtheory
 | 
|  |    293 | \isanewline
 | 
| 10365 |    294 | \end{isabellebody}%
 | 
|  |    295 | %%% Local Variables:
 | 
|  |    296 | %%% mode: latex
 | 
|  |    297 | %%% TeX-master: "root"
 | 
|  |    298 | %%% End:
 |