Zulip Chat Archive

Stream: batteries

Topic: eq_of_cmp_eq


Kim Morrison (Jan 18 2024 at 05:05):

I would like the typeclass

class FooCmp (cmp : α  α  Ordering) : Prop where
  eq_of_cmp_eq : cmp x y = .eq  x = y

What should it be called?

James Gallicchio (Jan 18 2024 at 05:11):

in leancolls i started naming these like Lawful<class>.<property; I don't like it or recommend it but have no better suggestions than LawfulCmp.Eq :laughing:

Kim Morrison (Jan 18 2024 at 05:12):

The problem here is that it is only a small fraction of Lawful.

Kim Morrison (Jan 18 2024 at 05:12):

We already have TransCmp and OrientedCmp.

Mario Carneiro (Jan 18 2024 at 05:28):

AntisymmCmp?

Damiano Testa (Jan 18 2024 at 15:38):

Or InjectiveCmp? :upside_down:

Eric Wieser (Jan 18 2024 at 15:40):

DistinguishingCmp?

Eric Wieser (Jan 18 2024 at 15:41):

Do you really not want the typeclass to also require cmp x x = .eq at the same time?

James Gallicchio (Jan 18 2024 at 16:15):

It seems lake has a typeclass for this? docs#Lake.EqOfCmp

Eric Wieser (Jan 18 2024 at 16:51):

and docs#Lake.LawfulCmpEq is the version that has the other property I'm suggesting

Kim Morrison (Jan 19 2024 at 00:30):

Eric Wieser said:

Do you really not want the typeclass to also require cmp x x = .eq at the same time?

So far I've been finding that when I need cmp x x = .eq, I needed OrientedCmp anyway, which implies this.

Kim Morrison (Jan 19 2024 at 00:30):

But sure, I wouldn't mind either way.


Last updated: May 02 2025 at 03:31 UTC