lh-l4v/lib/Monads
Michael McInerney 5ac6180742 lib: add no_ofail_if
Signed-off-by: Michael McInerney <michael.mcinerney@proofcraft.systems>
2024-01-15 18:08:12 +10:30
..
document lib/monads: fix document preparation issues 2023-10-12 14:56:39 +11:00
nondet lib: reorder assumptions of no_fail_bind 2024-01-15 18:08:12 +10:30
reader_option lib: add no_ofail_if 2024-01-15 18:08:12 +10:30
trace lib/monads: remove more uses of _tac methods 2023-10-13 15:49:47 +11:00
wp lib/monads: remove more uses of _tac methods 2023-10-13 15:49:47 +11:00
Fun_Pred_Syntax.thy lib/monads: coherent document structure 2023-10-12 14:56:39 +11:00
Less_Monad_Syntax.thy lib+spec+proof+autocorres: consistent Nondet filename prefix 2023-08-09 12:07:06 +10:00
Monad_Lib.thy lib/monads/trace: update definitions and rules taken from nondet 2023-10-05 11:32:21 +11:00
README.md lib: consistent Trace filename prefix 2023-08-09 12:07:06 +10:00
ROOT lib/monads: add new Trace_* files to ROOT 2023-10-12 14:56:39 +11:00
Strengthen.thy lib/monads: coherent document structure 2023-10-12 14:56:39 +11:00
Strengthen_Demo.thy lib/monads: fix document preparation issues 2023-10-12 14:56:39 +11:00
tests.xml lib: introduce Monads session 2023-01-24 11:30:05 +11:00

README.md

Monad Definitions and Tactics

This session contains definitions of various monads useful in AutoCorres and the seL4 verification for the verification of C programs.

In particular, this session defines:

  • a nondeterministic state monad with failure to express stateful computation. There is a variation of this monad that also allows computation with exceptions (throw/catch).

  • a reader option monad to express computation that can depend on state and can fail, but does not change state. It can also be used to express projections from the state in preconditions and other state assertions.

  • a trace monad that stores a set of traces for expressing concurrent computation.

  • for each of these monads, weakest-precondition lemmas and corresponding tool setup.

  • for the nondeterministic state monad, additional concepts such as wellformedness with respect to failure (empty_fail), absence of failure (no_fail), absence of exceptions (no_throw). See the respective theories for more details.

The directory wp/ contains proof methods to reason about these monads in weakest-precondition style.