- 100 Views
- Uploaded on

Download Presentation
## Z -Toolkit

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

Z -Toolkit

- Z specification language is based on formal system:
- Propositional and predicate calculus
- Set theory
- Relations and
- Functions
- Thus Z offers a set of facilities to include (or express) these concepts ---- we call the set of facilities the Z toolkit.

Numbers and Operations in Z

- Z - language has 3 built-in number types
- N : natural numbers (e.g. 0,1,2, - - - -, )
- N1 : positive integers (e.g. 1,2,3, - - - , )
- Int : integers (e.g. - - - , -2,-1,0,1,2, - - - , )
- Axiomatically expressed : (let IP represent power set)
- for positive integers

N1 : IP N (“type” declaration)

N1 = N \ {0} (relation definition)

- for natural numbers

N : IP Int

N = Int \ { - - -, -4, -3 , -2, -1}

Rick ?

Numbers and Operations in Z

- Numerical operators
- Defined as functions may use “lambda” notation
- Binary operators defined with underscores on either side
- e.g. _ op _
- Addition operator, + , (example)
- _ + _ : N x N N should be included in thesignaturepart of schema
- _ + _ = גm,n : N succn m in the predicate part of the schema
- Or m + n = succn m in the predicate part of schema
- _ + _ : N x N N

m + n = succn m (where succ is successor )

total function

Numbers and Operations in Z

- Let’s look at the great than or equal, =<, operator over N.

_ =< _ : N <-> N (note : <-> is a relation)

_ =< _ = succ* (reflexive transitive closure of succ function)

- succ* = succ0 U succ1 U succ2 U -----
- succ0 = id N = {(0,0), (1,1), - - - }
- succ1 = { (0,1), (1,2), (2,3), - - - }
- succ2 = { (0,2), (1,3), (2,4), - - - }
- succ3 = { (0,3), (1,4), (2,5), - - - }
- etc.
- So, succ* contains all the pairs that satisfy the =< relation
- The operator =< is thus defined in terms of a relation
- Look at 2 =< 5 as an example; now look at above predicate.

should _ =< _ be “equal to” or is an “element of”succ* ?

Sets and Operators on Sets in Z

- A Generic Definition is a definition that applies to sets of any type.
- In schema representation:
- use [ ]
- use double line , , on the top

e.g. (union, difference, intersection )

[ T ]

_ U _ , _ \ _ , _ _ : IP T x IP T IP T

s1, s2 : IP T

s1 U s2 = { x : T I x s1 \/ x s2 }

s1 \ s2 = { x : T I x s1 /\ x s2 }

s1 s2 = { x : T I x s1 /\ x s2 }

“Inventing” an Operator

- Modified Example 9.1 in text: S1 and S2 be two sets.
- Specify a SCARD operator that returns the cardinality of the set S1\S2.

[ T ]

_ SCARD _ : IP T x IP T N

\/ S1, S2 : IP T S1 SCARD S2 = # (S1\S2)

More Sets and Operators on Sets in Z

- Subsets and proper subsets may be defined similarly as with unions and intersections, except subsets are defined as a “relation” between power sets, not a function.
- Generalized union and generalized intersection is defined as follows:

[ S]

U _ , _ : IP ( IP S) IP S

\/ A : IP S ( IP S )

U A = { x : S I a A x a }

A = { x : S I a A x a }

So, for S = {1,2,3} , IP S = { { }, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} }.

And { {2,3} , {1,2,3} } = {2,3}

Relations in Z

- A Relation in Z between two sets, S1 and S2, may be expressed as S1 < > S2 in the signature part of the schema. So, a relation would be R1 : S1 < - > S2
- Consider the composition operator, ; , defined generically

[ T1, T2, T3 ]

_ ; _ : [(T1< >T2) x (T2< >T3)] (T1< >T3)

R1 ; R2 = { t1: T1, t3 : T3 I t2: T2

(t1, t2) R1 /\ (t2, t3) R2 }

R1 and R1 needs to be defined in Signature part?

Relations in Z

- Restrictionson domain and range of relations in Z

[ T!, T2 ]

_ _ : [ IP T1 x (T1 < >T2)] (T1 < > T2)

_ _ : [(T1 < >T2 ) x IP T2] (T1 < > T2)

\/ S : IP T1 , R : T1< >T2

S R = { t1 : T1, t2 :T2 I t1 S /\ (t1,t2) R (t1,t2) }

\/ R : T1 < > T2 , S : IP T2

R S = { t1: T1 , t2 : T2 I (t1,t2) R /\ t2 S (t1,t2) }

Relations in Z

- The “image” operator , where the image of a Relation restricted to the set S as the domain.

[ T1, T2 ]

_ ( _ ) : ( T1 < > T2) x IP T1 IP T2

\/ R : T1 < > T2 , S : IP T1

R ( S ) = { t1: T1 , t2 : T2 I t1 S /\ (t1,t2) R t2}

Functions in Z

- Since functions are just special relations, all the previous operators for sets and relations can be used
- Example with the “override” operator,
- Recall that given two relations R and S each, over T1 x T2,
- R S = (dom S R) U S = [ (T1 \ dom S) R] U S

[ T1, T2 ]

_ _ : (T1 T2) x ( T1 T2) (T1 T2)

\/ f, g : (T1 T2)

f g = { {dom g} f } U g }

Sequences in Z

- There are 3 types of sequences in Z
- a) a finite sequence ( note: most practical systems are finite)
- seq T = { f : N1 T I dom f = 1, - - - -, #f } , where #f is the cardinality of sequence f.
- b) non-empty finite sequence
- non-e-seq T = { f : seq T I #f >0 }
- c) injective sequence (sequence with no repetition)
- inj_seq T = { f: N1 T I dom f = 1, - - - , #f }
- = seq T (N1 T)
- Example :

file_Q

inQ, OutQ : seq Files

# inQ = #OutQ

Concatenaton of sequences in Z

- Two sequences may be concatenatec or a sequence and a single element may be concatenated.
- example”:

[ T ]

_ Con _ : seq T x seq T seq T

\/ s1, s2 : seq T

s1 Con s2 = s1 U { i : dom s2 ( i + #s1, s2i) }

S2 i represents the

ith elements of seq, s2.

Download Presentation

Connecting to Server..