Theorem: Rat.cast_nnratCast
File: Mathlib/Data/Rat/Cast/Lemmas.lean

tactic: rw [Rat.cast_def, NNRat.cast_def, NNRat.cast_def]
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ ↑↑q = ↑q
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

tactic: have hn := @num_div_eq_of_coprime q.num q.den ?hdp q.coprime_num_den
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

case hdp
α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ 0 < ↑q.den

tactic: on_goal 1 => have hd := @den_div_eq_of_coprime q.num q.den ?hdp q.coprime_num_den
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

case hdp
α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ 0 < ↑q.den
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
hd : ↑(↑↑q.num / ↑↑q.den).den = ↑q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

case hdp
α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ 0 < ↑q.den

tactic: case hdp => simpa only [Nat.cast_pos] using q.den_pos
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
hd : ↑(↑↑q.num / ↑↑q.den).den = ↑q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

case hdp
α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ 0 < ↑q.den
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
hd : ↑(↑↑q.num / ↑↑q.den).den = ↑q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

tactic: simp only [Int.cast_natCast, Nat.cast_inj] at hn hd
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
hd : ↑(↑↑q.num / ↑↑q.den).den = ↑q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑q.num / ↑q.den).num = ↑q.num
hd : (↑q.num / ↑q.den).den = q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

tactic: rw [hn, hd, Int.cast_natCast]
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑q.num / ↑q.den).num = ↑q.num
hd : (↑q.num / ↑q.den).den = q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den
state_after: no goals

tactic: have hd := @den_div_eq_of_coprime q.num q.den ?hdp q.coprime_num_den
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den
state_after: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
hn : (↑↑q.num / ↑↑q.den).num = ↑q.num
hd : ↑(↑↑q.num / ↑↑q.den).den = ↑q.den
⊢ ↑(↑q.num / ↑q.den).num / ↑(↑q.num / ↑q.den).den = ↑q.num / ↑q.den

tactic: simpa only [Nat.cast_pos] using q.den_pos
state_before: α : Type u_1
inst✝¹ : DivisionRing α
K : Type u_2
inst✝ : DivisionRing K
q : ℚ≥0
⊢ 0 < ↑q.den
state_after: no goals