- Visit the cs510coq list homepage to subscribe.

- The Coq home page.
- The Reference Manual and the Standard Library description are your friends.
- You'll certainly want to use either CoqIde (documented within the reference manual) or Proof General to interact with Coq.
- The book Certified Programming with Dependent Types by Adam Chlipala has lots of useful information on more advanced Coq topics.

- Final exam
- midterm.v (with solutions)
- Examples of using <-> and Sections, given in class (midterm_aids.v)

- 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 today, contact the instructor.
- Dependency chart for whole textbook.
- Apr. 1: Introduction; reasoning about simple functional programs. (Preface) (Basics) (Basics.v)
- Apr. 3: Inductive definitions and proofs. (Induction) (Induction.v)
- Apr. 8: Lists and other structured data. (Lists) (List.v)
- Apr. 10: Polymorphism and higher-order functions. (Poly) (Poly.v)
- Apr. 15: More essential Coq tactics. [Updated 15Apr2013 5:05pm] (MoreCoq) (MoreCoq.v)
- Apr. 17: Inductive propositions. (Prop) (Prop.v)
- Apr. 22: More about propositions. (MoreProp) (MoreProp.v)
- Apr. 24: Logical connectives. (Logic) (Logic.v)
- Apr. 29: Proof Objects. (ProofObjects) (ProofObjects.v)
- May 1: More about Induction. (MoreInd) (MoreInd.v)
- May 6: Simple Imperative Programs. (SfLib.v) (Imp) (Imp.v) Additional files: (ImpCEvalFun) (ImpCEvalFun.v) (ImpParser) (ImpParser.v)
- May 8: Dependent Types in Programming. (Guest lecture by Larry Diehl.) (DtpLecture.v)
- May 13: Program Equivalence. (Equiv) (Equiv.v)
- May 15: Hoare Logic. (Hoare) (Hoare.v) Additional files: (Hoare2) (Hoare2.v) (HoareList) (HoareList.v)
- May 20: Hoare Logic as a Logic; Automation. (HoareAsLogic) (HoareAsLogic.v) (Auto) (Auto.v) Additional files: (Smallstep) (Smallstep.v) (Types) (Types.v) (Stlc) (Stlc.v) (StlcProp) (StlcProp.v) (MoreStlc) (MoreStlc.v) (References) (References.v) (Sub) (Sub.v) (Norm) (Norm.v) (LibTactics) (LibTactics.v) (UseTactics) (UseTactics.v) (UseAuto) (UseAuto.v)
- May 22-29: Compiler Verification and Translation Validation (slides) (compver.v)
- June 3: SMT Provers (Comprehensive slides from a course by Sylvain Conchon.)

- Assignment 1
- Due 2pm, Monday, Apr. 8.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do all 1-starred exercises, plus: blt_nat, boolean functions, binary, decreasing, andb_true_elim2, basic_induction, mult_comm, binary_commute.
- Solutions: Basics_sol.v Induction_sol.v

- Assignment 2
- Due 2pm, Monday, Apr. 15.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do all 1-starred exercises, plus: list_funs, alternate, bag_functions, bag_theorem, list_exercises, list_design, bag_count_sum, beq_natlist, split, partition, map-rev, override_neq, fold_length, fold_map.
- Solutions: Lists_sol.v Poly_sol.v

- Assignment 3
- Due 2pm, Monday, Apr. 22.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do all 1-starred exercises, plus: apply_exercise1, plus_n_n_injective, beq_nat_eq, gen_dep_practice, combine_split, destruct_eqn_practice, override_some, beq_nat_sym, beq_nat_trans, split_combine, filter_exercise, gorgeous_sum, beautiful_gorgeous, ev_ev__ev, palindromes.
- Solutions: MoreCoq_sol.v Prop_sol.v

- Assignment 4
- Due 2pm, Monday, Apr. 29.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do all 1-starred exercises, plus: total_relation, empty_relation, R_provability, R_fact, combine_odd_even, and_assoc, even__ev, or_distributes_over_and_2, or_distributes_over_and, True, contrapositive, ev_not_ev_S, not_eq_beq_false, beq_false_not_eq, ble_nat_false, not_exists_dist, dist_exists_or, leibniz_equality, all_forallb, no_repeats, nostutter.
- Solutions: MoreProp_sol.v Logic_sol.v

- Assignment 5
- Due 2pm, Monday, May 13.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do these exercises from Imp.v: optimize_0plus_b, bevalR, update_eq, update_neq, update_example, update_shadow, update_same, update_permute, loop_never_stops, no_whiles_terminating, stack_compiler, stack_compiler_correct.
- Solutions: Imp_sol.v

- Assignment 6
- Due 2pm, Monday, May 20.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do these exercises from Equiv.v and Hoare.v: equiv_classes, skip_right, IFB_false, swap_if_branches, WHILE_true, assign_aequiv, CIf_congruence, fold_constants_com_sound, inequiv_exercise, himp_ceval, havoc_swap, swap_noninterfering_assignments, valid_triples, hoare_asgn_examples, hoare_asgn_wrong, hoare_asgn_examples_2, hoare_asgn_example4, swap_exercise, if_minus_plus, if1_hoare.
- Solutions: Equiv_sol.v
- Solutions: Hoare_sol.v

- Assignment 7
- Due 2pm, Wednesday, May 29.
- Submit your modified .v files as attachments in mail to apt@cs.pdx.edu.
- Do these exercises from HoareAsLogic.v: hoare_proof_sound, hoare_proof_complete.
- Find two largish proofs from previous assignments and automate them as far as you can using (e)auto and match goal.
- Solutions: HoareAsLogic_sol.v

- Assignment 8
- Due 2pm, Wednesday, June 5.
- Complete the assignment in norm_aexp.v.
- Submit your modified .v file as an attachment in mail to apt@cs.pdx.edu.
- Solution: norm_aexp_sol.v.