Samplinglib
Lean gate not recorded for this source state main · 0e31a3cda412
production module

AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals

14 named declarations scanned from AutoSamplingTheory/TechnicalLemmas/Measure/WassersteinTriangleMarginals.lean.

Imports
Imported by
Placeholder scan
0 declaration(s) flagged
Gate status
Partial

Declarations

def AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.pair12 Partial Not mapped

- The `(x,y)` projection from triples encoded as `((x,y),z)`.

def pair12 : ((E × E) × E) → E × E := fun p => p.1

/-- The `(y,z)` projection from triples encoded as `((x,y),z)`. -/
def AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.pair23 Partial Not mapped

- The `(y,z)` projection from triples encoded as `((x,y),z)`.

def pair23 : ((E × E) × E) → E × E := fun p => (p.1.2, p.2)

/-- The `(x,z)` projection from triples encoded as `((x,y),z)`. -/
def AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.pair13 Partial Not mapped

- The `(x,z)` projection from triples encoded as `((x,y),z)`.

def pair13 : ((E × E) × E) → E × E := fun p => (p.1.1, p.2)

@[fun_prop]
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.measurable_pair12 Partial Not mapped

No declaration docstring.

theorem measurable_pair12 : Measurable (pair12 (E := E)) := by
  exact measurable_fst

@[fun_prop]
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.measurable_pair23 Partial Not mapped

No declaration docstring.

theorem measurable_pair23 : Measurable (pair23 (E := E)) := by
  exact (measurable_snd.comp measurable_fst).prodMk measurable_snd

@[fun_prop]
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.measurable_pair13 Partial Not mapped

No declaration docstring.

theorem measurable_pair13 : Measurable (pair13 (E := E)) := by
  exact (measurable_fst.comp measurable_fst).prodMk measurable_snd

@[fun_prop]
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.measurable_quadraticCost Partial Not mapped

No declaration docstring.

theorem measurable_quadraticCost :
    Measurable (WassersteinSpace.quadraticCost (E := E)) := by
  unfold WassersteinSpace.quadraticCost
  fun_prop

/-- Squaring the first ENNReal edge length gives the quadratic cost of the
`(x,y)` pair. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.edgeLength12_rpow_two_eq_quadraticCost_pair12 Partial Not mapped

- Squaring the first ENNReal edge length gives the quadratic cost of the `(x,y)` pair.

theorem edgeLength12_rpow_two_eq_quadraticCost_pair12
    (p : ((E × E) × E)) :
    edgeLength12 (E := E) p ^ (2 : ℝ) =
      WassersteinSpace.quadraticCost (E := E) (pair12 p) := by
  rw [ENNReal.rpow_two]
  simp [edgeLength12, WassersteinSpace.quadraticCost, pair12,
    ENNReal.ofReal_pow, norm_nonneg]

/-- Squaring the second edge length gives the quadratic cost of `(y,z)`. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.edgeLength23_rpow_two_eq_quadraticCost_pair23 Partial Not mapped

- Squaring the second edge length gives the quadratic cost of `(y,z)`.

theorem edgeLength23_rpow_two_eq_quadraticCost_pair23
    (p : ((E × E) × E)) :
    edgeLength23 (E := E) p ^ (2 : ℝ) =
      WassersteinSpace.quadraticCost (E := E) (pair23 p) := by
  rw [ENNReal.rpow_two]
  simp [edgeLength23, WassersteinSpace.quadraticCost, pair23,
    ENNReal.ofReal_pow, norm_nonneg]

/-- Squaring the endpoint edge length gives the quadratic cost of `(x,z)`. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.edgeLength13_rpow_two_eq_quadraticCost_pair13 Partial Not mapped

- Squaring the endpoint edge length gives the quadratic cost of `(x,z)`.

theorem edgeLength13_rpow_two_eq_quadraticCost_pair13
    (p : ((E × E) × E)) :
    edgeLength13 (E := E) p ^ (2 : ℝ) =
      WassersteinSpace.quadraticCost (E := E) (pair13 p) := by
  rw [ENNReal.rpow_two]
  simp [edgeLength13, WassersteinSpace.quadraticCost, pair13,
    ENNReal.ofReal_pow, norm_nonneg]

/-- The first-edge `L²` seminorm is the square root of the quadratic cost of
its pair marginal. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.l2Seminorm_edge12_eq_pairCost Partial Not mapped

- The first-edge `L²` seminorm is the square root of the quadratic cost of its pair marginal.

