Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+πŸ–±οΈto focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2019 Neil Strickland. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Neil Strickland

! This file was ported from Lean 3 source module algebra.geom_sum
! leanprover-community/mathlib commit f7fc89d5d5ff1db2d1242c7bb0e9062ce47ef47c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.BigOperators.Order
import Mathlib.Algebra.BigOperators.Ring
import Mathlib.Algebra.BigOperators.Intervals
import Mathlib.Tactic.Abel
import Mathlib.Data.Nat.Parity

/-!
# Partial sums of geometric series

This file determines the values of the geometric series $\sum_{i=0}^{n-1} x^i$ and
$\sum_{i=0}^{n-1} x^i y^{n-1-i}$ and variants thereof. We also provide some bounds on the
"geometric" sum of `a/b^i` where `a b : β„•`.

## Main statements

* `geom_sum_Ico` proves that $\sum_{i=m}^{n-1} x^i=\frac{x^n-x^m}{x-1}$ in a division ring.
* `geom_sumβ‚‚_Ico` proves that $\sum_{i=m}^{n-1} x^iy^{n - 1 - i}=\frac{x^n-y^{n-m}x^m}{x-y}$
  in a field.

Several variants are recorded, generalising in particular to the case of a noncommutative ring in
which `x` and `y` commute. Even versions not using division or subtraction, valid in each semiring,
are recorded.
-/

--porting note: corrected type in the description of `geom_sumβ‚‚_Ico` (in the doc string only).

universe u

variable {
Ξ±: Type u
Ξ±
:
Type u: Type (u+1)
Type u
} open Finset MulOpposite open BigOperators section Semiring variable [
Semiring: Type ?u.6 β†’ Type ?u.6
Semiring
Ξ±: Type u
Ξ±
] theorem
geom_sum_succ: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±} {n : β„•}, βˆ‘ i in range (n + 1), x ^ i = x * βˆ‘ i in range n, x ^ i + 1
geom_sum_succ
{
x: Ξ±
x
:
Ξ±: Type u
Ξ±
} {n :
β„•: Type
β„•
} : (βˆ‘
i: ?m.83
i
in
range: β„• β†’ Finset β„•
range
(n +
1: ?m.29
1
),
x: Ξ±
x
^
i: ?m.83
i
) = (
x: Ξ±
x
* βˆ‘
i: ?m.503
i
in
range: β„• β†’ Finset β„•
range
n,
x: Ξ±
x
^
i: ?m.503
i
) +
1: ?m.595
1
:=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n: β„•


βˆ‘ i in range (n + 1), x ^ i = x * βˆ‘ i in range n, x ^ i + 1

