Introduction to Formal Verification course at CS Club
- Setup Alectryon using its installation instructions and add it to your
PATH
. (You need Alectryon v1.1 or newer). - Run
make
ormake doc
in the project root directory.
- Intro to formal verification slides
- Intro to functional programming in Coq: source, rendered
- No seminar
- Homework: hw01.v
- Polymorphic functions & Dependent functions, Implicit Arguments, Notations, Product types and sum types: source, rendered
- Seminar: seminar01.v
- Homework: hw02.v
- Defining logic, equality. Dependent pattern matching: source, rendered
- Seminar: seminar02.v
- Homework: hw03.v
- Injectivity and disjointness of constructors, large elimination. Convoy pattern. Proofs by induction.
Prop
vsType
: source, rendered - Seminar: seminar03.v
- Homework: hw04.v
- SSReflect tactic language source, rendered
- Seminar: seminar04.v
- Homework: hw05.v
- Proofs by induction: source, rendered
- SSReflect proof methodology slides
- Seminar: seminar05.v
- Homework: hw06.v
- Views.
reflect
-predicate. Multi-rewrite rules: source, rendered - Seminar: seminar06.v
- Homework: hw07.v
- Canonical Structures & Hierachies slides
- Canonical Structures & Hierachies: demo (source), demo (rendered)
- Seminar: seminar07.v
- Homework: hw08.v
- Verification of insertion sort and merge sort. Non-structurally recursive functions. Nested
fix
pattern.Program
plugin.Acc
-predicate. source, rendered - Seminar: seminar08.v
- Homework: hw09.v
- A potpourri of tools: automation (linear integer arithmetic, hammers), Equations plugin, property based randomized testing, mutation proving, extraction source, rendered
- Seminar: seminar09.v
- Homework: no homework
unit_neq_bool
solution and generalization by @kana-sama- A compiler from a language of arithmetic expressions to a stack language: solution and generalization by @kana-sama