List of Import References :
See BOOL
See Bag
See Char
See DENOTATION
See Nat
See Option
See Pair
See Seq
See String
SIGNATURE BagConv[data, <]
$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)
-- converting bags
-- Parameter
SORT data
FUN < : data ** data -> bool
-- total strict-order; in
-- ~(x < y) AND ~(y < x) => x = y
-- should = represent semantic equality
IMPORT Bag[data, <] ONLY bag
Nat ONLY nat
Seq[data] ONLY seq
Pair[data,nat] ONLY pair
Seq[pair] ONLY seq
String ONLY string
FUN asSeq : bag -> seq[data]
-- transform bag into sequence,
-- informally:
-- explode ({{e1, ..., en}}) = <e1, ..., en>
FUN asBag : seq[data] -> bag
-- transform sequence into bag
-- informally:
-- implode (<e1, ..., en>) = {{e1, ..., en}}
FUN asSeqPair : bag -> seq[pair]
-- transform bag into sequence of pairs under consideration
-- of occurences; each pair consists of the element and its
-- number of occurences
-- informally:
-- explode ({{e}} + b) = &(e, ct (e, b)) :: explode(exclAll(b))
-- explode ({}) = <>
FUN asBag : seq[pair] -> bag
-- transform sequence of pairs into bag under consideration
-- of occurences; each pair has to consist of an element and
-- its number of occurences
-- informally:
-- implode (<(e1, i), ... (en, j)>)
-- = {{ e1, ..., e1, ..., en, ...en}}
-- ^^^^^^^^^^ i ^^^^^^^^^ j occurences
FUN ` : (data -> denotation) -> bag -> denotation
FUN ` : (data -> string) -> bag -> string
-- `(f)({{e1, e2, ..., en}}) == "{{" f(e1) "," f(e2) "," ... "," f(en) "}}"
-- old fashioned
FUN explode: bag -> seq[data] -- explode == asSeq
FUN explodeCt: bag -> seq[pair] -- eplodeCt == asSeqPair
FUN implode: seq[data] -> bag -- implode == asBag
FUN implodeCt: seq[pair] -> bag
next node: BagFilter,
prev node: Bag,
up to node: Subsystem Bags