This repository contains the formalisation of the programming language EEFF.
The three branches are
- master: contains the formalisation of EEFF with predicate logic
- equational-logic: contains the formalisation of EEFF with equational logic
- bidirectional: contains the formalisation of the bidirectional type inference
All files contain Add LoadPath
commands with the relative paths prefixed by ???
to allow a search-and-replace with the absolute path of the repository.
The order of compilation is:
syntax/syntax.v
syntax/syntax_lemmas.v
substitution/substitution.v
substitution/substitution_lemmas.v
operational_semantics/operational_semantics.v
type_system/subtyping_and_admissibility.v
type_system/declarational.v
type_system/wf_lemmas.v
type_system/subtyping_lemmas.v
logic/logic_aux_lemmas.v
type_system/type_aux_lemmas.v
type_system/instantiation_lemmas.v
type_system/type_lemmas.v
logic/logic_tactics.v
logic/logic_lemmas.v
Locations of important proofs:
- Substitution lemmas are located in
type_system/type_aux_lemmas.v
for single variable substitution andtype_system/instantiation_lemmas.v
for parallel substitution. The additional substitution lemmas for the logic are inlogic/logic_lemmas.v
- Safety is located in
type_system/type_lemmas.v
. - Skeletons and their lemmas are found in the folder
denotational_semantics
. - Examples are in the folder
examples
. This branch features the examplespick_left
,eta-Do
, and an outline forgenerators
. Mutable state examples are on the branchequational-logic
.