# Functions - PowerPoint PPT Presentation

1 / 46

Functions. Chapter 10 Formal Specification using Z. A function is a relation. In a programming language a function is a way of specifying some processing which produces a value as a result. In Z a function is a data structure.

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

Functions

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 - - - - - - - - - - - - - - - - - - - - - - - - - -

## Functions

Chapter 10

Formal Specification using Z

### A function is a relation

• In a programming language a function is a way of specifying some processing which produces a value as a result.

• In Z a function is a data structure.

• The two views are not incompatable; the programming language view is just a restrictive form of the Z view and in both cases a function provides a result value given an input value or values.

### A function in C

int addTwo(int arg) Example of usage

return (arg+2);

}

arg1

arg2

return1

return2

Return value

Argument

A function is a relation

• A function is a special case of a relation in which there is at most one value in the range for each value in the domain. A function with a finite domain is also known as a mapping. Note in diagram no diverging lines from left to right.

f

x5

x1

x2

x4

x6

y1

y2

X

x3

Y

dom f ran f

A function is a relation

• In Z a function f from type X to type Y is declared as

• f: X Y ‘the function f, from X to Y’

• Is equilanent to relation f: X  Ywith the restriction that for each x in the domain of f, f relates x to at most one y;

f

x5

x1

x2

x4

x6

y1

y2

X

x3

Y

dom f ran f

Is equilanent to relation f: X  Ywith the restriction that for each x in the domain of f, f relates x to at most one y;

• Which can be stated formally as:

• x dom f  1y:Y  xfy

Target

Source

x5

f

x1

x2

x4

x6

y1

y2

X

x3

Y

dom f ran f

### Examples of functions

• The relation between persons and their identity numbers

• identityNo: PERSON 

• is a function if there is a rule that a person may only have one identity number . In that case it could be declared as:

• identityNo: PERSON 

• There would probably also be a rule that only one identity number may be associated with any one person, but that is not indicated here.

### Examples of functions

• A functions source and target can be the same:

• hasMother: PERSON PERSON

• any person can have only one mother and several people could have the same mother.

### Function Application

• All the concepts which pertain to relations apply to functions.

• In addition a function may be applied.

• Since there will be at most only one value in the range for a given x it is possible to designate that value directly.

• The value of fapplied to x is the value in the range of function of the function f corresponding to the value of x in its domain.

### Function Application

• The application is undefined if the value of x is not in the domain of f.

• It is important to check that the value of x is in the domain of the function f before attempting to apply f to x.

• The application of the function to the value x (the argument) is written: fx or f(x)

### Function Application

• We can check the applicability of f by writing:

• x  domf

• fx = y

• These predicates must be true if f(x) = y is a function.

### Partial and Total Functions

• The identyNo function is a partial function there may be values in the sources that are not in the domain (some people may have no identity number).

• A total function is one where there is a is a value for every possible value of x, so fx is always defined. It is written

• f: X Y

• Because:

• domf = X (or source)

• function application can always be used with a total function. Note no ‘bar’ on total function arrow.

### Examples of Total Functions

• The function age, from PERSON to natural number, is total since every person has an age:

• age: PERSON  

• The function hasMother, is total since every person has one mother (including a mother!):

• hasMother : PERSON  PERSON

### Formal Partial and Total functions

• The set of Partial Functions from X to Y:

X  Y

=={f:X Y | ( x:X | xdom f  (1 y:Y xfy)) f}

• The set of Total Functions from X to Y:

X  Y

