Spring 2024

- Homework #1: Predicate Strength/Weakness Sample Solutions
- Homework #2: Proofs of Simple Programs
- Homework #3: Catenation, Selection, Repetition
- Homework #4: Repetition, including Strengthening the Loop Invariant
- Homework #5: Tail Recursion
- Homework #6: Array Assignment
- Homework #7: Majorities; Array Assignment

- Prog. Assg. #1: Longest Common Subsequence

- The Dafny Programming and Verification Language (home page)
- Getting Started with Dafny: A Guide (web page)
- Getting Started with Dafny: A Guide (original paper?)
- Dafny Reference Manual

- Gries/Schneider Theorems as presented by Warford
- On
Proofs Involving the Replacement of A by B, where A
**implies**B - Developing Predicates from Informal Statements: A Checklist
- On the Strength/Weakness Relationship between Predicates
- Axioms for the (family of) if functions

- Properties/Laws of Hoare triples and the wp Predicate Transformer
- Law of Assumptions and Textual Substitution
- Program Verification Summary
**Correctness proofs of some simple programs:****Repetition (Looping)****Arrays****Tail Recursion**- Search by Elimination (including the Celebrity Problem and Saddleback Search)
- Development of a program for determining the majority of a bag
- Longest Increasing Subsequence (i.e., Upsequence): Gries Manber

- The Correctness-by-Construction Approach to Programming, by D.G. Kourie and Bruce W. Watson.
- Wikipedia entry on Design by Contract

- Bertrand Meyer's technology+ blog
- Loop invariants: analysis, classification, and examples
- Links to Publications
- Applying "Design by Contract"
- A Framework for Proving Contract-equipped Classes
- Towards Practical Proofs of Class Correctness
- Proving Pointer Program Properties Part 1: Context and Overview
- Proving Pointer Program Properties Part 2: The Overall Object Structure