importMathlibopenscopedNNRealvariable{๐E:Type_}[NormedField๐][AddCommGroupE][Module๐E]set_optionsynthInstance.maxHeartbeats27000in-- times out otherwise#synthMulActionโโฅ0(Seminorm๐E)-- Seminorm.instMulAction
That is, it is timing out on what I believe is the most common use case. This doesn't show up in mathlib currently because, while it's relatively close to the heartbeat limit where it occurs, not enough of mathlib is imported to push it over the limit. However, various changes can push it over (e.g., #6310). So, what should we do about this? Should we add a shortcut instance for the usual case R := โโฅ0 in docs#Seminorm.instMulAction ?
On a separate note, while writing down the mwe above, I came across something I don't know how to explain: adding explicit universe parameters allows us to the lower the heartbeat limit (both examples are taken to the nearest thousand). Is there a reason this should be the case?
variable{๐:Typeu}{E:Typev}[NormedField๐][AddCommGroupE][Module๐E]set_optionsynthInstance.maxHeartbeats22000in-- times out otherwise#synthMulActionโโฅ0(Seminorm๐E)-- Seminorm.instMulAction
Asking Lean to waste time solving universe constraints is kinda silly when maybe 95% of the time there is nothing to solve, of which maybe 1% it introduces actual bugs
It'd be neat if we could have Type* mean Type ?u for some unspecified universe parameter (not an expression, but an actual parameter). That is, have a new kind of level metavariable that can only unify with level parameters or other such metavariables. I feel like this is what I'd expect out of Type*, where writing (X Y : Type*) doesn't mean that X and Y are definitely in different universes.
When you say "is fine" do you mean "is better" or "is acceptable"?
Haven't you ever had bunch of type arguments and you decide you want to give them explicit universe levels, and it's a little annoying to split up the binder and maybe permute some of the arguments?
The current situation is bad enough that I now instinctively want to break out X ... Z : Type _ whenever I see it. I think a change will have noticeable effect.
There are also some big outliers amongst the files. Analysis.InnerProductSpace.Basic is +128.2%. These are probably our fault but I canโt explain it at the moment
It would be interesting to analyze these outliers, say with something like \time -v lake env lean --profile $FILE before and after the change. I can only assume that the maxrss increase is driven by a compilation regression in one of these files. Which in itself is surprising as compilation should not really care about universes.
interpretation of Lean.mkStateFromImportedEntries._at.Mathlib.Prelude.Rename.initFn._@.Mathlib.Mathport.Rename._hyg.251._spec_1 took 155ms
import took 376ms
typeclass inference of CoeFun took 105ms
typeclass inference of CoeFun took 112ms
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 103ms
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 100ms
simp took 163ms
simp took 164ms
simp took 1.55s
tactic execution of Lean.Parser.Tactic.rewriteSeq took 122ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 153ms
compilation of Orthonormal.equiv took 131ms
simp took 104ms
compilation of innerSL took 374ms
typeclass inference of CoeFun took 758ms
type checking took 165ms
compilation of innerSLFlip took 2.29s
typeclass inference of TopologicalSpace took 118ms
typeclass inference of AddCommMonoid took 305ms
typeclass inference of Module took 322ms
typeclass inference of Module took 778ms
typeclass inference of Module took 777ms
typeclass inference of CoeT took 398ms
typeclass inference of CoeT took 397ms
typeclass inference of CoeT took 398ms
typeclass inference of CoeFun took 1.03s
typeclass inference of TopologicalSpace took 198ms
typeclass inference of AddCommMonoid took 368ms
typeclass inference of Module took 447ms
typeclass inference of CoeT took 4.75s
type checking took 678ms
elaboration took 1.28s
typeclass inference of CoeFun took 616ms
type checking took 137ms
typeclass inference of CoeFun took 615ms
typeclass inference of CoeFun took 145ms
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 100ms
typeclass inference of CoeFun took 101ms
typeclass inference of CoeFun took 101ms
elaboration took 287ms
cumulative profiling times:
attribute application 17.1ms
compilation 3.12s
compilation new 243ms
dsimp 0.313ms
elaboration 3.69s
import 376ms
initialization 14.5ms
interpretation 3.26s
linting 372ms
norm_num 83ms
parsing 70.1ms
ring 159ms
simp 4.38s
tactic execution 1.62s
type checking 2.26s
typeclass inference 36.2s
Command being timed: "lake env lean --profile Mathlib/Analysis/InnerProductSpace/Basic.lean"
User time (seconds): 55.37
System time (seconds): 1.37
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:56.80
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1600640
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 90
Minor (reclaiming a frame) page faults: 487274
Voluntary context switches: 44
Involuntary context switches: 411
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
After
interpretation of Lean.mkStateFromImportedEntries._at.Mathlib.Prelude.Rename.initFn._@.Mathlib.Mathport.Rename._hyg.364._spec_1 took 172ms
import took 1.41s
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 105ms
typeclass inference of CoeFun took 104ms
typeclass inference of CoeFun took 101ms
simp took 170ms
simp took 170ms
simp took 1.62s
compilation of Orthonormal.equiv took 137ms
simp took 107ms
compilation of innerSL took 811ms
typeclass inference of CoeFun took 270ms
type checking took 171ms
compilation of innerSLFlip took 3.38s
typeclass inference of AddCommMonoid took 151ms
typeclass inference of Module took 170ms
typeclass inference of Module took 331ms
typeclass inference of Module took 329ms
typeclass inference of CoeT took 139ms
typeclass inference of AddCommMonoid took 152ms
typeclass inference of Module took 159ms
typeclass inference of CoeT took 134ms
typeclass inference of CoeT took 134ms
typeclass inference of CoeFun took 328ms
typeclass inference of AddCommMonoid took 176ms
typeclass inference of Module took 220ms
typeclass inference of CoeT took 1.87s
type checking took 635ms
compilation of ContinuousLinearMap.toSesqForm took 75.7s
elaboration took 596ms
typeclass inference of CoeFun took 628ms
type checking took 144ms
typeclass inference of CoeFun took 617ms
typeclass inference of CoeFun took 145ms
typeclass inference of CoeFun took 101ms
typeclass inference of CoeFun took 102ms
typeclass inference of CoeFun took 101ms
typeclass inference of CoeFun took 104ms
typeclass inference of CoeFun took 103ms
elaboration took 285ms
cumulative profiling times:
attribute application 20.2ms
compilation 80.4s
compilation new 295ms
dsimp 0.322ms
elaboration 2.77s
import 1.41s
initialization 14.4ms
interpretation 3.51s
linting 379ms
norm_num 85.9ms
parsing 70.3ms
ring 170ms
simp 4.48s
tactic execution 1.45s
type checking 2.28s
typeclass inference 27.9s
Command being timed: "lake env lean --profile Mathlib/Analysis/InnerProductSpace/Basic.lean"
User time (seconds): 122.32
System time (seconds): 2.96
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 2:06.54
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 13291168
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 25800
Minor (reclaiming a frame) page faults: 1211348
Voluntary context switches: 1707
Involuntary context switches: 13411
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
The universe signatures of the two versions of the declaration are fairly different I think. Perhaps something computable is synthesized where before it wasnโt
import took 298ms
dsimp took 231ms
dsimp took 230ms
interpretation of Std.Tactic.Ext._aux_Std_Tactic_Ext___elabRules_Std_Tactic_Ext_tacticExt___:__1 took 122ms
interpretation of Std.Tactic._aux_Std_Tactic_RCases___elabRules_Std_Tactic_rcases_1 took 393ms
type checking took 108ms
elaboration took 11.3s
cumulative profiling times:
attribute application 2.04ms
compilation 1.32ms
compilation new 3.46ms
dsimp 518ms
elaboration 11.6s
import 298ms
initialization 14.2ms
interpretation 1.65s
linting 150ms
norm_num 4.29ms
parsing 13.3ms
ring 13.6ms
simp 155ms
tactic execution 361ms
type checking 202ms
typeclass inference 2.22s
Command being timed: "lake env lean --profile Mathlib/RingTheory/Noetherian.lean"
User time (seconds): 17.58
System time (seconds): 0.51
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:18.14
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1109040
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 224
Minor (reclaiming a frame) page faults: 194988
Voluntary context switches: 321
Involuntary context switches: 361
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
After
import took 308ms
dsimp took 134ms
dsimp took 137ms
interpretation of Std.Tactic.Ext._aux_Std_Tactic_Ext___elabRules_Std_Tactic_Ext_tacticExt___:__1 took 131ms
interpretation of Std.Tactic.Ext._aux_Std_Tactic_Ext___elabRules_Std_Tactic_Ext_tacticExt___:__1 took 119ms
interpretation of Std.Tactic._aux_Std_Tactic_RCases___elabRules_Std_Tactic_rcases_1 took 610ms
type checking took 104ms
linting took 3.86s
elaboration took 13.5s
cumulative profiling times:
attribute application 2.05ms
compilation 1.31ms
compilation new 3.45ms
dsimp 328ms
elaboration 13.8s
import 308ms
initialization 14.1ms
interpretation 1.94s
linting 3.93s
norm_num 4.2ms
parsing 13.4ms
ring 13.6ms
simp 132ms
tactic execution 440ms
type checking 197ms
typeclass inference 1.91s
Command being timed: "lake env lean --profile Mathlib/RingTheory/Noetherian.lean"
User time (seconds): 23.32
System time (seconds): 0.65
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:24.07
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1727696
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 332
Minor (reclaiming a frame) page faults: 236052
Voluntary context switches: 216
Involuntary context switches: 775
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
import took 722ms
compilation of ModuleCat.MonoidalCategory.tensorHom took 170ms
typeclass inference of CoeT took 215ms
typeclass inference of CoeT took 184ms
type checking took 162ms
compilation of ModuleCat.MonoidalCategory.associator took 1.86s
tactic execution of Lean.Parser.Tactic.refl took 249ms
interpretation of Mathlib.Tactic._aux_Mathlib_Tactic_Convert___elabRules_Mathlib_Tactic_convert_1 took 591ms
elaboration took 174ms
interpretation of Mathlib.Tactic._aux_Mathlib_Tactic_Convert___elabRules_Mathlib_Tactic_convert_1 took 29.7s
type checking took 177ms
elaboration took 739ms
compilation of ModuleCat.MonoidalCategory.leftUnitor took 142ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 273ms
elaboration took 105ms
compilation of ModuleCat.MonoidalCategory.rightUnitor took 339ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 172ms
elaboration took 106ms
tactic execution of Lean.Parser.Tactic.apply took 2.24s
elaboration took 1.2s
typeclass inference of CoeT took 106ms
elaboration took 288ms
typeclass inference of CoeT took 138ms
typeclass inference of CoeT took 143ms
elaboration took 114ms
typeclass inference of CoeT took 101ms
typeclass inference of CoeT took 101ms
elaboration took 115ms
cumulative profiling times:
attribute application 4.14ms
compilation 2.52s
compilation new 20.8ms
dsimp 2.01ms
elaboration 3.26s
import 722ms
initialization 14.6ms
interpretation 31s
linting 56.1ms
parsing 7.85ms
simp 109ms
tactic execution 3.72s
type checking 760ms
typeclass inference 7.98s
Command being timed: "lake env lean --profile Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean"
User time (seconds): 49.67
System time (seconds): 1.08
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:51.18
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1353632
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 5732
Minor (reclaiming a frame) page faults: 178011
Voluntary context switches: 661
Involuntary context switches: 6428
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
After
import took 603ms
compilation of ModuleCat.MonoidalCategory.tensorHom took 173ms
typeclass inference of CoeT took 199ms
typeclass inference of CoeT took 175ms
type checking took 153ms
compilation of ModuleCat.MonoidalCategory.associator took 1.77s
tactic execution of Lean.Parser.Tactic.refl took 234ms
interpretation of Mathlib.Tactic._aux_Mathlib_Tactic_Convert___elabRules_Mathlib_Tactic_convert_1 took 715ms
elaboration took 173ms
interpretation of Mathlib.Tactic._aux_Mathlib_Tactic_Convert___elabRules_Mathlib_Tactic_convert_1 took 36s
type checking took 3.8s
elaboration took 787ms
compilation of ModuleCat.MonoidalCategory.leftUnitor took 141ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 271ms
elaboration took 107ms
compilation of ModuleCat.MonoidalCategory.rightUnitor took 339ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 171ms
elaboration took 106ms
tactic execution of Lean.Parser.Tactic.apply took 2.31s
elaboration took 1.22s
typeclass inference of CoeT took 111ms
elaboration took 297ms
typeclass inference of CoeT took 147ms
typeclass inference of CoeT took 151ms
elaboration took 118ms
typeclass inference of CoeT took 101ms
typeclass inference of CoeT took 103ms
typeclass inference of CoeT took 102ms
typeclass inference of CoeT took 105ms
elaboration took 120ms
typeclass inference of CoeT took 103ms
typeclass inference of CoeT took 104ms
typeclass inference of CoeT took 100ms
typeclass inference of CoeT took 101ms
typeclass inference of CoeT took 103ms
typeclass inference of CoeT took 103ms
typeclass inference of CoeT took 104ms
typeclass inference of CoeT took 106ms
typeclass inference of CoeT took 100ms
typeclass inference of CoeT took 102ms
typeclass inference of CoeT took 101ms
typeclass inference of CoeT took 105ms
typeclass inference of CoeT took 101ms
cumulative profiling times:
attribute application 4.61ms
compilation 2.44s
compilation new 22.3ms
dsimp 2.12ms
elaboration 3.35s
import 603ms
initialization 13.9ms
interpretation 37.4s
linting 58.2ms
parsing 7.95ms
simp 115ms
tactic execution 3.79s
type checking 4.41s
typeclass inference 8.25s
Command being timed: "lake env lean --profile Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean"
User time (seconds): 59.60
System time (seconds): 1.45
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:01.39
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1558576
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 5512
Minor (reclaiming a frame) page faults: 191001
Voluntary context switches: 383
Involuntary context switches: 7297
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
interpretation of Lean.mkStateFromImportedEntries._at.Mathlib.Prelude.Rename.initFn._@.Mathlib.Mathport.Rename._hyg.251._spec_1 took 186ms
import took 590ms
compilation of NormedSpace.inclusionInDoubleDual took 1.39s
elaboration took 388ms
elaboration took 142ms
compilation of NormedSpace.inclusionInDoubleDualLi took 3.18s
elaboration took 153ms
typeclass inference of CoeT took 185ms
cumulative profiling times:
attribute application 2.9ms
compilation 4.62s
compilation new 24.1ms
dsimp 0.483ms
elaboration 949ms
import 590ms
initialization 14ms
interpretation 957ms
linting 25.6ms
parsing 7.16ms
simp 169ms
tactic execution 239ms
type checking 249ms
typeclass inference 2.12s
Command being timed: "lake env lean --profile Mathlib/Analysis/NormedSpace/Dual.lean"
User time (seconds): 10.11
System time (seconds): 0.56
Percent of CPU this job got: 97%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:10.91
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1763488
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 3868
Minor (reclaiming a frame) page faults: 219615
Voluntary context switches: 556
Involuntary context switches: 2067
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
After
interpretation of Lean.mkStateFromImportedEntries._at.Mathlib.Prelude.Rename.initFn._@.Mathlib.Mathport.Rename._hyg.364._spec_1 took 168ms
import took 902ms
compilation of NormedSpace.inclusionInDoubleDual took 1.7s
elaboration took 167ms
elaboration took 132ms
compilation of NormedSpace.inclusionInDoubleDualLi took 6.85s
elaboration took 156ms
typeclass inference of CoeT took 176ms
cumulative profiling times:
attribute application 2.89ms
compilation 8.6s
compilation new 24.3ms
dsimp 0.462ms
elaboration 668ms
import 902ms
initialization 14.3ms
interpretation 960ms
linting 25.2ms
parsing 7.07ms
simp 163ms
tactic execution 230ms
type checking 247ms
typeclass inference 1.84s
Command being timed: "lake env lean --profile Mathlib/Analysis/NormedSpace/Dual.lean"
User time (seconds): 13.42
System time (seconds): 0.69
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:14.64
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 2327680
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 3953
Minor (reclaiming a frame) page faults: 256349
Voluntary context switches: 425
Involuntary context switches: 3514
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
Adding noncomputable to toSesqForm on master seems to have no effect on performance in terms of heart beats. Whereas, with the universe changes, it is lightning quick. You can remove the maxHeartbeats bump overall (though no the synth one)
Also, replacing all Type* with Type _ just in the file cuts the compilation time and maxrss
output
interpretation of Lean.mkStateFromImportedEntries._at.Mathlib.Prelude.Rename.initFn._@.Mathlib.Mathport.Rename._hyg.364._spec_1 took 160ms
import took 365ms
typeclass inference of CoeFun took 101ms
simp took 166ms
simp took 166ms
simp took 1.57s
tactic execution of Lean.Parser.Tactic.rewriteSeq took 120ms
tactic execution of Lean.Parser.Tactic.rewriteSeq took 154ms
compilation of Orthonormal.equiv took 131ms
simp took 103ms
compilation of innerSL took 778ms
typeclass inference of CoeFun took 758ms
type checking took 166ms
compilation of innerSLFlip took 3.23s
typeclass inference of TopologicalSpace took 117ms
typeclass inference of AddCommMonoid took 310ms
typeclass inference of Module took 324ms
typeclass inference of Module took 792ms
typeclass inference of Module took 795ms
typeclass inference of CoeT took 405ms
typeclass inference of TopologicalSpace took 121ms
typeclass inference of AddCommMonoid took 311ms
typeclass inference of Module took 317ms
typeclass inference of CoeT took 401ms
typeclass inference of CoeT took 400ms
typeclass inference of CoeFun took 1.06s
typeclass inference of TopologicalSpace took 195ms
typeclass inference of AddCommMonoid took 367ms
typeclass inference of Module took 448ms
typeclass inference of CoeT took 4.66s
type checking took 642ms
compilation of ContinuousLinearMap.toSesqForm took 50.2s
elaboration took 1.28s
typeclass inference of CoeFun took 625ms
type checking took 143ms
typeclass inference of CoeFun took 631ms
typeclass inference of CoeFun took 144ms
elaboration took 292ms
cumulative profiling times:
attribute application 16.6ms
compilation 54.7s
compilation new 277ms
dsimp 0.31ms
elaboration 3.67s
import 365ms
initialization 14ms
interpretation 3.27s
linting 369ms
norm_num 82.6ms
parsing 66.6ms
ring 160ms
simp 4.39s
tactic execution 1.6s
type checking 2.25s
typeclass inference 36.8s
Command being timed: "lake env lean --profile Mathlib/Analysis/InnerProductSpace/Basic.lean"
User time (seconds): 106.97
System time (seconds): 2.06
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:49.07
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 8888080
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 90
Minor (reclaiming a frame) page faults: 942795
Voluntary context switches: 42
Involuntary context switches: 659
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 16384
Exit status: 0
It has something to do with the heartbeat timeout. Perhaps on master the timeout makes the compiler abort early, which makes the noncomputable section mark the definition as noncomputable. But in your PR, the compiler passes that stage without running into the timeout, and then does the actual, long compilation that does not check the timeout.
If anyone wants to help interpret the diff above, I would appreciate it. Some thoughts:
You can get some incredible speed ups. One declaration lost 8000000 heart beats. Some in the millions were completely gone. Even million-level synthInstance.maxHeartbeats(almost) were wiped out. (Checkout our old friend OperatorNorm for fun.)
Some other ones were completely inert to the change. (Though I think all increases are user-error.)
It seems that synthInstance.maxHeartBeats were wiped at a higher rate than overall bumps. This comports with the 7.5% improvement in tc inference vs the overall 4% improvement in instructions.
As to an explanations, I have some thoughts but nothing I can really support with hard data.
Lean was trying to compile toSesqForm and spending lots of resources on it. It looks like it doesn't actually build anything -- just heats up your lap.
I don't know the exact reason for why it is happening.
But marking it noncomputable explicitly short circuits it and seems fine for the current purposes