Lecture5 Slides
-
Upload
n00ne -
Category
Technology
-
view
367 -
download
2
Transcript of Lecture5 Slides
תנאי נכונות
אנו רוצים למצוא תנאי נכונות למודל עלמנת לספק את הספציפיקציה.
:שפת המודל L(Model):שפת הספציפיקציהL(Spec) :אנו רוציםL(Model) L(Spec)
נכונות
כל הרצפים
רצף סיפוקים של הספציפיקציה
ביצועים של התוכנית
אי-נכונות
כל הרצפים
רצף סיפוקים של הספציפיקציה
ביצועים של התוכנית
CounterExamples
אימות אוטומטי
(6)בספר: פרק מס'
כיצד אנו יכולים לבדוק את המודל?
.המודל הוא גרף.הספציפיקציה אמורה להפנות לייצוג הגרף.יישום אלגוריתמי גרפים תיאורטיים
אילו תכונות אנו יכולים לבדוק?
: Invariant תכונה האמורה להישמר בכלמצב.
Deadlock detection בדיקה- האם :אנו יכולים להגיע למצב כשהתוכנית
חסומה?:Dead code האם לתוכנה יש חלקים
שמעולם לא מבוצעים?
כיצד לבצע את הבדיקה?
להחיל אסטרטגיית חיפוש( Depth first search, Breadth first
search.)
.לבדוק מצבים/מעברים בזמן החיפוש
אם התכונה לא נשמרת דווח על !counter example
אם זה כל כך טוב, למה ללמוד שיטות אימות דדוקטיביות?
בדיקת מודלים עובדת רק עבור מערכותמצבים סופיות. היא אינה תעבוד עם:
.מספרים שלמים שהם לא מאולצים.תור הודעות בלתי מוגבל:מבני נתונים כלליים כמו
תוריםעציםמחסניות
מערכות ואלגוריתמיים פרמטריים.
התפוצצות מרחב המצבים
יש צורך לייצג את מרחב המצבים שלהתוכנה בזיכרון המחשב.
!כל מצב יכול להיות גדול כגודל הזיכרון כולו:הרבה מצבים
אפשרויות. 2^32לכל משתנה שהוא מספר שלם יש אפשרויות.2^64לשני משתנים כאלה יש
בפרוטוקולים העובדים בו-זמנית, מספר המצביםגדל אקספוננציאלית ביחד עם מספר התהליכים.
אם זה כל כך מוגבל, האם יש בזה שימוש?
.להרבה פרוטוקולים יש מרחב מצבים סופי הרבה תוכנות או פרצדורות הם מצב סופי
מטבעם. אפשר להשתמש בטכניקות .אבסטרקטיות
לפעמים זה אפשרי לפרק תוכנית ולהוכיח חלקאחד ממנה בעזרת מודל, וחלק אחר בעזרת
הוכחה באמצעות משפט. יש הרבה טכניקות המפחיתות את אפשרות
התפוצצות מרחב המצבים.
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.
התחל ממצב התחלתי
q3
q4
q2
q1
q5
q1
q1
המחסנית:
:HASHטבלת
המשך עם הבא אחריו
q3
q4
q2
q1
q5
q1 q2
q1
q2
:HASHטבלת
המחסנית:
.q2המשך עם הבן של
q3
q4
q2
q1
q5
q1 q2 q4
q1
q2
q4
:HASHטבלת
המחסנית:
.q2 , חזור חזרה ל q4כיוון שאין בנים ל
q3
q4
q2
q1
q5
q1 q2 q4
q1
q2
:HASHטבלת
המחסנית:
q1 חזור חזרה ל
q3
q4
q2
q1
q5
q1 q2 q4
q1
:HASHטבלת
המחסנית:
q1לך לבן השני של
q3
q4
q2
q1
q5
q1 q2 q4 q3
q1
q3
:HASHטבלת
המחסנית:
q1חזור חזרה שוב ל
q3
q4
q2
q1
q5
q1 q2 q4 q3
q1
:HASHטבלת
המחסנית:
?DFSכיצד אנו יכולים לבדוק תכונות בעזרת
:Invariants בדוק את כל המצבים הנשיגים . אחרת – invariantכדי לספק את תכונת ה
הראה נתיב מהמצב ההתחלתי למצב ה"פגום".:Deadlocks בדוק האם ניתן להגיע למצב בו
תהליך לא יכול להמשיך.Dead code במהלך התקדמות ה :DFS סמן ,
את כל המעברים שבוצעו לפחות פעם אחת.
גרף המצבים: יחס של ירושה בין מצבים.
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
¬(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
רוצה לעשות עוד!
.רוצה לבדוק עוד תכונות רוצה שיהיו לי אלגוריתמיים ייחודים על מנת
לטפל בכל סוגי התכונות. זה נעשה ע"י כתיבת ספציפיקציה
בפורמליקה יותר מורכבת..נראה זאת בהרצאה הבאה
[](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
Turn=0L0,L1
Turn=1L0,L1
init
היגדים מצורפים לצמתים נכנסים•
כל הצמתים מקבלים•
Turn=1L0,L1
Turn=0L0,L1
תנאי נכונות
אנו רוצים למצוא תנאי נכונות למודל עלמנת לספק את הספציפיקציה.
:שפת המודל L(Model):שפת הספציפיקציהL(Spec) :אנו רוציםL(Model) L(Spec)
נכונות
כל הרצפים
רצף סיפוקים של הספציפיקציה
ביצועים של התוכנית
איך נוכיח נכונות?
נראה שL(Model) L(Spec) :בשקילות______
L(Model) L(Spec) = Øנראה ש בנוסף: ניתן לקבל אתL(Spec) ע"י תרגום
!LTLמ
מה אנו צריכים לדעת?
?כיצד לבצע חיתוך של שני אוטומטים?כיצד לקבל משלים של אוטומט כיצד לתרגם מLTL?לאוטומט
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
)כל המצבים של האוטומט השני דוגמה מקבלים!(
a
bct0 t1
a
a
b,c
b,cs0 s1
(s0,t0( ,)s0,t1( ,)s1,t0( ,)s1,t1)מצבים:
(s0,t0 )התחלתי: ( s0,t0( ,)s0,t1 )מקבלים:
a
bct0 t1
a
a
b,c
b,cs0 s1
s0,t0
s0,t1
s1,t1
s1,t0b
b
a
c
a
c
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
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
חיתוך – מקרה כללי
q0 q2
q3q1
q0,q3 q1,q3q1,q2
a a, c
c
c, bb
c
c
b
a
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
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
צור מצב מקבל באחת הגירסאות על פי מצב מקבל של הרכיב
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גירסה
(?emptinessכיצד נבדוק ריקנות )
s0,t0
s0,t1
s1,t1
b
a
c
a
c
(...emptinessריקנות )
צריך לבדוק האם קיימת ריצה מקבלת )עוברת על מצב מקבל אינסוף פעמים(
(SCC)רכיב קשיר חזק
קבוצת מצבים בעלי מסלול בין כל זוג מהם.
כדי Tarjan של DFSניתן להשתמש באלג' המקסימלי.SCCלמצוא את ה
מציאת ריצות מקבלות
אם קיימת ריצה מקבלת, אז לפחות על מצב מקבל אחד נחזור לעד.
נתבונן על הסיומת של הריצה הזו, היכן שכל המצבים נראים עבירים אינסוף פעמים.
מצבים אלו יוצרים רכיב קשיר חזק על גרף האוטומט, כולל מצב מקבל.
נמצא רכיב כזה היוצר מעגל מקבל הכולל מצב מקבל.
בשקילות…
רכיב קשיר חזק: קבוצת צמתים בה כל צומתנגיש ע"י מסלול מכל צומת אחר. נמצא רכיב
קשיר חזק נגיש בעל מצב מקבל.
כיצד להשלים?
!השלמה היא קשה ניתן לשאול מה השלילה של המאפיין
)הרצפים שלא אמורים להתרחש לעולם( ניתן לתרגם מנוסחתLTL
לאוטומטואזלהשליםאתאבל:
ישירותלאוטומט¬ניתן לתרגם את
בדיקת מודל תחת הוגנות
.φבטא את ההוגנות כמאפיין תחת הוגנות, בדוק מודל ψכדי להוכיח מאפיין
φψ
Fair (φ)
Bad (¬ψ) Program
דוגמה נגדית
בדיקת מודל תחת הוגנות
נתמקצע בבדיקת מודל. עבור הוגנות תהליך חלשה: נחפש רכיב קשיר חזק נגיש, כך
אוPשעבור כל תהליך שהוא מכיל מופע של מעבר מPאו , שהוא מכיל מצב בוPלא פעיל