Probability Distributions on Potentially Failing Computations #
This file gives an instance to extend a evalDist instance on a monad to one transformed by
the OptionT monad transformer.
dt: should add more instances and connecting lemmas
noncomputable instance
OptionT.instHasEvalSet
(m : Type u → Type v)
[Monad m]
[HasEvalSet m]
:
HasEvalSet (OptionT m)
TODO: fintype version of this lemma
Equations
noncomputable instance
OptionT.instHasEvalSPMF
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
:
HasEvalSPMF (OptionT m)
If we have a HasEvalPMF m instance, we can lift it to HasEvalSPMF (OptionT m).
Equations
noncomputable instance
OptionT.instHasEvalFinset
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
[HasEvalFinset m]
:
HasEvalFinset (OptionT m)
Lift a finSupport instance to OptionT. by just taking preimage under some.
Equations
theorem
OptionT.finSupport_eq
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
[HasEvalFinset m]
[DecidableEq α]
(mx : OptionT m α)
:
@[simp]
theorem
OptionT.mem_finSupport_iff
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
[HasEvalFinset m]
[DecidableEq α]
(mx : OptionT m α)
(x : α)
:
theorem
OptionT.evalDist_eq
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
(mx : OptionT m α)
:
evalDist mx = (fun {α : Type u} (x : OptionT m α) => (OptionT.mapM' HasEvalSPMF.toSPMF).toFun α x) mx
@[simp]
theorem
OptionT.probOutput_lift
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
[LawfulMonad m]
(mx : m α)
(x : α)
:
@[simp]
theorem
OptionT.probEvent_lift
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
[LawfulMonad m]
(mx : m α)
(p : α → Prop)
:
@[simp]
theorem
OptionT.probFailure_liftM
(m : Type u → Type v)
[Monad m]
[HasEvalSPMF m]
{α : Type u}
[LawfulMonad m]
(mx : m α)
: