Zulip Chat Archive

Stream: mathlib4

Topic: !4#2797 / !4#2769


Jeremy Tan (Mar 13 2023 at 13:16):

@Chris Hughes what are you waiting on me for? No question is asked there and no changes have been requested

Kevin Buzzard (Mar 13 2023 at 13:22):

You have a red x, not a green tick, so the PR can't be merged.

Jeremy Tan (Mar 13 2023 at 13:42):

@Chris Hughes It's still failing for the same reason as !4#2769

Jeremy Tan (Mar 13 2023 at 13:43):

And nobody knows why simpNF is being overly aggressive here

Mauricio Collares (Mar 13 2023 at 13:47):

Rather than simpNF being overly aggressive, probably the search was just below the timeout and newly added instances broke the camel's back. Profiling would be required to see what's causing the HasZeroObject failures.

Jeremy Tan (Mar 13 2023 at 13:52):

how does profiling work?

Matthew Ballard (Mar 13 2023 at 13:59):

!4#2797 adds no new instances.

Adam Topaz (Mar 13 2023 at 14:01):

What’s the error the linter gives for !4#2797 ?

Jeremy Tan (Mar 13 2023 at 14:03):

Adam Topaz said:

What’s the error the linter gives for !4#2797 ?

/- The `simpNF` linter reports:
SOME SIMP LEMMAS ARE NOT IN SIMP-NORMAL FORM.
see note [simp-normal form] for tips how to debug this.
https://leanprover-community.github.io/mathlib_docs/notes.html#simp-normal%20form -/
-- Mathlib.CategoryTheory.Linear.LinearFunctor
#check CategoryTheory.Functor.map_smul.{u_5, u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.Functor.mapLinearMap_apply.{u_1, u_2, u_3, u_4, u_5} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/

-- Mathlib.CategoryTheory.Preadditive.AdditiveFunctor
#check CategoryTheory.Functor.map_add.{u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.Functor.mapAddHom_apply.{u_1, u_2, u_3, u_4} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.Functor.map_neg.{u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.Functor.map_sub.{u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.Functor.map_sum.{u_5, u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject D
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.AdditiveFunctor.forget_map.{u_4, u_3, u_2, u_1} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject (C ⥤ D)
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.AdditiveFunctor.ofLeftExact_map.{v₁, v₂, u₁, u₂} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject (C ⥤+ D)
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.AdditiveFunctor.ofRightExact_map.{v₁, v₂, u₁, u₂} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject (C ⥤+ D)
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
#check CategoryTheory.AdditiveFunctor.ofExact_map.{v₁, v₂, u₁, u₂} /- LINTER FAILED:
simplify fails on left-hand side:
failed to synthesize
  CategoryTheory.Limits.HasZeroObject (C ⥤+ D)
(deterministic) timeout at 'typeclass', maximum number of heartbeats (20000) has been reached (use 'set_option synthInstance.maxHeartbeats <num>' to set the limit) -/
make: *** [GNUmakefile:16: lint] Error 1
Error: Process completed with exit code 2.

Matthew Ballard (Mar 13 2023 at 14:04):

They are all searching for HasZeroObject instances. Originally it was in Preadditive.AdditiveFunctor but !4#2797 add Linear.LinearFunctor Load up master and see if you can find a HasZeroObject D instance here

Adam Topaz (Mar 13 2023 at 14:10):

Is the issue that it’s looking for an additive instance via preadditive plus zero objects plus binary biproducts?

Matthew Ballard (Mar 13 2023 at 14:10):

My guess. But it knows not to do this when building

Matthew Ballard (Mar 13 2023 at 14:11):

And last I checked, Lean cannot synthesize an instance of HasZeroObject in that file at the appropriate locations

Adam Topaz (Mar 13 2023 at 14:12):

Which file?

Matthew Ballard (Mar 13 2023 at 14:12):

It seems the search done when building the file is a different from the simpNF search

Matthew Ballard (Mar 13 2023 at 14:12):

https://github.com/leanprover-community/mathlib4/blob/baf8d765412d7f8ad43200bc7ca83edacdf14da0/Mathlib/CategoryTheory/Preadditive/AdditiveFunctor.lean#L56

Adam Topaz (Mar 13 2023 at 14:13):

I think the difference is that the linter works globally somehow, not locally in an individual file

