Formal Reasoning About Programs
Find a file
2016-04-29 17:37:17 -04:00
.gitignore DeepAndShallowEmbeddings: adding failure 2016-04-10 15:38:47 -04:00
_CoqProject SharedMemory chapter: operational semantics 2016-04-24 19:17:11 -04:00
AbstractInterpret.v Add AbstractInterpret; fix 8.4 compatibility 2016-03-07 18:49:16 -05:00
AbstractInterpretation.v Add AbstractInterpret; fix 8.4 compatibility 2016-03-07 18:49:16 -05:00
BasicSyntax.v Pass over BasicSyntax, adding template 2016-02-03 08:39:24 -05:00
BasicSyntax_template.v For Coq 8.5 compatibility, use [Admitted] instead of [admit] 2016-02-09 18:10:58 -05:00
ConcurrentSeparationLogic.v ConcurrentSeparationLogic: comments 2016-04-29 11:16:50 -04:00
DeepAndShallowEmbeddings.v DeepAndShallowEmbeddings: Coq 8.4 support 2016-04-11 08:13:49 -04:00
DeepAndShallowEmbeddings_template.v DeepAndShallowEmbedding_template 2016-04-11 08:30:17 -04:00
DeeperInterp.ml DeepAndShallowEmbeddings: Deep 2016-04-10 15:10:56 -04:00
DeeperWithFailInterp.ml DeepAndShallowEmbeddings: adding failure 2016-04-10 15:38:47 -04:00
DeepInterp.ml DeepAndShallowEmbeddings: Deep 2016-04-10 15:10:56 -04:00
Frap.v Strengthen [sets] tactic 2016-04-26 20:52:39 -04:00
frap_book.tex ConcurrentSeparationLogic chapter: proofreading 2016-04-29 17:37:17 -04:00
HoareLogic.v HoareLogic: comments 2016-03-27 18:44:35 -04:00
Imp.v Add Imp, recapping OperationalSemantics object language and semantics 2016-03-04 12:49:08 -05:00
index.html Incorporating a variety of changes and pull requests, after things got desync'd a bit 2016-02-09 20:21:19 -05:00
Interpreters.v Rename [map] to [fmap] 2016-02-09 09:07:37 -05:00
Interpreters_template.v For Coq 8.5 compatibility, use [Admitted] instead of [admit] 2016-02-09 18:10:58 -05:00
Invariant.v Add [parallel] to libary 2016-02-22 17:28:40 -05:00
LambdaCalculusAndTypeSoundness.v Change some tactics to use their usual names in the book code 2016-03-13 21:15:03 -04:00
LambdaCalculusAndTypeSoundness_template.v LambdaCalculusAndTypeSoundness_template 2016-03-14 13:14:41 -04:00
Makefile Add SepCancel to 'lib' target 2016-04-19 14:29:02 -04:00
Map.v SeparationLogic: soundness proof 2016-04-17 16:55:52 -04:00
ModelCheck.v SharedMemory: model-checking example, after tweaking library 2016-04-21 13:42:30 -04:00
ModelChecking.v Tweaked Ltac singletoner to display state space exploration in real time 2016-02-22 17:53:31 -05:00
ModelChecking_template.v ModelChecking_template 2016-02-22 09:45:53 -05:00
OperationalSemantics.v Add Imp, recapping OperationalSemantics object language and semantics 2016-03-04 12:49:08 -05:00
OperationalSemantics_template.v OperationalSemantics_template (really this time) 2016-02-29 09:29:55 -05:00
README.md SharedMemory chapter: proofreading 2016-04-24 22:19:03 -04:00
Relations.v SharedMemory: first optimization 2016-04-21 19:12:02 -04:00
SeparationLogic.v ConcurrentSeparationLogic: a producer-consumer example (after tweaking SepCancel) 2016-04-28 10:03:10 -04:00
SeparationLogic_template.v ConcurrentSeparationLogic: a producer-consumer example (after tweaking SepCancel) 2016-04-28 10:03:10 -04:00
SepCancel.v ConcurrentSeparationLogic: a producer-consumer example (after tweaking SepCancel) 2016-04-28 10:03:10 -04:00
Sets.v Sets: change parsing precedence 2016-04-26 13:46:48 -04:00
SharedMemory.v SharedMemory: make work with Coq 8.5 2016-04-25 09:00:28 -04:00
TransitionSystems.v Harmonize inductive-definition convention 2016-02-16 11:41:30 -05:00
TransitionSystems_template.v Harmonize inductive-definition convention 2016-02-16 11:41:30 -05:00
TypesAndMutation.v A fix for Coq 8.4 2016-03-25 13:22:16 -04:00
Var.v Interpreters: factorial example 2016-02-06 22:09:37 -05:00

Formal Reasoning About Programs

This is an in-progress, open-source book by Adam Chlipala simultaneously introducing the Coq proof assistant and techniques for proving correctness of programs. That is, the game is doing completely rigorous, machine-checked mathematical proofs, showing that programs meet their specifications.

Just run make here to build everything, including the book frap.pdf and the accompanying Coq source modules.

Code associated with the different chapters

  • Chapter 2: BasicSyntax.v
  • Chapter 3: Interpreters.v
  • Chapter 4: TransitionSystems.v
  • Chapter 5: ModelChecking.v
  • Chapter 6: OperationalSemantics.v
  • Chapter 7: AbstractInterpretation.v
  • Chapter 8: LambdaCalculusAndTypeSoundness.v
  • Chapter 9: TypesAndMutation.v
  • Chapter 10: HoareLogic.v
  • Chapter 11: DeepAndShallowEmbeddings.v
  • Chapter 12: SeparationLogic.v
  • Chapter 13: SharedMemory.v