Analysis I, Section 7.1: Finite series
I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.
Technical note: it is convenient in Lean to extend finite sequences (usually by zero) to be functions on the entire integers.
Main constructions and results of this section:
-- This makes available the convenient notation `∑ n ∈ A, f n` to denote summation of `f n` for
-- `n` ranging over a finite set `A`.
open BigOperators-
API for summation over finite sets (encoded using Mathlib's
Finsettype), using theFinset.summethod and the∑ n ∈ A, f nnotation. -
Fubini's theorem for finite series
We do not attempt to replicate the full API for Finset.sum here, but in subsequent sections we
shall make liberal use of this API.
-- This is a technical device to avoid Mathlib's insistence on decidable equality for finite sets.
open Classicalnamespace FinsetDefinition 7.1.1
theorem sum_of_empty {n m:ℤ} (h: n < m) (a: ℤ → ℝ) : ∑ i ∈ Icc m n, a i = 0 := n:ℤm:ℤh:n < ma:ℤ → ℝ⊢ ∑ i ∈ Icc m n, a i = 0
n:ℤm:ℤh:n < ma:ℤ → ℝ⊢ ∀ x ∈ Icc m n, a x = 0; n:ℤm:ℤh:n < ma:ℤ → ℝx✝:ℤ⊢ x✝ ∈ Icc m n → a x✝ = 0; n:ℤm:ℤh:n < ma:ℤ → ℝx✝:ℤ⊢ m ≤ x✝ ∧ x✝ ≤ n → a x✝ = 0; All goals completed! 🐙
Definition 7.1.1. This is similar to Mathlib's Finset.sum_Icc_succ_top except that the
latter involves summation over the natural numbers rather than integers.
theorem sum_of_nonempty {n m:ℤ} (h: n ≥ m-1) (a: ℤ → ℝ) :
∑ i ∈ Icc m (n+1), a i = ∑ i ∈ Icc m n, a i + a (n+1) := n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ ∑ i ∈ Icc m (n + 1), a i = ∑ i ∈ Icc m n, a i + a (n + 1)
n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ ∑ i ∈ Icc m (n + 1), a i = a (n + 1) + ∑ i ∈ Icc m n, a i
n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ Icc m (n + 1) = insert (n + 1) (Icc m n)n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ DecidableEq ℤn:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ n + 1 ∉ Icc m n
n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ Icc m (n + 1) = insert (n + 1) (Icc m n) n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝa✝:ℤ⊢ a✝ ∈ Icc m (n + 1) ↔ a✝ ∈ insert (n + 1) (Icc m n); n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝa✝:ℤ⊢ m ≤ a✝ ∧ a✝ ≤ n + 1 ↔ a✝ = n + 1 ∨ m ≤ a✝ ∧ a✝ ≤ n; All goals completed! 🐙
n:ℤm:ℤh:n ≥ m - 1a:ℤ → ℝ⊢ DecidableEq ℤ All goals completed! 🐙
All goals completed! 🐙example (a: ℤ → ℝ) (m:ℤ) : ∑ i ∈ Icc m (m-2), a i = 0 := a:ℤ → ℝm:ℤ⊢ ∑ i ∈ Icc m (m - 2), a i = 0 All goals completed! 🐙example (a: ℤ → ℝ) (m:ℤ) : ∑ i ∈ Icc m (m-1), a i = 0 := a:ℤ → ℝm:ℤ⊢ ∑ i ∈ Icc m (m - 1), a i = 0 All goals completed! 🐙example (a: ℤ → ℝ) (m:ℤ) : ∑ i ∈ Icc m m, a i = a m := a:ℤ → ℝm:ℤ⊢ ∑ i ∈ Icc m m, a i = a m All goals completed! 🐙example (a: ℤ → ℝ) (m:ℤ) : ∑ i ∈ Icc m (m+1), a i = a m + a (m+1) := a:ℤ → ℝm:ℤ⊢ ∑ i ∈ Icc m (m + 1), a i = a m + a (m + 1) All goals completed! 🐙example (a: ℤ → ℝ) (m:ℤ) : ∑ i ∈ Icc m (m+2), a i = a m + a (m+1) + a (m+2) := a:ℤ → ℝm:ℤ⊢ ∑ i ∈ Icc m (m + 2), a i = a m + a (m + 1) + a (m + 2) All goals completed! 🐙
Lemma 7.1.4(a) / Exercise 7.1.1
theorem concat_finite_series {m n p:ℤ} (hmn: m ≤ n+1) (hpn : n ≤ p) (a: ℤ → ℝ) :
∑ i ∈ Icc m n, a i + ∑ i ∈ Icc (n+1) p, a i = ∑ i ∈ Icc m p, a i := m:ℤn:ℤp:ℤhmn:m ≤ n + 1hpn:n ≤ pa:ℤ → ℝ⊢ ∑ i ∈ Icc m n, a i + ∑ i ∈ Icc (n + 1) p, a i = ∑ i ∈ Icc m p, a i All goals completed! 🐙Lemma 7.1.4(b) / Exercise 7.1.1
theorem shift_finite_series {m n k:ℤ} (a: ℤ → ℝ) :
∑ i ∈ Icc m n, a i = ∑ i ∈ Icc (m+k) (n+k), a (i-k) := m:ℤn:ℤk:ℤa:ℤ → ℝ⊢ ∑ i ∈ Icc m n, a i = ∑ i ∈ Icc (m + k) (n + k), a (i - k) All goals completed! 🐙Lemma 7.1.4(c) / Exercise 7.1.1
theorem finite_series_add {m n:ℤ} (a b: ℤ → ℝ) :
∑ i ∈ Icc m n, (a i + b i) = ∑ i ∈ Icc m n, a i + ∑ i ∈ Icc m n, b i := m:ℤn:ℤa:ℤ → ℝb:ℤ → ℝ⊢ ∑ i ∈ Icc m n, (a i + b i) = ∑ i ∈ Icc m n, a i + ∑ i ∈ Icc m n, b i All goals completed! 🐙Lemma 7.1.4(d) / Exercise 7.1.1
theorem finite_series_const_mul {m n:ℤ} (a: ℤ → ℝ) (c:ℝ) :
∑ i ∈ Icc m n, c * a i = c * ∑ i ∈ Icc m n, a i := m:ℤn:ℤa:ℤ → ℝc:ℝ⊢ ∑ i ∈ Icc m n, c * a i = c * ∑ i ∈ Icc m n, a i All goals completed! 🐙Lemma 7.1.4(e) / Exercise 7.1.1
theorem abs_finite_series_le {m n:ℤ} (a: ℤ → ℝ) (c:ℝ) :
|∑ i ∈ Icc m n, a i| ≤ ∑ i ∈ Icc m n, |a i| := m:ℤn:ℤa:ℤ → ℝc:ℝ⊢ |∑ i ∈ Icc m n, a i| ≤ ∑ i ∈ Icc m n, |a i| All goals completed! 🐙Lemma 7.1.4(f) / Exercise 7.1.1
theorem finite_series_of_le {m n:ℤ} {a b: ℤ → ℝ} (h: ∀ i, m ≤ i → i ≤ n → a i ≤ b i) :
∑ i ∈ Icc m n, a i ≤ ∑ i ∈ Icc m n, b i := m:ℤn:ℤa:ℤ → ℝb:ℤ → ℝh:∀ (i : ℤ), m ≤ i → i ≤ n → a i ≤ b i⊢ ∑ i ∈ Icc m n, a i ≤ ∑ i ∈ Icc m n, b i All goals completed! 🐙Proposition 7.1.8.
theorem finite_series_of_rearrange {n:ℕ} {X':Type*} (X: Finset X') (hcard: X.card = n)
(f: X' → ℝ) (g h: Icc (1:ℤ) n → X) (hg: Function.Bijective g) (hh: Function.Bijective h) :
∑ i ∈ Icc (1:ℤ) n, (if hi:i ∈ Icc (1:ℤ) n then f (g ⟨ i, hi ⟩) else 0)
= ∑ i ∈ Icc (1:ℤ) n, (if hi: i ∈ Icc (1:ℤ) n then f (h ⟨ i, hi ⟩) else 0) := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0
-- This proof is written to broadly follow the structure of the original text.
X':Type u_1f:X' → ℝ⊢ ∀ {n : ℕ} (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0; X':Type u_1f:X' → ℝn:ℕ⊢ ∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0
X':Type u_1f:X' → ℝ⊢ ∀ (X : Finset X'),
#X = 0 →
∀ (g h : { x // x ∈ Icc 1 ↑0 } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑0, if hi : i ∈ Icc 1 ↑0 then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑0, if hi : i ∈ Icc 1 ↑0 then f ↑(h ⟨i, hi⟩) else 0X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0⊢ ∀ (X : Finset X'),
#X = n + 1 →
∀ (g h : { x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑(n + 1), if hi : i ∈ Icc 1 ↑(n + 1) then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑(n + 1), if hi : i ∈ Icc 1 ↑(n + 1) then f ↑(h ⟨i, hi⟩) else 0
X':Type u_1f:X' → ℝ⊢ ∀ (X : Finset X'),
#X = 0 →
∀ (g h : { x // x ∈ Icc 1 ↑0 } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑0, if hi : i ∈ Icc 1 ↑0 then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑0, if hi : i ∈ Icc 1 ↑0 then f ↑(h ⟨i, hi⟩) else 0 All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑(n + 1), if hi : i ∈ Icc 1 ↑(n + 1) then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑(n + 1), if hi : i ∈ Icc 1 ↑(n + 1) then f ↑(h ⟨i, hi⟩) else 0
-- A technical step: we extend g, h to the entire integers using a slightly artificial map π
set π : ℤ → Icc (1:ℤ) (n+1) :=
fun i ↦ if hi: i ∈ Icc (1:ℤ) (n+1) then ⟨ i, hi ⟩ else ⟨ 1, X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hi:ℤhi:i ∉ Icc 1 (↑n + 1)⊢ 1 ∈ Icc 1 (↑n + 1) All goals completed! 🐙 ⟩
have hπ (g : Icc (1:ℤ) (n+1) → X) :
∑ i ∈ Icc (1:ℤ) (n+1), (if hi:i ∈ Icc (1:ℤ) (n+1) then f (g ⟨ i, hi ⟩) else 0)
= ∑ i ∈ Icc (1:ℤ) (n+1), f (g (π i)) := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g✝:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective g✝hh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩g:{ x // x ∈ Icc 1 (↑n + 1) } → { x // x ∈ X }⊢ ∀ x ∈ Icc 1 (↑n + 1), (if hi : x ∈ Icc 1 (↑n + 1) then f ↑(g ⟨x, hi⟩) else 0) = f ↑(g (π x))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g✝:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective g✝hh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩g:{ x // x ∈ Icc 1 (↑n + 1) } → { x // x ∈ X }i:ℤhi:i ∈ Icc 1 (↑n + 1)⊢ (if hi : i ∈ Icc 1 (↑n + 1) then f ↑(g ⟨i, hi⟩) else 0) = f ↑(g (π i)); All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 g⊢ ∑ i ∈ Icc 1 (↑n + 1), f ↑(g (π i)) = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 g⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑(g (π (↑n + 1))) = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = x⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj'✝:j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'✝⟩ = xhj':1 ≤ j ∧ j ≤ ↑n + 1⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i)); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i))
have : ∑ i ∈ Icc (1:ℤ) (n + 1), f (h (π i)) = ∑ i ∈ Icc (1:ℤ) n, f (h' i) + f x := calc
_ = ∑ i ∈ Icc (1:ℤ) j, f (h (π i)) + ∑ i ∈ Icc (j+1:ℤ) (n + 1), f (h (π i)) := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i)) = ∑ i ∈ Icc 1 j, f ↑(h (π i)) + ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 j, f ↑(h (π i)) + ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i)) = ∑ i ∈ Icc 1 (↑n + 1), f ↑(h (π i)); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ 1 ≤ j + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j ≤ ↑n + 1 X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ 1 ≤ j + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j ≤ ↑n + 1 All goals completed! 🐙
_ = ∑ i ∈ Icc (1:ℤ) (j-1), f (h (π i)) + f (h (π j) )
+ ∑ i ∈ Icc (j+1:ℤ) (n + 1), f (h (π i)) := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 j, f ↑(h (π i)) + ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i)) =
∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑(h (π j)) + ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 j, f ↑(h (π i)) = ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑(h (π j)); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j - 1 ≥ 1 - 1 X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j - 1 ≥ 1 - 1 All goals completed! 🐙
_ = ∑ i ∈ Icc (1:ℤ) (j-1), f (h (π i)) + f x + ∑ i ∈ Icc (j:ℤ) n, f (h (π (i+1))) := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑(h (π j)) + ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i)) =
∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑x + ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1)))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑(h (π j)) = ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑xX':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i)) = ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1)))
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑(h (π j)) = ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑x All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1))) = ∑ i ∈ Icc (j + 1) (↑n + 1), f ↑(h (π i)); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))x✝:ℤa✝:x✝ ∈ Icc (j + 1) (↑n + 1)⊢ x✝ = x✝ - 1 + 1; All goals completed! 🐙
_ = ∑ i ∈ Icc (1:ℤ) (j-1), f (h (π i)) + ∑ i ∈ Icc (j:ℤ) n, f (h (π (i+1))) + f x := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + f ↑x + ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1))) =
∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1))) + f ↑x All goals completed! 🐙
_ = ∑ i ∈ Icc (1:ℤ) (j-1), f (h' i) + ∑ i ∈ Icc (j:ℤ) n, f (h' i) + f x := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) + ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1))) + f ↑x =
∑ i ∈ Icc 1 (j - 1), f ↑(h' i) + ∑ i ∈ Icc j ↑n, f ↑(h' i) + f ↑x
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h (π i)) = ∑ i ∈ Icc 1 (j - 1), f ↑(h' i)X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc j ↑n, f ↑(h (π (i + 1))) = ∑ i ∈ Icc j ↑n, f ↑(h' i)
all_goals X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∀ x ∈ Icc j ↑n, f ↑(h (π (x + 1))) = f ↑(h' x); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))i:ℤhi:i ∈ Icc j ↑n⊢ f ↑(h (π (i + 1))) = f ↑(h' i); X':Type u_1f:X' → ℝn:ℕX:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }π:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))i:ℤhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Multiset.map g (Icc 1 ↑n).val.attach = X.val.attach →
Multiset.map h (Icc 1 ↑n).val.attach = X.val.attach →
(∑ x ∈ Icc 1 ↑n, if h : 1 ≤ x ∧ x ≤ ↑n then f ↑(g ⟨x, ⋯⟩) else 0) =
∑ x ∈ Icc 1 ↑n, if h_1 : 1 ≤ x ∧ x ≤ ↑n then f ↑(h ⟨x, ⋯⟩) else 0hg:Multiset.map g (Icc 1 (↑n + 1)).val.attach = X.val.attachhh:Multiset.map h (Icc 1 (↑n + 1)).val.attach = X.val.attachhπ:∀ (g : { x // x ∈ Icc 1 (↑n + 1) } → { x // x ∈ X }),
(∑ x ∈ Icc 1 (↑n + 1), if h : 1 ≤ x ∧ x ≤ ↑n + 1 then f ↑(g ⟨x, ⋯⟩) else 0) = ∑ i ∈ Icc 1 (↑n + 1), f ↑(g (π i))hi:j ≤ i ∧ i ≤ ↑n⊢ f ↑(h (π (i + 1))) = f ↑(if i < j then h (π i) else h (π (i + 1)))
X':Type u_1f:X' → ℝn:ℕX:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }π:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))i:ℤhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Multiset.map g (Icc 1 ↑n).val.attach = X.val.attach →
Multiset.map h (Icc 1 ↑n).val.attach = X.val.attach →
(∑ x ∈ Icc 1 ↑n, if h : 1 ≤ x ∧ x ≤ ↑n then f ↑(g ⟨x, ⋯⟩) else 0) =
∑ x ∈ Icc 1 ↑n, if h_1 : 1 ≤ x ∧ x ≤ ↑n then f ↑(h ⟨x, ⋯⟩) else 0hg:Multiset.map g (Icc 1 (↑n + 1)).val.attach = X.val.attachhh:Multiset.map h (Icc 1 (↑n + 1)).val.attach = X.val.attachhπ:∀ (g : { x // x ∈ Icc 1 (↑n + 1) } → { x // x ∈ X }),
(∑ x ∈ Icc 1 (↑n + 1), if h : 1 ≤ x ∧ x ≤ ↑n + 1 then f ↑(g ⟨x, ⋯⟩) else 0) = ∑ i ∈ Icc 1 (↑n + 1), f ↑(g (π i))hi:1 ≤ i ∧ i ≤ j - 1⊢ f ↑(h (π i)) = f ↑(if i < j then h (π i) else h (π (i + 1))) All goals completed! 🐙
All goals completed! 🐙
_ = _ := X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h' i) + ∑ i ∈ Icc j ↑n, f ↑(h' i) + f ↑x = ∑ i ∈ Icc 1 ↑n, f ↑(h' i) + f ↑x X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ ∑ i ∈ Icc 1 (j - 1), f ↑(h' i) + ∑ i ∈ Icc j ↑n, f ↑(h' i) = ∑ i ∈ Icc 1 ↑n, f ↑(h' i); X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ 1 ≤ j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j - 1 ≤ ↑n X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j = j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ 1 ≤ j - 1 + 1X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))⊢ j - 1 ≤ ↑n All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) + f ↑x = ∑ i ∈ Icc 1 ↑n, f ↑(h' i) + f ↑x
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453⊢ ∑ i ∈ Icc 1 ↑n, f ↑(g (π i)) = ∑ i ∈ Icc 1 ↑n, f ↑(h' i)
have g_ne_x {i:ℤ} (hi : i ∈ Icc (1:ℤ) n) : g (π i) ≠ x := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453i:ℤhi:1 ≤ i ∧ i ≤ ↑n⊢ g (π i) ≠ x
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453i:ℤhi:1 ≤ i ∧ i ≤ ↑n⊢ ¬i = ↑n + 1
All goals completed! 🐙
have h'_ne_x {i:ℤ} (hi : i ∈ Icc (1:ℤ) n) : h' i ≠ x := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑n⊢ h' i ≠ x
have hi' : 0 ≤ i := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0 All goals completed! 🐙
have hi'' : i ≤ n+1 := n:ℕX':Type u_1X:Finset X'hcard:#X = nf:X' → ℝg:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑n } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective h⊢ (∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0 All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:i < j⊢ h' i ≠ xX':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:¬i < j⊢ h' i ≠ x X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:i < j⊢ h' i ≠ xX':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:¬i < j⊢ h' i ≠ x X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:¬i < jheq:h' i = x⊢ False
all_goals X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:¬i < jheq:i + 1 = j⊢ False
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500hlt:i < jheq:i = j⊢ False All goals completed! 🐙
X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g => @?_mvar.41155 gx:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans (Trans.trans (Trans.trans (Trans.trans ?_mvar.56768 ?_mvar.57577) ?_mvar.58230) ?_mvar.58866)
?_mvar.59391)
?_mvar.59453g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 := fun {i} hi => @?_mvar.658108 i hii:ℤhi:1 ≤ i ∧ i ≤ ↑nhi':0 ≤ _fvar.678801 := ?_mvar.681208hi'':_fvar.678801 ≤ ↑_fvar.21871 + 1 := ?_mvar.686500heq:i + 1 = jhlt:¬False⊢ i < j; All goals completed! 🐙
set gtil : Icc (1:ℤ) n → X.erase x :=
fun i ↦ ⟨ (g (π i)).val, X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.symm
(Finset.concat_finite_series
(le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.54977))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))
(le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_gt
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.54978))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))
fun i => @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))))
((fun {α β γ} [HAdd α β γ] a a_1 e_a =>
Eq.rec (motive := fun a_2 e_a => ∀ (a_3 a_4 : β), a_3 = a_4 → a + a_3 = a_2 + a_4)
(fun a_2 a_3 e_a => e_a ▸ Eq.refl (a + a_2)) e_a)
(∑ i ∈ Finset.Icc 1 _fvar.50677, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 _fvar.50677)))
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ i ∈ Finset.Icc 1 _fvar.50677, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Finset.sum_congr
(eq_of_heq
((fun α inst inst_1 a a' e'_4 b b' e'_5 =>
Eq.casesOn (motive := fun a_1 x => a' = a_1 → e'_4 ≍ x → Finset.Icc a b ≍ Finset.Icc a' b')
e'_4
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_4 : a = a'), e_4 ≍ Eq.refl a → Finset.Icc a b ≍ Finset.Icc a' b')
(fun e_4 h =>
Eq.casesOn (motive := fun a_1 x =>
b' = a_1 → e'_5 ≍ x → Finset.Icc a b ≍ Finset.Icc a b') e'_5
(fun h =>
Eq.ndrec (motive := fun b' =>
∀ (e_5 : b = b'), e_5 ≍ Eq.refl b → Finset.Icc a b ≍ Finset.Icc a b')
(fun e_5 h => HEq.refl (Finset.Icc a b)) (Eq.symm h) e'_5)
(Eq.refl b') (HEq.refl e'_5))
(Eq.symm h) e'_4)
(Eq.refl a') (HEq.refl e'_4))
ℤ instLatticeInt.toSemilatticeInf.toPreorder Int.instLocallyFiniteOrder 1 1 (Eq.refl 1)
_fvar.50677 (_fvar.50677 - 1 + 1)
(of_eq_true
(Eq.trans (congrArg (Eq _fvar.50677) (sub_add_cancel _fvar.50677 1)) (eq_self _fvar.50677)))))
fun x a => Eq.refl (@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 x))))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 _fvar.50677)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (_fvar.50677 - 1 + 1))))
(eq_of_heq
((fun α β γ self a a' e'_5 a_1 a'_1 e'_6 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_5 ≍ x → a + a_1 ≍ a' + a'_1) e'_5
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_5 : a = a'), e_5 ≍ Eq.refl a → a + a_1 ≍ a' + a'_1)
(fun e_5 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_6 ≍ x → a + a_1 ≍ a + a'_1) e'_6
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_6 : a_1 = a'), e_6 ≍ Eq.refl a_1 → a + a_1 ≍ a + a')
(fun e_6 h => HEq.refl (a + a_1)) (Eq.symm h) e'_6)
(Eq.refl a'_1) (HEq.refl e'_6))
(Eq.symm h) e'_5)
(Eq.refl a') (HEq.refl e'_5))
ℝ ℝ ℝ instHAdd
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Eq.refl (∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))))
(@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 _fvar.50677)))
(@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (_fvar.50677 - 1 + 1))))
(eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x => a' = a_1 → e'_1 ≍ x → @_fvar.21838 a ≍ @_fvar.21838 a')
e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.21838 a ≍ @_fvar.21838 a')
(fun e_1 h => HEq.refl (@_fvar.21838 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
(↑(@_fvar.35791 (@_fvar.39754 _fvar.50677)))
(↑(@_fvar.35791 (@_fvar.39754 (_fvar.50677 - 1 + 1))))
(eq_of_heq
((fun α p self self' e'_3 =>
Eq.casesOn (motive := fun a x => self' = a → e'_3 ≍ x → ↑self ≍ ↑self') e'_3
(fun h =>
Eq.ndrec (motive := fun self' =>
∀ (e_3 : self = self'), e_3 ≍ Eq.refl self → ↑self ≍ ↑self')
(fun e_3 h => HEq.refl ↑self) (Eq.symm h) e'_3)
(Eq.refl self') (HEq.refl e'_3))
_fvar.21835 (fun x => x ∈ _fvar.35782) (@_fvar.35791 (@_fvar.39754 _fvar.50677))
(@_fvar.35791 (@_fvar.39754 (_fvar.50677 - 1 + 1)))
(eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x =>
a' = a_1 → e'_1 ≍ x → @_fvar.35791 a ≍ @_fvar.35791 a') e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.35791 a ≍ @_fvar.35791 a')
(fun e_1 h => HEq.refl (@_fvar.35791 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
(@_fvar.39754 _fvar.50677) (@_fvar.39754 (_fvar.50677 - 1 + 1))
(eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x =>
a' = a_1 → e'_1 ≍ x → @_fvar.39754 a ≍ @_fvar.39754 a') e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.39754 a ≍ @_fvar.39754 a')
(fun e_1 h => HEq.refl (@_fvar.39754 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
_fvar.50677 (_fvar.50677 - 1 + 1)
(of_eq_true
(Eq.trans (congrArg (Eq _fvar.50677) (sub_add_cancel _fvar.50677 1))
(eq_self _fvar.50677)))))))))))))))
(Finset.sum_of_nonempty
(of_eq_true
(Eq.trans (Eq.trans (congrArg (GE.ge (_fvar.50677 - 1)) (sub_self 1)) Int.sub_nonneg._simp_1)
(eq_true _fvar.54977)))
fun x => @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 x))))
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Eq.refl
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))))))
((fun {α β γ} [HAdd α β γ] a a_1 e_a =>
Eq.rec (motive := fun a_2 e_a => ∀ (a_3 a_4 : β), a_3 = a_4 → a + a_3 = a_2 + a_4)
(fun a_2 a_3 e_a => e_a ▸ Eq.refl (a + a_2)) e_a)
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 _fvar.50677)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑_fvar.50426)
(of_eq_true
(Eq.trans
(congr
(congrArg Eq
(congr
(congrArg HAdd.hAdd
(Finset.sum_congr (Eq.refl (Finset.Icc 1 (_fvar.50677 - 1))) fun x a =>
congrArg (fun x_1 => @_fvar.21838 ↑(@_fvar.35791 (x_1 x)))
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)))
(congrArg (fun x => @_fvar.21838 ↑(@_fvar.35791 x))
(Eq.trans
(congrFun
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)
_fvar.50677)
(dite_cond_eq_true
(Eq.trans (congr (congrArg And (eq_true _fvar.54977)) (eq_true _fvar.54978))
(and_self True)))))))
(congr
(congrArg HAdd.hAdd
(Finset.sum_congr (Eq.refl (Finset.Icc 1 (_fvar.50677 - 1))) fun x a =>
congrArg (fun x_1 => @_fvar.21838 ↑(@_fvar.35791 (x_1 x)))
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1 (fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩)
fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)))
(congrArg (fun x => @_fvar.21838 ↑x) (Eq.symm _fvar.50679))))
(eq_self
(∑ x ∈ Finset.Icc 1 (_fvar.50677 - 1),
@_fvar.21838
↑(@_fvar.35791
(if h : 1 ≤ x ∧ x ≤ ↑_fvar.21871 + 1 then ⟨x, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩
else
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)) +
@_fvar.21838
↑(@_fvar.35791
⟨_fvar.50677,
Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans (congr (congrArg And (eq_true _fvar.54977)) (eq_true _fvar.54978))
(and_self True)))⟩)))))
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(Eq.refl
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))))
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1),
@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i - 1 + 1))))
(Finset.sum_congr (Eq.refl (Finset.Icc (_fvar.50677 + 1) (↑_fvar.21871 + 1))) fun x a =>
eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x => a' = a_1 → e'_1 ≍ x → @_fvar.21838 a ≍ @_fvar.21838 a')
e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.21838 a ≍ @_fvar.21838 a')
(fun e_1 h => HEq.refl (@_fvar.21838 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
(↑(@_fvar.35791 (@_fvar.39754 x))) (↑(@_fvar.35791 (@_fvar.39754 (x - 1 + 1))))
(eq_of_heq
((fun α p self self' e'_3 =>
Eq.casesOn (motive := fun a x => self' = a → e'_3 ≍ x → ↑self ≍ ↑self') e'_3
(fun h =>
Eq.ndrec (motive := fun self' =>
∀ (e_3 : self = self'), e_3 ≍ Eq.refl self → ↑self ≍ ↑self')
(fun e_3 h => HEq.refl ↑self) (Eq.symm h) e'_3)
(Eq.refl self') (HEq.refl e'_3))
_fvar.21835 (fun x => x ∈ _fvar.35782) (@_fvar.35791 (@_fvar.39754 x))
(@_fvar.35791 (@_fvar.39754 (x - 1 + 1)))
(eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x =>
a' = a_1 → e'_1 ≍ x → @_fvar.35791 a ≍ @_fvar.35791 a') e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.35791 a ≍ @_fvar.35791 a')
(fun e_1 h => HEq.refl (@_fvar.35791 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
(@_fvar.39754 x) (@_fvar.39754 (x - 1 + 1))
(eq_of_heq
((fun a a' e'_1 =>
Eq.casesOn (motive := fun a_1 x =>
a' = a_1 → e'_1 ≍ x → @_fvar.39754 a ≍ @_fvar.39754 a') e'_1
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_1 : a = a'), e_1 ≍ Eq.refl a → @_fvar.39754 a ≍ @_fvar.39754 a')
(fun e_1 h => HEq.refl (@_fvar.39754 a)) (Eq.symm h) e'_1)
(Eq.refl a') (HEq.refl e'_1))
x (x - 1 + 1)
(of_eq_true (Eq.trans (congrArg (Eq x) (sub_add_cancel x 1)) (eq_self x)))))))))))))
(Finset.shift_finite_series fun i => @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))))))
(Eq.trans
(Mathlib.Tactic.Abel.subst_into_addg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
@_fvar.21838 ↑_fvar.50426)
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)))
(Mathlib.Tactic.Abel.subst_into_addg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))) 0)
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0))
(Mathlib.Tactic.Abel.term_atomg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))))
(Mathlib.Tactic.Abel.term_atomg (@_fvar.21838 ↑_fvar.50426))
(Mathlib.Tactic.Abel.term_add_constg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))) 0
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(zero_add (Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0))))
(Mathlib.Tactic.Abel.term_atomg
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))))
(Mathlib.Tactic.Abel.term_add_constg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0))
(Mathlib.Tactic.Abel.term_add_constg 1 (@_fvar.21838 ↑_fvar.50426) 0
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(zero_add
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
0)))))
(Eq.symm
(Mathlib.Tactic.Abel.subst_into_addg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)))
(Mathlib.Tactic.Abel.subst_into_addg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0))
(Mathlib.Tactic.Abel.term_atomg
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))))
(Mathlib.Tactic.Abel.term_atomg
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))))
(Mathlib.Tactic.Abel.term_add_constg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i))) 0
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(zero_add
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
0))))
(Mathlib.Tactic.Abel.term_atomg (@_fvar.21838 ↑_fvar.50426))
(Mathlib.Tactic.Abel.term_add_constg 1
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426) 0)
(Mathlib.Tactic.Abel.termg 1 (@_fvar.21838 ↑_fvar.50426)
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0))
(Mathlib.Tactic.Abel.const_add_termg
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
1 (@_fvar.21838 ↑_fvar.50426) 0
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))) 0)
(add_zero
(Mathlib.Tactic.Abel.termg 1
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
0))))))))
((fun {α β γ} [HAdd α β γ] a a_1 e_a =>
Eq.rec (motive := fun a_2 e_a => ∀ (a_3 a_4 : β), a_3 = a_4 → a + a_3 = a_2 + a_4)
(fun a_2 a_3 e_a => e_a ▸ Eq.refl (a + a_2)) e_a)
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) +
∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.55166 i) +
∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i))
((fun {α β γ} [HAdd α β γ] a a_1 e_a =>
Eq.rec (motive := fun a_2 e_a => ∀ (a_3 a_4 : β), a_3 = a_4 → a + a_3 = a_2 + a_4)
(fun a_2 a_3 e_a => e_a ▸ Eq.refl (a + a_2)) e_a)
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.55166 i))
(Finset.sum_congr rfl fun i hi =>
id
(of_eq_true
(Eq.trans
(congrArg (fun x => @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) = @_fvar.21838 ↑x)
(ite_cond_eq_true (@_fvar.35791 (@_fvar.39754 i)) (@_fvar.35791 (@_fvar.39754 (i + 1)))
(eq_true
(have this :=
lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
this))))
(eq_self (@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)))))))
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))))
(∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i))
(Finset.sum_congr rfl fun i hi =>
id
(of_eq_true
(Eq.trans
(congrArg (fun x => @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1))) = @_fvar.21838 ↑x)
(ite_cond_eq_false (@_fvar.35791 (@_fvar.39754 i)) (@_fvar.35791 (@_fvar.39754 (i + 1)))
(eq_false
(have this :=
Not.intro fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 +
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
this))))
(eq_self (@_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 (i + 1)))))))))
(@_fvar.21838 ↑_fvar.50426) (@_fvar.21838 ↑_fvar.50426) (Eq.refl (@_fvar.21838 ↑_fvar.50426))))
((fun {α β γ} [HAdd α β γ] a a_1 e_a =>
Eq.rec (motive := fun a_2 e_a => ∀ (a_3 a_4 : β), a_3 = a_4 → a + a_3 = a_2 + a_4)
(fun a_2 a_3 e_a => e_a ▸ Eq.refl (a + a_2)) e_a)
(∑ i ∈ Finset.Icc 1 (_fvar.50677 - 1), @_fvar.21838 ↑(@_fvar.55166 i) +
∑ i ∈ Finset.Icc _fvar.50677 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i))
(∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i))
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = ⋯)) ⋯ ⋯)
⋯ ⋯)
⋯ ⋯)
⋯ ⋯)
⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯))
⋯)
⋯ ⋯ ⋯)g_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.35788 (@_fvar.39754 i) ≠ _fvar.50426 :=
fun {i} hi =>
Eq.mpr
(id
(Eq.trans
(congr
(congrArg (fun x => Ne (@_fvar.35788 x))
(Eq.trans
(congrFun
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1 (fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩)
fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1) (Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)
i)
(dite_cond_eq_true
(Eq.trans
(congr (congrArg And (eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(eq_true
(have this :=
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_gt
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
this)))
(and_self True)))))
(congrArg _fvar.35788
(Eq.trans
(congrFun
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1 (fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩)
fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1) (Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)
(↑_fvar.21871 + 1))
(dite_cond_eq_true
(Eq.trans
(congr
(congrArg And (Eq.trans (le_mul_iff_one_le_left'._simp_4 1) (Nat.cast_nonneg._simp_1 _fvar.21871)))
(le_refl._simp_1 (↑_fvar.21871 + 1)))
(and_self True))))))
(congrArg Not
(Eq.trans
((fun x_0 x_1 =>
propext ((fun x_0 x_1 => Function.Injective.eq_iff (Function.Bijective.injective _fvar.35794)) x_0 x_1))
⟨i,
Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans
(congr (congrArg And (eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(eq_true
(have this :=
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_gt
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le
(Eq.mp Finset.mem_Icc._simp_1 hi).right))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
this)))
(and_self True)))⟩
⟨↑_fvar.21871 + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans
(congr
(congrArg And
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1) (Nat.cast_nonneg._simp_1 _fvar.21871)))
(le_refl._simp_1 (↑_fvar.21871 + 1)))
(and_self True)))⟩)
(Subtype.mk.injEq i
(Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans
(congr (congrArg And (eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(eq_true
(have this :=
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_gt
(i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
this)))
(and_self True))))
(↑_fvar.21871 + 1)
(Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans
(congr
(congrArg And
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1) (Nat.cast_nonneg._simp_1 _fvar.21871)))
(le_refl._simp_1 (↑_fvar.21871 + 1)))
(and_self True)))))))))
(Not.intro fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(neg_eq_zero.mpr (sub_eq_zero_of_eq a)))))h'_ne_x:∀ {i : ℤ}, i ∈ Finset.Icc 1 ↑_fvar.21871 → @_fvar.55166 i ≠ _fvar.50426 :=
fun {i} hi =>
have hi' :=
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add (i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))
(Mathlib.Tactic.Ring.add_pf_zero_add (i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + (i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
have hi'' :=
le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero (↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_gt (i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))));
if hlt : i < _fvar.50677 then fun heq =>
False.elim
(Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr hlt)))
(neg_eq_zero.mpr
(sub_eq_zero_of_eq
(Eq.mp
(Eq.trans
(Eq.trans
(congr
(congrArg Eq
(Eq.trans
(congrFun
(funext fun i =>
ite_congr (Eq.refl (i < _fvar.50677))
(fun a =>
congrArg (fun x => @_fvar.35791 (x i))
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
fun a =>
congrArg _fvar.35791
(Eq.trans
(congrFun
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)
(i + 1))
(dite_congr
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
(fun h =>
Eq.refl
⟨i + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(Eq.mpr_prop
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
h)⟩)
fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)))
i)
(Eq.trans
(ite_cond_eq_true
(@_fvar.35791
(if h : 1 ≤ i ∧ i ≤ ↑_fvar.21871 + 1 then ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩
else
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
(@_fvar.35791
(if h : 0 ≤ i ∧ i ≤ ↑_fvar.21871 then
⟨i + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(Eq.mpr_prop
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
h)⟩
else
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
(eq_true hlt))
(congrArg _fvar.35791
(dite_cond_eq_true
(Eq.trans
(congr (congrArg And (eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).left))
(eq_true hi''))
(and_self True)))))))
(Eq.symm _fvar.50679))
((fun x_0 x_1 =>
propext
((fun x_0 x_1 => Function.Injective.eq_iff (Function.Bijective.injective _fvar.35797)) x_0
x_1))
⟨i,
Eq.mpr_prop Finset.mem_Icc._simp_1
(of_eq_true
(Eq.trans
(congr (congrArg And (eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).left)) (eq_true hi''))
(and_self True)))⟩
⟨_fvar.50677, _fvar.50678⟩))
Finset.finite_series_of_rearrange._simp_1)
heq))))))
else fun heq =>
Mathlib.Tactic.Contrapose.mtr
(Eq.mpr (id (implies_congr (Eq.refl ¬False) (Mathlib.Tactic.PushNeg.not_not_eq (i < _fvar.50677)))) fun hlt_1 =>
lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (i ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_lt (i ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(i ^ Nat.rawCast 1 * Nat.rawCast 1 +
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.atom_pf i)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul i (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (i ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero (_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero i (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.lt_of_lt_of_eq (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(sub_eq_zero_of_eq
(Eq.mp
(Eq.trans
(Eq.trans
(congr
(congrArg Eq
(Eq.trans
(congrFun
(funext fun i =>
ite_congr (Eq.refl (i < _fvar.50677))
(fun a =>
congrArg (fun x => @_fvar.35791 (x i))
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
fun a =>
congrArg _fvar.35791
(Eq.trans
(congrFun
(funext fun i =>
dite_congr Finset.mem_Icc._simp_1
(fun h => Eq.refl ⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩) fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)
(i + 1))
(dite_congr
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
(fun h =>
Eq.refl
⟨i + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(Eq.mpr_prop
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
h)⟩)
fun h =>
Eq.refl
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩)))
i)
(Eq.trans
(ite_cond_eq_false
(@_fvar.35791
(if h : 1 ≤ i ∧ i ≤ ↑_fvar.21871 + 1 then
⟨i, Eq.mpr_prop Finset.mem_Icc._simp_1 h⟩
else
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
(@_fvar.35791
(if h : 0 ≤ i ∧ i ≤ ↑_fvar.21871 then
⟨i + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(Eq.mpr_prop
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
h)⟩
else
⟨1,
of_eq_true
(Eq.trans Finset.mem_Icc._simp_1
(Eq.trans
(congr (congrArg And (le_refl._simp_1 1))
(Eq.trans (le_mul_iff_one_le_left'._simp_4 1)
(Nat.cast_nonneg._simp_1 _fvar.21871)))
(and_self True)))⟩))
(eq_false hlt))
(congrArg _fvar.35791
(dite_cond_eq_true
(Eq.trans
(congr (congrArg And (eq_true hi'))
(eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(and_self True)))))))
(Eq.symm _fvar.50679))
((fun x_0 x_1 =>
propext
((fun x_0 x_1 => Function.Injective.eq_iff (Function.Bijective.injective _fvar.35797))
x_0 x_1))
⟨i + 1,
Eq.mpr_prop Finset.mem_Icc._simp_1
(Eq.mpr_prop
(congr (congrArg And (le_mul_iff_one_le_left'._simp_4 1))
(mul_le_mul_iff_right._simp_4 1))
(of_eq_true
(Eq.trans
(congr (congrArg And (eq_true hi'))
(eq_true (Eq.mp Finset.mem_Icc._simp_1 hi).right))
(and_self True))))⟩
⟨_fvar.50677, _fvar.50678⟩))
Finset.finite_series_of_rearrange._simp_1)
heq)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))
hlti:{ x // x ∈ Icc 1 ↑n }⊢ ↑(g (π ↑i)) ∈ X.erase ↑x All goals completed! 🐙 ⟩
set htil : Icc (1:ℤ) n → X.erase x :=
fun i ↦ ⟨ (h' i).val, X':Type u_1f:X' → ℝn:ℕhn:∀ (X : Finset X'),
#X = n →
∀ (g h : { x // x ∈ Icc 1 ↑n } → { x // x ∈ X }),
Function.Bijective g →
Function.Bijective h →
(∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Icc 1 ↑n, if hi : i ∈ Icc 1 ↑n then f ↑(h ⟨i, hi⟩) else 0X:Finset X'hX:#X = n + 1g:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }h:{ x // x ∈ Icc 1 ↑(n + 1) } → { x // x ∈ X }hg:Function.Bijective ghh:Function.Bijective hπ:ℤ → { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } := fun i => if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then ⟨i, hi⟩ else ⟨1, ⋯⟩hπ:∀ (g : { x // x ∈ Finset.Icc 1 (↑_fvar.21871 + 1) } → { x // x ∈ _fvar.35782 }),
(∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1),
if hi : i ∈ Finset.Icc 1 (↑_fvar.21871 + 1) then @_fvar.21838 ↑(g ⟨i, hi⟩) else 0) =
∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(g (@_fvar.39754 i)) :=
fun g =>
Finset.sum_congr rfl fun i hi =>
of_eq_true
(Eq.trans
(congr (congrArg Eq (dite_cond_eq_true (eq_true hi)))
(congrArg (fun x => @_fvar.21838 ↑(g x)) (dite_cond_eq_true (eq_true hi))))
(eq_self (@_fvar.21838 ↑(g ⟨i, of_eq_true (eq_true hi)⟩))))x:{ x // x ∈ _fvar.35782 } := @_fvar.35788 (@_fvar.39754 (↑_fvar.21871 + 1))j:ℤhj':j ∈ Icc 1 ↑(n + 1)hj:h ⟨j, hj'⟩ = xhj1:1 ≤ jhj2:j ≤ ↑n + 1h':ℤ → { x // x ∈ _fvar.35782 } := fun i => if i < _fvar.50677 then @_fvar.35791 (@_fvar.39754 i) else @_fvar.35791 (@_fvar.39754 (i + 1))this:∑ i ∈ Finset.Icc 1 (↑_fvar.21871 + 1), @_fvar.21838 ↑(@_fvar.35791 (@_fvar.39754 i)) =
∑ i ∈ Finset.Icc 1 ↑_fvar.21871, @_fvar.21838 ↑(@_fvar.55166 i) + @_fvar.21838 ↑_fvar.50426 :=
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.symm
(Finset.concat_finite_series
(le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))
(Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 1)))))
(Mathlib.Tactic.Ring.add_pf_add_zero
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.50677 (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0))
(Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 2)) (Eq.refl false)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.54977))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))
(le_of_not_gt fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.21871) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2))))
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.50677 ^ Nat.rawCast 1 * Nat.rawCast 1 +
(↑_fvar.21871 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.21871)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1) (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1)
(Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑_fvar.21871 ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.atom_pf _fvar.50677)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.50677 (Nat.rawCast