Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)

Similar presentations


Presentation on theme: "1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)"— Presentation transcript:

1 1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)

2 2 מבוא כל דבר הוא קבוצה כל פעולה עובדת על המצב הנוכחי (ואולי משנה אותו) מעט סימונים – הרבה אינפורמציה עידון [נדבר עליו בהמשך הקורס]

3 3 פנקס ימי הולדת אנו רוצים מערכת ש: תתעד ימי הולדת של אנשים תוכל לתת תזכורות כאשר התאריך המיועד יגיע

4 4 העולם של המערכת נתונות לנו שתי קבוצות: אחת של שמות ואחת של תאריכי לידה. כרגע לא מעניין אותנו מה הפורמט של כל אחד מהפריטים (שם, תאריך לידה). Basic sets: [ NAME, DATE ]

5 5 The state space ┌─── BirthdayBook ──────── known: ℙ NAME birthday: NAME DATE ├──────────────────── known=dom birthday └──────────────────── תנאי שתמיד נכון (invariant) (כל פעולה חייבת לשמור עליו) מצב / משתנים פונקציה חלקית dom תחום (של פנק') למה כאן אין ℙ ?

6 6 לדוגמא known = { John, Mike, Susan } birthday = {John ↦ 25-Mar, Mike↦ 20-Dec, Susan↦ 20-Dec } זוג מתוך פונקציה

7 7 הבחנות מספר הרשומות במערכת לא מוגבל אין הגדרה לסדר של הרשומות אין הגדרה לפורמט של שם ותאריך לכל אדם במערכת יש יום הולדת בודד (למה ?) שני אנשים יכולים לחלוק את אותו תאריך יום הולדת יתכן וחלק מהאנשים אינם נמצאים בספר ימי ההולדת שלנו (למה ?)

8 8 הוספת יום הולדת חדש ┌─── AddBirthday ─────────────── ├─────────────────────────── └───────────────────────────

9 9 הוספת יום הולדת חדש (המשך) הינו מצפים כי לאחר הפעולה יתקיים : known’ = known  { name? } למעשה ניתן להוכיח זאת. לטובת ההוכחה נשתמש בשני חוקים הישימים ל dom dom( f  g ) = ( dom f )  ( dom g ) dom { a ↦ b } = { a }

10 10 הוספת יום הולדת חדש (המשך) להלן ההוכחה ש known’ = known  { name? } : known’ =

11 11 חיפוש מציאת יום ההולדת של אדם מסוים ┌─── FindBirthday ─────────────── ├─────────────────────────── └───────────────────────────

12 12 הגדרת תזכורת (מציאת כל האנשים שיום הולדתם חל ביום מסויים) ┌─── Remind ────────────────── ├─────────────────────────── └───────────────────────────

13 13 המצב ההתחלתי ┌─── InitBirthdayBook ────── BirthdayBook ├──────────────────── known =  └──────────────────── למה כאן אין Δ ? ┌─── InitBirthdayBook ────── BirthdayBook’ ├──────────────────── known’ =  └──────────────────── טיפול בתור מצב טיפול בתור פעולה למה כאן אין Δ ?

14 14 סדרות סידרה היא למעשה פונקציה שהתחום שלה הוא תת קבוצה רציפה { 1.. N } של המספרים הטבעיים. seq(A) ≜ { f : N ↛ A | dom f = 1.. #f } (שימו לב שכאן אנו מגדירים אוסף של סדרות בהתאם לכל פונקציות המיפוי האפשריות) למשל הוא בעצם הפונקציה { 1↦m, 2 ↦i, 3↦f, 4↦r, 5↦a, 6↦t } ( או ברישום חלופי: { (1, m) (2, i) (3, f) (4, r) (5, a) (6, t) }) אם נסמן סידרה זו ב S אזי S(1) יחזיר את האות m, S(2) יחזיר את האות i וכך הלאה.

15 15 סדרות (המשך) חשוב: מאפשר מימוש מערכים מערך חד מימדי s(i) מערך דו מימדי s(i)(j) חשוב: tail ו front מחזירים סדרות ועל כן יש לשמור על תקינות ה domain שלהן (ב tail יש לתקן את ה "אינדקס")

16 16 פעולות על סדרות - המשך תהינה S ו T סדרות אזי: S~ייתן את הפונקציה ההפוכה של הסדרה ו S~(element) יחזיר את ה "אינדקס" שלו בסידרה S ⌢ Tיתן את איברי S ואחריהם את איברי T

17 17 פעולות על סדרות - דוגמאות נגדיר את הסדרות הבאות: S =, T = אזי: S(3) = head S = tail S = last S = front S = S ⌢ T = S~(c) =

18 18 פעולות מוגדרות מראש suc : ℕ → ℕsuc(n) = n+1{ (1, 2) (2 3), (3, 4) …. } suc k (n) = n+k pred : ℕ ↛ ℕpred(n) = n-1{ (1, 0) (2, 1) (3, 2) …. } pred k (n) = n-k למה פנק' חלקית?


Download ppt "1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)"

Similar presentations


Ads by Google