src/HOL/IOA/NTP/Multiset.thy
author clasohm
Fri, 01 Dec 1995 12:03:13 +0100
changeset 1376 92f83b9d17e1
parent 1328 9a449a91425d
permissions -rw-r--r--
removed quotes from consts and syntax sections
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1051
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/IOA/NTP/Multiset.thy
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     2
    ID:         $Id$
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow & Konrad Slind
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     4
    Copyright   1994  TU Muenchen
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     5
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     6
Axiomatic multisets.
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     7
Should be done as a subtype and moved to a global place.
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     8
*)
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
     9
1328
9a449a91425d *** empty log message ***
mueller
parents: 1051
diff changeset
    10
Multiset = Arith + Lemmas +
1051
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    11
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    12
types
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    13
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    14
  'a multiset
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    15
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    16
arities
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    17
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    18
  multiset :: (term) term
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    19
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    20
consts
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    21
1376
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1328
diff changeset
    22
  "{|}"  :: 'a multiset                        ("{|}")
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1328
diff changeset
    23
  addm   :: ['a multiset, 'a] => 'a multiset
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1328
diff changeset
    24
  delm   :: ['a multiset, 'a] => 'a multiset
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1328
diff changeset
    25
  countm :: ['a multiset, 'a => bool] => nat
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1328
diff changeset
    26
  count  :: ['a multiset, 'a] => nat
1051
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    27
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    28
rules
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    29
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    30
delm_empty_def
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    31
  "delm {|} x = {|}" 
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    32
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    33
delm_nonempty_def
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    34
  "delm (addm M x) y == (if x=y then M else addm (delm M y) x)"
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    35
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    36
countm_empty_def
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    37
   "countm {|} P == 0"
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    38
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    39
countm_nonempty_def
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    40
   "countm (addm M x) P == countm M P + (if P x then Suc 0 else 0)"
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    41
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    42
count_def
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    43
   "count M x == countm M (%y.y = x)"
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    44
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    45
induction
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    46
   "[| P({|}); !!M x. P(M) ==> P(addm M x) |] ==> P(M)"
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    47
4fcd0638e61d Directory example is now called NTP
nipkow
parents:
diff changeset
    48
end