The type set of X is the class of all possible finite sets of values drawn from the type X . For example:. set of nat1 sets of non-zero Natural numbers[r]
(1)Formal Methods in SE
(2)VDM II
(3)3
Defining a type Partial Operators
An operator
op : T1 * * Tn -> R
is said to be total if, for any a1:T1, an:Tn, the expression
op(a1, ., an)
is defined.
If there exists some b1:T1, .,bn:Tn for which op(b1, .,bn)
is undefined, op is said to be a partial operator.
(4)4 Basic Types Type Symbol nat nat1 int real char Bool quote Values Natural numbers
nat excluding 0 Integers Real Numbers Characters Booleans Named quote values Example Values
0, 1, 2, … 1, 2, 3, … …,-1,0,1,2,… -23.334 ‘g’, ‘@’ true, false <Red>, <Bio> Operators +,-,*,/,… +,-,*,/,… +,-,*,/,… +,-,*,/,… =, <>
(5)5
Type Constructors
| Union types [_] Optional types :: Record types set of _ Finite sets
(6)6
The set type constructor
The finite set type constructor is: set of _
What are the types of the following expressions?
{1, -3, 12}
(7)7
The set type constructor
The type set of X is the class of all possible finite sets of values drawn from the type X. For example:
set of nat1 sets of non-zero Natural numbers
set of Student sets of student records
set of (seq of char) sets of sequences of characters (e.g sets of names)
set of (set of int) sets of sets of integers, e.g.
(8)8
Defining sets
(1) Enumeration:
(2) Subrange (integers only): {integer1, ,integer2}
e.g {12, ,20} =
{12, ,12} = {9, ,3} =
(9)9
Defining sets
(3) Comprehension
{ expression | binding & predicate }
The set of values of the expression under each assignment of values to bound variables satisfying the predicate.
(10)10
Defining sets
Examples of Comprehensions:
{x | x:nat & x < 5} {y | y:nat & y < 0}