Skip to content

Commit 10d2f3d

Browse files
committed
update description
1 parent 77a2b92 commit 10d2f3d

File tree

3 files changed

+48
-32
lines changed

3 files changed

+48
-32
lines changed

README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,22 @@ Follow the instructions on https://github.com/coq-community/templates to regener
1313

1414

1515
Hoare 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.
18-
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.
16+
programs based on separation logic.
17+
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

2833
## Meta
2934

coq-htt.opam

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,22 @@ license: "Apache-2.0"
1313
synopsis: "Hoare Type Theory"
1414
description: """
1515
Hoare 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

2833
build: [make "-j%{jobs}%"]
2934
install: [make "install"]

meta.yml

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,23 @@ synopsis: >-
1010
Hoare Type Theory
1111
description: |-
1212
Hoare Type Theory (HTT) is a verification system for reasoning about sequential heap-manipulating
13-
programs. It incorporates Hoare-style specifications via preconditions and postconditions into
14-
types.
15-
16-
A Hoare type `{P}x : A{Q}` denotes computations with a precondition `P` and postcondition `Q`,
17-
returning a value of type `A`. Hoare types are a dependently typed version of monads, as used in
18-
the programming language Haskell. Monads hygienically combine the language features for pure
19-
functional programming, with those for imperative programming, such as state or exceptions. In
20-
this sense, HTT establishes a formal connection between Hoare logic and monads, in the style of
21-
Curry-Howard isomorphism: every effectful command in HTT has a type which corresponds to the
22-
appropriate inference rule in Hoare logic, and vice versa, every inference rule in (a version of)
23-
Hoare logic, corresponds to a command in HTT which has that rule as the type.
13+
programs based on separation logic.
14+
15+
HTT incorporates Hoare-style specifications via preconditions and postconditions into types.
16+
A Hoare type `ST P (fun x : A => Q)` denotes computations with a precondition `P` and
17+
postcondition `Q`, returning a value `x` of type `A`. Hoare types are a dependently typed version
18+
of monads, as used in the programming language Haskell. Monads hygienically combine the language
19+
features for pure functional programming, with those for imperative programming, such as state
20+
or exceptions. In this sense, HTT establishes a formal connection between (functional programming
21+
variant of) Separation logic and monads, in the style of Curry-Howard isomorphism. Every
22+
effectful command in HTT has a type which corresponds to the appropriate non-structural inference
23+
rule in Separation logic, and vice versa, every non-structural inference rule corresponds to a
24+
command in HTT that has that rule as the type. The type for monadic bind is the Hoare-style rule
25+
for sequential composition, and the type for monadic unit combines the Hoare-style rule for the
26+
idle thread and the Hoare-style rule for variable assignment (adapted for functional variables).
27+
In implementation terms, the above means that HTT implements Separation logic as a shallow
28+
embedding in Coq.
29+
2430
authors:
2531
- name: Aleksandar Nanevski
2632
initial: true

0 commit comments

Comments
 (0)