שאלה - שפת "ויקיש" (INFERRED) - גישה אקדמית מדויקת

להלן נתונה תוכנית בשפת "ויקיש" (INFERRED):

let q = proc(y:?) zero? (-(y,10)) in let p = proc(x:?) if (x 5) then (q 10) else (q 20) in (p q)

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

סעיף א'

הקצו לביטוי הנתון בשאלה ולתתי הביטויים שלו משתני-טיפוס מתאימים, וחברו משוואות מתאימות לביטוי הנתון ולתתי הביטויים שלו.

סעיף ב'

פתרו את המשוואות שהרכבתם בסעיף א' תוך שימוש ב- substitution ו- unification בדומה למתואר בספר בעמודים 258-252. בסיום פתרון המשוואות רשמו מהו הטיפוס שאותו הקשתם עבור התוכנית הנתונה.