@@ -668,6 +668,9 @@ end Inf
668
668
669
669
protected lemma zero_le (μ : measure α) : 0 ≤ μ := bot_le
670
670
671
+ lemma le_zero_iff_eq' : μ ≤ 0 ↔ μ = 0 :=
672
+ μ.zero_le.le_iff_eq
673
+
671
674
@[simp] lemma measure_univ_eq_zero {μ : measure α} : μ univ = 0 ↔ μ = 0 :=
672
675
⟨λ h, bot_unique $ λ s hs, trans_rel_left (≤) (measure_mono (subset_univ s)) h, λ h, h.symm ▸ rfl⟩
673
676
@@ -1378,6 +1381,11 @@ lemma measure_lt_top (μ : measure α) [finite_measure μ] (s : set α) : μ s <
1378
1381
lemma measure_ne_top (μ : measure α) [finite_measure μ] (s : set α) : μ s ≠ ⊤ :=
1379
1382
ne_of_lt (measure_lt_top μ s)
1380
1383
1384
+ /-- `le_of_add_le_add_left` is normally applicable to `ordered_cancel_add_comm_monoid`,
1385
+ but it holds for measures with the additional assumption that μ is finite. -/
1386
+ lemma measure.le_of_add_le_add_left {μ ν₁ ν₂ : measure α} [finite_measure μ] (A2 : μ + ν₁ ≤ μ + ν₂) : ν₁ ≤ ν₂ :=
1387
+ λ S B1, ennreal.le_of_add_le_add_left (measure_theory.measure_lt_top μ S) (A2 S B1)
1388
+
1381
1389
@[priority 100 ]
1382
1390
instance probability_measure.to_finite_measure (μ : measure α) [probability_measure μ] :
1383
1391
finite_measure μ :=
@@ -1614,6 +1622,71 @@ lemma finite_at_nhds_within [topological_space α] (μ : measure α) [locally_fi
1614
1622
@[simp] lemma finite_at_principal {s : set α} : μ.finite_at_filter (𝓟 s) ↔ μ s < ⊤ :=
1615
1623
⟨λ ⟨t, ht, hμ⟩, (measure_mono ht).trans_lt hμ, λ h, ⟨s, mem_principal_self s, h⟩⟩
1616
1624
1625
+ /-! ### Subtraction of measures -/
1626
+
1627
+ /-- The measure `μ - ν` is defined to be the least measure `τ` such that `μ ≤ τ + ν`.
1628
+ It is the equivalent of `(μ - ν) ⊔ 0` if `μ` and `ν` were signed measures.
1629
+ Compare with `ennreal.has_sub`.
1630
+ Specifically, note that if you have `α = {1,2}`, and `μ {1} = 2`, `μ {2} = 0`, and
1631
+ `ν {2} = 2`, `ν {1} = 0`, then `(μ - ν) {1, 2} = 2`. However, if `μ ≤ ν`, and
1632
+ `ν univ ≠ ⊤`, then `(μ - ν) + ν = μ`. -/
1633
+ noncomputable instance has_sub {α : Type *} [measurable_space α] : has_sub (measure α) :=
1634
+ ⟨λ μ ν, Inf {τ | μ ≤ τ + ν} ⟩
1635
+
1636
+ section measure_sub
1637
+ variables {ν : measure_theory.measure α}
1638
+
1639
+ lemma sub_def : μ - ν = Inf {d | μ ≤ d + ν} := rfl
1640
+
1641
+ lemma sub_eq_zero_of_le (h : μ ≤ ν) : μ - ν = 0 :=
1642
+ begin
1643
+ rw [← le_zero_iff_eq', measure.sub_def],
1644
+ apply @Inf_le (measure α) _ _,
1645
+ simp [h],
1646
+ end
1647
+
1648
+ /-- This application lemma only works in special circumstances. Given knowledge of
1649
+ when `μ ≤ ν` and `ν ≤ μ`, a more general application lemma can be written. -/
1650
+ lemma sub_apply {s : set α} [finite_measure ν] (h₁ : is_measurable s) (h₂ : ν ≤ μ) :
1651
+ (μ - ν) s = μ s - ν s :=
1652
+ begin
1653
+ -- We begin by defining `measure_sub`, which will be equal to `(μ - ν)`.
1654
+ let measure_sub : measure α := @measure_theory.measure.of_measurable α _
1655
+ (λ (t : set α) (h_t_is_measurable : is_measurable t), (μ t - ν t))
1656
+ begin
1657
+ simp
1658
+ end
1659
+ begin
1660
+ intros g h_meas h_disj, simp only, rw ennreal.tsum_sub,
1661
+ repeat { rw ← measure_theory.measure_Union h_disj h_meas },
1662
+ apply measure_theory.measure_lt_top, intro i, apply h₂, apply h_meas
1663
+ end ,
1664
+ -- Now, we demonstrate `μ - ν = measure_sub`, and apply it.
1665
+ begin
1666
+ have h_measure_sub_add : (ν + measure_sub = μ),
1667
+ { ext t h_t_is_measurable,
1668
+ simp only [pi.add_apply, coe_add],
1669
+ rw [measure_theory.measure.of_measurable_apply _ h_t_is_measurable, add_comm,
1670
+ ennreal.sub_add_cancel_of_le (h₂ t h_t_is_measurable)] },
1671
+ have h_measure_sub_eq : (μ - ν) = measure_sub,
1672
+ { rw measure_theory.measure.sub_def, apply le_antisymm,
1673
+ { apply @Inf_le (measure α) (measure.complete_lattice), simp [le_refl, add_comm, h_measure_sub_add] },
1674
+ apply @le_Inf (measure α) (measure.complete_lattice),
1675
+ intros d h_d, rw [← h_measure_sub_add, mem_set_of_eq, add_comm d] at h_d,
1676
+ apply measure.le_of_add_le_add_left h_d },
1677
+ rw h_measure_sub_eq,
1678
+ apply measure.of_measurable_apply _ h₁,
1679
+ end
1680
+ end
1681
+
1682
+ lemma sub_add_cancel_of_le [finite_measure ν] (h₁ : ν ≤ μ) : μ - ν + ν = μ :=
1683
+ begin
1684
+ ext s h_s_meas,
1685
+ rw [add_apply, sub_apply h_s_meas h₁, ennreal.sub_add_cancel_of_le (h₁ s h_s_meas)],
1686
+ end
1687
+
1688
+ end measure_sub
1689
+
1617
1690
end measure
1618
1691
1619
1692
end measure_theory
0 commit comments