List of Import References :
See BOOL
See DENOTATION
See Nat
See Option
See Pair
See Seq
SIGNATURE Bag [data,< : data**data->bool]
$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)
-- multisets
IMPORT Nat ONLY nat
Pair[data,nat] ONLY pair
Option[data] ONLY option
-- Parameter
SORT data
FUN < : data ** data -> bool
-- total strict-order; in
-- ~(x < y) AND ~(y < x) => x = y
-- should = represent semantic equality
-- The type itself
SORT bag
-- non free constructors
FUN {} : bag -- empty bag
FUN incl : data ** bag->bag -- include
-- constructing a bag from datas
FUN % : data -> bag
FUN % : data ** data -> bag
FUN % : data ** data ** data -> bag
FUN % : data ** data ** data ** data -> bag
FUN % : data ** data ** data ** data ** data -> bag
FUN % : data ** data ** data ** data ** data ** data -> bag
FUN % : data ** data ** data ** data ** data ** data ** data -> bag
FUN % : data ** data ** data ** data ** data ** data ** data ** data -> bag
(d1, ..., dn) = {{d1, ..., dn}}
FUN incl excl: data ** bag -> bag -- include/exclude
FUN inclCt : data ** nat ** bag -> bag -- include ct times
FUN exclAll : data ** bag -> bag -- exclude all occurrences
-- constructing a bag from a function
FUN .. : nat ** nat -> (nat -> data) -> bag
-- (n1 .. n2)(f) = {{ f(n1), f(n1 + 1), ..., f(n2) }}
FUN iter : data ** (data -> data) ** (data -> bool) -> bag
-- iter(start, it, P) ==
-- {{start, it(start), ... it^n(start)}}
-- where P(it^i(start)) for 0 <= i <= n
-- and ~(P(it^(n+1)(start)))
-- combining bags
FUN + - * : bag ** bag -> bag -- union/diff./intersection
FUN U : bag**bag->bag
-- union taking maximal occurrences of all elements
-- accessing datas in a bag
FUN arb : bag -> data -- select arbitrary element
-- undefined for empty bag
-- information about a bag
FUN {}? : bag -> bool -- test for empty bag
FUN in : data ** bag -> bool -- membership
FUN # : bag -> nat -- cardinality
FUN ct : data ** bag -> nat -- number of occurrences
FUN exist? : (data -> bool) ** bag->bool
-- exist? (p, s)
-- is there any element of b fulfilling predicate p?
FUN find? : (data -> bool) ** bag -> option[data]
-- find? (p, s)
-- return some component of s fulfilling p
FUN forall? : (data -> bool) ** bag->bool
-- forall? (p, s)
-- do all elements of s fulfill predicate p?
-- comparing bags
FUN = <= < : bag ** bag -> bool -- equality/subbag/proper subbag
-- not for user purpose -----------------------------------------------
-- representation
IMPORT Seq[pair] ONLY seq
FUN abs: seq -> bag
rep: bag -> seq
next node: BagConv,
prev node: Subsystem Bags,
up to node: Subsystem Bags