refactor(Logics/Propositional): classical and intuitionistic inference systems#536
Merged
Merged
Conversation
fmontesi
approved these changes
Jun 14, 2026
fmontesi
left a comment
Collaborator
There was a problem hiding this comment.
LGTM. Could you fix the merge conflicts, @thomaskwaring?
I'm not so sure about the naming dne, efq, etc... they are rather arcane. Any better suggestions? But we can revisit this choice later, since we're working on introducing logical operators.
This was referenced Jun 14, 2026
Collaborator
Author
|
@fmontesi done, thanks! i see your point about the names, i was going for brevity, but something like |
benbrastmckie
added a commit
to benbrastmckie/cslib
that referenced
this pull request
Jun 16, 2026
…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>
benbrastmckie
added a commit
to benbrastmckie/cslib
that referenced
this pull request
Jun 17, 2026
…ture
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,
HasUntil, HasSince, HasNext; PropositionalConnectives, FutureTemporalConnectives,
LTLConnectives, TemporalConnectives)
- `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
- `Temporal/Syntax/Formula.lean`: temporal formula with primitives {atom, bot, imp,
untl, snce} and derived operators (someFuture, allFuture, somePast, allPast)
- `LTL/Syntax/Formula.lean`: LTL formula with primitives {atom, bot, imp, next, untl}
and toTemporal embedding
- Replace German-language references with Avigad 2022, Prawitz 1965
- Import minimization via lake shake
Reconciles with merged PR leanprover#536 (InferenceSystem-parameterized typeclasses).
Co-Authored-By: Claude Opus 4.6 (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.
We amend the definitions of
IsClassicalandIsIntuitionisticinLogics.Propositional.Defsto refer to an inference system, rather than a theory. This makes inhabitation of these typeclasses independent of the chosen axiomatisation, so, for instance, we can defineinstance instIsIntuitionisticOfIsClassical [IsClassical Atom T] : IsIntuitionistic Atom T, which before was impossible. We describe some common alternative axiom systems for classical logic, and introduce some derived rules.