Preface
Program Equivalence (Equiv)
Hoare Logic, Part I (Hoare)
Hoare Logic, Part II (Hoare2)
Hoare Logic as a Logic (HoareAsLogic)
Small-step Operational Semantics (Smallstep)
Type Systems (Types)
The Simply Typed Lambda-Calculus (Stlc)
Properties of STLC (StlcProp)
More on the Simply Typed Lambda-Calculus (MoreStlc)
Subtyping (Sub)
A Typechecker for STLC (Typechecking)
Adding Records to STLC (Records)
Typing Mutable References (References)
Subtyping with Records (RecordSub)
Normalization of STLC (Norm)
Partial Evaluation (PE)
Postscript
Bibliography (Bib)
A Collection of Handy General-Purpose Tactics (LibTactics)
- Fixing Stdlib
- Tools for Programming with Ltac
- Identity Continuation
- Untyped Arguments for Tactics
- Optional Arguments for Tactics
- Wildcard Arguments for Tactics
- Position Markers
- List of Arguments for Tactics
- Databases of Lemmas
- On-the-Fly Removal of Hypotheses
- Numbers as Arguments
- Testing Tactics
- Testing evars and non-evars
- Check No Evar in Goal
- Helper Function for Introducing Evars
- Tagging of Hypotheses
- More Tagging of Hypotheses
- Deconstructing Terms
- Action at Occurence and Action Not at Occurence
- An Alias for eq
- Check as a tactic instead of a top-level command, with possibility to turn off
- Common Tactics for Simplifying Goals Like intuition
- Backward and Forward Chaining
- Introduction and Generalization
- Rewriting
- Inversion
- Induction
- Coinduction
- Decidable Equality
- Equivalence
- N-ary Conjunctions and Disjunctions
- Tactics to Prove Typeclass Instances
- Tactics to Invoke Automation
- Tactics to Sort Out the Proof Context
- Tactics for Development Purposes
- Compatibility with standard library