Lecture5 Slides

45
תתתת תתתתתת תתת תתתתת תתתתת תתתת תתתתתת תתתת תת תתתתת תת תתת תתתתתתתתתתת. תתת תתתתת:L(Model) תתת תתתתתתתתתתת:L(Spec) תתת תתתתת:L(Model) L(Spec)

Transcript of Lecture5 Slides

Page 1: Lecture5 Slides

תנאי נכונות

אנו רוצים למצוא תנאי נכונות למודל עלמנת לספק את הספציפיקציה.

:שפת המודל L(Model):שפת הספציפיקציהL(Spec) :אנו רוציםL(Model) L(Spec)

Page 2: Lecture5 Slides

נכונות

כל הרצפים

רצף סיפוקים של הספציפיקציה

ביצועים של התוכנית

Page 3: Lecture5 Slides

אי-נכונות

כל הרצפים

רצף סיפוקים של הספציפיקציה

ביצועים של התוכנית

CounterExamples

Page 4: Lecture5 Slides

אימות אוטומטי

(6)בספר: פרק מס'

Page 5: Lecture5 Slides

כיצד אנו יכולים לבדוק את המודל?

.המודל הוא גרף.הספציפיקציה אמורה להפנות לייצוג הגרף.יישום אלגוריתמי גרפים תיאורטיים

Page 6: Lecture5 Slides

אילו תכונות אנו יכולים לבדוק?

: Invariant תכונה האמורה להישמר בכלמצב.

Deadlock detection בדיקה- האם :אנו יכולים להגיע למצב כשהתוכנית

חסומה?:Dead code האם לתוכנה יש חלקים

שמעולם לא מבוצעים?

Page 7: Lecture5 Slides

כיצד לבצע את הבדיקה?

להחיל אסטרטגיית חיפוש( Depth first search, Breadth first

search.)

.לבדוק מצבים/מעברים בזמן החיפוש

אם התכונה לא נשמרת דווח על !counter example

Page 8: Lecture5 Slides

אם זה כל כך טוב, למה ללמוד שיטות אימות דדוקטיביות?

בדיקת מודלים עובדת רק עבור מערכותמצבים סופיות. היא אינה תעבוד עם:

.מספרים שלמים שהם לא מאולצים.תור הודעות בלתי מוגבל:מבני נתונים כלליים כמו

תוריםעציםמחסניות

מערכות ואלגוריתמיים פרמטריים.

Page 9: Lecture5 Slides

התפוצצות מרחב המצבים

יש צורך לייצג את מרחב המצבים שלהתוכנה בזיכרון המחשב.

!כל מצב יכול להיות גדול כגודל הזיכרון כולו:הרבה מצבים

אפשרויות. 2^32לכל משתנה שהוא מספר שלם יש אפשרויות.2^64לשני משתנים כאלה יש

בפרוטוקולים העובדים בו-זמנית, מספר המצביםגדל אקספוננציאלית ביחד עם מספר התהליכים.

Page 10: Lecture5 Slides

אם זה כל כך מוגבל, האם יש בזה שימוש?

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

מטבעם. אפשר להשתמש בטכניקות .אבסטרקטיות

לפעמים זה אפשרי לפרק תוכנית ולהוכיח חלקאחד ממנה בעזרת מודל, וחלק אחר בעזרת

הוכחה באמצעות משפט. יש הרבה טכניקות המפחיתות את אפשרות

התפוצצות מרחב המצבים.

Page 11: Lecture5 Slides

Depth First Search

Program DFSFor each s such that

Init(s) dfs(s)end DFS

Procedure dfs(s)for each s’ such

that R(s,s’) do

If new(s’) then dfs(s’)

end dfs.

Page 12: Lecture5 Slides

התחל ממצב התחלתי

q3

q4

q2

q1

q5

q1

q1

המחסנית:

:HASHטבלת

Page 13: Lecture5 Slides

המשך עם הבא אחריו

q3

q4

q2

q1

q5

q1 q2

q1

q2

:HASHטבלת

המחסנית:

Page 14: Lecture5 Slides

.q2המשך עם הבן של

q3

q4

q2

q1

q5

q1 q2 q4

q1

q2

q4

:HASHטבלת

המחסנית:

Page 15: Lecture5 Slides

.q2 , חזור חזרה ל q4כיוון שאין בנים ל

q3

q4

q2

q1

q5

q1 q2 q4

q1

q2

:HASHטבלת

המחסנית:

Page 16: Lecture5 Slides

q1 חזור חזרה ל

q3

q4

q2

q1

q5

q1 q2 q4

q1

:HASHטבלת

המחסנית:

Page 17: Lecture5 Slides

q1לך לבן השני של

q3

q4

q2

