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