Goals accomplished! πŸ™
#align geom_sum_succ
geom_sum_succ: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±} {n : β„•}, βˆ‘ i in range (n + 1), x ^ i = x * βˆ‘ i in range n, x ^ i + 1
geom_sum_succ
theorem
geom_sum_succ': βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±} {n : β„•}, βˆ‘ i in range (n + 1), x ^ i = x ^ n + βˆ‘ i in range n, x ^ i
geom_sum_succ'
{
x: Ξ±
x
:
Ξ±: Type u
Ξ±
} {n :
β„•: Type
β„•
} : (βˆ‘
i: ?m.2123
i
in
range: β„• β†’ Finset β„•
range
(n +
1: ?m.2069
1
),
x: Ξ±
x
^
i: ?m.2123
i
) =
x: Ξ±
x
^ n + βˆ‘
i: ?m.2543
i
in
range: β„• β†’ Finset β„•
range
n,
x: Ξ±
x
^
i: ?m.2543
i
:= (
sum_range_succ: βˆ€ {Ξ² : Type ?u.2943} [inst : AddCommMonoid Ξ²] (f : β„• β†’ Ξ²) (n : β„•), βˆ‘ x in range (n + 1), f x = βˆ‘ x in range n, f x + f n
sum_range_succ
_: β„• β†’ ?m.2944
_
_).
trans: βˆ€ {Ξ± : Sort ?u.2975} {a b c : Ξ±}, a = b β†’ b = c β†’ a = c
trans
(
add_comm: βˆ€ {G : Type ?u.3002} [inst : AddCommSemigroup G] (a b : G), a + b = b + a
add_comm
_: ?m.3003
_
_: ?m.3003
_
) #align geom_sum_succ'
geom_sum_succ': βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±} {n : β„•}, βˆ‘ i in range (n + 1), x ^ i = x ^ n + βˆ‘ i in range n, x ^ i
geom_sum_succ'
theorem
geom_sum_zero: βˆ€ (x : Ξ±), βˆ‘ i in range 0, x ^ i = 0
geom_sum_zero
(
x: Ξ±
x
:
Ξ±: Type u
Ξ±
) : (βˆ‘
i: ?m.3281
i
in
range: β„• β†’ Finset β„•
range
0: ?m.3269
0
,
x: Ξ±
x
^
i: ?m.3281
i
) =
0: ?m.3681
0
:=
rfl: βˆ€ {Ξ± : Sort ?u.3846} {a : Ξ±}, a = a
rfl
#align geom_sum_zero
geom_sum_zero: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x : Ξ±), βˆ‘ i in range 0, x ^ i = 0
geom_sum_zero
theorem
geom_sum_one: βˆ€ (x : Ξ±), βˆ‘ i in range 1, x ^ i = 1
geom_sum_one
(
x: Ξ±
x
:
Ξ±: Type u
Ξ±
) : (βˆ‘
i: ?m.3927
i
in
range: β„• β†’ Finset β„•
range
1: ?m.3915
1
,
x: Ξ±
x
^
i: ?m.3927
i
) =
1: ?m.4327
1
:=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x: Ξ±


βˆ‘ i in range 1, x ^ i = 1

Goals accomplished! πŸ™
#align geom_sum_one
geom_sum_one: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x : Ξ±), βˆ‘ i in range 1, x ^ i = 1
geom_sum_one
@[simp] theorem
geom_sum_two: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±}, βˆ‘ i in range 2, x ^ i = x + 1
geom_sum_two
{
x: Ξ±
x
:
Ξ±: Type u
Ξ±
} : (βˆ‘
i: ?m.4655
i
in
range: β„• β†’ Finset β„•
range
2: ?m.4644
2
,
x: Ξ±
x
^
i: ?m.4655
i
) =
x: Ξ±
x
+
1: ?m.5058
1
:=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x: Ξ±


βˆ‘ i in range 2, x ^ i = x + 1

Goals accomplished! πŸ™
#align geom_sum_two
geom_sum_two: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x : Ξ±}, βˆ‘ i in range 2, x ^ i = x + 1
geom_sum_two
@[simp] theorem
zero_geom_sum: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {n : β„•}, βˆ‘ i in range n, 0 ^ i = if n = 0 then 0 else 1
zero_geom_sum
: βˆ€ {
n: ?m.5712
n
}, (βˆ‘
i: ?m.5724
i
in
range: β„• β†’ Finset β„•
range
n: ?m.5712
n
, (
0: ?m.5731
0
:
Ξ±: Type u
Ξ±
) ^
i: ?m.5724
i
) = if
n: ?m.5712
n
=
0: ?m.6276
0
then
0: ?m.6305
0
else
1: ?m.6316
1
| 0 =>

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α


βˆ‘ i in range 0, 0 ^ i = if 0 = 0 then 0 else 1

Goals accomplished! πŸ™
| 1 =>

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α


βˆ‘ i in range 1, 0 ^ i = if 1 = 0 then 0 else 1

Goals accomplished! πŸ™
| n + 2 =>

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

n: β„•


βˆ‘ i in range (n + 2), 0 ^ i = if n + 2 = 0 then 0 else 1
Ξ±: Type u

inst✝: Semiring α

n: β„•


βˆ‘ i in range (n + 2), 0 ^ i = if n + 2 = 0 then 0 else 1
Ξ±: Type u

inst✝: Semiring α

n: β„•