q1

q5

q1 q2 q4 q3

q1

q3

:HASHטבלת

המחסנית:

Page 18: Lecture5 Slides

q1חזור חזרה שוב ל

q3

q4

q2

q1

q5

q1 q2 q4 q3

q1

:HASHטבלת

המחסנית:

Page 19: Lecture5 Slides

?DFSכיצד אנו יכולים לבדוק תכונות בעזרת

:Invariants בדוק את כל המצבים הנשיגים . אחרת – invariantכדי לספק את תכונת ה

הראה נתיב מהמצב ההתחלתי למצב ה"פגום".:Deadlocks בדוק האם ניתן להגיע למצב בו

תהליך לא יכול להמשיך.Dead code במהלך התקדמות ה :DFS סמן ,

את כל המעברים שבוצעו לפחות פעם אחת.

Page 20: Lecture5 Slides

גרף המצבים: יחס של ירושה בין מצבים.

Turn=0L0,L1

Turn=0L0,NC1

Turn=0NC0,L1

Turn=0CR0,NC1

Turn=0NC0,NC1

Turn=0CR0,L1

Turn=1L0,CR1

Turn=1NC0,CR1

Turn=1L0,NC1

Turn=1NC0,NC1

Turn=1NC0,L1

Turn=1L0,L1

Page 21: Lecture5 Slides

¬(PC0=CR0/\PC1=CR1)!Invariantהוא

Turn=0L0,L1

Turn=0L0,NC1

Turn=0NC0,L1

Turn=0CR0,NC1

Turn=0NC0,NC1

Turn=0CR0,L1

Turn=1L0,CR1

Turn=1NC0,CR1

Turn=1L0,NC1

Turn=1NC0,NC1

Turn=1NC0,L1

Turn=1L0,L1

Page 22: Lecture5 Slides

רוצה לעשות עוד!

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

לטפל בכל סוגי התכונות. זה נעשה ע"י כתיבת ספציפיקציה

בפורמליקה יותר מורכבת..נראה זאת בהרצאה הבאה

Page 23: Lecture5 Slides

[](Turn=0 <>Turn=1)

Turn=0L0,L1

Turn=0L0,NC1

Turn=0NC0,L1

Turn=0CR0,NC1

Turn=0NC0,NC1

Turn=0CR0,L1

Turn=1L0,CR1

Turn=1NC0,CR1

Turn=1L0,NC1

Turn=1NC0,NC1

Turn=1NC0,L1

Turn=1L0,L1

Page 24: Lecture5 Slides

Turn=0L0,L1

Turn=1L0,L1

init

היגדים מצורפים לצמתים נכנסים•

כל הצמתים מקבלים•

Turn=1L0,L1

Turn=0L0,L1

Page 25: Lecture5 Slides

תנאי נכונות

אנו רוצים למצוא תנאי נכונות למודל עלמנת לספק את הספציפיקציה.

:שפת המודל L(Model):שפת הספציפיקציהL(Spec) :אנו רוציםL(Model) L(Spec)

Page 26: Lecture5 Slides

נכונות

כל הרצפים

רצף סיפוקים של הספציפיקציה

ביצועים של התוכנית

Page 27: Lecture5 Slides

איך נוכיח נכונות?

נראה שL(Model) L(Spec) :בשקילות______

L(Model) L(Spec) = Øנראה ש בנוסף: ניתן לקבל אתL(Spec) ע"י תרגום

!LTLמ

Page 28: Lecture5 Slides

מה אנו צריכים לדעת?

?כיצד לבצע חיתוך של שני אוטומטים?כיצד לקבל משלים של אוטומט כיצד לתרגם מLTL?לאוטומט

Page 29: Lecture5 Slides

M1=(S1,,T1,I1,A1) חיתוך M2=(S2,,T2,I2,S2) ו

האוטומטים במקביל2להריץ את :כל מצב הוא זוג של מצביםS1 x S2

תנאים התחלתיים הם זוגות של תנאיםI1 x I2התחלתיים:

קבלה תלויה ברכיב הראשוןA1 x S2

