1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z introduction and notation...

23
1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book); Z - Schema Calculus
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    218
  • download

    2

Transcript of 1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z introduction and notation...

1

Formal Specifications for Complex Systems (236368)

Tutorial #2

Z introduction and notation (contd.);

Birthday book example (Chapter 1 in the book);

Z - Schema Calculus

236368 Emilia Katz, Shahar Dag 2

סימונים

236368 Emilia Katz, Shahar Dag 3

פנקס ימי הולדת

:אנו רוצים מערכת ש

תתעד ימי הולדת של אנשים•

תוכל לתת תזכורות כאשר התאריך המיועד יגיע •

236368 Emilia Katz, Shahar Dag 4

העולם של המערכת

נתונות לנו שתי קבוצות: אחת של שמות ואחת של תאריכי לידה.

כרגע לא מעניין אותנו מה הפורמט של כל אחד מהפריטים (שם , תאריך .לידה)

Basic sets: [ NAME , DATE ]

236368 Emilia Katz, Shahar Dag 5

The state space

┌─── BirthdayBook ────────

├────────────────────

└────────────────────

236368 Emilia Katz, Shahar Dag 6

לדוגמאknown = { John, Mike, Susan }

birthday = { John ↦ 25-Mar,Mike ↦ 20-Dec,Susan ↦ 20-Dec }

236368 Emilia Katz, Shahar Dag 7

הבחנות

מספר הרשומות במערכת לא מוגבל•

אין הגדרה לסדר של הרשומות•

אין הגדרה לפורמט של שם ותאריך•

לכל אדם במערכת יש יום הולדת בודד (למה ?)•

שני אנשים יכולים לחלוק את אותו תאריך יום הולדת•

יתכן וחלק מהאנשים אינם נמצאים בספר ימי ההולדת שלנו •(למה ?)

236368 Emilia Katz, Shahar Dag 8

הוספת יום הולדת חדש

┌─── AddBirthday ───────────────

├───────────────────────────

└───────────────────────────

236368 Emilia Katz, Shahar Dag 9

(המשך)הוספת יום הולדת חדש

known’ = known { name? }הינו מצפים כי לאחר הפעולה יתקיים:

למעשה ניתן להוכיח זאת.

domלטובת ההוכחה נשתמש בשני חוקים הישימים ל

dom( f g ) = ( dom f ) ( dom g )

dom { a ↦ b } = { a }

236368 Emilia Katz, Shahar Dag 10

(המשך)הוספת יום הולדת חדש

:known’ = known { name? }להלן ההוכחה ש

236368 Emilia Katz, Shahar Dag 11

חיפושמציאת יום ההולדת של אדם מסוים

┌─── FindBirthday ───────────────

├───────────────────────────

└───────────────────────────

236368 Emilia Katz, Shahar Dag 12

הגדרת תזכורת(מציאת כל האנשים שיום הולדתם חל ביום

מסויים)

┌─── Remind ──────────────────

├───────────────────────────

└───────────────────────────

236368 Emilia Katz, Shahar Dag 13

המצב ההתחלתי

┌─── InitBirthdayBook ──────

├────────────────────

└────────────────────

┌─── InitBirthdayBook ──────

├────────────────────

└────────────────────

טיפול בתור מצב

טיפול בתור פעולה

236368 Emilia Katz, Shahar Dag 14

Zed:תחשיב סכמות ,

היום:שינוי שמות•הסתרת משתנים•נרמול סכמות•

בשיעור הבא:הרכבת סכמות• של סכמת פעולהpreחישוב •צמצום פרדיקטים עם כמתים•

236368 Emilia Katz, Shahar Dag 15

הנה התוצאה של S[a/x, b/y]הסכמה •החלפת

.b ב-y, וכל מופע של a ב-x כל מופע של

,S[a/x, b/yיתכנו "התנגשויות", למשל: •a/z] ,

או אם מחליפים שם בשם קיים.

שמות מתנגשים חייבים להיות מאותו •טיפוס.

)renamingשינוי שמות (

236368 Emilia Katz, Shahar Dag 16

)1שינוי שמות (דוגמא

┌─── Sum ────

x?, y?, z!: ℕ

├──────────

z! = x? + y?└───────────

┌─── Sum ────

├──────────

└───────────

Sum[a?/x?]

236368 Emilia Katz, Shahar Dag 17

)2שינוי שמות (דוגמא

┌─── Sum ────

x?, y?, z!: ℕ

├──────────

z! = x? + y?└───────────

┌─── Sum ────

├──────────

└───────────

Sum[x?/y?]

236368 Emilia Katz, Shahar Dag 18

)3שינוי שמות (דוגמא

┌─── Sum ────

x?, y?, z!: ℕ

├──────────

z! = x? + y?└───────────

┌─── Sum ────

├──────────

└───────────

Sum[a?/x?, a?/y?]

236368 Emilia Katz, Shahar Dag 19

הסתרת משתנים

•S\(x,y,z)-הנה הסכמה שמתקבלת מ S על ידי הסתרת המשתנים x, y, z.

הסתרת משתנים מתבצעת על ידי העברתם מהחלק של ההכרזות (החלק •העליון בסכמה) לחלק של התנאים (החלק התחתון בסכמה).

" ). לכל משתנה שמועבר לחלק של התנאים נוסיף את הכמת קיים ( "•

236368 Emilia Katz, Shahar Dag 20

)1הסתרת משתנים (דוגמא

┌─── Power ──── y! :ℕ z? : 1..10 ├────────── y! = z? * z? y! < 5└───────────

zאנו רוצים להחביא את

┌─── Power ────

├──────────

└───────────

Power\(z?)

236368 Emilia Katz, Shahar Dag 21

נרמול סכמות

יש לטפל במשתנים שתחום ההגדרה שלהם הוא תת תחום.•

בעצם הגדרת המשתנה יש פרדיקט שמגביל את הערכים אותם יכול לקבל •המשתנה

כל משתנה כנ"ל יש להגדיר מחדש כשייך לתחום המקסימאלי שלו.•

יש להוסיף פרדיקט המגביל את ערכי המשתנה לתת התחום המקורי שלו.•

")הנרמול בעל חשיבות ממעלה ראשונה בפעולות שלילה ("•

236368 Emilia Katz, Shahar Dag 22

)1נרמול סכמות (דוגמא

┌─── Example ────

├──────────

└───────────

┌─── Example ──── a? :ℕ y! :ℤ

├──────────

y! = a?└───────────

236368 Emilia Katz, Shahar Dag 23

)2נרמול סכמות (דוגמא

┌─── Example ──── ├──────────

└───────────

┌─── Example ──── a? : 1..10 y! :ℤ

├──────────

y! = a?└───────────