1 / 46

Functions

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.

derick
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Functions Chapter 10 Formal Specification using Z

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

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

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

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

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

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

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

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

  10. 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)

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

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

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

  14. 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}

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

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

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

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

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

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

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

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

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

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

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

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

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

  28. 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?

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

  30. Hash Function Collision • Also important is the selection of keys from the key space. • Will they be random or clustered?

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

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

  33. 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?

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

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

  36. 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).

  37. 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:

  38. Exercise 1 Hotel___ bookedTo: ROOM  PERSON _______ (a) Explain why bookedTo is a function. (b) Explain why bookedTo is partial.

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

  40. Exercise 1 Answer Hotel___ bookedTo: ROOM  PERSON _______ (b) Explain why bookedTo is partial. The function is partial since not all rooms have been booked.

  41. Exercise 2 Given: Init___ Hotel’ ______ bookedTo =  _______

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

  43. 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)

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

  45. Exercise 3 Answer (a) CancelBooking0_ Hotel p?:PERSON r?: ROOM _____________ {r?  p?} dom bookedTo bookedTo’ = bookedTo \ {r?  p?} _________________ Explain the meaning of each line

  46. 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)

More Related