Documentation

Std.Internal.Do.WP.Conjunctive

class Std.Internal.Do.WPConjunctive {Prog : Type u} {Value : outParam (Type v)} {Pred : outParam (Type w)} {EPred : outParam (Type z)} [Assertion Pred] [Assertion EPred] [WP Prog Value Pred EPred] (x : Prog) :

wp x is sub-conjunctive: a meet of postconditions maps below the wp of their meet. A healthiness condition of the WP interpretation for the individual program x; it holds for the base interpretations and lifts through the transformers.

Instances

    An Id program is conjunctive: its wp is evaluation at the result.

    An Option program is conjunctive: its wp is evaluation at the result.

    An Except ε program is conjunctive: its wp is evaluation at the result.

    An EStateM program is conjunctive: its wp is evaluation at the result.

    instance Std.Internal.Do.StateT.instWPConjunctive {m : Type u → Type v} {σ : Type u} {Pred : Type w} {EPred : Type z} {α : Type u} [Monad m] [Assertion Pred] [Assertion EPred] [WPMonad m Pred EPred] (x : StateT σ m α) [base : ∀ (s : σ), WPConjunctive (x.run s)] :

    A StateT program lifts conjunctivity from its base monad.

    instance Std.Internal.Do.ReaderT.instWPConjunctive {m : Type u → Type v} {ρ : Type u} {Pred : Type w} {EPred : Type z} {α : Type u} [Monad m] [Assertion Pred] [Assertion EPred] [WPMonad m Pred EPred] (x : ReaderT ρ m α) [base : ∀ (r : ρ), WPConjunctive (x.run r)] :

    A ReaderT program lifts conjunctivity from its base monad.

    instance Std.Internal.Do.OptionT.instWPConjunctive {m : Type u → Type v} {Pred : Type u} {EPred : Type z} {α : Type u} [Monad m] [Assertion Pred] [Assertion EPred] [WPMonad m Pred EPred] (x : OptionT m α) [base : WPConjunctive x.run] :

    An OptionT program lifts conjunctivity from its base monad.

    instance Std.Internal.Do.ExceptT.instWPConjunctive {m : Type u → Type v} {ε α : Type u} {Pred : Type w} {EPred : Type z} [Monad m] [Assertion Pred] [Assertion EPred] [WPMonad m Pred EPred] (x : ExceptT ε m α) [base : WPConjunctive x.run] :

    An ExceptT program lifts conjunctivity from its base monad.