Skip to content

feat(Foundations/Logic): Notation typeclasses and models#587

Draft
thomaskwaring wants to merge 4 commits into
leanprover:mainfrom
thomaskwaring:models
Draft

feat(Foundations/Logic): Notation typeclasses and models#587
thomaskwaring wants to merge 4 commits into
leanprover:mainfrom
thomaskwaring:models

Conversation

@thomaskwaring
Copy link
Copy Markdown
Collaborator

@thomaskwaring thomaskwaring commented May 21, 2026

A proposal for typeclasses expressing that a type of "propositions" has semantics in a type of "models".

Main definitions

  • Models α β : objects of type β carry a predicate Satisfies on objects of type α.
  • ParamModels α β : objects M : β carry a satisfaction relation parametrised over some auxiliary Param M : Type*
  • InterpModels α β : each M : β has an associated ground type Ground M, an interpretation interp : α → Ground M and a filter : Set (Ground β), which induces a forcing relation as Satisfies M a := interp a ∈ filter M.
  • Soundness and completeness wrt an inference system

I've tried to add enough examples to show how this might be used, but the design ought to be discussed before we settle on anything this general.

@thomaskwaring thomaskwaring marked this pull request as draft May 21, 2026 09:06
/-- Forcing relation associated to each parameter. -/
SatisfiesAt (b : β) : (Param b) → α → Prop

scoped notation w " ⊨[" b "] " a => ParamModels.SatisfiesAt b w a
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still find this notation unintuitive: w depends on b and yet it appears to the left of b.

For that matter, why does the model b appear in a bracket to the right of the turnstile in this and the notation for Models/Satisfies? It seems to me standard for the model to appear to the left of the .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants