Zulip Chat Archive
Stream: new members
Topic: Prove equality of sums over Fin n
uhr (Jun 13 2024 at 19:14):
Im working with sums over Fin n
for some n : Nat
, and I am stuck with two sums, that should be equal (and look exactly equal in lean4 infoview), but I do not know how to prove that.
I am stuck with the goal ⊢ ↑xz = ↑xz - ∑ ii : Fin nn, k (Fin.castLE _ ↑↑ii) + ∑ x : Fin nn, k (Fin.castLE _ ↑↑x)
.
It would be sufficient to prove that ∑ ii : Fin nn, k (Fin.castLE _ ↑↑ii) = ∑ x : Fin nn, k (Fin.castLE _ ↑↑x)
.
Minimal working example:
import Mathlib
import Mathlib.Algebra.BigOperators.Basic
import Mathlib.Data.Nat.Basic
import Mathlib.Data.Nat.Choose.Basic
import Mathlib.Tactic.Basic
open BigOperators
open Nat
lemma lemma1 {n m: Nat} {k : Fin n → Nat} {xz : Fin (∑ i : Fin n, k i)} :
∃ j : (Fin (n)) , ∃ m : Fin ( k j), xz =( ∑ i1 : Fin j.val, k ( Fin.castLE (Fin.is_lt j) i1)) + m := by
induction n with
| zero =>
/-
some code
-/
sorry
| succ nn ih =>
let q := ∑ ii : Fin nn, k ( Fin.castLE (Fin.is_lt nn) ii) ;
match le_or_lt q ( xz.val) with
|Or.inl q_leq_x =>
use Fin.mk nn (Nat.lt_succ_self nn)
have x_minus_q_le_knn : xz - q < k (Fin.mk nn (Nat.lt_succ_self nn)):=
by sorry
use Fin.mk (xz-q) x_minus_q_le_knn
ring_nf
rw[add_comm]
-- ∑ ii : Fin nn, k (Fin.castLE _ ↑↑ii) and ∑ x : Fin nn, k (Fin.castLE _ ↑↑x) are equal. How to prove that?
-- this rewritte fails
rw[sub_add_cancel]
sorry
| Or.inr x_le_q =>
/-
some code
-/
sorry
Daniel Weber (Jun 14 2024 at 14:23):
The problem is that a - b + b = a
isn't correct in general for Nat, because subtraction is truncating (note that docs#sub_add_cancel requires AddGroup A
, but Nat
isn't an additive group). You can use docs#Nat.sub_add_cancel.
Last updated: May 02 2025 at 03:31 UTC