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

tactic: refine' iSup_le _
state_before: ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
⊢ MeasurableSpace.pi ≤ OuterMeasure.caratheodory (OuterMeasure.pi fun i => ↑(μ i))

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

tactic: rw [MeasurableSpace.comap] at hs
state_before: ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
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.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((a : ι) → α a)
hs : MeasurableSet s
⊢ MeasurableSet s

tactic: apply boundedBy_caratheodory
state_before: case intro.intro
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
⊢ MeasurableSet ((fun b => b i) ⁻¹' s)

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

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

tactic: refine' Finset.prod_add_prod_le' (Finset.mem_univ i) _ _ _
state_before: case intro.intro.hs
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ∏ x : ι, ↑↑(μ x) (eval x '' (t ∩ (fun b => b i) ⁻¹' s)) + ∏ x : ι, ↑↑(μ x) (eval x '' (t \ (fun b => b i) ⁻¹' s)) ≤
    ∏ x : ι, ↑↑(μ x) (eval x '' 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.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
⊢ ↑↑(μ i) (eval i '' (t ∩ (fun b => b i) ⁻¹' s)) + ↑↑(μ i) (eval i '' (t \ (fun b => b i) ⁻¹' s)) ≤
    ↑↑(μ i) (eval i '' t)

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

tactic: apply mono'
state_before: case intro.intro.hs.refine'_2
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ ↑↑(μ j) (eval j '' (t ∩ (fun b => b i) ⁻¹' s)) ≤ ↑↑(μ j) (eval j '' t)

tactic: apply image_subset
state_before: case intro.intro.hs.refine'_2.h
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ eval j '' (t ∩ (fun b => b i) ⁻¹' s) ⊆ eval j '' t

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

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

tactic: apply mono'
state_before: case intro.intro.hs.refine'_3
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ ↑↑(μ j) (eval j '' (t \ (fun b => b i) ⁻¹' s)) ≤ ↑↑(μ j) (eval j '' t)

tactic: apply image_subset
state_before: case intro.intro.hs.refine'_3.h
ι : Type u_1
ι' : Type ?u.2502507
α : ι → Type u_2
inst✝¹ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝ : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
i : ι
s : Set ((fun i => α i) i)
hs : MeasurableSet s
t : Set ((a : ι) → α a)
j : ι
a✝ : j ≠ i
⊢ eval j '' (t \ (fun b => b i) ⁻¹' s) ⊆ eval j '' t

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