Matthew Ballard (Mar 13 2023 at 14:14):

I confess to never having looked at the linter files

Matthew Ballard (Mar 13 2023 at 14:31):

Rebuilt master from scratch with no problem and

variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D] (F : C  D)
  [Functor.Additive F]

#synth Limits.HasZeroObject D  -- failed

For reference one of the simpNF errors is for timing out in a search for HasZeroObject D in the next declaration.

Kevin Buzzard (Mar 13 2023 at 14:35):

And does etaExperiment help?

Matthew Ballard (Mar 13 2023 at 14:36):

Can you remind of the syntax to turn it on?

Adam Topaz (Mar 13 2023 at 14:37):

Has zero object is a prop right? It probably won’t make a difference

Matthew Ballard (Mar 13 2023 at 14:38):

The linter is a black box to me. Just curious to poke it with this stick

Kevin Buzzard (Mar 13 2023 at 14:40):

set_option synthInstance.etaExperiment true in
#synth ...

Matthew Ballard (Mar 13 2023 at 14:41):

I set it true globally. Lean is not finding a HasZeroObject D instance because there is none

Matthew Ballard (Mar 13 2023 at 14:43):

Running the linter with it in there for fun

Matthew Ballard (Mar 13 2023 at 14:50):

-- Linting passed.

:rofl:

Matthew Ballard (Mar 13 2023 at 14:51):

Let me check if other changes to master didn't induce this

Matthew Ballard (Mar 13 2023 at 14:55):

Failed!!

Matthew Ballard (Mar 13 2023 at 14:57):

Solution

set_option synthInstance.etaExperiment true in simpNF

is clearly the fix :lol:

Matthew Ballard (Mar 13 2023 at 15:18):

Well, now it fails again even with EE turned on

Adam Topaz (Mar 13 2023 at 15:24):

A MWE to help debugging (using the branch from !4#2797):

import Mathlib

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option trace.Meta.synthInstance true
example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g := by simp

Matthew Ballard (Mar 13 2023 at 15:26):

New theory: the fresh build of master on my machine did it

Adam Topaz (Mar 13 2023 at 15:49):

My guess is that lean is trying to use a lemma which requires Additive D, and it looks for an additive instance from preadditive+zeroobj+binarybiprods which it can deduce from preadditive+finitebiprods which it can deduce from preadditive+zeroobj+binarybiprods, etc.

Adam Topaz (Mar 13 2023 at 15:49):

But the trace itself is crashing my vscode, so it's hard to tell what's actually going on

Matthew Ballard (Mar 13 2023 at 15:50):

The oddness for me is the divergence between Lean and simpNF

Adam Topaz (Mar 13 2023 at 15:50):

Is there a way to emit the synthInstance trace in the command line instead of vscode?

Gabriel Ebner (Mar 13 2023 at 15:51):

If you call lean from the command-line, yes.

Adam Topaz (Mar 13 2023 at 15:51):

bah of course :)

Gabriel Ebner (Mar 13 2023 at 15:52):

What I often do is add set_option synthInstance.maxHeartbeats N with N ranging from 0 to 20000 (the default) to reduce the output.

Adam Topaz (Mar 13 2023 at 15:53):

Gabriel Ebner said:

If you call lean from the command-line, yes.

okay, lean4 doesn't let me do lean --make foobar.lean. What's the right flag?

Adam Topaz (Mar 13 2023 at 15:53):

Gabriel Ebner said:

What I often do is add set_option synthInstance.maxHeartbeats N with N ranging from 0 to 20000 (the default) to reduce the output.

I'll try this as well.

Matthew Ballard (Mar 13 2023 at 15:54):

lake env lean

Adam Topaz (Mar 13 2023 at 15:56):

?

Adam Topaz (Mar 13 2023 at 15:56):

anyway, lean is indeed stuck trying to find an additive instance.

Adam Topaz (Mar 13 2023 at 15:57):

Matthew Ballard (Mar 13 2023 at 16:00):

Are you trying to synthesize a HasZeroObject D instance in the original file?

Adam Topaz (Mar 13 2023 at 16:00):

no I'm just using the following to investigate precisely the failure of map_add:

import Mathlib

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.synthInstance true in by simp

Matthew Ballard (Mar 13 2023 at 16:01):

Wait. That fails to build?

