Repository navigation
Fix Modal.Tableau under Lean 4.33.1 (split/calc over ite/match under projections) + CI builds the archive - #2
Merged
Conversation
split cannot find ite/match under Tableau.Consistent/Prod projections anymore (whnf change); simp leaves Prod.ext residues; anonymous-constructor calc fails Trans synthesis. Replaced with by_cases + hypothesis-driven ite resolution, explicit decode case-split, and Subtype.ext for equality_of1. Closers tolerate both the 4.31-folded and 4.33-unfolded goal shapes. CI: build ModalLogicArchive.Modal.Kripke.Logic.S5 explicitly (defaultTargets do not cover the archive). See jsboige/CoursIA#17522. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix Modal.Tableau under Lean 4.33.1 —
split/calcbreakage over ite/match under projectionsGrain: DEEP/lean — lane myia-po-2024:CoursIA-2 — prev: LIGHT/epic-body #19002-adjacent
Why
At pin
71968137,ModalLogicArchive.Modal.Tableaudoes not compile when theconsumer builds it with Lean v4.33.1 (CoursIA
formal_logic_lean, seejsboige/CoursIA#17522). All of
ModalLogicArchive.Modal.Kripke.Logic.*depends on it, so the completeness layer is unusable from the consumer.
Measured errors under 4.33.1 (consumer manifest, toolchain v4.33.1):
Mechanism: under 4.33, whnf no longer unfolds
Tableau.Consistent/Prodprojections to expose the
ite/match, sosplitcannot find a splittableexpression;
simp-driven closing leavesProd.extresidues; theanonymous-constructor
calcno longer elaborates (branch types only meet atthe expected type).
What
equality_def(47): close the residual pair-equality aftersimp_allwithrfl/Prod.ext rfl rfl(tolerantfirstchain).consistent_lindenbaum_next(229):by_cases+unfold lindenbaum_next+hypothesis-driven ite resolution (
simp [hc]), then closers tolerant to bothgoal shapes (
exact horintro hΓ hΔ; exact h hΓ hΔ).disjoint_of_consistent(was misattributed as site 47):simpa [Disjoint]left a metavariable residue under 4.33; replaced by an explicit
simp [Disjoint] at hC+obtain, with the originalsimpakept as afallback branch so the fork's own toolchain (v4.31.0) keeps working.
either_mem_lindenbaum_indexed(245):by_cases+simp [.., hc].subset₁/subset₂_lindenbaum_indexed_of_lt(260/269):rename_i n,rcases hdec : (decode n : Option (Formula α)), thenby_cases+simp [.., hdec, hc]+Set.subset_inserttransitivity.equality_of₁(383): anonymous-constructorcalcreplaced bySubtype.ext $ Tableau.equality_def.mpr ⟨e₁, maximal_duality.mp e₁⟩.CI:
lake buildonly buildsdefaultTargets(Fin74,Neighborhood) — thearchive is never compiled. Added an explicit CI step
lake build ModalLogicArchive.Modal.Kripke.Logic.S5(prescription 2 ofjsboige/CoursIA#17522) so the completeness layer cannot break silently again.
Evidence
lake build ModalLogicArchive.Modal.Tableau— SUCCESS underleanprover/lean4:v4.33.1with the consumer's dependency pins(mathlib rev
0df444a360eaa60ab8c11dca51a86af692955474, Foundation81810b9f, batteries4488d40d), run in WSL on the branch.sorrycount inTableau.lean: 0 before and after(
grep -cE 'sorry'→ 0; no proof replaced by stub — all six sites keeptheir original statements, only tactic bodies changed).
lake-manifest.json/lean-toolchainchange in this PR: the fork staysat v4.31.0 with its own pins; the fix is source-level and version-tolerant
(each closer accepts both the 4.31-folded and 4.33-unfolded goal shapes via
first | ... | ...fallbacks).Closes jsboige/CoursIA#17522 steps 1–2 (step 3, the consumer pin bump,
follows in CoursIA once this merges).
See jsboige/CoursIA#15066 (downstream consumer: ModalZoo completeness layer)
🤖 Generated with Claude Code