@@ -13,17 +13,22 @@ license: "Apache-2.0"
1313synopsis: "Hoare Type Theory"
1414description: """
1515Hoare Type Theory (HTT) is a verification system for reasoning about sequential heap-manipulating
16- programs. It incorporates Hoare-style specifications via preconditions and postconditions into
17- types.
16+ programs based on separation logic.
1817
19- A Hoare type `{P}x : A{Q}` denotes computations with a precondition `P` and postcondition `Q`,
20- returning a value of type `A`. Hoare types are a dependently typed version of monads, as used in
21- the programming language Haskell. Monads hygienically combine the language features for pure
22- functional programming, with those for imperative programming, such as state or exceptions. In
23- this sense, HTT establishes a formal connection between Hoare logic and monads, in the style of
24- Curry-Howard isomorphism: every effectful command in HTT has a type which corresponds to the
25- appropriate inference rule in Hoare logic, and vice versa, every inference rule in (a version of)
26- Hoare logic, corresponds to a command in HTT which has that rule as the type."""
18+ HTT incorporates Hoare-style specifications via preconditions and postconditions into types.
19+ A Hoare type `ST P (fun x : A => Q)` denotes computations with a precondition `P` and
20+ postcondition `Q`, returning a value `x` of type `A`. Hoare types are a dependently typed version
21+ of monads, as used in the programming language Haskell. Monads hygienically combine the language
22+ features for pure functional programming, with those for imperative programming, such as state
23+ or exceptions. In this sense, HTT establishes a formal connection between (functional programming
24+ variant of) Separation logic and monads, in the style of Curry-Howard isomorphism. Every
25+ effectful command in HTT has a type which corresponds to the appropriate non-structural inference
26+ rule in Separation logic, and vice versa, every non-structural inference rule corresponds to a
27+ command in HTT that has that rule as the type. The type for monadic bind is the Hoare-style rule
28+ for sequential composition, and the type for monadic unit combines the Hoare-style rule for the
29+ idle thread and the Hoare-style rule for variable assignment (adapted for functional variables).
30+ In implementation terms, the above means that HTT implements Separation logic as a shallow
31+ embedding in Coq."""
2732
2833build: [make "-j%{jobs}%"]
2934install: [make "install"]
0 commit comments