Theorem: MeasurableSpace.cardinal_generateMeasurableRec_le
File: Mathlib/MeasureTheory/MeasurableSpace/Card.lean

tactic: apply (aleph 1).ord.out.wo.wf.induction i
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ ∀ (x : (Quotient.out (aleph 1).ord).α),
    (∀ (y : (Quotient.out (aleph 1).ord).α),
        (Quotient.out (aleph 1).ord).r y x → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀) →
      #↑(generateMeasurableRec s x) ≤ max (#↑s) 2 ^ ℵ₀

tactic: intro i IH
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
⊢ ∀ (x : (Quotient.out (aleph 1).ord).α),
    (∀ (y : (Quotient.out (aleph 1).ord).α),
        (Quotient.out (aleph 1).ord).r y x → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀) →
      #↑(generateMeasurableRec s x) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀

tactic: have A := aleph0_le_aleph 1
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀

tactic: have B : aleph 1 ≤ max #s 2 ^ aleph0.{u} :=
  aleph_one_le_continuum.trans (power_le_power_right (le_max_right _ _))
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀

tactic: have C : ℵ₀ ≤ max #s 2 ^ aleph0.{u} := A.trans B
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀

tactic: have J : #(⋃ j : Iio i, generateMeasurableRec s j.1) ≤ max #s 2 ^ aleph0.{u} := by
  refine (mk_iUnion_le _).trans ?_
  have D : ⨆ j : Iio i, #(generateMeasurableRec s j) ≤ _ := ciSup_le' fun ⟨j, hj⟩ => IH j hj
  apply (mul_le_mul' ((mk_subtype_le _).trans (aleph 1).mk_ord_out.le) D).trans
  rw [mul_eq_max A C]
  exact max_le B le_rfl
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀

tactic: rw [generateMeasurableRec]
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(generateMeasurableRec s i) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑((s ∪ {∅} ∪ compl '' ⋃ j, generateMeasurableRec s ↑j) ∪ range fun f => ⋃ n, ↑(f n)) ≤ max (#↑s) 2 ^ ℵ₀

tactic: apply_rules [(mk_union_le _ _).trans, add_le_of_le C, mk_image_le.trans]
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑((s ∪ {∅} ∪ compl '' ⋃ j, generateMeasurableRec s ↑j) ∪ range fun f => ⋃ n, ↑(f n)) ≤ max (#↑s) 2 ^ ℵ₀
state_after: case h1.h1.h1
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑s ≤ max (#↑s) 2 ^ ℵ₀

case h1.h1.h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑{∅} ≤ max (#↑s) 2 ^ ℵ₀

case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(range fun f => ⋃ n, ↑(f n)) ≤ max (#↑s) 2 ^ ℵ₀

tactic: refine (mk_iUnion_le _).trans ?_
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(Iio i) * ⨆ i_1, #↑(generateMeasurableRec s ↑i_1) ≤ max (#↑s) 2 ^ ℵ₀

tactic: have D : ⨆ j : Iio i, #(generateMeasurableRec s j) ≤ _ := ciSup_le' fun ⟨j, hj⟩ => IH j hj
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(Iio i) * ⨆ i_1, #↑(generateMeasurableRec s ↑i_1) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(Iio i) * ⨆ i_1, #↑(generateMeasurableRec s ↑i_1) ≤ max (#↑s) 2 ^ ℵ₀

tactic: apply (mul_le_mul' ((mk_subtype_le _).trans (aleph 1).mk_ord_out.le) D).trans
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(Iio i) * ⨆ i_1, #↑(generateMeasurableRec s ↑i_1) ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ aleph 1 * max (#↑s) 2 ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀

tactic: rw [mul_eq_max A C]
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ aleph 1 * max (#↑s) 2 ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
state_after: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ max (aleph 1) (max (#↑s) 2 ^ ℵ₀) ≤ max (#↑s) 2 ^ ℵ₀

tactic: exact max_le B le_rfl
state_before: α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
D : ⨆ j, #↑(generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ max (aleph 1) (max (#↑s) 2 ^ ℵ₀) ≤ max (#↑s) 2 ^ ℵ₀
state_after: no goals

tactic: exact (le_max_left _ _).trans (self_le_power _ one_lt_aleph0.le)
state_before: case h1.h1.h1
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑s ≤ max (#↑s) 2 ^ ℵ₀
state_after: no goals

tactic: rw [mk_singleton]
state_before: case h1.h1.h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑{∅} ≤ max (#↑s) 2 ^ ℵ₀
state_after: case h1.h1.h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ 1 ≤ max (#↑s) 2 ^ ℵ₀

tactic: exact one_lt_aleph0.le.trans C
state_before: case h1.h1.h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ 1 ≤ max (#↑s) 2 ^ ℵ₀
state_after: no goals

tactic: apply mk_range_le.trans
state_before: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(range fun f => ⋃ n, ↑(f n)) ≤ max (#↑s) 2 ^ ℵ₀
state_after: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #(ℕ → ↑(⋃ j, generateMeasurableRec s ↑j)) ≤ max (#↑s) 2 ^ ℵ₀

tactic: simp only [mk_pi, prod_const, lift_uzero, mk_denumerable, lift_aleph0]
state_before: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #(ℕ → ↑(⋃ j, generateMeasurableRec s ↑j)) ≤ max (#↑s) 2 ^ ℵ₀
state_after: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀

tactic: have := @power_le_power_right _ _ ℵ₀ J
state_before: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
⊢ #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
state_after: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
this : #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ (max (#↑s) 2 ^ ℵ₀) ^ ℵ₀
⊢ #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀

tactic: rwa [← power_mul, aleph0_mul_aleph0] at this
state_before: case h2
α : Type u
s : Set (Set α)
i✝ i : (Quotient.out (aleph 1).ord).α
IH :
  ∀ (y : (Quotient.out (aleph 1).ord).α),
    (Quotient.out (aleph 1).ord).r y i → #↑(generateMeasurableRec s y) ≤ max (#↑s) 2 ^ ℵ₀
A : ℵ₀ ≤ aleph 1
B : aleph 1 ≤ max (#↑s) 2 ^ ℵ₀
C : ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
J : #↑(⋃ j, generateMeasurableRec s ↑j) ≤ max (#↑s) 2 ^ ℵ₀
this : #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ (max (#↑s) 2 ^ ℵ₀) ^ ℵ₀
⊢ #↑(⋃ j, generateMeasurableRec s ↑j) ^ ℵ₀ ≤ max (#↑s) 2 ^ ℵ₀
state_after: no goals