ex/Sorting.thy
author lcp
Thu, 06 Apr 1995 11:49:42 +0200
changeset 246 0f9230a24164
parent 48 21291189b51e
permissions -rw-r--r--
Deleted extra space in clos_mk.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     1
(*  Title: 	HOL/ex/sorting.thy
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     2
    ID:         $Id$
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     3
    Author: 	Tobias Nipkow
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     4
    Copyright   1994 TU Muenchen
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     5
47
69d815b0e1eb typo in comment
nipkow
parents: 46
diff changeset
     6
Specification of sorting
46
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     7
*)
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     8
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
     9
Sorting = List +
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    10
consts
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    11
  sorted1:: "[['a,'a] => bool, 'a list] => bool"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    12
  sorted :: "[['a,'a] => bool, 'a list] => bool"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    13
  mset   :: "'a list => ('a => nat)"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    14
  total  :: "(['a,'a] => bool) => bool"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    15
  transf :: "(['a,'a] => bool) => bool"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    16
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    17
rules
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    18
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    19
sorted1_Nil  "sorted1(f,[])"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    20
sorted1_One  "sorted1(f,[x])"
48
21291189b51e changed "." to "$" and Cons to infix "#" to eliminate ambiguity
clasohm
parents: 47
diff changeset
    21
sorted1_Cons "sorted1(f,Cons(x,y#zs)) = (f(x,y) & sorted1(f,y#zs))"
46
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    22
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    23
sorted_Nil "sorted(le,[])"
48
21291189b51e changed "." to "$" and Cons to infix "#" to eliminate ambiguity
clasohm
parents: 47
diff changeset
    24
sorted_Cons "sorted(le,x#xs) = ((Alls y:xs. le(x,y)) & sorted(le,xs))"
46
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    25
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    26
mset_Nil "mset([],y) = 0"
48
21291189b51e changed "." to "$" and Cons to infix "#" to eliminate ambiguity
clasohm
parents: 47
diff changeset
    27
mset_Cons "mset(x#xs,y) = if(x=y, Suc(mset(xs,y)), mset(xs,y))"
46
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    28
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    29
total_def  "total(r) == (!x y. r(x,y) | r(y,x))"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    30
transf_def "transf(f) == (!x y z. f(x,y) & f(y,z) --> f(x,z))"
a73f8a7784bd some more sorting algorithms
nipkow
parents:
diff changeset
    31
end