awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₃ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₃ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₄ : ((↑b : R) * (↑a : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₃ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₄ : ((↑b : R) * (↑a : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₅ : (↑b : R) ^ N' * (↑a : R) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₃ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₄ : ((↑b : R) * (↑a : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₅ : (↑b : R) ^ N' * (↑a : R) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₆ : (↑b : R) ^ N' * r_2 b * ((↑a : R) ^ N' * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]
-- Lean 4 proof step from Mathlib.RingTheory.Localization.Away.Basic (goal)
Goal:
R : Type u_1
inst : CommSemiring R
s : Finset R
f : (a : (↑(↑s : Set R) : Type u_1)) → Away (↑a : R)
h :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    Eq (α := Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayRight (↑a : R) (↑b : R) : (a_1 : Away (↑a : R)) → Away ((↑a : R) * (↑b : R))) (f a) :
        Away ((↑a : R) * (↑b : R)))
      ((Away.awayToAwayLeft (↑b : R) (↑a : R) : (a_1 : Away (↑b : R)) → Away ((↑a : R) * (↑b : R))) (f b) :
        Away ((↑a : R) * (↑b : R)))
mem : Membership.mem (γ := Ideal R) (Ideal.span (↑s : Set R)) 1
span_eq : Eq (α := Ideal R) (Ideal.span (↑s : Set R)) ⊤
n : (a : (↑(↑s : Set R) : Type u_1)) → ℕ
r_1 : (a : (↑(↑s : Set R) : Type u_1)) → R
eq_1 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    f a * HPow.hPow (α := Away (↑a : R)) ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (↑a : R)) (n a) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_1 a)
N_1 : ℕ := s.attach.sup n
r_2 : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ (N_1 - n a) * r_1 a
eq_2 :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N_1) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r_2 a)
N'_1 : (a b : (↑(↑s : Set R) : Type u_1)) → ℕ
hN' :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 a * (↑b : R) ^ N_1) =
      ((↑a : R) * (↑b : R)) ^ N'_1 a b * (r_2 b * (↑a : R) ^ N_1)
N' : ℕ :=
  (s ×ˢ s).attach.sup fun (a : ↥(s ×ˢ s)) ↦
    N'_1 (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).1 ⋯)
      (Subtype.mk (p := fun (x : R) ↦ x ∈ (↑s : Set R)) (↑a : R × R).2 ⋯)
eq2 :
  ∀ (a b : (↑(↑s : Set R) : Type u_1)),
    ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1)
N : ℕ := N' + N_1
r : (a : (↑(↑s : Set R) : Type u_1)) → R := fun (a : (↑(↑s : Set R) : Type u_1)) ↦ (↑a : R) ^ N' * r_2 a
eq :
  ∀ (a : (↑(↑s : Set R) : Type u_1)),
    HMul.hMul (β := Away (↑a : R)) (f a)
        ((algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) ((↑a : R) ^ N) : Away (↑a : R)) =
      (algebraMap R (Away (↑a : R)) : (a_1 : R) → Away (↑a : R)) (r a)
a b : (↑(↑s : Set R) : Type u_1)
rw : r a * ((↑b : R) ^ N' * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₁ : (↑a : R) ^ N' * (↑b : R) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₂ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 a * (↑b : R) ^ N_1) = r b * (↑a : R) ^ N
rw₃ : ((↑a : R) * (↑b : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₄ : ((↑b : R) * (↑a : R)) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₅ : (↑b : R) ^ N' * (↑a : R) ^ N' * (r_2 b * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
rw₆ : (↑b : R) ^ N' * r_2 b * ((↑a : R) ^ N' * (↑a : R) ^ N_1) = r b * (↑a : R) ^ N
⊢ r a * (↑b : R) ^ N = r b * (↑a : R) ^ N
have rw₇ : (↑b : R) ^ N' * r_2 b * (↑a : R) ^ (N' + N_1) = r b * (↑a : R) ^ N
Tactic: rw [pow_add, mul_mul_mul_comm, ← mul_pow, eq2,
      mul_comm a.1, mul_pow, mul_mul_mul_comm, ← pow_add]