0 ^ (n + 1) + βˆ‘ i in range (n + 1), 0 ^ i = if n + 2 = 0 then 0 else 1
Ξ±: Type u

inst✝: Semiring α

n: β„•


0 ^ (n + 1) + βˆ‘ i in range (n + 1), 0 ^ i = if n + 2 = 0 then 0 else 1
Ξ±: Type u

inst✝: Semiring α

n: β„•


βˆ‘ i in range (n + 2), 0 ^ i = if n + 2 = 0 then 0 else 1

Goals accomplished! πŸ™
#align zero_geom_sum
zero_geom_sum: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {n : β„•}, βˆ‘ i in range n, 0 ^ i = if n = 0 then 0 else 1
zero_geom_sum
theorem
one_geom_sum: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (n : β„•), βˆ‘ i in range n, 1 ^ i = ↑n
one_geom_sum
(n :
β„•: Type
β„•
) : (βˆ‘
i: ?m.8490
i
in
range: β„• β†’ Finset β„•
range
n, (
1: ?m.8497
1
:
Ξ±: Type u
Ξ±
) ^
i: ?m.8490
i
) = n :=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

n: β„•


βˆ‘ i in range n, 1 ^ i = ↑n

Goals accomplished! πŸ™
#align one_geom_sum
one_geom_sum: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (n : β„•), βˆ‘ i in range n, 1 ^ i = ↑n
one_geom_sum
-- porting note: simp can prove this -- @[simp] theorem
op_geom_sum: βˆ€ (x : Ξ±) (n : β„•), op (βˆ‘ i in range n, x ^ i) = βˆ‘ i in range n, op x ^ i
op_geom_sum
(
x: Ξ±
x
:
Ξ±: Type u
Ξ±
) (n :
β„•: Type
β„•
) :
op: {Ξ± : Type ?u.9667} β†’ Ξ± β†’ αᡐᡒᡖ
op
(βˆ‘
i: ?m.9704
i
in
range: β„• β†’ Finset β„•
range
n,
x: Ξ±
x
^
i: ?m.9704
i
) = βˆ‘
i: ?m.10110
i
in
range: β„• β†’ Finset β„•
range
n,
op: {Ξ± : Type ?u.10115} β†’ Ξ± β†’ αᡐᡒᡖ
op
x: Ξ±
x
^
i: ?m.10110
i
:=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n: β„•


op (βˆ‘ i in range n, x ^ i) = βˆ‘ i in range n, op x ^ i

Goals accomplished! πŸ™
#align op_geom_sum
op_geom_sum: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x : Ξ±) (n : β„•), op (βˆ‘ i in range n, x ^ i) = βˆ‘ i in range n, op x ^ i
op_geom_sum
--porting note: linter suggested to change left hand side @[simp] theorem
op_geom_sumβ‚‚: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x y : Ξ±) (n : β„•), βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
op_geom_sumβ‚‚
(
x: Ξ±
x
y: Ξ±
y
:
Ξ±: Type u
Ξ±
) (n :
β„•: Type
β„•
) : βˆ‘
i: ?m.10767
i
in
range: β„• β†’ Finset β„•
range
n,
op: {Ξ± : Type ?u.10775} β†’ Ξ± β†’ αᡐᡒᡖ
op
y: Ξ±
y
^ (n -
1: ?m.10784
1
-
i: ?m.10767
i
) *
op: {Ξ± : Type ?u.10797} β†’ Ξ± β†’ αᡐᡒᡖ
op
x: Ξ±
x
^
i: ?m.10767
i
= βˆ‘
i: ?m.11707
i
in
range: β„• β†’ Finset β„•
range
n,
op: {Ξ± : Type ?u.11715} β†’ Ξ± β†’ αᡐᡒᡖ
op
y: Ξ±
y
^
i: ?m.11707
i
*
op: {Ξ± : Type ?u.11720} β†’ Ξ± β†’ αᡐᡒᡖ
op
x: Ξ±
x
^ (n -
1: ?m.11729
1
-
i: ?m.11707
i
):=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ j in range n, op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ j in range n, op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j ∈ range n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j ∈ range n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j < n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j ∈ range n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j + 1 ≀ n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j + 1 ≀ n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j + 1 ≀ n


