Z schemas
Download
1 / 38

Z Schemas - PowerPoint PPT Presentation


  • 161 Views
  • Uploaded on

Z Schemas. Chapter 7 Formal Specification using Z Example of Z specification Document. Schemas. A specification document in Z consists of narrative text interspersed with formal Z notation called schemas.  S _________  a,b: N  ________  a < b  __________

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Z Schemas' - zanna


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 schemas

Z Schemas

Chapter 7

Formal Specification using Z

Example of Z specification Document


Schemas
Schemas

  • A specification document in Z consists of narrative text interspersed with formal Z notation called schemas.

    S_________

    a,b: N

    ________

    a < b

    __________

  • This schema is called S and it declares two variables a and b. It contains a constraining predicate which states that a must be less than b.


Schemas1
Schemas

  • The general form of a schema is.

    SchemaName_____

    Declarations

    ________

    Predicate

    __________

  • A schema can also be written in a linear form:

  • SchemaName == [ Declarations | Predicate]

  • The previous example would be written in linear form as:

  • S == [a,b: N | a<b]


Schemas2
Schemas

  • It is possible to have an anonymous schema, no name.

  • It is possible to have a schema with no predicate.

  • Variables are local to a schema. If you require variables from another schema you must include it in your current schema.

  • Global variables are available to all schemas, they are introduced by axiomatic definition and cannot be changed by any operation. For example:

  • | capacity: N

  • If you wish to constrain a variable, the general form is

    Declarations

    ________

    Predicate

    __________


Schemas3
Schemas

  • For example

    MaxOnCourse

    ________

    MaxOnCourse 6…30

    __________

    Schemas can make reference to capacity and MaxOnCourse without explicitly including their defining schemas.

    Course_____

    numberEnrolled:

    ________

    numberEnrolledMaxOnCourse

    __________


Schemas4
Schemas

  • Each line of declaration part is separated by a semicolon.

  • Each line of predicate part is connected with the ‘and’ operation

    Class_____

    lecturer: PERSON

     student: PPERSON

    ________

    lecturerstudent

     #student MaxOnCourse

    __________

Is an abbreviation for:

Class_____

lecturer: PERSON;

 student: PPERSON;

________

lecturerstudent L

 #student MaxOnCourse

__________


Schema calculus
Schema Calculus

Schemas can be regarded as units and manipulated by various operators that are analogous to the logical operators (L ,v, ¬ etc. )

The schema name S decorated with a prime (S’) is defined to be the same as the schema S with all its variables decorated with a prime. It is used to signify the value of a schema after some operation.

After operation

S’______a’,b’: N

______

a’ < b’

________

Before operation

S______

a,b: N

______

a < b

_______


Inclusion
Inclusion

  • The name of a schema can be included in the declaration of another schema. When a schema is textually imported its declarations are merged with those of the including schema and its predicate part is conjoined (anded) with that of the including schema. Any variables that have the same name must have the same type.


Inclusion1
Inclusion

Including a schema

IncludeS___

c: N

 S

______

c < 10

_______

Is a short way of writing

includeS_

 c: N

 a,b: N

______

c < 10

a < b

________


Schema conjunction
Schema Conjunction

Definition of T

T___

 b,c: N

______

b < c

_____

Definition of S

S___

a,b: N

______

a < b

_______

SandT == S L T

 SandT_

a,b,c: N

______

a < b

b < c

________


Schema disjunction
Schema Disjunction

Definition of T

T___

 b,c: N

______

b < c

_____

Definition of S

S___

a,b: N

______

a < b _______

SorT == S v T

 SandT___

a,b,c: N

______

 (a < b) v

 (b < c)

________


Delta convention
Delta Convention

The convention that a value of a variable before an operation is denoted by an undecorated name of the variable, and the value after an operation is decorated by a prime (‘) is used in the delta naming convention. A schema with a capital delta (D often denotes some change) as the first character of its name is defined as:

Definition of Delta S

DS___

a,b: N

a’,b’: N

______

 a < b

 a’ < b’

_______


