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

tactic: ext x
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: 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 : ℕ
⊢ (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: by_cases x0 : x = 0
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: 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
⊢ ∑ 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: 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 ∈ 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: 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
⊢ ∀ 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: 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
  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)}
⊢ 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: simp [y1ne]
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 [x0]
state_before: 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
state_after: no goals

tactic: simp [x0]
state_before: 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
⊢ {(1, x)} ⊆ x.divisorsAntidiagonal
state_after: no goals

tactic: simp
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)}, 1 x.1 • b x.2 = b x
state_after: no goals

tactic: intro con
state_before: 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)}
⊢ y.1 ≠ 1
state_after: 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)}
con : y.1 = 1
⊢ False

tactic: simp only [Con, mem_divisorsAntidiagonal, one_mul, Ne] at ymem
state_before: 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)}
con : y.1 = 1
⊢ False
state_after: 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 : ℕ × ℕ
ynmem : y ∉ {(1, x)}
con : y.1 = 1
ymem : y.1 * y.2 = x ∧ ¬x = 0
⊢ False

tactic: simp only [mem_singleton, Prod.ext_iff] at ynmem
state_before: 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 : ℕ × ℕ
ynmem : y ∉ {(1, x)}
con : y.1 = 1
ymem : y.1 * y.2 = x ∧ ¬x = 0
⊢ False
state_after: 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 : ℕ × ℕ
con : y.1 = 1
ymem : y.1 * y.2 = x ∧ ¬x = 0
ynmem : ¬(y.1 = 1 ∧ y.2 = x)
⊢ False

tactic: cases y
state_before: 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 : ℕ × ℕ
con : y.1 = 1
ymem : y.1 * y.2 = x ∧ ¬x = 0
ynmem : ¬(y.1 = 1 ∧ y.2 = x)
⊢ False
state_after: case mk
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
fst✝ snd✝ : ℕ
con : (fst✝, snd✝).1 = 1
ymem : (fst✝, snd✝).1 * (fst✝, snd✝).2 = x ∧ ¬x = 0
ynmem : ¬((fst✝, snd✝).1 = 1 ∧ (fst✝, snd✝).2 = x)
⊢ False

tactic: subst con
state_before: case mk
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
fst✝ snd✝ : ℕ
con : (fst✝, snd✝).1 = 1
ymem : (fst✝, snd✝).1 * (fst✝, snd✝).2 = x ∧ ¬x = 0
ynmem : ¬((fst✝, snd✝).1 = 1 ∧ (fst✝, snd✝).2 = x)
⊢ False
state_after: case mk
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
snd✝ : ℕ
ymem : (1, snd✝).1 * (1, snd✝).2 = x ∧ ¬x = 0
ynmem : ¬((1, snd✝).1 = 1 ∧ (1, snd✝).2 = x)
⊢ False

tactic: simp only [true_and, one_mul, x0, not_false_eq_true, and_true] at ynmem ymem
state_before: case mk
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
snd✝ : ℕ
ymem : (1, snd✝).1 * (1, snd✝).2 = x ∧ ¬x = 0
ynmem : ¬((1, snd✝).1 = 1 ∧ (1, snd✝).2 = x)
⊢ False
state_after: case mk
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
snd✝ : ℕ
ynmem : ¬snd✝ = x
ymem : snd✝ = x
⊢ False

tactic: tauto
state_before: case mk
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
snd✝ : ℕ
ynmem : ¬snd✝ = x
ymem : snd✝ = x
⊢ False
state_after: no goals