Zulip Chat Archive

Stream: mathlib4

Topic: Defeq abuse with ENat


Daniel Weber (Nov 05 2024 at 10:37):

Using functions like docs#WithTop.untop' and docs#WithTop.map with docs#ENat is defeq abuse, and causes them to simp badly, as ENat uses Nat.cast instead of WithTop.some. How should that be resolved? Should we add ENat.toWithTop and ENat.ofWithTop equivalences and use them? Should we copy needed functions from WithTop to ENat? Some other approach?

Daniel Weber (Nov 08 2024 at 04:40):

Would it be possible to add WithTop Nat = ENat as a simp lemma?

Violeta Hernández (Nov 09 2024 at 01:52):

I don't see why you'd ever want to use the former if you have the latter available

Violeta Hernández (Nov 09 2024 at 01:53):

So I vote yes

Violeta Hernández (Nov 09 2024 at 01:53):

Since this is def-eq simp should have no trouble doing the replacement

Daniel Weber (Nov 09 2024 at 06:30):

I made #18782, although I'm not sure how to interpret the benchmark

Damiano Testa (Nov 09 2024 at 08:39):

In case it is helpful, the bench summary bot did not post anything since there were no entries that differed by at least 10^9 instructions.

Damiano Testa (Nov 09 2024 at 08:39):

(Right now, the action fails and posts nothing in this case, but it could be changed to posting what I said above instead!)

Daniel Weber (Nov 09 2024 at 10:14):

I closed it because after trying to use it for a bit I don't think it helps with defeq abuse. I think I'm leaning more towards ENat.toWithTop and ENat.ofWithTop now

Eric Wieser (Nov 09 2024 at 11:35):

Daniel Weber said:

Would it be possible to add WithTop Nat = ENat as a simp lemma?

Unless docs#ENat is reducible, this doesn't seem like a good idea to me

Daniel Weber (Nov 09 2024 at 11:57):

Yes, I agree. I tried making it reducible, but it had some weird failure

Daniel Weber (Nov 13 2024 at 08:01):

/poll How to use WithTop functions on ENat?
Add toWithTop and ofWithTop functions
Copy the appropriate theorems/definition for ENat when needed
Make ENat abbrev

Daniel Weber (Nov 17 2024 at 11:46):

I made #19149 for map. A potential problem with this is that map needs three versions: Nat -> Nat, Nat -> α, α -> Nat. This PR has the the second of those

Daniel Weber (Nov 17 2024 at 17:14):

This passes CI now, but I really dislike the duplication

Daniel Weber (Nov 17 2024 at 18:30):

#19164 implements the first approach, of adding toWithTop and ofWithTop

Yaël Dillies (Jan 20 2025 at 10:43):

Why don't we make ENat an abbrev? It really is semantically the same as WithTop Nat

Daniel Weber (Jan 20 2025 at 11:01):

Daniel Weber said:

Yes, I agree. I tried making it reducible, but it had some weird failure

I tried that, but it had failures I didn't understand how to fix

Yaël Dillies (Jan 20 2025 at 11:02):

Aha, do you have some logs I can look at?

Daniel Weber (Jan 20 2025 at 11:32):

I'm not at home for a week and I don't think I published the branch to GitHub, so unfortunately no

Yaël Dillies (Jan 20 2025 at 11:35):

Ah that's okay, I can wait


Last updated: May 02 2025 at 03:31 UTC