Conversation
SPMF type instead of SetGenSPMF type instead of SetGen
| -- alternative wins on some of them. `unusedTactic` aggregates over all seven and reports the | ||
| -- `decide +kernel` of the middle alternative as a no-op, because on the goals that alternative wins, | ||
| -- `left; right` happens to close the goal by itself. Deleting it leaves the other goals unsolved. | ||
| set_option linter.unusedTactic false in |
There was a problem hiding this comment.
I generally don't love setting options if we can avoid it. Is there a way to restructure the proof to avoid needing this, or does the proof become much worse?
| module imports the full `Basalt` library, and so Mathlib. This file stays free of Mathlib, to keep | ||
| itself and the proof modules that import it cheap to build. The definition here is definitionally | ||
| equal to the one in Basalt, so a proof can unfold either one. -/ | ||
| /-- A generator for a `Nat`. A local copy of Basalt's `Nat.arbitrary`, definitionally equal to it, so |
There was a problem hiding this comment.
Why is the local copy needed?
| every combinator this package draws from, `Basalt/Laws.lean` has `IsSoundAndComplete`, and | ||
| `Basalt/Tactics.lean` has `support_simp`, the packaged `simp only` set for support inversion. | ||
|
|
||
| This file holds the three things Basalt does not. |
There was a problem hiding this comment.
Is the plan to upstream them to Basalt eventually?
|
|
||
| /-! ## The support API, unqualified | ||
|
|
||
| The proofs in this package name these lemmas without a prefix, and they long predate the move to |
There was a problem hiding this comment.
Comments should not be stateful; they should describe the code as it is right now, not talk about what changed from a previous version.
| The equation compiler uses `WellFounded.fix` for a generator with `termination_by`, and the members | ||
| of a `mutual` block share one such fix over a `PSum` of their argument tuples. This lemma is | ||
| therefore what lifts a per-site fact to a whole block. -/ | ||
| theorem wellFounded_fix_congr {α : Sort u} {r : α → α → Prop} {C : α → Sort v} |
There was a problem hiding this comment.
Why is this theorem needed? It is just congrArg, right?
| @@ -2099,8 +2078,16 @@ open StrataGenerators.IndirSupport in | |||
| application spine of an arity up to `K`. -/ | |||
| abbrev genDepthBudget (K depth : Nat) : Nat := depthBudget K depth | |||
|
|
|||
| set_option maxHeartbeats 1600000 in | |||
| set_option maxHeartbeats 6400000 in | |||
There was a problem hiding this comment.
Setting heartbeats should be avoided if possible. Why is this needed here?
| @@ -0,0 +1,766 @@ | |||
| /- | |||
| Copyright (c) 2026 Harrison Goldstein. All rights reserved. | |||
There was a problem hiding this comment.
Copyright statement should match the other files
| | rfl); done) | ||
| | (simp; done))) | ||
|
|
||
| set_option maxHeartbeats 8000000 in |
There was a problem hiding this comment.
Why does this need such a high maxHeartbeats?
This PR updates this repo to use the SPMF type throughout, with
SetGenremoved. This is a fairly large PR but the changes are relatively mechanical.