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):
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
withN
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 Abelian
right?
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):
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