Zulip Chat Archive

Stream: Is there code for X?

Topic: Disjoint union of finsets


Yaël Dillies (Jan 10 2022 at 11:36):

I have two finsets s and t that I know to be disjoint. How can I make their union without bothering the end user with decidability assumptions?

Yaël Dillies (Jan 10 2022 at 11:38):

In my case, it's actually making a finset (α ⊕ β) from s : finset α and t : finset β.

Anne Baanen (Jan 10 2022 at 11:44):

Probably best to directly use the constructor, i.e. finset.mk (s + t : multiset α) sorry, where sorry is something like docs#multiset.nodup_add_of_nodup

Yaël Dillies (Jan 10 2022 at 11:45):

I'll define finset.sum then.

Yaël Dillies (Jan 10 2022 at 12:10):

Urgh, finset.sum is obviously already a thing.

Anne Baanen (Jan 10 2022 at 12:15):

Semi-serious option: finset.add to generalize + on multisets?

Yaël Dillies (Jan 10 2022 at 12:16):

But what about the α ⊕ β-specific operation? I'm thinking of finset.disj_sum

Yaël Dillies (Jan 10 2022 at 12:17):

Actually, my original idea doesn't work because disjoint on finsets requires decidable_eq because it goes through the semilattice_inf instance.

Yaël Dillies (Jan 10 2022 at 12:18):

Back when we had finset.disjoint, this wouldn't have been a problem.

Yaël Dillies (Jan 11 2022 at 10:26):

Actually, docs#finset.disj_union is already a thing


Last updated: Dec 20 2023 at 11:08 UTC