Theorem: MeasureTheory.Measure.pi_caratheodory
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: refine iSup_le ?_
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ MeasurableSpace.pi ≤ (OuterMeasure.pi fun i => (μ i).toOuterMeasure).caratheodory
state_after: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ ∀ (i : ι),
    MeasurableSpace.comap (fun b => b i) (inst✝ i) ≤ (OuterMeasure.pi fun i => (μ i).toOuterMeasure).caratheodory

tactic: intro i s hs
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ ∀ (i : ι),
    MeasurableSpace.comap (fun b => b i) (inst✝ i) ≤ (OuterMeasure.pi fun i => (μ i).toOuterMeasure).caratheodory
state_after: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((a : ι) → α a)
hs : MeasurableSet s
⊢ MeasurableSet s

tactic: rcases hs with ⟨s, hs, rfl⟩
state_before: ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((a : ι) → α a)
hs : MeasurableSet s
⊢ MeasurableSet s
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
⊢ MeasurableSet ((fun b => b i) ⁻¹' s)

tactic: apply boundedBy_caratheodory
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
⊢ MeasurableSet ((fun b => b i) ⁻¹' s)
state_after: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
⊢ ∀ (t : Set ((a : ι) → α a)),
    piPremeasure (fun i => (μ i).toOuterMeasure) (t ∩ (fun b => b i) ⁻¹' s) +
        piPremeasure (fun i => (μ i).toOuterMeasure) (t \ (fun b => b i) ⁻¹' s) ≤
      piPremeasure (fun i => (μ i).toOuterMeasure) t

tactic: intro t
state_before: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
⊢ ∀ (t : Set ((a : ι) → α a)),
    piPremeasure (fun i => (μ i).toOuterMeasure) (t ∩ (fun b => b i) ⁻¹' s) +
        piPremeasure (fun i => (μ i).toOuterMeasure) (t \ (fun b => b i) ⁻¹' s) ≤
      piPremeasure (fun i => (μ i).toOuterMeasure) t
state_after: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ piPremeasure (fun i => (μ i).toOuterMeasure) (t ∩ (fun b => b i) ⁻¹' s) +
      piPremeasure (fun i => (μ i).toOuterMeasure) (t \ (fun b => b i) ⁻¹' s) ≤
    piPremeasure (fun i => (μ i).toOuterMeasure) t

tactic: simp_rw [piPremeasure]
state_before: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ piPremeasure (fun i => (μ i).toOuterMeasure) (t ∩ (fun b => b i) ⁻¹' s) +
      piPremeasure (fun i => (μ i).toOuterMeasure) (t \ (fun b => b i) ⁻¹' s) ≤
    piPremeasure (fun i => (μ i).toOuterMeasure) t
state_after: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∏ x : ι, (μ x).toOuterMeasure (eval x '' (t ∩ (fun b => b i) ⁻¹' s)) +
      ∏ x : ι, (μ x).toOuterMeasure (eval x '' (t \ (fun b => b i) ⁻¹' s)) ≤
    ∏ x : ι, (μ x).toOuterMeasure (eval x '' t)

tactic: refine Finset.prod_add_prod_le' (Finset.mem_univ i) ?_ ?_ ?_
state_before: case intro.intro.hs
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∏ x : ι, (μ x).toOuterMeasure (eval x '' (t ∩ (fun b => b i) ⁻¹' s)) +
      ∏ x : ι, (μ x).toOuterMeasure (eval x '' (t \ (fun b => b i) ⁻¹' s)) ≤
    ∏ x : ι, (μ x).toOuterMeasure (eval x '' t)
state_after: case intro.intro.hs.refine_1
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ (μ i).toOuterMeasure (eval i '' (t ∩ (fun b => b i) ⁻¹' s)) +
      (μ i).toOuterMeasure (eval i '' (t \ (fun b => b i) ⁻¹' s)) ≤
    (μ i).toOuterMeasure (eval i '' t)

case intro.intro.hs.refine_2
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∀ j ∈ Finset.univ,
    j ≠ i → (μ j).toOuterMeasure (eval j '' (t ∩ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)

case intro.intro.hs.refine_3
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∀ j ∈ Finset.univ,
    j ≠ i → (μ j).toOuterMeasure (eval j '' (t \ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)

tactic: simp [image_inter_preimage, image_diff_preimage, measure_inter_add_diff _ hs, le_refl]
state_before: case intro.intro.hs.refine_1
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ (μ i).toOuterMeasure (eval i '' (t ∩ (fun b => b i) ⁻¹' s)) +
      (μ i).toOuterMeasure (eval i '' (t \ (fun b => b i) ⁻¹' s)) ≤
    (μ i).toOuterMeasure (eval i '' t)
state_after: no goals

tactic: rintro j - _
state_before: case intro.intro.hs.refine_2
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∀ j ∈ Finset.univ,
    j ≠ i → (μ j).toOuterMeasure (eval j '' (t ∩ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)
state_after: case intro.intro.hs.refine_2
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ (μ j).toOuterMeasure (eval j '' (t ∩ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)

tactic: gcongr
state_before: case intro.intro.hs.refine_2
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ (μ j).toOuterMeasure (eval j '' (t ∩ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)
state_after: case intro.intro.hs.refine_2.h.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ t ∩ (fun b => b i) ⁻¹' s ⊆ t

tactic: apply inter_subset_left
state_before: case intro.intro.hs.refine_2.h.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ t ∩ (fun b => b i) ⁻¹' s ⊆ t
state_after: no goals

tactic: rintro j - _
state_before: case intro.intro.hs.refine_3
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∀ j ∈ Finset.univ,
    j ≠ i → (μ j).toOuterMeasure (eval j '' (t \ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)
state_after: case intro.intro.hs.refine_3
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ (μ j).toOuterMeasure (eval j '' (t \ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)

tactic: gcongr
state_before: case intro.intro.hs.refine_3
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ (μ j).toOuterMeasure (eval j '' (t \ (fun b => b i) ⁻¹' s)) ≤ (μ j).toOuterMeasure (eval j '' t)
state_after: case intro.intro.hs.refine_3.h.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ t \ (fun b => b i) ⁻¹' s ⊆ t

tactic: apply diff_subset
state_before: case intro.intro.hs.refine_3.h.h
ι : Type u_1
ι' : Type u_2
α : ι → Type u_3
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set (α i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ t \ (fun b => b i) ⁻¹' s ⊆ t
state_after: no goals