Symbols
Preface
Basics: Functional Programming and Reasoning About Programs
- Enumerated Types
- Proof By Simplification
- The intros Tactic
- Proof by Rewriting
- Case Analysis
- Naming Cases
- Induction
- Formal vs. Informal Proof
- Proofs Within Proofs
- More Exercises
Lists: Products, Lists and Options
- Pairs of Numbers
- Lists of Numbers
- Reasoning About Lists
- Options
- The apply Tactic
- Varying the Induction Hypothesis
- Exercise: Dictionaries
Poly: Polymorphism and Higher-Order Functions
Ind: Propositions and Evidence
- Generalizing Induction Hypotheses
- Review
- Programming with Propositions
- Evidence
- The Big Picture: Coq's Two Universes
- Informal Proofs
- Optional Material
- Additional Exercises
Logic: Logic in Coq
- Quantification and Implication
- Conjunction
- Disjunction
- Falsehood
- Negation
- Existential Quantification
- Equality
- Relations as Propositions
- Optional Material
Rel: Properties of Relations
SfLib: Software Foundations Library
Imp: Simple Imperative Programs
- Arithmetic and Boolean Expressions
- Coq Automation
- Evaluation as a Relation
- Expressions With Variables
- Commands
- Evaluation
- Reasoning About Programs
- Additional Exercises
ImpParser: Lexing and Parsing in Coq
Equiv: Program Equivalence
- Behavioral Equivalence
- Properties of Behavioral Equivalence
- Case Study: Constant Folding
- Proving That Programs Are Not Equivalent
- Doing Without Extensionality (Optional)
- Additional Exercises
ImpList: Imp Extended with Lists
Hoare: Hoare Logic
HoareAsLogic: Hoare Logic as a Logic
Smallstep: Small-step Operational Semantics
Stlc: The Simply Typed Lambda-Calculus
- More Automation
- Typed Arithmetic Expressions
- The Simply Typed Lambda-Calculus
- Exercise: STLC with Arithmetic
Typechecking
MoreStlc: More on the Simply Typed Lambda-Calculus
Records: Adding Records to STLC
References: Typing Mutable References
- Pragmatics
- Operational Semantics
- Typing
- Properties
- References and Nontermination
- Additional Exercises
Subtyping
Subtyping
RecordSub: Subtyping with Records
Norm: Normalization of STLC
UseTactics: Tactic Library for Coq: a gentle introduction
- Tactics for introduction and case analysis
- Tactics for n-ary connectives
- Tactics for working with equality
- Some convenient shorthands
- Tactics for advanced lemma instantiation
UseAuto: Theory and Practice of Automation in Coq Proofs
- Basic Features of Proof Search
- How Proof Search Works
- Examples of Use of Automation
- Advanced Topics in Proof Search
- Decision Procedures
LibTactics: A Collection of Handy General-Purpose Tactics
- Additional notations for Coq
- 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
- Check no evar in goal
- Tagging of hypotheses
- Tagging of hypotheses
- Deconstructing terms
- Action at occurence and action not at occurence
- An alias for eq
- Backward and forward chaining
- Introduction and generalization
- Rewriting
- Inversion
- Induction
- 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
PE: Partial Evaluation
- Generalizing Constant Folding
- Partial Evaluation of Commands, Without Loops
- Partial Evaluation of Loops
- Partial Evaluation of Flowchart Programs
Postscript
This page has been generated by coqdoc