Zulip Chat Archive

Stream: Is there code for X?

Topic: Splitting a finset.sum over an involutive function


Eric Wieser (Nov 28 2020 at 10:56):

If I have an involutive function f : A -> A where there is no a st f a = a, then I can argue that sum a \in finset.univ A, g a can be rewritten into sum a \in half_of_univ, g a + g (f a). How would I begin to formalize this?

Kevin Buzzard (Nov 28 2020 at 11:09):

I ran into this problem in 2018 and I think there ended up being a lemma in mathlib which could help.

Kevin Buzzard (Nov 28 2020 at 11:11):

I'm thinking of docs#finset.prod_involution which probably isn't much help for you. It's related, but probably not enough.

Eric Wieser (Nov 28 2020 at 11:15):

Now that I have vs code to hand to type stuff, I think an auxiliary lemma that would be enough is

example {α : Type*} (f : α  α) (hf : function.involutive f) (hf' :  a, f a  a) :
   (x : set α), x  f '' x = set.univ  x  f '' x =  := sorry

Kevin Buzzard (Nov 28 2020 at 11:15):

As a mathematician my immediate instinct would be to be summing over equivalence classes. half_of_univ could be the noncomputable out or whatever it's called. You'll have to do something to choose the x.

Kevin Buzzard (Nov 28 2020 at 11:16):

Right, that set is the image of the noncomputable injection that you get from the surjection from alpha to alpha/~

Kevin Buzzard (Nov 28 2020 at 11:17):

the noncomputable injection gives you an isomorphism alpha = q x bool where q is the quotient.

Eric Wieser (Nov 28 2020 at 11:18):

docs#finset.sum_involution looks like it has everything I need

Kevin Buzzard (Nov 28 2020 at 11:18):

the definition of the equivalence associated to an involution is in TPIL near the end

Eric Wieser (Nov 28 2020 at 11:19):

https://leanprover.github.io/theorem_proving_in_lean/search.html?q=involution gives nothing

Kevin Buzzard (Nov 28 2020 at 11:19):

it's in the bit about quotients at the very end

Kevin Buzzard (Nov 28 2020 at 11:20):

oh I misremembered, it's making unordered pairs from ordered pairs. Section 11.4.

Eric Wieser (Nov 28 2020 at 11:30):

docs#finset.sum_cancels_of_partition_cancels is also close to what I want


Last updated: Dec 20 2023 at 11:08 UTC