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

We do not attempt to replicate the full API for Finset.sum.{u_1, u_3} {ι : Type u_1} {M : Type u_3} [AddCommMonoid M] (s : Finset ι) (f : ι M) : MFinset.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 Finset
Finset.mem_Icc.{u_1} {α : Type u_1} [Preorder α] [LocallyFiniteOrder α] {a b x : α} : x  Icc a b  a  x  x  b

Definition 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.{u_3} {M : Type u_3} [AddCommMonoid M] {a b : } (hab : a b + 1) (f : M) : k Icc a (b + 1), f k = k Icc a b, f k + f (b + 1)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! 🐙
declaration uses 'sorry'example (a: ) (m:) : i Icc m (m-2), a i = 0 := a: m: i Icc m (m - 2), a i = 0 All goals completed! 🐙declaration uses 'sorry'example (a: ) (m:) : i Icc m (m-1), a i = 0 := a: m: i Icc m (m - 1), a i = 0 All goals completed! 🐙declaration uses 'sorry'example (a: ) (m:) : i Icc m m, a i = a m := a: m: i Icc m m, a i = a m All goals completed! 🐙declaration uses 'sorry'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! 🐙declaration uses 'sorry'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! 🐙

Remark 7.1.3

example (a: ) (m n:) : i Icc m n, a i = j Icc m n, a j := rfl

Lemma 7.1.4(a) / Exercise 7.1.1

theorem declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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! 🐙
Finset.sum_congr.{u_1, u_4} {ι : Type u_1} {M : Type u_4} {s₁ s₂ : Finset ι} [AddCommMonoid M] {f g : ι  M}
  (h : s₁ = s₂) : (∀ x  s₂, f x = g x)  s₁.sum f = s₂.sum g

Proposition 7.1.8.

theorem declaration uses 'sorry'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 (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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 nf (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.attach: (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 nf (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.attach: (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 - 1f (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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, : (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 ng (π 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, : (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, : (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 nh' 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, : (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 < jh' 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, : (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 < jh' 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, : (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 < jh' 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, : (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 < jh' 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, : (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 = xFalse 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, : (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 = jFalse 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, : (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 = jFalse 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, : (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:¬Falsei < 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, : (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, : (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