Lemmas About the Distribution Semantics Involving Prod
#
This file collects various lemmas about computations involving Prod
.
NOTE: A lot of these could be implemented for more general functors/monads to mathlib TODO: Variables
theorem
OracleComp.probOutput_prod_mk_eq_probEvent
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[spec.FiniteRange]
[DecidableEq α]
[DecidableEq β]
(oa : OracleComp spec (α × β))
(x : α)
(y : β)
:
@[simp]
theorem
OracleComp.fst_map_prod_map
{ι : Type u}
{spec : OracleSpec ι}
{α β γ δ : Type v}
(oa : OracleComp spec (α × β))
(f : α → γ)
(g : β → δ)
:
@[simp]
theorem
OracleComp.snd_map_prod_map
{ι : Type u}
{spec : OracleSpec ι}
{α β γ δ : Type v}
(oa : OracleComp spec (α × β))
(f : α → γ)
(g : β → δ)
:
@[simp]
theorem
OracleComp.probOutput_seq_map_prod_mk_eq_mul
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[spec.FiniteRange]
(oa : OracleComp spec α)
(ob : OracleComp spec β)
(x : α)
(y : β)
:
@[simp]
theorem
OracleComp.probEvent_seq_map_prod_mk_eq_mul
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[spec.FiniteRange]
(oa : OracleComp spec α)
(ob : OracleComp spec β)
(p : α → Prop)
(q : β → Prop)
:
theorem
OracleComp.probEvent_seq_map_prod_mk_eq_mul'
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[spec.FiniteRange]
(oa : OracleComp spec α)
(ob : OracleComp spec β)
(p : α → Prop)
(q : β → Prop)
:
@[simp]
theorem
OracleComp.fst_map_prod_mk_of_subsingleton
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[Subsingleton β]
(oa : OracleComp spec α)
(y : β)
:
@[simp]
theorem
OracleComp.snd_map_prod_mk_of_subsingleton
{ι : Type u}
{spec : OracleSpec ι}
{α β : Type v}
[Subsingleton α]
(ob : OracleComp spec β)
(x : α)
:
theorem
OracleComp.probEvent_fst_eq_snd
{ι : Type u}
{spec : OracleSpec ι}
{α : Type v}
[spec.FiniteRange]
[DecidableEq α]
(oa : OracleComp spec (α × α))
: