feat(Logics/Temporal): temporal formula type with propositional structure#649
feat(Logics/Temporal): temporal formula type with propositional structure#649benbrastmckie wants to merge 3 commits into
Conversation
Session: sess_1781487302_dddcf1
Stack Modal PR on feat/propositional-v2 (PR leanprover#648) like PR leanprover#649 does, keeping it independent of temporal additions. Two-PR chain, not three. Session: sess_1781531573_4cdbb4
Stack on PR leanprover#648 (not leanprover#649), diplomatic PR description as first-class deliverable, integrate PR landscape audit (report 06). Session: sess_1781532709_eb0889
Diplomatic PR description for Modal/ formula primitives refactoring, stacking on PR leanprover#648. Coordinates with PRs leanprover#607, leanprover#528, leanprover#535, leanprover#649. Session: sess_1781535860_c7d8e9
4da5d68 to
25c9d7c
Compare
ctchou
left a comment
There was a problem hiding this comment.
General comments:
- We should start with a temporal logic with only future-time temporal operators. Past-time temporal operators are not very useful in deductive program verification and complicate the semantics.
- I would like to have a temporal logic that can talk about the (omega-)executions of LTS, not just a sequence of states.
- Also, we should be able to talk about LTS transitions.
- I don't understand what Encodable/Countable/Infinite/Denumerable instances are doing there. They seem to be completely irrelevant.
0742815 to
40b325e
Compare
40b325e to
851ae31
Compare
|
Thanks for the comments. The latest push addresses these points: 1. Future-only temporal operators. 2. Omega-executions of LTS, not just state sequences. 3. Büchi automata and ω-regular languages. A natural follow-up is to prove the LTL-to-Büchi translation theorem, connecting 4. Encodable/Countable/Infinite/Denumerable. Removed. Deferred to a completeness PR where they are actually needed. |
851ae31 to
5785ebb
Compare
…e bot Add `bot` as a primitive constructor of `Proposition Atom`, eliminating all `[Bot Atom]` constraints from propositional logic signatures. - New `Connectives.lean`: typeclass hierarchy (HasBot, HasImp, HasAnd, HasOr) - `Defs.lean`: five-primitive Proposition type with derived neg, top, iff - `Basic.lean`: natural deduction with impI/impE, andI/andE1/andE2, orI1/orI2 - `Theory.lean`: remove [Bot Atom], add instIsIntuitionisticIntuitionisticCompletion - Replace German-language references with Avigad 2022, Prawitz 1965 - Semantics files deferred to follow-up PR per reviewer request Reconciles with merged PR leanprover#536 (InferenceSystem-parameterized typeclasses). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Refocused from PR leanprover#649 to PR leanprover#648 (feat/propositional-v2). Updated task description and created 6-phase plan for bot refactor. Session: sess_1781632241_ba8d68
76d4552 to
5bfb6b6
Compare
5bfb6b6 to
8f31fcf
Compare
Summary
Extends
Connectives.leanfrom PR #648 with temporal operator typeclasses, then defines two formula types that instantiate them:FutureTemporalConnectivesfactors out the shared future fragment so code generic over future-only logics need not commit to past or next-step operators.Temporal.FormulainstantiatesTemporalConnectives(future + past);LTL.FormulainstantiatesLTLConnectives(future + next).Dependency
Stacked on PR #648 (
feat(Foundations): propositional connectives typeclass hierarchy). Please review/merge #648 first.New files
Modified files
Design rationale
`next` is a primitive in `LTL.Formula` rather than derived from `untl`. The encoding `next φ = φ U ⊥` holds on discrete non-ending sequences but fails in general temporal models; keeping `next` primitive supports broader model classes. The `toTemporal` embedding translates `next φ` as strict `untl φ ⊥` and `untl` as reflexive until.
Argument convention follows Burgess (1984): `untl event guard` where the first argument is the event (holds at the witness point) and the second is the guard (holds at all intermediate points).
Deferred
References
AI Tools Used
Claude Code was used to rebase onto PR #648, resolve merge conflicts, adjust temporal operators, fix import minimization, and verify CI. All mathematical decisions reviewed by the human author.