CS410/510 Theorem Proving and Program Verification Fall 2018
Course Information
Keeping In Touch
 This web page is the primary source for information on the course, the online 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
Lecture/Textbook Notes

These are PSUspecific version of the Software Foundations textbook chapters; use these rather than the "official" versions
found on the web.

Note: These notes are password protected to prevent solutions from spreading over
the web. If you did not receive the username and password in class, contact the instructor.

Sept 25: Introduction; reasoning about simple functional programs.
(Introductory Lecture)
(Preface)
(Basics)
(Basics.v)

Sept 27/Oct 2: Inductive definitions and proofs.
(Induction)
(Induction.v)

Oct 2/4: Lists and other structured data.
(Lists)
(Lists.v)

Oct 9: Polymorphism and higherorder functions.
(Poly)
(Poly.v)

Oct 11: More essential Coq tactics.
(Tactics)
(Tactics.v)

Oct 16/18: More logic in Coq.
(Logic)
(Logic.v)
Homework Assignments
 Assignment 1
 Due 4:30pm, Tuesday, Oct 2.
 Do all nonoptional exercises in Basics.v.
 Submit your modified .v file via D2L.
 Solutions: Basics_sol.v
 Assignment 2
 Due 4:30pm, Tuesday, Oct 9.
 Do all nonoptional exercises in Induction.v and
Lists.v. Students enrolled in CS410 do not need to do exercises marked as "advanced."
 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 4:30pm, Tuesday, Oct. 16.
 Do all nonoptional exercises in Poly.v and
Tactics.v. Students enrolled in CS410 do not need to do exercises marked as "advanced."
 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 via D2L. (Please do not submit the *Test.v files.)
 Solutions: Poly_sol.v Tactics_sol.v
 Assignment 4
 Due 4:30pm, Tuesday, Oct. 23.
 Do all nonoptional exercises in Logic.v.
Students enrolled in CS410 do not need to do exercises marked as "advanced."
 Test your modified .v files by downloading LogicTest.v and
using it as in the previous assignments.
 Submit your modified .v files via D2L. (Please do not submit the *Test.v files.)