op y ^ (n - 1 - (n - 1 - j)) * op x ^ (n - 1 - j) = op y ^ j * op x ^ (n - 1 - j)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j + 1 ≀ n


e_a.e_a
n - 1 - (n - 1 - j) = j
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n, j: β„•

j_in: j + 1 ≀ n


e_a.e_a.h
j ≀ n - 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

n: β„•


βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)

Goals accomplished! πŸ™
#align op_geom_sumβ‚‚
op_geom_sumβ‚‚: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x y : Ξ±) (n : β„•), βˆ‘ i in range n, op y ^ (n - 1 - i) * op x ^ i = βˆ‘ i in range n, op y ^ i * op x ^ (n - 1 - i)
op_geom_sumβ‚‚
theorem
geom_sumβ‚‚_with_one: βˆ€ (x : Ξ±) (n : β„•), βˆ‘ i in range n, x ^ i * 1 ^ (n - 1 - i) = βˆ‘ i in range n, x ^ i
geom_sumβ‚‚_with_one
(
x: Ξ±
x
:
Ξ±: Type u
Ξ±
) (n :
β„•: Type
β„•
) : (βˆ‘
i: ?m.13877
i
in
range: β„• β†’ Finset β„•
range
n,
x: Ξ±
x
^
i: ?m.13877
i
*
1: ?m.13889
1
^ (n -
1: ?m.13906
1
-
i: ?m.13877
i
)) = βˆ‘
i: ?m.14504
i
in
range: β„• β†’ Finset β„•
range
n,
x: Ξ±
x
^
i: ?m.14504
i
:=
sum_congr: βˆ€ {Ξ² : Type ?u.15267} {Ξ± : Type ?u.15266} {s₁ sβ‚‚ : Finset Ξ±} {f g : Ξ± β†’ Ξ²} [inst : AddCommMonoid Ξ²], s₁ = sβ‚‚ β†’ (βˆ€ (x : Ξ±), x ∈ sβ‚‚ β†’ f x = g x) β†’ Finset.sum s₁ f = Finset.sum sβ‚‚ g
sum_congr
rfl: βˆ€ {Ξ± : Sort ?u.15315} {a : Ξ±}, a = a
rfl
fun
i: ?m.15322
i
_: ?m.15325
_
=>

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n, i: β„•

x✝: i ∈ range n


x ^ i * 1 ^ (n - 1 - i) = x ^ i
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n, i: β„•

x✝: i ∈ range n


x ^ i * 1 ^ (n - 1 - i) = x ^ i
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n, i: β„•

x✝: i ∈ range n


x ^ i * 1 = x ^ i
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n, i: β„•

x✝: i ∈ range n


x ^ i * 1 ^ (n - 1 - i) = x ^ i
Ξ±: Type u

inst✝: Semiring α

x: Ξ±

n, i: β„•

x✝: i ∈ range n


x ^ i = x ^ i