=={f:X  Y | (dom f =X f}

### Other Classes of Functions: injective functions (one-to-one)

• An injection or (injective function) is a function which maps different values of the source on to different values of the target, e.g. f: X Y

• The inverse relation of an injective function f from X to Y , f~, is itself an injective function from, from Y to X.

• f~Y  X

• An injective function may be partial f: X Y or total f: X Y . The functions identityNo and MonogamousMarriage areinjective.

An Injective function.

The function f: X  Yis injective (or one-to-one) because each element in Y has one arrow pointing to it. A injective can be partial, f: X  Y, or total f: X Y ;

Target

Source

f

x1

x2

x3

y1

y2

y3

X

Y

dom f ran f

An Injective function can be:

partial, f: X  Y =={f:X  Y | f~ Y  X f} (has inverse)

or total f: X  Y=={f:X  Y | dom f = X  f}

Target

Source

f

x1

x2

x3

y1

y2

y3

X

Y

dom f ran f

A Surjective function.

The function f: X  Yis surjective (or onto) because range of is all of Y. The range is the whole of the target. A surjective can be partial, f: X  Y, or total f: X  Y ;

Target

Source

f

x1

x2

x3

x4

x4

y1

y2

y3

X

Y

dom f ran f

A Surjective function can be:

partial f: X  Y == {f:X  Y | ran f = Y  f}

or total f: X  Y == {f:X  Y | dom f = X }

Target

Source

f

x1

x2

x3

x4

y1

y2

y3

X

Y

dom f ran f

A Bijective function.

The function f: X  Yis a total function that is both injective (one-to-one) and surjective (or onto) is called a bijective function, ;

Target

Source

f

x1

x2

x3

y1

y2

y3

X

Y

dom f ran f

A Bijective function.

The function f: X  Yis a total function that is both injective (one-to-one) and surjective (or onto) is called a bijective function, f: X  Y == (X  Y)  (X  Y);

Target

Source

f

x1

x2

x3

y1

y2

y3

X

Y

dom f ran f

Some examples, range on the left domain on the right

A function is called a bijection , if it is onto and one-to-one. A bijective function has an inverse

Function Application

A function f from X to Y is a relation from X to Y having the

properties:

1. The domain of f is in X.

2. If (x,y), (x,y’) f, then y=y’ (no fan out from domain).

A total function from X to Y is denoted f: X Y.

### Example Function

Given

SIDE ::= left | right

the function

driveON COUNTRY  SIDE side of the road vehicles drive on

is a surjection, because the range includes all the values of the type SIDE. It would usually be considered total because driveOn should be defined in all countries.

driveON COUNTRY SIDE

### What is a Hash Function?

• A hash function takes a data item to be stored or retrieved (say to/from disk) and computes the first choice for a storage location for the item. For example assume StudentNumber is the key field of a student record, and one record is stored on one disk block. To store or retrieve the record for student number n in a choice of 11 disk locations numbered 0 to 10 we might use the hash function.

• h(n) = n mod 11

Describe the steps needed to store a record for student number 257 using in locations disk 0-10 using h(n) = n mod 11

558

32

132

102

15

5

0 1 2 3 4 5 6 7 8 9 10

Steps to store 257 using h(n)=n mod 11 into locations 0-10

1. Calculate h(257) giving 4.

2. Note location is already occupied, a collision has occurred.

3. Search for next free space , with 0 assumed to follow 10.

4. If no free space then array is full, otherwise store 257 in next free space

558

32

132

102

15

5

257

0 1 2 3 4 5 6 7 8 9 10

### Hash Function Collision, Search Criterion

• A collision occurs if h(x) = h(y), for x  y

• A collision resolution policy is required. One simply approach is to find the next unoccupied cell.

• The search criterion must be an equality condition on a single field. Not suited to range searches (e.g. Find StudentNumber < 123)

• Range: StudentNumber 1…. 99,999,999.

### Hash Function Collision

• h(x) does not guarantee that distinct key values will hash to distinct disk address .

• The domain may be much larger than the range If that is the case some keys will map onto the same disk address.

### Hash Function Collision

• The hash function maps the hash field space to the disk address space. It is usually a partial surjective function

• What are the implications of the hash function being a total function?

### Hash Function Collision

• Problem if the the hash function is total i.e. defined for all elements in the domain. Many collisions

• h(n) = n mod 3

Disk Block space =3

Key Space = 6

x1

x2

x3

x4

x6

y0

y1

y2

N

A

### Hash Function Collision

• Also important is the selection of keys from the key space.

• Will they be random or clustered?

### What properties should the function possess?

• If the domain is greater than the range it is should a partial surjective function.

• surjective: The range is the whole of the target, all the disk addresses could be used.

• partial there may be values in the sources that are not in the domain, not all keys will be used .

### Is hash efficient?

• If collisions occur infrequently and if when one does occur it is resolved quickly, then hashing provides a very fast method for storing and retrieving data. As an example, personnel data are frequently stored and retrieved by hashing on employee identification number.

• The hash function h should distribute the records uniformly over the storage locations; otherwise, search time will be increased because many collisions occur.

### Functions and Hash Functions

• When a hash function is used, the following conditions could hold:

#source > #target and #domain < #source and #range=#target .

• Where source is all possible record keys and target is actual disk blocks available. The domain is actual records keys and the range is the actual disk blocks available.

• What are the implications of a hash function being a total function?

• What are the implications of a hash function being an invective function?

• What are the implications of a hash function being a bijective function?

• In general what are the desirable properties that a hash function should possess?

### Functions and Hash Functions

• When a hash function is used, the following conditions could hold:

#source > #target and #domain < #source and #range=#target .

• Where source is all possible record keys and target is actual disk blocks available. The domain is actual records keys and the range is the actual disk blocks available.

• What are the implications of the hash function being a total function?

• It is not stated wheather the #domain>#range if it is the problem is many collisions occur when the hash function is total i.e. defined for all elements in the domain.

### Functions and Hash Functions

• When a hash function is used, the following conditions could hold:

#source > #target and #domain < #source and #range=#target .

• Where source is all possible record keys and target is actual disk blocks available. The domain is actual records keys and the range is the actual disk blocks available.

• What are the implications of a hash function being a invective function?

• One to one, an element in the domain will have a corresponding unique element in the range:- no collisions. But some source elements may not be mapped into the the range.

### Functions and Hash Functions

• When a hash function is used, the following conditions could hold:

#source > #target and #domain < #source and #range=#target .

• Where source is all possible record keys and target is actual disk blocks available. The domain is actual records keys and the range is the actual disk blocks available.

• What are the implications of a hash function being a bijective function?

• The property of having an inverse is not normally of interest as we are usually working from domain (HashFieldSpace) to the range(DiskAddressSpace).

### Exercise 1

• A system records the booking of hotel rooms on one night. Given base types:

• [ROOM] set of all rooms in hotel

• [PERSON] set of all possible persons

• the state of the hotel’s bookings can be represented by the following schema:

### Exercise 1

Hotel___

bookedTo: ROOM  PERSON

_______

(a) Explain why bookedTo is a function.

(b) Explain why bookedTo is partial.

Hotel___

bookedTo: ROOM  PERSON

_______

(a) Explain why bookedTo is a function.

• bookedTo is a function since it maps rooms to persons and for any given room(domain) at most one person (range) can book it. A person can book any number of rooms.

Hotel___

bookedTo: ROOM  PERSON

_______

(b) Explain why bookedTo is partial.

The function is partial since not all rooms have been booked.

Given:

Init___

Hotel’

______

bookedTo = 

_______

### Exercise 2

Given, first version of accept booking operation:

AcceptBooking0___

Hotel

p?:PERSON

r?: ROOM

_____________

r? dom bookedTo

bookedTo’ = bookedTo  {r?  p?}

_________________

Explain the meaning of each line

 AcceptBooking0_ (schema name)

Hotel (incorporates Hotel and its variables)

p?:PERSON ( person input variable)

r?: ROOM ( room input variable)

_____________

r? dom bookedTo ( room not booked)

bookedTo’ = bookedTo  {r?  p?}

_________________

( the maplet relating the room to the person is included in the new value of the function bookedTo)

### Exercise 3

Write a schema cancelBooking0 which cancels a booking for a given person and a given room. It should deal with error conditions in a similar manner as AcceptBooking0

CancelBooking0_

Hotel

p?:PERSON

r?: ROOM

_____________

{r?  p?} dom bookedTo

bookedTo’ = bookedTo \ {r?  p?}

_________________

Explain the meaning of each line

CancelBooking0_ (schema name)

Hotel (incorporates Hotel and its variables)

p?:PERSON ( person input variable)

r?: ROOM ( room input variable)

_____________

{r?  p?} dom bookedTo ( room is booked)

bookedTo’ = bookedTo \ {r?  p?}

_________________

( the maplet relating the room to the person is removed from the new value of the function bookedTo)