Exact finite factorization after an observation #
Multiplying an observation's marginal by its conditional row recovers the original mass, including null rows. Deterministic maps retaining both original side variables therefore give exact factored laws on the extended transcript. Alternating observations compose these equalities.
theorem
Algebraic.Cutwidth.Extractor.Internal.observedTranscriptKernel_probability
{Z : Type u_1}
{A : Type u_2}
{U : Type u_3}
[Fintype A]
[Fintype U]
(p : Z → A → ℝ)
(f : Z → A → U)
(probability : ∀ (z : Z), IsProbabilityWeight (p z))
(zu : Z × U)
:
theorem
Algebraic.Cutwidth.Extractor.Internal.observedTranscriptWeight_mul_kernel
{Z : Type u_1}
{A : Type u_2}
{U : Type u_3}
[Fintype A]
(w : Z → ℝ)
(p : Z → A → ℝ)
(f : Z → A → U)
(nonnegative : ∀ (z : Z) (a : A), 0 ≤ p z a)
(zu : Z × U)
(a : A)
:
observedTranscriptWeight w p f zu * observedTranscriptKernel p f zu a = if f zu.1 a = zu.2 then w zu.1 * p zu.1 a else 0
theorem
Algebraic.Cutwidth.Extractor.Internal.observedTranscriptWeight_probability
{Z : Type u_1}
{A : Type u_2}
{U : Type u_3}
[Fintype Z]
[Fintype A]
[Fintype U]
(w : Z → ℝ)
(p : Z → A → ℝ)
(f : Z → A → U)
(hw : IsProbabilityWeight w)
(hp : ∀ (z : Z), IsProbabilityWeight (p z))
:
theorem
Algebraic.Cutwidth.Extractor.Internal.factoredWeight_probability
{Z : Type u_1}
{A : Type u_2}
{B : Type u_3}
[Fintype Z]
[Fintype A]
[Fintype B]
(w : Z → ℝ)
(l : Z → A → ℝ)
(r : Z → B → ℝ)
(hw : IsProbabilityWeight w)
(hl : ∀ (z : Z), IsProbabilityWeight (l z))
(hr : ∀ (z : Z), IsProbabilityWeight (r z))
:
IsProbabilityWeight (factoredWeight w l r)
theorem
Algebraic.Cutwidth.Extractor.Internal.factoredWeight_observe_left
{Z : Type u_1}
{A : Type u_2}
{B : Type u_3}
{U : Type u_4}
[Fintype Z]
[Fintype A]
[Fintype B]
(w : Z → ℝ)
(l : Z → A → ℝ)
(r : Z → B → ℝ)
(f : Z → A → U)
(nonnegative : ∀ (z : Z) (a : A), 0 ≤ l z a)
:
mapWeight (fun (p : (Z × B) × A) => (((p.1.1, f p.1.1 p.2), p.1.2), p.2)) (factoredWeight w l r) = factoredWeight (observedTranscriptWeight w l f) (observedTranscriptKernel l f) fun (zu : Z × U) => r zu.1
theorem
Algebraic.Cutwidth.Extractor.Internal.factoredWeight_observe_right
{Z : Type u_1}
{A : Type u_2}
{B : Type u_3}
{V : Type u_4}
[Fintype Z]
[Fintype A]
[Fintype B]
(w : Z → ℝ)
(l : Z → A → ℝ)
(r : Z → B → ℝ)
(g : Z → B → V)
(nonnegative : ∀ (z : Z) (b : B), 0 ≤ r z b)
:
mapWeight (fun (p : (Z × B) × A) => (((p.1.1, g p.1.1 p.1.2), p.1.2), p.2)) (factoredWeight w l r) = factoredWeight (observedTranscriptWeight w r g) (fun (zv : Z × V) => l zv.1) (observedTranscriptKernel r g)
theorem
Algebraic.Cutwidth.Extractor.Internal.factoredWeight_observe_left_right
{Z : Type u_1}
{A : Type u_2}
{B : Type u_3}
{U : Type u_4}
{V : Type u_5}
[Fintype Z]
[Fintype A]
[Fintype B]
[Fintype U]
(w : Z → ℝ)
(l : Z → A → ℝ)
(r : Z → B → ℝ)
(f : Z → A → U)
(g : Z × U → B → V)
(left_nonnegative : ∀ (z : Z) (a : A), 0 ≤ l z a)
(right_nonnegative : ∀ (z : Z) (b : B), 0 ≤ r z b)
:
mapWeight (fun (p : (Z × B) × A) => ((((p.1.1, f p.1.1 p.2), g (p.1.1, f p.1.1 p.2) p.1.2), p.1.2), p.2))
(factoredWeight w l r) = factoredWeight (observedTranscriptWeight (observedTranscriptWeight w l f) (fun (zu : Z × U) => r zu.1) g)
(fun (zuv : (Z × U) × V) => observedTranscriptKernel l f zuv.1)
(observedTranscriptKernel (fun (zu : Z × U) => r zu.1) g)
theorem
Algebraic.Cutwidth.Extractor.Internal.observedTranscript_left_right_probability
{Z : Type u_1}
{A : Type u_2}
{B : Type u_3}
{U : Type u_4}
{V : Type u_5}
[Fintype Z]
[Fintype A]
[Fintype B]
[Fintype U]
[Fintype V]
(w : Z → ℝ)
(l : Z → A → ℝ)
(r : Z → B → ℝ)
(f : Z → A → U)
(g : Z × U → B → V)
(hw : IsProbabilityWeight w)
(hl : ∀ (z : Z), IsProbabilityWeight (l z))
(hr : ∀ (z : Z), IsProbabilityWeight (r z))
:
IsProbabilityWeight (observedTranscriptWeight (observedTranscriptWeight w l f) (fun (zu : Z × U) => r zu.1) g) ∧ (∀ (zuv : (Z × U) × V), IsProbabilityWeight (observedTranscriptKernel l f zuv.1)) ∧ ∀ (zuv : (Z × U) × V), IsProbabilityWeight (observedTranscriptKernel (fun (zu : Z × U) => r zu.1) g zuv)