4.4.6.2. כלל F* להוכחת עצירה
מטרת כלל זה היא להוכיח
. דרך הפעולה:
- בחרו קבוצה מבוססת היטב
עם סדר חלקי
.
- בחרו נקודות חתך (באופן זהה לזה שבחרנו נקודות חתך ב-F).
- לכל נקודת חתך, התאימו טענה אינדוקטיבית פרמטרית,
כאשר
משתנה שתחומו
ו-
הם משתני התוכנית.
- הוכיחו את תנאי הנכונות הבאים:

עבור כל
מסלול
ללא נקודות חתך באמצע ![plot:$\left( {Dec}
\right)\begin{array}{*{20}{c}}
{} & {}
\\
\end{array} \forall \bar x\forall
w{I_l}\left( {\bar x,w} \right) \wedge {R_\alpha }\left( {\bar x} \right) \to
\exists \underbrace {w'}_{ \in W}\left[ {w' < w \wedge {I_{l'}}\left(
{{T_a}\left( {\bar x} \right),w'} \right)} \right]$](/documentResources/326/plot_666.png)
בצורה כזאת נוכיח
- אם תנאי ההתחלה מתקיים, אז
התוכנית עוצרת.
באופן אינטואיטיבי לא פורמאלי, נשים לב
כי מכיוון שמתקיים שבין כל שתי נקודות חתך ערכו של
קטן, וכן לא קיימת סדרה יורדת אינסופית ב-
,
הרי שחייב להיות סוף לתהליך ומכאן התוכנית עוצרת.
אם היינו רוצים גם להוכיח נכונות
"באותה הזדמנות" היינו צריכים להוכיח:
(האינווריאנטה של נקודת
העצירה מספקת את תנאי הסיום).
משפט (ללא הוכחה): הכלל F* הוא נאות ושלם.
נאותות F*: אם
אז 
למה עבור F*: אם
אזי לכל חישוב
של
שמתחיל מ-
במצב
כך ש-
, אם החישוב מגיע לנקודה
במצב
אז קיים
כך ש-
.
אינטואציה להוכחת שלמות F*: אם
החישוב סופי, נתאים לכל שלב את מספר הצעדים שנשארו עד העצירה.
שאלה לדוגמא
נתונה תוכנית P בשפת תרשימי הזרימה PLF
ונתונות טענות
מסדר ראשון מעל משתני התוכנית. נאמר ש-
אם לכל חישוב של P, אם
הוא מתחיל ממצב שמספק את
אז כל מצב על מסלול החישוב מספק את
.
הציעו כלל נאות ושלם להוכחת
. נמקו את נאותות ושלמות הכלל.
פתרון:
- בחר את כל צמתי התוכנית כנקודות חתך.
- לכל תווית הצמד טענה אינדוקטיבית
כאשר
ו 
- הוכח:
![plot:$\forall \bar x\left[ {{q_1}\left(
{\bar x} \right) \to {q_2}\left( {\bar x} \right)} \right]$](/documentResources/326/plot_691.png)
- לכל מסלול בסיסי
הוכח: ![plot:$\forall \bar x\left[ {{I_l} \wedge
{R_{l,l'}} \wedge {q_2} \to {I_{l'}}\left( {\bar x} \right) \wedge
{q_2}\left[ {\bar x \leftarrow {T_{l,l'}}\left( {\bar x} \right)} \right]}
\right]$](/documentResources/326/plot_693.png)