Documentation

VCVio.EvalDist.Bool

Evaluation Distributions on Boolean-Valued Computations #

Specialization lemmas for HasEvalSPMF computations returning Bool.

@[simp]
theorem probOutput_true_add_false {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
@[simp]
theorem probOutput_false_add_true {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
theorem probOutput_true_eq_sub {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
theorem probOutput_false_eq_sub {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
@[simp]
theorem probOutput_not_map {m : TypeType u_1} [Monad m] [HasEvalSPMF m] [LawfulMonad m] (mx : m Bool) :
Pr[= true | (fun (x : Bool) => !x) <$> mx] = Pr[= false | mx]
@[simp]
theorem probOutput_not_map' {m : TypeType u_1} [Monad m] [HasEvalSPMF m] [LawfulMonad m] (mx : m Bool) :
Pr[= false | (fun (x : Bool) => !x) <$> mx] = Pr[= true | mx]
@[simp]
theorem probEvent_true_eq_probOutput {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
(probEvent mx fun (x : Bool) => x = true) = Pr[= true | mx]
@[simp]
theorem probEvent_not_eq_probOutput {m : TypeType u_1} [Monad m] [HasEvalSPMF m] (mx : m Bool) :
(probEvent mx fun (x : Bool) => x = false) = Pr[= false | mx]
theorem probOutput_true_bind_map_eq_probEvent {m : TypeType u_1} [Monad m] [HasEvalSPMF m] {α β : Type} [LawfulMonad m] (mx : m α) (my : αm β) (p : αβBool) :
Pr[= true | do let xmx p x <$> my x] = probEvent (do let xmx let __do_liftmy x pure (x, __do_lift)) fun (x : α × β) => match x with | (x, y) => p x y = true