Skip to content

Commit

Permalink
update description
Browse files Browse the repository at this point in the history
  • Loading branch information
clayrat committed May 3, 2022
1 parent 77a2b92 commit 10d2f3d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 32 deletions.
27 changes: 16 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,22 @@ Follow the instructions on https://github.com/coq-community/templates to regener


Hoare Type Theory (HTT) is a verification system for reasoning about sequential heap-manipulating
programs. It incorporates Hoare-style specifications via preconditions and postconditions into
types.

A Hoare type `{P}x : A{Q}` denotes computations with a precondition `P` and postcondition `Q`,
returning a value of type `A`. Hoare types are a dependently typed version of monads, as used in
the programming language Haskell. Monads hygienically combine the language features for pure
functional programming, with those for imperative programming, such as state or exceptions. In
this sense, HTT establishes a formal connection between Hoare logic and monads, in the style of
Curry-Howard isomorphism: every effectful command in HTT has a type which corresponds to the
appropriate inference rule in Hoare logic, and vice versa, every inference rule in (a version of)
Hoare logic, corresponds to a command in HTT which has that rule as the type.
programs based on separation logic.

HTT incorporates Hoare-style specifications via preconditions and postconditions into types.
A Hoare type `ST P (fun x : A => Q)` denotes computations with a precondition `P` and
postcondition `Q`, returning a value `x` of type `A`. Hoare types are a dependently typed version
of monads, as used in the programming language Haskell. Monads hygienically combine the language
features for pure functional programming, with those for imperative programming, such as state
or exceptions. In this sense, HTT establishes a formal connection between (functional programming
variant of) Separation logic and monads, in the style of Curry-Howard isomorphism. Every
effectful command in HTT has a type which corresponds to the appropriate non-structural inference
rule in Separation logic, and vice versa, every non-structural inference rule corresponds to a
command in HTT that has that rule as the type. The type for monadic bind is the Hoare-style rule
for sequential composition, and the type for monadic unit combines the Hoare-style rule for the
idle thread and the Hoare-style rule for variable assignment (adapted for functional variables).
In implementation terms, the above means that HTT implements Separation logic as a shallow
embedding in Coq.

## Meta

Expand Down
25 changes: 15 additions & 10 deletions coq-htt.opam
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,22 @@ license: "Apache-2.0"
synopsis: "Hoare Type Theory"
description: """
Hoare Type Theory (HTT) is a verification system for reasoning about sequential heap-manipulating
programs. It incorporates Hoare-style specifications via preconditions and postconditions into
types.
programs based on separation logic.

A Hoare type `{P}x : A{Q}` denotes computations with a precondition `P` and postcondition `Q`,
returning a value of type `A`. Hoare types are a dependently typed version of monads, as used in
the programming language Haskell. Monads hygienically combine the language features for pure
functional programming, with those for imperative programming, such as state or exceptions. In
this sense, HTT establishes a formal connection between Hoare logic and monads, in the style of
Curry-Howard isomorphism: every effectful command in HTT has a type which corresponds to the
appropriate inference rule in Hoare logic, and vice versa, every inference rule in (a version of)
Hoare logic, corresponds to a command in HTT which has that rule as the type."""
HTT incorporates Hoare-style specifications via preconditions and postconditions into types.
A Hoare type `ST P (fun x : A => Q)` denotes computations with a precondition `P` and
postcondition `Q`, returning a value `x` of type `A`. Hoare types are a dependently typed version
of monads, as used in the programming language Haskell. Monads hygienically combine the language
features for pure functional programming, with those for imperative programming, such as state
or exceptions. In this sense, HTT establishes a formal connection between (functional programming
variant of) Separation logic and monads, in the style of Curry-Howard isomorphism. Every
effectful command in HTT has a type which corresponds to the appropriate non-structural inference
rule in Separation logic, and vice versa, every non-structural inference rule corresponds to a
command in HTT that has that rule as the type. The type for monadic bind is the Hoare-style rule
for sequential composition, and the type for monadic unit combines the Hoare-style rule for the
idle thread and the Hoare-style rule for variable assignment (adapted for functional variables).
In implementation terms, the above means that HTT implements Separation logic as a shallow
embedding in Coq."""

build: [make "-j%{jobs}%"]
install: [make "install"]
Expand Down
28 changes: 17 additions & 11 deletions meta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,23 @@ synopsis: >-
Hoare Type Theory
description: |-
Hoare Type Theory (HTT) is a verification system for reasoning about sequential heap-manipulating
programs. It incorporates Hoare-style specifications via preconditions and postconditions into
types.
A Hoare type `{P}x : A{Q}` denotes computations with a precondition `P` and postcondition `Q`,
returning a value of type `A`. Hoare types are a dependently typed version of monads, as used in
the programming language Haskell. Monads hygienically combine the language features for pure
functional programming, with those for imperative programming, such as state or exceptions. In
this sense, HTT establishes a formal connection between Hoare logic and monads, in the style of
Curry-Howard isomorphism: every effectful command in HTT has a type which corresponds to the
appropriate inference rule in Hoare logic, and vice versa, every inference rule in (a version of)
Hoare logic, corresponds to a command in HTT which has that rule as the type.
programs based on separation logic.
HTT incorporates Hoare-style specifications via preconditions and postconditions into types.
A Hoare type `ST P (fun x : A => Q)` denotes computations with a precondition `P` and
postcondition `Q`, returning a value `x` of type `A`. Hoare types are a dependently typed version
of monads, as used in the programming language Haskell. Monads hygienically combine the language
features for pure functional programming, with those for imperative programming, such as state
or exceptions. In this sense, HTT establishes a formal connection between (functional programming
variant of) Separation logic and monads, in the style of Curry-Howard isomorphism. Every
effectful command in HTT has a type which corresponds to the appropriate non-structural inference
rule in Separation logic, and vice versa, every non-structural inference rule corresponds to a
command in HTT that has that rule as the type. The type for monadic bind is the Hoare-style rule
for sequential composition, and the type for monadic unit combines the Hoare-style rule for the
idle thread and the Hoare-style rule for variable assignment (adapted for functional variables).
In implementation terms, the above means that HTT implements Separation logic as a shallow
embedding in Coq.
authors:
- name: Aleksandar Nanevski
initial: true
Expand Down

0 comments on commit 10d2f3d

Please sign in to comment.