Theorem: Cardinal.prime_of_aleph0_le
File: Mathlib/SetTheory/Cardinal/Divisibility.lean

tactic: refine' ⟨(aleph0_pos.trans_le ha).ne', _, fun b c hbc => _⟩
state_before: a b : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
⊢ Prime a

tactic: cases' eq_or_ne (b * c) 0 with hz hz
state_before: case refine'_2
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
⊢ a ∣ b ∨ a ∣ c

tactic: wlog h : c ≤ b
state_before: case refine'_2.inr
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
⊢ a ∣ b ∨ a ∣ c

tactic: left
state_before: a✝ a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
h : c ≤ b
⊢ a ∣ b ∨ a ∣ c

tactic: have habc := le_of_dvd hz hbc
state_before: case h
a✝ a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
h : c ≤ b
⊢ a ∣ b

tactic: rwa [mul_eq_max' <| ha.trans <| habc, max_def', if_pos h] at hbc
state_before: case h
a✝ a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
h : c ≤ b
habc : a ≤ b * c
⊢ a ∣ b

tactic: rw [isUnit_iff]
state_before: case refine'_1
a b : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
⊢ ¬IsUnit a

tactic: exact (one_lt_aleph0.trans_le ha).ne'
state_before: case refine'_1
a b : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
⊢ ¬a = 1

tactic: rcases mul_eq_zero.mp hz with (rfl | rfl) <;> simp
state_before: case refine'_2.inl
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c = 0
⊢ a ∣ b ∨ a ∣ c

tactic: cases le_total c b <;> [skip; rw [or_comm]] <;> apply_assumption
state_before: case refine'_2.inr.inr
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
⊢ a ∣ b ∨ a ∣ c

tactic: assumption'
state_before: case refine'_2.inr.inr.inl.b
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ Cardinal

case refine'_2.inr.inr.inl.n
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ ℕ

case refine'_2.inr.inr.inl.m
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ ℕ

case refine'_2.inr.inr.inl.ha
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ ℵ₀ ≤ a

case refine'_2.inr.inr.inl.hbc
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ a ∣ b * c

case refine'_2.inr.inr.inl.hz
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ b * c ≠ 0

case refine'_2.inr.inr.inl.h
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : c ≤ b
hz_symm : 0 ≠ b * c
⊢ c ≤ b

case refine'_2.inr.inr.inr.b
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ Cardinal

case refine'_2.inr.inr.inr.n
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ ℕ

case refine'_2.inr.inr.inr.m
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ ℕ

case refine'_2.inr.inr.inr.ha
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ ℵ₀ ≤ a

case refine'_2.inr.inr.inr.hbc
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ a ∣ c * b

case refine'_2.inr.inr.inr.hz
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ c * b ≠ 0

case refine'_2.inr.inr.inr.h
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ b ≤ c

tactic: all_goals rwa [mul_comm]
state_before: case refine'_2.inr.inr.inr.hbc
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ a ∣ c * b

case refine'_2.inr.inr.inr.hz
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ c * b ≠ 0

tactic: rwa [mul_comm]
state_before: case refine'_2.inr.inr.inr.hz
a b✝ : Cardinal
n m : ℕ
ha : ℵ₀ ≤ a
b c : Cardinal
hbc : a ∣ b * c
hz : b * c ≠ 0
this :
  ∀ {a : Cardinal} {b : Cardinal} {n m : ℕ}, ℵ₀ ≤ a → ∀ (b c : Cardinal), a ∣ b * c → b * c ≠ 0 → c ≤ b → a ∣ b ∨ a ∣ c
h : ¬c ≤ b
h✝ : b ≤ c
hz_symm : 0 ≠ b * c
⊢ c * b ≠ 0