:תואם את היחס הטרנזיטיבי(x1,y1-)a->)x2,y2( כאשר

x1-a->x2 4ו - y1-a->y2

Page 30: Lecture5 Slides

)כל המצבים של האוטומט השני דוגמה מקבלים!(

a

bct0 t1

a

a

b,c

b,cs0 s1

(s0,t0( ,)s0,t1( ,)s1,t0( ,)s1,t1)מצבים:

(s0,t0 )התחלתי: ( s0,t0( ,)s0,t1 )מקבלים:

Page 31: Lecture5 Slides

a

bct0 t1

a

a

b,c

b,cs0 s1

s0,t0

s0,t1

s1,t1

s1,t0b

b

a

c

a

c

Page 32: Lecture5 Slides

A2S2 מורכב יותר כאשר

a

b

ct0 t1

a

a

b,cb,cs0 s1

האם אמורה להיות לנו קבלה כאשר שני הרכיבים ?({s0,t1})מקבלים? לדוגמה

(ba)לא, ניקח

הוא אמור לקבל, אך לעולם לא עובר למצב המקבל.

s0,t0

s0,t1

s1,t1

b

a

c

a

c

Page 33: Lecture5 Slides

A2S2 מורכב יותר כאשר

a

b

ct0 t1

a

a

b,cb,cs0 s1

האם אמורה להיות לנו קבלה כאשר לפחות רכיב אחד ?({s0,t0(,)s0,t1(,)s1,t1})מקבל? לדוגמה,

b cלא, ניקח

(s1,t1)הוא לא אמור לקבל, אך במקרה זה יבצע לולאה על

s0,t0

s0,t1

s1,t1

b

c

a

c

a

Page 34: Lecture5 Slides

חיתוך – מקרה כללי

q0 q2

q3q1

q0,q3 q1,q3q1,q2

a a, c

c

c, bb

c

c

b

a

Page 35: Lecture5 Slides

q0: לתפוס את 0גירסה

q1: לתפוס את 1גירסה

q0,q3 q1,q3q1,q2

q0,q3 q1,q3q1,q2

(q0עובר כאשר רואה קבלה של השמאלי ) (q2עובר כאשר רואה קבלה של הימני )

0גירסה

1גירסה

c

c

c

c

b

a

b

a

Page 36: Lecture5 Slides

q0: לתפוס את 0גירסה

q1: לתפוס את 1גירסה

q0,q3 q1,q3q1,q2

q0,q3 q1,q3q1,q2

(q0עובר כאשר רואה קבלה של השמאלי ) (q2עובר כאשר רואה קבלה של הימני )

0גירסה

1גירסה

c

c

c

c

b

a

b

a

Page 37: Lecture5 Slides

צור מצב מקבל באחת הגירסאות על פי מצב מקבל של הרכיב

q0,q3,0 q1,q3,0q1,q2,0

q0,q3,1 q1,q3 ,1q1,q2 ,1

c

c

c

c

b

ab

a

0גירסה

1גירסה

Page 38: Lecture5 Slides

(?emptinessכיצד נבדוק ריקנות )

s0,t0

s0,t1

s1,t1

b

a

c

a

c

Page 39: Lecture5 Slides

(...emptinessריקנות )

צריך לבדוק האם קיימת ריצה מקבלת )עוברת על מצב מקבל אינסוף פעמים(

Page 40: Lecture5 Slides

(SCC)רכיב קשיר חזק

קבוצת מצבים בעלי מסלול בין כל זוג מהם.

כדי Tarjan של DFSניתן להשתמש באלג' המקסימלי.SCCלמצוא את ה

Page 41: Lecture5 Slides

מציאת ריצות מקבלות

אם קיימת ריצה מקבלת, אז לפחות על מצב מקבל אחד נחזור לעד.

נתבונן על הסיומת של הריצה הזו, היכן שכל המצבים נראים עבירים אינסוף פעמים.

מצבים אלו יוצרים רכיב קשיר חזק על גרף האוטומט, כולל מצב מקבל.

נמצא רכיב כזה היוצר מעגל מקבל הכולל מצב מקבל.

Page 42: Lecture5 Slides

בשקילות…

רכיב קשיר חזק: קבוצת צמתים בה כל צומתנגיש ע"י מסלול מכל צומת אחר. נמצא רכיב

קשיר חזק נגיש בעל מצב מקבל.

Page 43: Lecture5 Slides

כיצד להשלים?

!השלמה היא קשה ניתן לשאול מה השלילה של המאפיין

)הרצפים שלא אמורים להתרחש לעולם( ניתן לתרגם מנוסחתLTL

לאוטומטואזלהשליםאתאבל:

ישירותלאוטומט¬ניתן לתרגם את

Page 44: Lecture5 Slides

בדיקת מודל תחת הוגנות

.φבטא את ההוגנות כמאפיין תחת הוגנות, בדוק מודל ψכדי להוכיח מאפיין

φψ

Fair (φ)

Bad (¬ψ) Program

דוגמה נגדית

Page 45: Lecture5 Slides

בדיקת מודל תחת הוגנות

נתמקצע בבדיקת מודל. עבור הוגנות תהליך חלשה: נחפש רכיב קשיר חזק נגיש, כך

אוPשעבור כל תהליך שהוא מכיל מופע של מעבר מPאו , שהוא מכיל מצב בוPלא פעיל