doc-src/TutorialI/Overview/LNCS/FP0.thy
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 13439 2f98365f57a8
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:
13262
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     1
theory FP0 = PreList:
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     2
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     3
datatype 'a list = Nil                          ("[]")
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     4
                 | Cons 'a "'a list"            (infixr "#" 65)
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     5
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     6
consts app :: "'a list \<Rightarrow> 'a list \<Rightarrow> 'a list"   (infixr "@" 65)
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     7
       rev :: "'a list \<Rightarrow> 'a list"
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     8
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
     9
primrec
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    10
"[] @ ys       = ys"
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    11
"(x # xs) @ ys = x # (xs @ ys)"
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    12
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    13
primrec
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    14
"rev []        = []"
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    15
"rev (x # xs)  = (rev xs) @ (x # [])"
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    16
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    17
theorem rev_rev [simp]: "rev(rev xs) = xs"
13439
2f98365f57a8 *** empty log message ***
nipkow
parents: 13262
diff changeset
    18
(*<*)oops(*>*)text_raw{*\isanewline\isanewline*}
13262
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    19
bbfc360db011 *** empty log message ***
nipkow
parents:
diff changeset
    20
end