Theorem: ArithmeticFunction.one_smul'
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
⊢ 1 • b = b
state_after: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
⊢ (1 • b) x = b x
tactic: ext x
state_before: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
⊢ (1 • b) x = b x
state_after: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
tactic: rw [smul_apply]
state_before: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
state_after: case pos
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : x = 0
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x

case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
tactic: by_cases x0 : x = 0
state_before: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
state_after: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
tactic: have h : {(1, x)} ⊆ divisorsAntidiagonal x := by simp [x0]
state_before: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
⊢ ∑ x ∈ x.divisorsAntidiagonal, 1 x.1 • b x.2 = b x
state_after: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
⊢ ∑ x ∈ {(1, x)}, 1 x.1 • b x.2 = b x

case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
⊢ ∀ x_1 ∈ x.divisorsAntidiagonal, x_1 ∉ {(1, x)} → 1 x_1.1 • b x_1.2 = 0
tactic: rw [← sum_subset h]
state_before: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
⊢ ∀ x_1 ∈ x.divisorsAntidiagonal, x_1 ∉ {(1, x)} → 1 x_1.1 • b x_1.2 = 0
state_after: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
y : ℕ × ℕ
ymem : y ∈ x.divisorsAntidiagonal
ynmem : y ∉ {(1, x)}
⊢ 1 y.1 • b y.2 = 0
tactic: intro y ymem ynmem
state_before: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
y : ℕ × ℕ
ymem : y ∈ x.divisorsAntidiagonal
ynmem : y ∉ {(1, x)}
⊢ 1 y.1 • b y.2 = 0
state_after: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
y : ℕ × ℕ
ymem : y ∈ x.divisorsAntidiagonal
ynmem : y ∉ {(1, x)}
y1ne : y.1 ≠ 1
⊢ 1 y.1 • b y.2 = 0
tactic: have y1ne : y.fst ≠ 1 := by
    intro con
    simp only [Con, mem_divisorsAntidiagonal, one_mul, Ne] at ymem
    simp only [mem_singleton, Prod.ext_iff] at ynmem
    -- Porting note: `tauto` worked from here.
    cases y
    subst con
    simp only [true_and, one_mul, x0, not_false_eq_true, and_true] at ynmem ymem
    tauto
state_before: case neg
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : ArithmeticFunction M
x : ℕ
x0 : ¬x = 0
h : {(1, x)} ⊆ x.divisorsAntidiagonal
y : ℕ × ℕ
ymem : y ∈ x.divisorsAntidiagonal
ynmem : y ∉ {(1, x)}
y1ne : y.1 ≠ 1
⊢ 1 y.1 • b y.2 = 0
state_after: no goals
tactic: simp [y1ne]