CS410/510 Theorem Proving and Program Verification Winter 2021
Course Information
Keeping In Touch
- This web page is the primary source for information on the course, the on-line textbook, assignments, etc.
- Important announcements will be sent by email to all registered students.
- There is a slack channel for informal
communication about the course. Use it freely. The instructor will monitor it regularly
and jump in when that seems useful.
- There is a D2L site for the course, but this
will be used only for homework submission and grading feedback.
Coq Resources
Exams
- Midterm Exam
- Due Tuesday, Feb. 16 at 10am. You should submit what you have after 4 hours of work on the exam.
- Here is the file: midterm.v
- Midterm solution: midterm_sol.v
- You will also need the official solution versions of all the files we've studied up through IndProp.v.
- Download them from the links under "Homework Assignments" below into a fresh directory.
- Rename each foo_sol.v to foo.v.
- Compile them in order using "coqc -Q . LF foo.v"
- Do this before you start the clock on your midterm!
Lecture/Textbook Notes
Homework Assignments
- Assignment 1
- Due 10am, Tuesday, Jan 12.
- Do all non-optional exercises in Basics.v.
- Checking file: BasicsTest.v.
- Submit your modified .v file via D2L.
- Solutions: Basics_sol.v
- Assignment 2
- Due 10am, Tuesday, Jan. 19.
- Do all non-optional exercises in Induction.v and
Lists.v.
- You can test your modified .v files by downloading InductionTest.v and ListsTest.v and then doing the following commands at command level:
- coqc -Q . LF Induction.v
- coqc -Q . LF InductionTest.v
and similarly for Lists/ListsTest.
- Submit your modified .v files via D2L. (Please do not submit the *Test.v files.)
- Solutions: Induction_sol.v Lists_sol.v
- Assignment 3
- Due 10am, Tuesday, Jan. 26.
- Do all non-optional exercises in Poly.v and
Tactics.v.
- Test your modified .v files by downloading PolyTest.v and TacticsTest.v and using them as in the previous assignment.
- Submit your modified .v files separately via D2L. (Please do not submit the *Test.v files.)
- Solutions: Poly_sol.v Tactics_sol.v
- Assignment 4
- Due 10am, Tuesday, Feb. 2.
- Do all non-optional exercises in Logic.v.
- Test your modified .v files by downloading LogicTest.v and
using it as in the previous assignments.
- Submit your modified .v file via D2L. (Please do not submit the *Test.v file.)
- Solutions: Logic_sol.v
- Assignment 5
- Due 10am, Tuesday, Feb. 9.
- Do all non-optional exercises in IndProp.v.
- Test your modified .v files by downloading the latest version of IndPropTest.v and using it as in the previous assignments.
- Submit your modified .v file via D2L. (Please do not submit the *Test.v file.)
- Solutions: IndProp_sol.v
- Assignment 6
- Due 10am, Tuesday, Feb. 23.
- Do all non-optional exercises in Perm.v, Sort.v, and BagPerm.v.
- Test your modified .v files by downloading PermTest.v,SortTest.v, and BagPermTest.v, and using them as in the previous assignments. You'll need to compile with
- coqc -Q . VFA Perm.v
- coqc -Q . VFA PermTest.v
- coqc -Q . VFA Sort.v
- coqc -Q . VFA SortTest.v
- coqc -Q . VFA BagPerm.v
- coqc -Q . VFA BagPermTest.v
- Submit your modified .v files via D2L. (Please do not submit the *Test.v files.)
- Solutions: Perm_sol.v Sort_sol.v BagPerm_sol.v
- Assignment 7
- Assignment 8
- Due 10am, Thursday, Mar 11.
- Do all non-optional exercises in Hoare.v and Hoare2.v.
- You'll need to compile Maps.v, Imp.v and these files with -Q . PLF in your _CoqProject file or as flag to coqc. Note that this is a different version of Maps.v than we used before.
- Test your modified .v files by downloading HoareTest.v and Hoare2Test.v, and using them as in previous assignments.
- Submit your modified .v files via D2L. (Please do not submit the *Test.v files.)
- Solutions: Hoare_sol.v Hoare2_sol.v
- Assignment 8
- Due 11pm, Sunday, Mar. 21.
- Obtain a working Dafny environment and work through the basic tutorial.
- Write and verify a Dafny program of any size and description, and submit via D2L.