סמינר במדעי המחשב חורף תשסט תורת הטיפוסים הפשוטים הבסיסית הרצאה מס 3 ינון רפופורט חלק 1 משפט בנית הנושא
הקבלה בין עצים במערכת TAλ יש התאמה בין מבנה עץ של ההסקהΓ├M:τ לבין העץ של M נראה דוגמא:
דוגמא נסמן B=λxyz.x(yz) ראינו בהרצאה הקודמת חישוב הטיפוס של B
חישוב הטיפוס של B Γ={x:a→b,y:c→a z:c} y:c→a ├ y:c→a z:c ├ z:c (-E) X:a→b ├ x:a→b y:c→a, z:c ├ yz:a (-E) Γ├ (x(yz)):b (-I)main Γ-z ├ (λz.x(yz))c→b (-I)main Γ-z-y ├ (λyz.x(yz)):(c→a)→c→a (-I)main ├ (λxyz.x(yz)):a→b)→(c→a)→c→b
אם נשאיר רק את הנושא מהפיתוח נקבל
השוואה בין שני הציורים אנחנו רואים שקבלנו בדיוק את עץ היצירה של B
משפט בנית הנושא נניח Δ הסקת TAλ של הנוסחה M:τ ├ Γ אזי 1))אם נשמיט מכל נוסחה ב Δ כל דבר פרט לנושא אז Δ יהפוך עץ של ביטויים שהוא בדיוק עץ היצירה עבור M 2))אם M הוא אטום,נניח M≡x, אזי x:τ} }=Γ ואז Δ מכילה רק נוסחה אחת - האכסיומה x:τ ├ x:τ
משפט בנית הנושא ( המשך ) (3 ) אם M=(PQ) אזי הצעד האחרון ב Δ מוכרח להיות אפליקציה של (→E) לשתי נוסחאות מהצורה Γ † P ├ P:σ→τ Γ†Q├ Q:σ עבור איזשהו σ
משפט בנית הנושא ( המשך ) (4)אם M≡λx.P אזי τ הוא בהכרח ρ→σ יותר מזה אם xεFV(P) אזי הצעד האחרון ב Δ היה אפליקציה מהצורה (→I)main ל Γ,x:ρ ├P:σ ואם x \ε FV(P) אזי הצעד האחרון ב Δ היה אפליקציה מהצורה I)vac → ) ל Γ ├ P:σ
הגדרה הסקה TAλ (סעיף 9C1 בספר) הגדרה (הסקה TAλ) הם עצים בעלי תויות מגדרים כדלהלן כל צמת נושא שתי תויות נוסחת TAλ ומיקום. (1)הסקה אטומית היא צמת יחיד מסומן באקסיומה ומיקום ריק כך x:τ ├ x:τ position (2) אם Δ1 Δ2 הן הסקות וצמתי התחתית שלהם מסומנות במיקום והנוסחאות הן בהתאמה Γ1 ├ P:{σ→τ), Γ2 ├ Q:σ וגם Γ1 U Γ2 עקיב
הגדרה הסקה TAλ (סעיף 9C1 בספר)המשך אזי יש הסקה חדשה הקרויה (Δ1,Δ2) נבנית על ידי כך ששמים 1 לימין כל מיקום של 1 Δ ושמים 2 לימין של כל מיקום ב 2Δ ואז בונים צמת נוסף בין 2 ההסקות ששונו כפי שרואים בשרטוט Modified Δ1 modified Δ2 Γ1├ P:σ→τ 1 Γ2 ├Q:σ Γ1 U Γ2 ├ PQ:τ (3) אם Δ1 היא הסקה וצמת תחתית מסמן ב מקום והנוסחה Γ├ P:τ היא עקיבה עם x:σ, אז ההסקה החדשה נקראת (λx.Δ1)
הגדרה הסקה TAλ (סעיף 9C1 בספר) והיא נבנית עלידי כך שרושמים 0 בקצה השמאלי של כל תוית מיקום ב 1Δ ושמים צמת חדש בין ההסקה המתקנת כמו בשירטוט הבא – modified Δ1 – Γ ├ P:τ 0 –Γ –x ├ (λx.P):σ→τ
הוכחה של המשפט באינדוקציה על |M| עבור ( 1) (2) (3 ) נובע מהגדרה של הסקת מסקנות בסעיף 9C1 עבור (4) M≡λx.P נשתמש בהגדרות של (-I) בהרצאה הקודמת נקבל שהצעד האחרון ב Δ היה (→I) main Γ,x:ρ ├ P:σ אם FV(P) xε λx.P:ρ→σ Γ├ (→I)vac Γ├ P:σ אם xε\ FV(P) Γ├ λx.P:ρ→σ משל
הסקה של Δ אינה יחידה עבור ביטוי M אם Δ ההסקה של Γ├M:τ אזי מהמשפט הקודם נובע שעץ הבניה של M קובע את עץ הבניה של Δ וגם את הביטויים בכל הצמתים של Δ אבל אין להסיק מכך שכל המרכיבים של Δ נקבעים עלי ידי זה משום שיש חופש לקבוע את הטיפוסים בצמתים לא תחתונים של Δ
דוגמא 2B21A נניח M≡(λxy.y)(λz.z) ונניח גם τ≡a→a Γ=Ф להלן הסקת המסקנות Y:a ├ y:a (→I) ├ (λy.y):a→a z:σ ├ z:σ (→I) (→I) ├(λxy.y):(σ→σ)→a→a ├(λz.z):σ→σ בגלל ש Γ עקיב עם x:σ→σ (→E) ├→ (λxy.y)(λz.z):a→a –והטיפוס σ יכול להיות כלשהוא!
הערה לדוגמא אם M הוא בצורה נורמלית או ביטוי I λ ) כלומר כל תת ביטוי מהצורה λx.M ב P x מופיע חפשי לכל הפחות פעם אחת) אז החופש בחירה הזה יעלם ואז Δ (ההסקה) תיקבע באופן מחלט ע"י M. נראה זאת בלמה הבאה..
למה – יחידות ההסקה עבור nf (normal forms) נניח M הוא nf- β (כלומר לא מכיל פשטי β) ונניח Δ היא הסקה TAλ של M:τ ├ Γ אזי (1) לכל טיפוס ב Δ קיים מופע ב τ או בטיפוס ב Γ (2) Δ הוא יחיד, כלומר, אם גם Δ’ היא הסקה של M:τ ├ Γ אז ’ Δ≡Δ
הוכחה של הלמה נשתמש באינדוקציה על |M| עבור M≡y ו M≡λx.P זה קל משום M הוא nf- β כי אז τ הוא ρ→σ ואלה הטיפוסים ב λx.P עבור M=yP1..Pn נזכור : להלן למה קודמת מהספר 1B10(לא הצגה) כל N שהוא nf- β ניתן להיות מבוטא באופן יחיד בצורה N=λx 1 x 2 λx m.yN 1 N 2 N m כאשר N 1.. N m הם nf- β,ואם N סגור אזי yε{x 1,x 2,x 3 x m }
הוכחה של הלמה ( המשך ) נניח M≡yP1.. Pn ו n>1 במקרה כזה כל הסקה Δ של M:τ ├ Γ תכיל את האכסיומה y:(ρ1→ρ2…..→ρn)├ y:(ρ1→ρ2…..→ρn) וגם n הסקות Δ1 …. Δn שיתנו יחד Γ1 ├ P1: ρ1, …., Γn├ Pn: ρn ואז כאשר נפעיל אפליקציות (→E) נוכל להסיק {y:(ρ1→ρ2…..→ρn→τ)}UΓ1 … Γn├(yP1…Pn):τ ואז Γ יהיה בהכרח {y:(:(ρ1→ρ2…..→ρn→τ)}U Γ1 … Γn ואם נזכור מהו M נקבל שיש לנו פרוק מתאים ל M כל טיפוס בפיתוח (Pi או ב τ ) או בτ או ב Γ
הוכחה של הלמה ( המשך ) כדי להוכיח את ( 1) לפי חלק ( 1 ) של הנחת האינדוקציה כל טיפוס ב Δi מופיע ב i ρ או ב i Γ ולכן ב Γ כמו כן הטיפוס של y מופיע ב Γ לכן מתקיים (1) כדי להוכיח את (2) הטענה למעלה מראה ש Δ’ חיב להשתמש באותם חוקים באותו מקום כמו ב Δ והטיפוס שמתאם ל y ב Δ’ נקבע עי Γ וההנחה שהטיפוסים התלויים בהקשר (ה type-context ) הם עקיבים לכן הסוגים של P1..Pn נקבעים על ידי הסוג של y.
שימו לב ( תכונת של תת - הנוסחה ) חלק ( 1 ) מתאים למה שנקרה תכונת של תת - הנוסחה : במערכת הסקה טבעית כל נוסחה בהסקה שאי אפשר לפרק הלאה מופיעה או במסקנה או בהנחה לא משוחררת. (Undischarged assumption ) בדוגמא 2B21A הסקת TAλ מכילה את הטיפוס σ, שאינו מופיע במסקנה או בהנחה לא משוחררת הסיבה לכך היא שבM שם הוא לא בצורה נורמלית – יש שם פשט β
למת השמה ראשונה עבור הסקה למה ראשונה עבור הצבה נניח Γ├ λ M:τ וגם [y/x] Γ התוצאה של הצבת y עבור משתנה ביטוי x (term variable) ב Γ. אם מתקיים אחד מהתנאים הבאים (1) y ε\ Subjects(Γ) (2) yו x מקבלים אותו טיפוס ב Γ אזי [y/x]Γ ├ ([y/x]M):τ
הוכחת הלמה הראשונה נזכר בלמה 2A11 בספר Γ├M:τ (1) אםם subjects(Γ) superset of FV(M) וגם קיימת הסקה TAλ של הנוסחה Γ † M├ M:τ (2) ( exists Γ)(Γ├ M:τ) ↔ (exists Γ){Γ is an M context and Γ├M:τ) M context means subject(Γ)=FV(M) (3)עבור ביטוי סגור M ( exists Γ)(Γ├ M:τ) ↔ ├ M:τ
הוכחת למה ראשונה ( המשך ) בשני המקרים מקיים y/x]Γ] תנאי העקיבות עבור CONTEXT לכן לפי למה 2A11 קיימת הסקה Γ¯├M:τ עבור איזשהיא Γ¯ subset of Γ כאשר Subjects(Γ¯)=M ואז [y/x]Γ¯ עקיב ואז באינדוקציה על |M| ונראה ש [y/x]Γ¯ ├ ([y/x]M):τ הערה y יכול להיות קשור ב M. כדי לטפל במקרה ש M≡λy.P צריך להשתמש באינדוקציה פעמים ולנצל את העובדה ש |[z/y]P|=|P|
הוכחת הלמה הראשונה ( המשך ) נזכר בלמת ההחלשה מההרצאה הקודמת Γ├M:τ, Γ+ superset of Γ => Γ+ ├ M:τ ואז נקבל [y/x]Γ ├ ([y/x]M):τ כנדרש
למת שמור INVARIANT) ) α אם P:τ Γ├ וגם P≡αQ אזי Q:τ Γ├ הוכחה (מסתמך על 9C ( מספיק להוכיח עבור שנוי אחד של משתנה קשור(בשוויון α מדובר על החלפות של משתנים קשורים) לדוגמא ההחלפה של מרכיב x.M λ ב P על ידי y.[y/x]M λ אם y ε/ FV(M). אם x.M≡P λ אזי התוצאה נובעת מהלמה הקודמת (שם החלפנו x ב y) אם λx.M הוא חלק מ P זה נובע מ 59C (למת ההחלפה)
למת ההחלפה בספר (9C5) אם Δ הוא הסקת TAλ של הנוסחהM:τ ├ Γ ונניח שM מכילה מרכיב P במקום p. אזי Δ מכילה תת הסקה p Δ של נוסחה בצורה Γp ├ P:σp עבור איזה שהם Γp ו p σ. תהי T/P}pM} התוצאה של החלפת P במקום p ע"י ביטוי T כך Γ T ├ T:σp עבור איזה Γ T שהוא superset של Γ P אזי λ {T/P}p M:τ ├ Γ
למת ההצבה השניה עבור הסקה נניח 1Γ עקיבה עם 2Γ ונניח Γ1,x:σ ├ M:τ וגם N:σ ├ 2Γ אזי Γ1 U Γ2 ├ [N/x]M:τ
הוכחה של למת ההצבה השנייה עבור הסקה נניח xεFV(M) (אם לא שייך זה ברור – זה סתם הצבה) לפי למה קודמת(של שמירת α) אפשר להניח ששום משתנה קשור ב M אינו חפשי ב xN. במקרה זה [N/x]M הוא בפשטות תוצאה של החלפת כל x חפשי ב M עלידי N ללא שינויים במשתנים קשורים. לפי למה 2A11 למעלה אנחנו יכולים להניח ש Subject(Γ1)U{x}=FV(M) Subject(Γ2) = FV(N) ואז התוצאה נובעת מאינדוקציה על |M|
רדוקציה והרחבה של נושא משפט הרדוקציה של נושא אם P:τ Γ├ וגם P►βηQ אזי Γ├Q:τ
הוכחה: לפי למה 2A11 קיימת הסקה Δ של Γ¯├P:τ עבור איזה Γ¯ subset of Γ כך ש subject(Γ¯)=FV(P) לפי משפט קודם FV(P) superset of FV(Q) (בגלל ש P►βηQ) לכן לפי 9C5 מספיק להוכיח כאשר P הוא פשט β ו Q כווץ (contractum)
הוכחה(המשך) מקרה 1 P≡(λxM)N Q=[N/x]M אם X ε FV(M) אז לפי משפט הצבה לצעדים התחתונים של Δ בחישוב הטיפוס של P הם בצורה Γ1,x:σ ├ M:τ (→I)main Γ1 ├ (λx.M):(σ→τ) Γ2├ N:σ (→E) Γ1 U Γ2 ├ ((λx:M)N):τ כאשר Γ1 U Γ2 = Γ¯ במשפט ההצבה השני עבור M ו N נקבל (נזכור ש Q=[N/x]M ) Γ1 U Γ2 ├ [N/x]M:τ כלומר הראינו ש Q מהטיפוס τ אם x לא ב FV(M) - דומה
הוכחה(המשך) מקרה 2 P≡λx.Mx Q=M x ε/ FV(M) ואז ρ→σ≡τ עבור איזה שהם σ ρ ולפי משפט בנית הנושא הצעדים האחרונים ב Δ הם מהצורה Γ¯├ M:ρ→σ x:ρ├ x:ρ (→E) Γ¯, x:ρ ├ Mx:σ (→I)main Γ¯ (λx.Mx):ρ→σ כלומר Δ מכילה הסקה של Γ¯ ├M:τ כפי שנדרש (שורה ראשונה) כאן M≡Q מצאנו שהטיפוס של Q הוא גם כן τ
הגדרות (1D5 בספר ) כווץ β (λx.M) N ►β [N/x]M נקרא מבטל את N אם x לא מופיע חפשי ב M הכווץ נקרא מכפיל (את N ) אם x מופיע לכל הפחות פעמיים באופן חפשי ב M הפחתת β נקראת לא-מכפילה אם אף אחד מהכווצים אינו מכפיל היא נקראת לא-מבטלת אם אף אחד מהכווצים אינו מבטל
משפט הרחבת נושא ( ללא הוכחה ) אם Γ├Q:τ וגם P►βQ עם כווץ לא מכפיל ולא מבטל אזי Γ├P:τ
מסקנה משני המשפטים אם P הוא ביטוי BCIλ סגור וגם P ►βQ אזי Γ├ P:τ ↔ Γ├Q:τ הוכחה – השתמש במשפט הכווץ בשביל להוכיח ש Γ├Pτ => Γ├ Q:τ להלן למת עזר (לא הופיעה בהרצאה קודמת)1D6 כל הפחתת β של ביטוי λI הוא לא מבטל כל ביטוי BCKλ הוא לא מכפיל וכל ביטוי BCIλ הוא גם לא מבטל וגם לא מכפיל אם נעזר בלמה הזו ובמשפט ההרחבה נקבל Γ├ Q:τ => Γ├P:τ
דוגמאות כאשר תנאי משפט לא מתקימים דוגמא 1 P►Q עלידי ביטוי כן מבטל ול Q יש טיפוס אבל ל P אין טיפוס P≡(λuv.v)(λx.xx) Q=λv.v אזי מתקיים Q:a→a ├ אבל שום הפחתה TAλ לא תהיה בצורה P:τ ├ משום שאז הייתה הסקה (λx.xx):σ ├ עבור איזהשהוא σ וראינו שזה לא אפשרי בהרצאה קודמת. הבעיה היא שיש כן ביטוי מבטל בניגוד לתנאי המשפט
דוגמאות כאשר תנאי משפט לא מתקיימים ( המשך ) דוגמא 2 P►Q עלידי ביטוי כן מכפיל ו לQ יש טיפוס, אבל ל P אין טיפוס.נסמן ב I את ביטוי הזהות I≡a→a וגם נסמן P≡(λx.xx)I Q=II אזי מתקיים a→a Q: ├ אבל ל P אין טיפוס כי ל x.xx λ אין טיפוס
דוגמאות כאשר תנאי משפט לא מתקיימים ( המשך ) P►βQ על ידי ביטול, ל P ו Q יש טיפוסים, אבל ל Q יש יותר טיפוסים מאשר ל P P≡λxyz.(λu.y)(xz) ו Q≡λxyz.y אפשר להראות P:(c→d)→b→c→b ├ ו ├Q:a→b→c→b בהמשך הספר 3E1 מראים שהטיפוסים של P ו Q הם הרשומים כאן וב Q יש יותר אפשרויות: ב P פרמטר ראשון חיב להיות פונקציה ב Q אין מגבלה כזו
דוגמאות כאשר תנאי משפט לא מתקיימים ( המשך ) P►Q ע"י הכפלה ל P ו Q יש טיפוסים, אבל ל Q יש יותר טיפוסים מאשר ל P P≡(λvxyz.v(y(vxz)))I ו Q≡λxyz.I(y(Ixz)) אפשר להראות P:(a→b)→(b→a→b)→a→a→b ├ Q:(a→b)→(b→c)→a→c ├ גם כאן שימוש ב 3E1 יראה ש P לא מקבל כל טיפוסים של Q (ב P v מופיע פעמים לכן יש מגבלה)
דוגמאות כאשר תנאי משפט לא מתקיימים ( המשך ) P עובר η ל Q ל P Q יש טיפוסים, אבל ל Q יש יותר טיפוסים מאשר ל P. P≡λxy.xy Q≡λy.y אפשר לראות ש ├P:(a→b)→a→b ├Q:a→a אבל הסקה TAλ של P:a→a ├ לא אפשרית כי x היא במקום של פונקציה ב P
הגדרות ( סוגי M) הגדרה אם M סגורה הגדר Types(M) להיות כל ה τ כך ש M:τ ├ בפרק הבא נראה שאם Types(M) לא ריק הטיפוסים שבו הם התממשות substitution-instance)) של טיפוס אחד - הטיפוס העיקרי של M. לפיכך Types(M) הוא או ריק או אנסופי
למה נניח P סגורה אזי (1 ) אם P►βQ אזי Types(P) subset of Types(Q) (2 ) אם P►βQ עי הפחתה לא מבטלת ולא מכפילה אזי Types(P) = Types(Q) הוכחה לפי משפטי ההפחתה וההרחבה.(כמו במסקנה שם)
הערה ( שימור של המרה ) הדוגמאות מראות שלא תמיד מתקיים M=βN => Types(M)=Types(N) למעשה נראה בעתיד (7A2.1) מקרה שבו M=βN אבל Types(M)∩Types(N)=Φ כך ש Types(M) לא משתמר תחת המרה זה חסרון של מערכת הטיפוסים נוסח Curry לעומת זו של Church
הערה ( המשך ) בפרק 4 נראה חוק נוסף ל TAλ כך שהפגיעה לא גדולה אם נראה את חישוב הטיפוס M:σ→τ כאומר שאפליקציה של M לכל ביטוי עם הטיפוס σ הוא "בטוח" אז התכונה המעשית החשובה ביותר הוא משפט הפחתת הנושא שאומר שאם לM יש הטיפוס σ→τ הוא לא יאבד את תכונת ה "בטיחות" אחרי הפחתה. אם Types(M) גדלה כאשר M מופחת זה לא בעיה אלא אומר ש M בטוחה יותר ביחוד שפות מעשיות כמו ML וקרובות אליה פועלות מאד בהצלחה בלי שימור בזמן המרה