Theorem: MeasureTheory.exists_subset_real_measurableEquiv
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: by_cases hα : Countable α
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case pos
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)

case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)

tactic: cases finite_or_infinite α
state_before: case pos
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case pos.inl
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)

case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)

tactic: obtain ⟨n, h_nonempty_equiv⟩ := exists_nat_measurableEquiv_range_coe_fin_of_finite α
state_before: case pos.inl
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)

tactic: refine ⟨_, ?_, h_nonempty_equiv⟩
state_before: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
⊢ MeasurableSet (range fun x => ↑↑x)

tactic: letI : MeasurableSpace (Fin n) := borel (Fin n)
state_before: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
⊢ MeasurableSet (range fun x => ↑↑x)
state_after: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this : MeasurableSpace (Fin n) := borel (Fin n)
⊢ MeasurableSet (range fun x => ↑↑x)

tactic: haveI : BorelSpace (Fin n) := ⟨rfl⟩
state_before: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this : MeasurableSpace (Fin n) := borel (Fin n)
⊢ MeasurableSet (range fun x => ↑↑x)
state_after: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this✝ : MeasurableSpace (Fin n) := borel (Fin n)
this : BorelSpace (Fin n)
⊢ MeasurableSet (range fun x => ↑↑x)

tactic: apply MeasurableEmbedding.measurableSet_range (mα := by infer_instance)
state_before: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this✝ : MeasurableSpace (Fin n) := borel (Fin n)
this : BorelSpace (Fin n)
⊢ MeasurableSet (range fun x => ↑↑x)
state_after: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this✝ : MeasurableSpace (Fin n) := borel (Fin n)
this : BorelSpace (Fin n)
⊢ MeasurableEmbedding fun x => ↑↑x

tactic: exact continuous_of_discreteTopology.measurableEmbedding
  (Nat.cast_injective.comp Fin.val_injective)
state_before: case pos.inl.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this✝ : MeasurableSpace (Fin n) := borel (Fin n)
this : BorelSpace (Fin n)
⊢ MeasurableEmbedding fun x => ↑↑x
state_after: no goals

tactic: infer_instance
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Finite α
n : ℕ
h_nonempty_equiv : Nonempty (α ≃ᵐ ↑(range fun x => ↑↑x))
this✝ : MeasurableSpace (Fin n) := borel (Fin n)
this : BorelSpace (Fin n)
⊢ MeasurableSpace (Fin n)
state_after: no goals

tactic: refine ⟨_, ?_, measurableEquiv_range_coe_nat_of_infinite_of_countable α⟩
state_before: case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ MeasurableSet (range Nat.cast)

tactic: apply MeasurableEmbedding.measurableSet_range (mα := by infer_instance)
state_before: case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ MeasurableSet (range Nat.cast)
state_after: case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ MeasurableEmbedding Nat.cast

tactic: exact continuous_of_discreteTopology.measurableEmbedding Nat.cast_injective
state_before: case pos.inr
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ MeasurableEmbedding Nat.cast
state_after: no goals

tactic: infer_instance
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : Countable α
h✝ : Infinite α
⊢ MeasurableSpace ℕ
state_after: no goals

tactic: refine
  ⟨univ, MeasurableSet.univ,
    ⟨(PolishSpace.measurableEquivOfNotCountable hα ?_ : α ≃ᵐ (univ : Set ℝ))⟩⟩
state_before: case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ∃ s, MeasurableSet s ∧ Nonempty (α ≃ᵐ ↑s)
state_after: case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ¬Countable ↑univ

tactic: rw [countable_coe_iff]
state_before: case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ¬Countable ↑univ
state_after: case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ¬univ.Countable

tactic: exact Cardinal.not_countable_real
state_before: case neg
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
hα : ¬Countable α
⊢ ¬univ.Countable
state_after: no goals