Goals accomplished! πŸ™
#align geom_sumβ‚‚_with_one
geom_sumβ‚‚_with_one: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] (x : Ξ±) (n : β„•), βˆ‘ i in range n, x ^ i * 1 ^ (n - 1 - i) = βˆ‘ i in range n, x ^ i
geom_sumβ‚‚_with_one
/-- $x^n-y^n = (x-y) \sum x^ky^{n-1-k}$ reformulated without `-` signs. -/ protected theorem
Commute.geom_sumβ‚‚_mul_add: βˆ€ {Ξ± : Type u} [inst : Semiring Ξ±] {x y : Ξ±}, Commute x y β†’ βˆ€ (n : β„•), (βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Commute.geom_sumβ‚‚_mul_add
{
x: Ξ±
x
y: Ξ±
y
:
Ξ±: Type u
Ξ±
} (
h: Commute x y
h
:
Commute: {S : Type ?u.15532} β†’ [inst : Mul S] β†’ S β†’ S β†’ Prop
Commute
x: Ξ±
x
y: Ξ±
y
) (n :
β„•: Type
β„•
) : (βˆ‘
i: ?m.15717
i
in
range: β„• β†’ Finset β„•
range
n, (
x: Ξ±
x
+
y: Ξ±
y
) ^
i: ?m.15717
i
*
y: Ξ±
y
^ (n -
1: ?m.15738
1
-
i: ?m.15717
i
)) *
x: Ξ±
x
+
y: Ξ±
y
^ n = (
x: Ξ±
x
+
y: Ξ±
y
) ^ n :=

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±


βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


(βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in βˆ…, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
0 * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
0 + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
1 = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
(βˆ‘ i in range Nat.zero, f Nat.zero i) * x + y ^ Nat.zero = (x + y) ^ Nat.zero
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)


zero
1 = 1

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

n: β„•


(βˆ‘ i in range n, (x + y) ^ i * y ^ (n - 1 - i)) * x + y ^ n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n * y ^ (n + 1 - 1 - n) = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n * y ^ (n + 1 - (1 + n)) = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n * y ^ (1 + n - (1 + n)) = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n * y ^ 0 = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n * 1 = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


f (n + 1) n = (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


(x + y) ^ n = (x + y) ^ n

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * (x + y) ^ i * y ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = (x + y) ^ i * y * y ^ (n - 1 - i)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = (x + y) ^ i * (y * y ^ (n - 1 - i))
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = (x + y) ^ i * y ^ (n - 1 - i + 1)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


(x + y) ^ i * y ^ (n + 1 - 1 - i) = (x + y) ^ i * y ^ (n - 1 - i + 1)
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n + 1 - 1 - i = n - 1 - i + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n + 1 - 1 - i = n - 1 - i + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n - i = n - 1 - i + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n + 1 - 1 - i = n - 1 - i + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n - i = n - (1 + i) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n + 1 - 1 - i = n - 1 - i + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this: Commute y ((x + y) ^ i)


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: i + 1 + (n - (i + 1)) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: i + 1 + (n - (i + 1)) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n


f (n + 1) i = y * f n i
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - (i + 1) + (i + 1) - i = n - (i + 1) + (i + 1) - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - (i + 1) + (i + 1) - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - (1 + i) + (1 + i) - i = n - (1 + i) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - (1 + i) + 1 + i - i = n - (1 + i) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - i = n - (i + 1) + 1
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

i: β„•

hi: i ∈ range n

this✝: Commute y ((x + y) ^ i)

this: n - (i + 1) + (i + 1) = n


e_a.e_a
n - (1 + i) + 1 = n - (1 + i) + 1

Goals accomplished! πŸ™
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(f (Nat.succ n) n + βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
f (Nat.succ n) n * x + (βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + (βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + ((βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n) = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + ((βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n) = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + ((βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n) = x * (x + y) ^ n + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + ((βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n) = (x + y) ^ n * x + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ
(x + y) ^ n * x + ((βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n) = (x + y) ^ n * x + y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ.e_a
(βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n = y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n


succ
(βˆ‘ i in range (Nat.succ n), f (Nat.succ n) i) * x + y ^ Nat.succ n = (x + y) ^ Nat.succ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ.e_a
(βˆ‘ x in range n, f (Nat.succ n) x) * x + y ^ Nat.succ n = y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f m i = (x + y) ^ i * y ^ (m - 1 - i)

n: β„•

ih: (βˆ‘ i in range n, f n i) * x + y ^ n = (x + y) ^ n

f_last: f (n + 1) n = (x + y) ^ n

f_succ: βˆ€ (i : β„•), i ∈ range n β†’ f (n + 1) i = y * f n i


succ.e_a
(βˆ‘ x in range n, y * f n x) * x + y ^ Nat.succ n = y * (x + y) ^ n
Ξ±: Type u

inst✝: Semiring α

x, y: Ξ±

h: Commute x y

f:= fun m i => (x + y) ^ i * y ^ (m - 1 - i): β„• β†’ β„• β†’ Ξ±

hf: βˆ€ (m i : β„•), f