Download presentation
Presentation is loading. Please wait.
1
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
2
236368 Emilia Katz, Shahar Dag2 סימונים
3
236368 Emilia Katz, Shahar Dag3 פנקס ימי הולדת אנו רוצים מערכת ש: תתעד ימי הולדת של אנשים תוכל לתת תזכורות כאשר התאריך המיועד יגיע
4
236368 Emilia Katz, Shahar Dag4 העולם של המערכת נתונות לנו שתי קבוצות: אחת של שמות ואחת של תאריכי לידה. כרגע לא מעניין אותנו מה הפורמט של כל אחד מהפריטים (שם, תאריך לידה). Basic sets: [ NAME, DATE ]
5
236368 Emilia Katz, Shahar Dag5 The state space ┌─── BirthdayBook ──────── ├──────────────────── └────────────────────
6
236368 Emilia Katz, Shahar Dag6 לדוגמא known = { John, Mike, Susan } birthday = {John ↦ 25-Mar, Mike↦ 20-Dec, Susan↦ 20-Dec }
7
236368 Emilia Katz, Shahar Dag7 הבחנות מספר הרשומות במערכת לא מוגבל אין הגדרה לסדר של הרשומות אין הגדרה לפורמט של שם ותאריך לכל אדם במערכת יש יום הולדת בודד (למה ?) שני אנשים יכולים לחלוק את אותו תאריך יום הולדת יתכן וחלק מהאנשים אינם נמצאים בספר ימי ההולדת שלנו (למה ?)
8
236368 Emilia Katz, Shahar Dag8 הוספת יום הולדת חדש ┌─── AddBirthday ─────────────── ├─────────────────────────── └───────────────────────────
9
236368 Emilia Katz, Shahar Dag9 הוספת יום הולדת חדש (המשך) הינו מצפים כי לאחר הפעולה יתקיים : known’ = known { name? } למעשה ניתן להוכיח זאת. לטובת ההוכחה נשתמש בשני חוקים הישימים ל dom dom( f g ) = ( dom f ) ( dom g ) dom { a ↦ b } = { a }
10
236368 Emilia Katz, Shahar Dag10 הוספת יום הולדת חדש (המשך) להלן ההוכחה ש known’ = known { name? } :
11
236368 Emilia Katz, Shahar Dag11 חיפוש מציאת יום ההולדת של אדם מסוים ┌─── FindBirthday ─────────────── ├─────────────────────────── └───────────────────────────
12
236368 Emilia Katz, Shahar Dag12 הגדרת תזכורת (מציאת כל האנשים שיום הולדתם חל ביום מסויים) ┌─── Remind ────────────────── ├─────────────────────────── └───────────────────────────
13
236368 Emilia Katz, Shahar Dag13 המצב ההתחלתי ┌─── InitBirthdayBook ────── ├──────────────────── └──────────────────── ┌─── InitBirthdayBook ────── ├──────────────────── └──────────────────── טיפול בתור מצב טיפול בתור פעולה
14
236368 Emilia Katz, Shahar Dag14 Zed, תחשיב סכמות: היום: שינוי שמות הסתרת משתנים נרמול סכמות בשיעור הבא: הרכבת סכמות חישוב pre של סכמת פעולה צמצום פרדיקטים עם כמתים
15
236368 Emilia Katz, Shahar Dag15 הסכמה S[a/x, b/y] הנה התוצאה של החלפת כל מופע של x ב-a, וכל מופע של y ב-b. יתכנו "התנגשויות", למשל: S[a/x, b/y, a/z], או אם מחליפים שם בשם קיים. שמות מתנגשים חייבים להיות מאותו טיפוס. שינוי שמות (renaming)
16
236368 Emilia Katz, Shahar Dag16 שינוי שמות (דוגמא 1) ┌─── Sum ──── x?, y?, z!: ℕ ├────────── z! = x? + y? └─────────── ┌─── Sum ──── ├────────── └─────────── Sum[a?/x?]
17
236368 Emilia Katz, Shahar Dag17 שינוי שמות (דוגמא 2) ┌─── Sum ──── x?, y?, z!: ℕ ├────────── z! = x? + y? └─────────── ┌─── Sum ──── ├────────── └─────────── Sum[x?/y?]
18
236368 Emilia Katz, Shahar Dag18 שינוי שמות (דוגמא 3) ┌─── Sum ──── x?, y?, z!: ℕ ├────────── z! = x? + y? └─────────── ┌─── Sum ──── ├────────── └─────────── Sum[a?/x?, a?/y?]
19
236368 Emilia Katz, Shahar Dag19 הסתרת משתנים S\(x,y,z) הנה הסכמה שמתקבלת מ-S על ידי הסתרת המשתנים x, y, z. הסתרת משתנים מתבצעת על ידי העברתם מהחלק של ההכרזות (החלק העליון בסכמה) לחלק של התנאים (החלק התחתון בסכמה). לכל משתנה שמועבר לחלק של התנאים נוסיף את הכמת קיים ( " " ).
20
236368 Emilia Katz, Shahar Dag20 הסתרת משתנים (דוגמא 1) ┌─── Power ──── y! :ℕ z? : 1..10 ├────────── y! = z? * z? y! < 5 └─────────── אנו רוצים להחביא את z ┌─── Power ──── ├────────── └─────────── Power\(z?)
21
236368 Emilia Katz, Shahar Dag21 נרמול סכמות יש לטפל במשתנים שתחום ההגדרה שלהם הוא תת תחום. בעצם הגדרת המשתנה יש פרדיקט שמגביל את הערכים אותם יכול לקבל המשתנה כל משתנה כנ"ל יש להגדיר מחדש כשייך לתחום המקסימאלי שלו. יש להוסיף פרדיקט המגביל את ערכי המשתנה לתת התחום המקורי שלו. הנרמול בעל חשיבות ממעלה ראשונה בפעולות שלילה (" ")
22
236368 Emilia Katz, Shahar Dag22 נרמול סכמות (דוגמא 1) ┌─── Example ──── ├────────── └─────────── ┌─── Example ──── a? : ℕ y! : ℤ ├────────── y! = a? └───────────
23
236368 Emilia Katz, Shahar Dag23 נרמול סכמות (דוגמא 2) ┌─── Example ──── ├────────── └─────────── ┌─── Example ──── a? : 1..10 y! : ℤ ├────────── y! = a? └───────────
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.