Functions
Download
1 / 46

Functions - PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on
  • Presentation posted in: General

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.

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

Download Presentation

Functions

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


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

{ y = addTwo(7);

return (arg+2);

}

addTwo()

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

  • HashFieldSpace  DiskAddressSpace.

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

    HashFieldSpace  DiskAddressSpace


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.


Exercise 1 Answer

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


Exercise 1 Answer

Hotel___

bookedTo: ROOM  PERSON

_______

(b) Explain why bookedTo is partial.

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


Exercise 2

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


Exercise 2 Answer

 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


Exercise 3 Answer (a)

CancelBooking0_

Hotel

p?:PERSON

r?: ROOM

_____________

{r?  p?} dom bookedTo

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

_________________

Explain the meaning of each line


Exercise 3 Answer (b)

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


ad
  • Login