Xi convention

The convention a schema with the Greek capital letter xi (X) as the first character of its name, such as XS, is defined as the same as DS but with the constraint that the new value of every variable is the same as the old. The state of does not change. For example a query is an operation that produces a result that should not change the state of a database.

Xi Convention

Definition of Xi S

XS___

a,b: N

a’,b’: N

______

 a < b

 a’ < b’

 a’ = a

 b’ = b

_______


Schema input output

Finishing variable names with a question mark (?) indicates input to the schema.

Finishing variable names with a exclamation mark (!) indicates output from the schema.

Schema Input Output

Definition of Add

Add___

a?,b?: N

sum!: N

______

 sum! = a? + b?

_______


Schema example

A computer display shows lines of characters with each line consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Schema Example

KEY ::= home | return | left | right | up | down

numLines: N

numColumns: N

______

1 numLines

1 numColumns

_______


Schema example1

The lines are numbered from 1 to consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor. numLines down the display and the columns are numbered 1 to numColumns across the display.

Schema Example

column

numColumns

1

1

line

cursor

numLines


The state
The State consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • At any time the cursor is within the bounds of the display. The state of the cursor can be described by the schema Cursor.

    Cursor___

    line: N

    column: N

    ______

    line1..numLines

    column1..numColumns

    _______


Home key
Home Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The operations for moving the cursor can be built up one at a time. The simplest is to respond to the home key. It causes the cursor to the top left corner of the display.

    HomeKey___

    Dcursor

    key?: KEY

    ______

    key? = home

    line’ = 1

    column’ = 1

    ________


Home key1
Home Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • We are using the delta convention with Dcursor defined as:

     Dcursor ___

     line, line’ : N

    column, column’ : N

    ______

    line1..numLines

    line’1..numLines

    column1..numColumns

    column’1..numColumns

    _______


Down key
Down Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The operation for moving the cursor down, in the normal case, can be defined as:

    DownKeyNormal___

    Dcursor

    key?: Key

    ______

    key? = down

    line < numLines

    line’ = line + 1

    column’ = column

    ________


Down key1
Down Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The operations for moving the cursor down, when the cursor is at the bottom of the display, can be defined as:

    DownKeyAtBottom___

    Dcursor

    key?: KEY

    ______

    key? = down

    line = numLines

    line’ = 1

    column’ = column

    ________


Down key2
Down Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The operation for moving the cursor down is defined to ‘wrap round’ to the top of the display. The full behaviour is given by:

    DownKey == DownKeyNormal v DownKeyAtBottom

  • The operation defined by oring the two behaviours.


Return key
Return Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The response to the return key is to move the cursor to the leftmost column of the next line down or the top of the screen if the cursor is already on the bottom line. This can be defined as:

    ReturnKey___

    Dcursor

    key?: KEY

    ______

    key? = return

    column’ = 1

     ((line < numLines L line’ = line’+1)

    v

     (line’ = numLines L line’=1))

    ________


Right key
Right Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • First we deal with the case where the cursor is not at the far right of the display:

    RightKeyNormal___

    Dcursor

    key?: KEY

    ______

    key? = right

    column <numColumns

    column’ = column+1

     line’ = line

    ________


Right key1
Right Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • Next we deal with the case where the cursor is at the far right of the display:

    RightKeyAtEnd___

    Dcursor

    key?: KEY

    ______

    key? = right

    column =numColumns

    column’ = 1

     line < numLines

     line’ = line + 1

    ________


Right key2
Right Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • Finally we deal with the case where the cursor is at the far right of the bottom line of the display:

    RightKeyAtBottom___

    Dcursor

    key?: KEY

    ______

    key? = right

    column =numColumns

    column’ = 1

     line = numLines

     line’ = 1

    ________


Right key3
Right Key consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • These three schemas can be combined to form one schema that defines the response of the cursor to the right key being pressed in all initial positions of the cursor:

    RightKey= RightKeyNormal v RightKeyAtEnd v

    RightKeyAtBottom