theorem l2Seminorm_edge12_eq_pairCost
    (gamma : Measure ((E × E) × E)) :
    l2Seminorm gamma (edgeLength12 (E := E)) =
      (∫⁻ z, WassersteinSpace.quadraticCost (E := E) z
        ∂Measure.map (pair12 (E := E)) gamma) ^ (1 / (2 : ℝ)) := by
  unfold l2Seminorm
  rw [lintegral_map measurable_quadraticCost measurable_pair12]
  congr 1
  apply lintegral_congr
  intro p
  exact edgeLength12_rpow_two_eq_quadraticCost_pair12 p

/-- The second-edge `L²` seminorm is the square root of the `(y,z)` pair cost. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.l2Seminorm_edge23_eq_pairCost Partial Not mapped

- The second-edge `L²` seminorm is the square root of the `(y,z)` pair cost.

theorem l2Seminorm_edge23_eq_pairCost
    (gamma : Measure ((E × E) × E)) :
    l2Seminorm gamma (edgeLength23 (E := E)) =
      (∫⁻ z, WassersteinSpace.quadraticCost (E := E) z
        ∂Measure.map (pair23 (E := E)) gamma) ^ (1 / (2 : ℝ)) := by
  unfold l2Seminorm
  rw [lintegral_map measurable_quadraticCost measurable_pair23]
  congr 1
  apply lintegral_congr
  intro p
  exact edgeLength23_rpow_two_eq_quadraticCost_pair23 p

/-- The endpoint-edge `L²` seminorm is the square root of the `(x,z)` pair
marginal cost. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.l2Seminorm_edge13_eq_pairCost Partial Not mapped

- The endpoint-edge `L²` seminorm is the square root of the `(x,z)` pair marginal cost.

theorem l2Seminorm_edge13_eq_pairCost
    (gamma : Measure ((E × E) × E)) :
    l2Seminorm gamma (edgeLength13 (E := E)) =
      (∫⁻ z, WassersteinSpace.quadraticCost (E := E) z
        ∂Measure.map (pair13 (E := E)) gamma) ^ (1 / (2 : ℝ)) := by
  unfold l2Seminorm
  rw [lintegral_map measurable_quadraticCost measurable_pair13]
  congr 1
  apply lintegral_congr
  intro p
  exact edgeLength13_rpow_two_eq_quadraticCost_pair13 p

/-- If the `(x,y)` and `(y,z)` pair marginals of a triple law are couplings of
`μ₁,μ₂` and `μ₂,μ₃`, then its `(x,z)` pair marginal couples `μ₁,μ₃`.

This is the marginal bookkeeping edge needed after transport-plan gluing. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.WassersteinTriangleMarginals.isCoupling_map_pair13_of_pair12_pair23 Partial Not mapped

- If the `(x,y)` and `(y,z)` pair marginals of a triple law are couplings of `μ₁,μ₂` and `μ₂,μ₃`, then its `(x,z)` pair marginal couples `μ₁,μ₃`. This is the marginal bookkeeping edge needed after transport-plan gluing.

theorem isCoupling_map_pair13_of_pair12_pair23
    (gamma : Measure ((E × E) × E))
    {μ₁ μ₂ μ₃ : Measure E}
    (h12 : Transport.IsCoupling (Measure.map (pair12 (E := E)) gamma) μ₁ μ₂)
    (h23 : Transport.IsCoupling (Measure.map (pair23 (E := E)) gamma) μ₂ μ₃) :
    Transport.IsCoupling (Measure.map (pair13 (E := E)) gamma) μ₁ μ₃ := by
  constructor
  · calc
      (Measure.map (pair13 (E := E)) gamma).fst =
          (Measure.map (pair12 (E := E)) gamma).fst := by
        rw [Measure.fst,
          Measure.map_map measurable_fst measurable_pair13,
          Measure.fst,
          Measure.map_map measurable_fst measurable_pair12]
        rfl
      _ = μ₁ := h12.1
  · calc
      (Measure.map (pair13 (E := E)) gamma).snd =
          (Measure.map (pair23 (E := E)) gamma).snd := by
        rw [Measure.snd,
          Measure.map_map measurable_snd measurable_pair13,
          Measure.snd,
          Measure.map_map measurable_snd measurable_pair23]
        rfl
      _ = μ₃ := h23.2

end

end WassersteinTriangleMarginals
end Measure
end TechnicalLemmas
end AutoSamplingTheory