Zulip Chat Archive
Stream: general
Topic: how to call this lemma
Johan Commelin (Aug 07 2018 at 12:03):
lemma quux {A : Type*} [add_comm_group A] {n : ℕ} (f : fin (n+1) → A) : sum univ f = f n + sum univ (λ i : fin n, f i.raise) := begin sorry end
Johan Commelin (Aug 07 2018 at 12:06):
Ooh, and if you don't know a name, but you know a proof... that's fine too.
Kevin Buzzard (Aug 07 2018 at 12:23):
Johan, I think Kenny might have generated a proof of this once, when I was trying to figure out induction.
Kevin Buzzard (Aug 07 2018 at 12:24):
https://xenaproject.wordpress.com/2018/03/30/proofs-by-induction/
Kevin Buzzard (Aug 07 2018 at 12:25):
check out def4 in https://github.com/kckennylau/Lean/blob/master/proofs_by_induction.lean
Kevin Buzzard (Aug 07 2018 at 12:25):
Apparently it uses a lemma called chris
. I'm not sure if this is the official mathlib-sanctioned name.
Johan Commelin (Aug 07 2018 at 12:30):
Ok, thanks. I'll take a look in a minute!
Chris Hughes (Aug 07 2018 at 12:56):
I proved a slightly weaker version
lemma quux {A : Type*} [add_comm_group A] {n : ℕ} (f : fin (n+1) → A) : sum univ f = f ⟨n, nat.lt_succ_self _⟩ + sum univ (λ i : fin n, f i.raise) := by rw [← insert_erase (mem_univ (⟨n, nat.lt_succ_self _⟩ : fin (n + 1))), sum_insert (not_mem_erase _ _), add_left_inj]; exact sum_bij (λ a ha, ⟨a, lt_of_le_of_ne (nat.le_of_lt_succ a.2) (fin.vne_of_ne (mem_erase.1 ha).1)⟩ ) (λ _ _, mem_univ _) (λ ⟨_, _⟩ _, rfl) (λ ⟨a, _⟩ ⟨b, _⟩ _ _ h, fin.eq_of_veq (fin.veq_of_eq h : _)) (λ b hb, ⟨⟨b.1, nat.lt_succ_of_lt b.2⟩, mem_erase.2 ⟨fin.ne_of_vne (ne_of_lt b.2), mem_univ _⟩, by cases b; refl⟩)
Johan Commelin (Aug 07 2018 at 12:57):
Why is it weaker?
Johan Commelin (Aug 07 2018 at 12:57):
Also, apparently I ought to be using finset.range
...
Chris Hughes (Aug 07 2018 at 12:57):
I used ⟨n, nat.lt_succ_self _⟩
instead of \u n
Johan Commelin (Aug 07 2018 at 12:58):
Aaah, but that is better.
Johan Commelin (Aug 07 2018 at 12:58):
Silly me didn't understand that \u n
is difficult.
Johan Commelin (Aug 07 2018 at 12:59):
I think you can use nat.le_refl _
for some golfing.
Johan Commelin (Aug 07 2018 at 12:59):
But I will first think about the finset.range
version. Maybe it becomes a whole lot easier.
Johan Commelin (Aug 07 2018 at 14:08):
lemma quux {A : Type*} [add_comm_group A] (n : ℕ) (f : ℕ → A) : (finset.range (n+1)).sum f = f n + (finset.range n).sum f := by simp
Johan Commelin (Aug 07 2018 at 14:09):
So, that might not be even worth stating as a lemma.
Kenny Lau (Aug 07 2018 at 14:09):
what's the use of this lemma if you could just simp
?
Johan Commelin (Aug 07 2018 at 14:10):
That's exactly my point.
Last updated: Dec 20 2023 at 11:08 UTC