Adam Topaz (Mar 13 2023 at 16:01):

yup

Adam Topaz (Mar 13 2023 at 16:01):

error @ simp

Matthew Ballard (Mar 13 2023 at 16:02):

Huh. I didn't check that branch. On port/CategoryTheory.Abelian.Basic everything always built

Matthew Ballard (Mar 13 2023 at 16:04):

Does it fail on master?

Matthew Ballard (Mar 13 2023 at 16:05):

It doesn't crash nvim :)

Adam Topaz (Mar 13 2023 at 16:05):

I haven't checked but my guess is that it would. The issue is in Additive.Basic:

import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor
import Mathlib.CategoryTheory.Additive.Basic -- uncomment this line to get rid of error.

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.synthInstance true in by simp

Adam Topaz (Mar 13 2023 at 16:06):

Matthew Ballard said:

It doesn't crash nvim :)

did you use the heartbeats setting in my code block? ;)

Matthew Ballard (Mar 13 2023 at 16:06):

I don't think so. (I would make a terrible lab scientist...)

Matthew Ballard (Mar 13 2023 at 16:07):

Fails on master and yes no limit on the heartbeats

Adam Topaz (Mar 13 2023 at 16:08):

Matthew Ballard said:

Fails on master and yes no limit on the heartbeats

okay, that's not good

Matthew Ballard (Mar 13 2023 at 16:10):

Well, I also just dropped that into the CategoryTheory/Preadditive/Additive.lean directly and I get a different trace

Adam Topaz (Mar 13 2023 at 16:12):

This is working for me on master:

import Mathlib

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.synthInstance true in by simp

Matthew Ballard (Mar 13 2023 at 16:13):

As I said, terrible lab scientist.

Matthew Ballard (Mar 13 2023 at 16:15):

If you change the proof of map_add in CategoryTheory/Preadditive/AdditiveFunctor.lean to set_option trace.Meta.synthInstance true in by simp does it succeed?

Adam Topaz (Mar 13 2023 at 16:16):

that file builds fine. I don't think that would change anything. I think the issue is in the Additive class itself.

Adam Topaz (Mar 13 2023 at 16:16):

I'll try to extract a MWE

Matthew Ballard (Mar 13 2023 at 16:16):

The current proof is not simp

Matthew Ballard (Mar 13 2023 at 16:17):

Ah ok. simpNF is testing for proofs by by simp and this is happening

Adam Topaz (Mar 13 2023 at 16:17):

yeah exactly

Matthew Ballard (Mar 13 2023 at 16:17):

Shouldn't it just say "there is no proof by simp, we are ok"

Adam Topaz (Mar 13 2023 at 16:21):

import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

/-
Uncomment the first one and comment out the second to get an error.
-/

--class thing (C : Type _) [Category C] extends Preadditive C, Limits.HasFiniteBiproducts C
class thing (C : Type _) [Category C] [Preadditive C] extends Limits.HasFiniteBiproducts C

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.synthInstance true in by simp

Matthew Ballard (Mar 13 2023 at 16:23):

Well, Additive and Abelian fit that

Adam Topaz (Mar 13 2023 at 16:25):

that foo lemma wasn't actually needed

Matthew Ballard (Mar 13 2023 at 16:26):

You aren't suggesting unbundling Preadditive in Additive and Abelianright?

Adam Topaz (Mar 13 2023 at 16:27):

I'm not suggesting anything. I'm just trying to isolate the issue

Matthew Ballard (Mar 13 2023 at 16:27):

Just asked for clarity

Adam Topaz (Mar 13 2023 at 16:27):

Abelian should be a prop anyway ;)

Adam Topaz (Mar 13 2023 at 16:28):

re :thinking: : There is only ever at most one abelian category instance on any given category

Adam Topaz (Mar 13 2023 at 16:29):

But that's not an actual suggestion. We sometimes want to exploit the definitional properties of addition of morphisms (like in the category of modules), so making it a prop is not a good thing to do.

Adam Topaz (Mar 13 2023 at 16:44):

well, I couldn't track down the issue. I hope a typeclass expert can help us out here? The current MWE is this:

import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor

open CategoryTheory
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

/-
Comment out the first one and uncomment out the second to get rid of the error.
-/