Cursor control key action
Cursor-control key action consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The action of the cursor on pressing any of these cursor-control keys can be defined as:

    CursorControlKey= RightKey v HomeKey v ReturnKey

    UpKey v DownKey v LeftKey


Schema composition
Schema Composition consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • The composition of a schema S with schema T is written:

  • S;T

  • and signifies the effect of doing S, and the doing T. For example, to show the effect of pressing the right-key and then the left-key on the display in this case using the definition of CursorControlKey

  • PressRight ==CursorControlKey L[k?=right]

  • PressLeft ==CursorControlKey L [k?=left]

    The composition of the two actions is written

    PressRight ; PressLeft


Answer to q7 1
Answer to Q7.1 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Base types and initialization:

[PERSON] the set of all uniquely identifiable persons

RESPONSE ::=OK | AlreadyAUser | NotAUser | LoggedIn | NotLoggedIn

Computer___

users, loggedIn : PERSON

______

loggedInz users

________

InitComputer___

Computer’

______

loggedIn’= 

users’ = 

________


Answer to q7 2
Answer to Q7.2 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Add user

[PERSON] the set of all uniquely identifiable persons

RESPONSE ::=OK | AlreadyAUser | NotAUser | LoggedIn | NotLoggedIn

AddUser0___

Computer

p? : PERSON

______

p?users

users’ = users  {p?}

loggenIn’ = loggedIn

________


Answer to q7 21
Answer to Q7.2 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Add user error

[PERSON] the set of all uniquely identifiable persons

RESPONSE ::=OK | AlreadyAUser | NotAUser | LoggedIn | NotLoggedIn

AddUserError___

Computer

p? : PERSON

reply! : RESPONSE

______

p?users

reply! = AlreadyAUser

________

AddUser == (AddUser0 [reply!:RESPONSE | reply!=OK])  AddUserError


Answer to q7 3
Answer to Q7.3 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Remove user

[PERSON] the set of all uniquely identifiable persons

RESPONSE ::=OK | AlreadyAUser | NotAUser | LoggedIn | NotLoggedIn

RemoveUser0___

Computer

p? : PERSON

______

p?users

p?  loggenIn

 users’ = users \ {p?}

loggenIn’ = loggedIn

________


Answer to q7 31
Answer to Q7.3 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Remove user error

RemoveUserError___

Computer

p? : PERSON

reply! : RESPONSE

______

 (p?  users 

reply! = NotAUser)

 

(p?  users 

 p?  loggedIn 

reply! = LoggedIn)

________

RemoveUser == (RemoveUser0 [reply!:RESPONSE | reply!=OK])  RemoveUserError


Answer to q7 4
Answer to Q7.4 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Log in

[PERSON] the set of all uniquely identifiable persons

RESPONSE ::=OK | AlreadyAUser | NotAUser | LoggedIn | NotLoggedIn

Login0________

Computer

p? : PERSON

_________

p?users

p?  loggenIn

 users’ = users

loggenIn’ = loggedIn  {p?}

________________


Answer to q7 41
Answer to Q7.4 consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

Log in Error

LoginError________

 Computer

p? : PERSON

reply! : RESPONSE

_________

 (p?  users 

reply! = NotAUser)

 

(p?  users 

 p?  loggedIn 

reply! = LoggedIn)

________

Login == (Login0 [reply!:RESPONSE | reply!=OK])  LoginError


The overall structure of a z specification
The overall structure of a Z specification consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • A Z specification document consists of mathematical text in Z notation, interleaved with explanatory text in natural language. The text should be expressed in terms of the problem and should not refer directly to the mathematical formulation, however for tutorial work this restriction is relaxed.


Sections of a z specification
Sections of a Z specification consisting of a fixed number of columns containing a character in a fixed-width typeface. A cursor marks the current position of interest on the display. The user can press cursor-control keys on the keyboard, some of which directly control the position of the cursor.

  • Introduction.

  • The types used.

  • The state and its invariant properties

  • An initialisation operation.

  • Operations and queries.

  • Error handling.

  • Final versions of operations and enquiries.


ad