ITP-Course/exercises
Thomas Tuerk 3c35cc25c3 initial version
cleaned-up the sources of the ITP course
- remove internal notes
- remove exercise solutions
- remove KTH logo
- add Creative Commons license
2019-11-11 13:42:59 +01:00
..
e4-material initial version 2019-11-11 13:42:59 +01:00
e5-material initial version 2019-11-11 13:42:59 +01:00
a2.dot initial version 2019-11-11 13:42:59 +01:00
a2.eps initial version 2019-11-11 13:42:59 +01:00
e1.tex initial version 2019-11-11 13:42:59 +01:00
e2.tex initial version 2019-11-11 13:42:59 +01:00
e2Script.sml initial version 2019-11-11 13:42:59 +01:00
e3.tex initial version 2019-11-11 13:42:59 +01:00
e3Script.sml initial version 2019-11-11 13:42:59 +01:00
e4.tex initial version 2019-11-11 13:42:59 +01:00
e5.tex initial version 2019-11-11 13:42:59 +01:00
e6.tex initial version 2019-11-11 13:42:59 +01:00
e7.tex initial version 2019-11-11 13:42:59 +01:00
func_array.dot initial version 2019-11-11 13:42:59 +01:00
func_array.eps initial version 2019-11-11 13:42:59 +01:00
Makefile initial version 2019-11-11 13:42:59 +01:00
philScript.sml initial version 2019-11-11 13:42:59 +01:00
README initial version 2019-11-11 13:42:59 +01:00

This directory contains exercises that were used during a ITP Course
at KTH in Stockholm in 2017 (see
https://www.kth.se/social/group/interactive-theorem-/). These
exercises are intended to accompany the slides of this course that has
been made publicly available.

When working on the exercises, you don't need to read to the end of
the whole sheet before starting to work on an exercise. However, I
highly recommend reading all subquestions first. Some are easier, if
the have already been considered while working on previous
parts. Often there are hints at the very end of an exercise sheet. The
intention is that you work on exercise first without these hints. If
you have trouble, they provide some help. Usually it is a valuable
learning experience thinking about what is explained by the hints. So,
I really recomment to first attempt the exercises without the hints
first.


There are the following exercise sheets:


0) Background Questionaire (before lecture started)

This was handed out before the lecture even started. It's intention
was to get a feeling for the background of the students. It was
expected that students on average are able to solve half of the
questions within 1 h.


1) Exercise 1 (very beginning of Course)

This exercise asks students to set up their HOL environment and
practise using SML. It was handed out at the very beginning of the
course and does not require any knowledge from the course.


2) Exercise 2 (after Part 6, i.e. after forward proofs)

Learn basic usage of HOL and emacs. How to construct terms, simple
forward proofs and simple proof automation.


3) Exercise 3 (after part 9, i.e. after induction proofs)

Play around with simple backward proofs.


4) Exercise 4 (after part 11, i.e. good definitions)

Some simple proofs and definitions. The challange is how to structure your
proofs nicely. Moreover, this exercise requires some SML programming and
connects proofs and SML execution.


5) Exercise 5 (after part 12, i.e. deep/shallow embeddings, knowledge about simplifier from part 13 useful)

This exercise focuses on the effect of different definitions on
proofs. Moreover, more so than in exercise 4 students are required to
structure their development by defining own auxiliary definitions and
lemmata. Some proof ideas are, while still rather simple, not trivial.
This exercise can be solved without using the simplifier. However, the
simplifier can help a lot. Similarlish it is encouraged to really
learn how to use Metis for this exercise.


6) Exercise 6 (final project, after part 13, simplifier)

For organisational reasons, the final project was presented in
exercise 6, i.e. before exercise 7 and the end of the course.  It
requires people to learn about part of HOL themselves, do a non
trivial formalisation and come up with some non trivial proofs.
Exercise 6 is intentend to take 3-4 times as much time as the other
exercises.


7) Exercise 7 (after part 14, advanced definitions)

Some exercises about advanced usages of the simplifier and how to use
inductive relations. It is very short, since people were in parallel
working already on their final project.