class thing (C : Type _) [Category C] extends Preadditive C, Limits.HasFiniteBiproducts C
--class thing (C : Type _) [Category C] [Preadditive C] extends Limits.HasFiniteBiproducts C

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.synthInstance true in by simp

And it's valid on current mathlib4 master

Matthew Ballard (Mar 13 2023 at 16:55):

I just cloned a fresh copy of mathlib and built it from scratch (for some reason cache was not unpacking the files from get!). If I replace the proof of map_add in CategoryTheory/Preadditive/AdditiveFunctor.lean with

set_option trace.Meta.synthInstance true in by simp

then it is already looking for HasZeroObject D

Matthew Ballard (Mar 13 2023 at 16:59):

Output

Kevin Buzzard (Mar 13 2023 at 16:59):

Re the MWE: for me you don't need to uncomment the second thing to get rid of the error -- just removing the first one does the job.

Adam Topaz (Mar 13 2023 at 17:00):

yeah true

Adam Topaz (Mar 13 2023 at 17:00):

but uncommenting out the second doesn't introduce an error, which might be useful information as well

Matthew Ballard (Mar 13 2023 at 17:01):

Why is Lean searching for HasZeroObject D in map_add? (This may be orthogonal to the looping with the new class)

Adam Topaz (Mar 13 2023 at 17:09):

you can trace the simp as well:

set_option trace.Meta.synthInstance true in
set_option trace.Meta.Tactic.simp true in by simp

Adam Topaz (Mar 13 2023 at 17:10):

It seems that this HasZeroObject search is due to CategoryTheory.Limits.IsZero.map.

Matthew Ballard (Mar 13 2023 at 17:10):

Output

My output from @Adam Topaz MWE (in its borked mode) (edit: expanded)

Matthew Ballard (Mar 13 2023 at 17:21):

Nuking hasZeroObject_of_hasFiniteBiproducts fixes things

Adam Topaz (Mar 13 2023 at 17:27):

But I think we want that instance. And I still can't figure out where the loop is coming from.

Matthew Ballard (Mar 13 2023 at 17:27):

It has lower priority in the original file for some reason

Adam Topaz (Mar 13 2023 at 17:37):

This also works:

import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor
import Mathlib.Tactic.LibrarySearch

open CategoryTheory Limits
variable {C D : Type _} [Category C] [Category D] [Preadditive C] [Preadditive D]

set_option maxHeartbeats 2000

class thing (C : Type _) [Category C] extends Preadditive C, HasFiniteBiproducts C

attribute [-simp] IsZero.map

example (F : C  D) [Functor.Additive F] {X Y : C} {f g : X  Y} :
  F.map (f + g) = F.map f + F.map g :=
set_option trace.Meta.Tactic.simp true in
set_option trace.Meta.synthInstance true in by simp

Matthew Ballard (Mar 13 2023 at 17:44):

FWIW, removing from the simp set IsZero.map globally doesn't break anything (yet)

Matthew Ballard (Mar 13 2023 at 17:44):

It is a strange result

Matthew Ballard (Mar 13 2023 at 17:48):

I don't think checking if F = 0 is a good place to start looking for a proof that F.map is a homomorphism

Matthew Ballard (Mar 13 2023 at 18:39):

Matthew Ballard said:

FWIW, removing from the simp set IsZero.map globally doesn't break anything (yet)

Removing @[simp] doesn't seem to cause any problems in mathlib(3)

Kevin Buzzard (Mar 13 2023 at 18:50):

If you change

class thing (C : Type _) [Category C] extends Preadditive C, Limits.HasFiniteBiproducts C

to

class thing (C : Type _) [Category C] extends HasZeroMorphisms C, Limits.HasFiniteBiproducts C, Preadditive C

then the problem goes away. Are these the same?

Matthew Ballard (Mar 13 2023 at 19:10):

More output

Adam Topaz (Mar 13 2023 at 19:14):

Kevin Buzzard said:

If you change

class thing (C : Type _) [Category C] extends Preadditive C, Limits.HasFiniteBiproducts C

to

class thing (C : Type _) [Category C] extends HasZeroMorphisms C, Limits.HasFiniteBiproducts C, Preadditive C

then the problem goes away. Are these the same?

Preadditive implies HasZeroMorphisms, and both are data, so this is probably problematic

Matthew Ballard (Mar 13 2023 at 19:14):

Does it?

