Institute of Computer Science
  1. Courses
  2. 2025/26 fall
  3. Functional Programming (LTAT.03.019)
ET
Log in

Functional Programming 2025/26 fall

  • Üldinfo
    • Õppekorraldus
  • Kursus
    • KKK
    • Installimine
    • Kodutöö 1
    • Kodutöö 2
    • Kodutöö 3
    • Kodutöö 4
    • Kodutöö 5
    • Kodutöö 6
    • Kodutöö 7
    • Kodutöö 8
    • Suur kodutöö 1
    • Kodutöö 9
    • Kodutöö 10
    • Kodutöö 11
    • Kodutöö 12
    • Suur kodutöö 2
    • Kodutöö 13*
    • Kodutöö 14*
  • FP Õpik
  • Moodle
  • Zulip (sisselogides näed linki)

Kodutöö 9

Selles praktikumis joonistame tüüpimispuid lihtsalt tüübitud {$\lambda$}-arvutuses. Abiks on tüüpimisreeglid lihtsalt tüübitud {$\lambda$}-arvutuse konspektis.

Tüüpimispuud

Etteruttavalt, harjutame väga üldise meetodi väga lihtsat vormi. Tõestame formaalselt, et Churchi stiilis {$\lambda$}-term {$ t $} on mingit konkreetset tüüpi {$ \sigma $}.

Kirjutis {$\Gamma \vdash t : \sigma $} on väide, et term {$t$} on tüüpi {$\sigma$}, kus vabade muutujate tüübid on väärtustega {$\Gamma$}. Püüame selliseid väiteid tõestada, kasutades lihtsalt tüübitud {$\lambda$}-arvutuse reegleid ehk lihtsalt tüübitud {$\lambda$}-arvutuse loogikas.

Järgnevates loengutes näeme,

  1. mida teha siis, kui kogu info pole antud (Curry stiilis termide tüüpide tuletamine), ja et
  2. tüüpimispuu ehitamine on tõestamine ning
  3. formaalne tõestamine ongi täpselt tüübipuu ehitamine.

Ülesanded

Joonistage järgnevad tüüpimispuud -- kui võimalik. Mis väärtused tuleb panna lünkadesse? Kui tüüpimispuu on võimatu, kirjeldage põhjust.

  1. {$ \vdash \lambda x:\alpha.\, \lambda y:\beta.\, y : ? $}
  2. {$ \{a : \alpha\} \vdash (\lambda x:\alpha. x)\, a :\, ? $}
  3. {$ \vdash (\lambda x:\alpha. x\,x)\,(\lambda x:\alpha. x\,x) :\, ? $}
  4. {$ \vdash (\lambda x:\alpha,\, y:\alpha\to\beta\to\gamma. (\lambda z:\alpha. y)\,x\,x) :\, ? $}
  5. {$\vdash (\lambda x:\alpha,\, y:\beta, z:(\beta\to\alpha)\to\beta. z\,(\lambda w:\beta. x)) :\, ? $}
  6. {$ \vdash (\lambda x:\beta.\,\lambda y:\alpha\to\beta.\, y\,(\lambda x:\alpha.\, x)) :\, ? $}
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment