feat(Foundations/Logic): Notation typeclasses and models#587
feat(Foundations/Logic): Notation typeclasses and models#587thomaskwaring wants to merge 4 commits into
Conversation
| /-- Forcing relation associated to each parameter. -/ | ||
| SatisfiesAt (b : β) : (Param b) → α → Prop | ||
|
|
||
| scoped notation w " ⊨[" b "] " a => ParamModels.SatisfiesAt b w a |
There was a problem hiding this comment.
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 ⊨.
| IsCompleteModel (Proposition Atom) (HeytingModel Atom) T T.lindenbaum := | ||
| sorry -- also in a branch | ||
|
|
||
| abbrev Valuation (Atom : Type*) := Atom → Prop |
There was a problem hiding this comment.
You have the notion of a HeytingModel above. Is there a corresponding notion for classical logic?
Conversely, is HeytingModel really necessary? Would an abbreviation for Atom → H, where H is a GeneralizedHeytingAlgebra, suffice?
I'm basically asking for a consistent treatment of the two.
There was a problem hiding this comment.
I bundled the algebra H into the type because I wanted a single type HeytingModel Atom to capture possibly varying Heyting algebras — eg we might want a theorem saying semantics in finite Heyting algebras are complete, which is not true if you restrict to a single algebra (different to classical logic, where the single Boolean algebra Prop / Bool is enough).
In any case, these are mostly there as examples to illustrate the general design, a full treatment of semantics for propositional logic will be it's own development & certainly these questions require discussion.
ctchou
left a comment
There was a problem hiding this comment.
Two questions/comments:
(1) What is the distinction between Models and InterpModels? I know the latter is a special case of the former. But is there an example of the former which is not in the form of the latter?
(2) There is still no concrete example of how ParamModels is actually used.
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 predicateSatisfieson objects of typeα.ParamModels α β: objectsM : βcarry a satisfaction relation parametrised over some auxiliaryParam M : Type*InterpModels α β: eachM : βhas an associated ground typeGround M, an interpretationinterp : α → Ground Mand afilter : Set (Ground β), which induces a forcing relation asSatisfies M a := interp a ∈ filter M.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.