Kevin Buzzard (Mar 13 2023 at 19:16):

Matthew Ballard said:

More output


That's probably lean4#2055

Adam Topaz (Mar 13 2023 at 19:16):

https://github.com/leanprover-community/mathlib4/blob/6f2b42f1aafa2e47304d7515c10523f85655bec8/Mathlib/CategoryTheory/Preadditive/Basic.lean#L203

Adam Topaz (Mar 13 2023 at 19:18):

Kevin Buzzard said:

That's probably lean4#2055

I think we're on to something here...

Matthew Ballard (Mar 13 2023 at 19:23):

Only about 20000 repeated failures here

Adam Topaz (Mar 13 2023 at 19:24):

@Kevin Buzzard do you know if the diamond in the BadClass example from lean4#2055 is really necessary?

Kevin Buzzard (Mar 13 2023 at 19:28):

There's a diamond?

Adam Topaz (Mar 13 2023 at 19:29):

not in BadClass, but in CommRing

Matthew Ballard (Mar 13 2023 at 19:31):

With trace.Meta.isDefEq true

Matthew Ballard (Mar 13 2023 at 19:40):

With pp all

Matthew Ballard (Mar 13 2023 at 19:47):

I don't think this gets fixed soon. What sounds like a good workaround until a fix is possible?

Matthew Ballard (Mar 13 2023 at 19:48):

/poll
nolint simpNF
remove hasZeroObject_of_hasFiniteBiproducts as an instance
remove IsZero.map from the simp set

Kevin Buzzard (Mar 13 2023 at 19:58):

Adam Topaz said:

Kevin Buzzard do you know if the diamond in the BadClass example from lean4#2055 is really necessary?

o_O it doesn't seem to be! Hang on

Kevin Buzzard (Mar 13 2023 at 20:02):

I updated the issue: you can get a smaller amount of chaos if you break the diamond (which you can upgrade to a much bigger amount of chaos by adding an instance of BadClass Nat.

Adam Topaz (Mar 13 2023 at 20:41):

The other option is to just get rid of Additive altogether and make it a mixin of the form Preadditive + HasFiniteBiproducts. That would probably require a refactor of mathlib3 before porting.

Matthew Ballard (Mar 13 2023 at 20:46):

Do you want Abelian categories for Denmark?

Adam Topaz (Mar 13 2023 at 20:47):

Not necessarily but it would be nice to have

Adam Topaz (Mar 13 2023 at 20:47):

FWIW I don’t think the refactor I suggested would be that bad

Matthew Ballard (Mar 13 2023 at 20:47):

Abelian too?

Adam Topaz (Mar 13 2023 at 20:48):

Does abelian extend additive? I thought it does not

Matthew Ballard (Mar 13 2023 at 20:49):

No but it extends Preadditive and HasFiniteBiproducts

Adam Topaz (Mar 13 2023 at 20:50):

Oh so that would cause similar issues

Adam Topaz (Mar 13 2023 at 20:50):

Yeah I guess we would refactor that as well

Matthew Ballard (Mar 13 2023 at 20:50):

It is the other PR in the title

Matthew Ballard (Mar 13 2023 at 20:53):

I would pause at refactoring and porting at the same time though within reason

Matthew Ballard (Mar 13 2023 at 20:54):

Other the Denmark school, I can't think of any hard constraints for these files (and their dependents)

Adam Topaz (Mar 13 2023 at 22:34):

Since lean4#2055 is causing issues for others (cf. this) I think the right solution is to wait for this issue to be resolved, unfortunately.

Let me also ping to see what @Scott Morrison thinks about this issue.

Jeremy Tan (Mar 14 2023 at 05:14):

Adam Topaz said:

Since lean4#2055 is causing issues for others (cf. this) I think the right solution is to wait for this issue to be resolved, unfortunately.

Let me also ping to see what Scott Morrison thinks about this issue.

Since you seem to be free from porting anything at the moment, why not work on lean4#2055?

Jeremy Tan (Mar 14 2023 at 05:17):

Our future depends on solving the above

Johan Commelin (Mar 14 2023 at 07:25):

@Jeremy Tan please calm down a bit! We appreciate your help with porting, but people have many obligations!
You only recently showed up on zulip. Please avoid sounding like you are bossing people around.


Last updated: Dec 20 2023 at 11:08 UTC