doc-src/TutorialI/Misc/Plus.thy
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 13305 f88d0c363582
child 16417 9bc16273c2d4
permissions -rw-r--r--
A new implementation for presburger arithmetic following the one suggested in technical report Chaieb Amine and Tobias Nipkow. It is generic an smaller. the tactic has also changed and allows the abstaction over fuction occurences whose type is nat or int.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13305
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     1
(*<*)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     2
theory Plus = Main:
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     3
(*>*)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     4
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     5
text{*\noindent Define the following addition function *}
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     6
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     7
consts plus :: "nat \<Rightarrow> nat \<Rightarrow> nat"
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     8
primrec
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
     9
"plus m 0 = m"
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    10
"plus m (Suc n) = plus (Suc m) n"
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    11
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    12
text{*\noindent and prove*}
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    13
(*<*)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    14
lemma [simp]: "!m. plus m n = m+n"
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    15
apply(induct_tac n)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    16
by(auto)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    17
(*>*)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    18
lemma "plus m n = m+n"
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    19
(*<*)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    20
by(simp)
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    21
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    22
end
f88d0c363582 *** empty log message ***
nipkow
parents:
diff changeset
    23
(*>*)