namespace latin:/❚
fixmeta ur:?LF❚
theory Box =
include ?Logic❙
box: prop ⟶ prop❘# □ 1 prec 20❙
❚
theory Diamond =
include ?Logic❙
diamond: prop ⟶ prop❘# ◇ 1 prec 20❙
❚
theory ML =
include ?PL❙
include ?Box❙
include ?Diamond❙
❚
theory MLHilbert =
include ?ML❙
// Rules with hypothetical premises are not sound in Kripke models; so we need to use a Hilbert calculus.❙
include ?PLHilbert❙
❚
namespace kripkemodels❚
theory Worlds : latin:/?HOLND =
world: tp❘# W❙
liftPred2: {S,A,B} ( tm A ⟶ tm B ⟶ prop)
⟶ (tm S ⟶ tm A) ⟶ (tm S ⟶ tm B) ⟶ (tm S ⟶ prop)❘
= [S,A,B,o,f,g] [x] o (f x) (g x)❘
# liftFun2 4❙
lift0: {S} prop ⟶ (tm S ⟶ prop)❘
= [S,o] [x]o❘
# lift0 2❙
lift1: {S} (prop ⟶ prop) ⟶ (tm S ⟶ prop) ⟶ (tm S ⟶ prop)❘
= [S,o,f] [x]o (f x)❘
# lift1 2❙
lift2: {S} (prop ⟶ prop ⟶ prop) ⟶ (tm S ⟶ prop) ⟶ (tm S ⟶ prop) ⟶ (tm S ⟶ prop)❘
= [S,o,f,g] [x]o (f x) (g x)❘
# lift2 2❙
liftbind : {S} ({T} ( tm T ⟶ prop) ⟶ prop) ⟶
{T} ((tm S ⟶ tm T) ⟶ (tm S ⟶ prop)) ⟶ (tm S ⟶ prop)❘
= [S][B][T][F][x] B (S→T) [f] F (apply1 f) x❘
# liftbind 2❙
❚
ref latin:/?DisjunctionHilbert2ND❚
ref latin:/?NegationHilbert2ND❚
ref latin:/?ImplicationHilbert2ND❚
ref latin:/?EquivalenceHilbert2ND❚
theory KripkeFrame : latin:/?TypedLogic =
include ?Worlds❙
accessible : tm W ⟶ tm W ⟶ prop❘ # 1 acc 2 prec 30❙
❚
theory KripkeModel =
include ☞latin:/?SFOLEQ❙
include ?KripkeFrame❙
❚
view PropSemantics : latin:/?Propositions → ?Worlds =
prop = tm W ⟶ prop❙
❚
view LogicSemantics : latin:/?Logic → ?Worlds =
include ?PropSemantics❙
ded = [f] {w} ⊦ f w❙
❚
view PLSemantics : latin:/?PL → ?Worlds =
include ?PropSemantics❙
true = lift0 true❙
false = lift0 false❙
and = lift2 and❙
or = lift2 or❙
impl = lift2 impl❙
not = lift1 not❙
equiv = lift2 equiv❙
❚
view PLHilbertSemantics : latin:/?PLHilbert → ?Worlds =
include ?PLSemantics❙
include ?LogicSemantics❙
trueI = [w] trueI❙
falseE = [f] [g,w] f w falseE inconE❙
andI = [F,G,f,g][w] andI (f w) (g w)❙
andEl = [F,G,fg] [w] fg w andEl❙
andEr = [F,G,fg] [w] fg w andEr❙
orIl = [F,G,f] [w] f w orIl❙
orIr = [F,G,f] [w] f w orIr❙
orE_ax = [F,G,H][w] orE_ax❙
impE = [F,G,fg,f] [w] (fg w) impE (f w)❙
K_ax = [F,G,w] K_ax❙
S_ax = [F,G,H,w] S_ax❙
notI_ax = [F,w] notI_ax❙
notE = [F,nf,f] [g,w] (nf w) notE (f w) inconE❙
equivI_ax = [F,G,w] equivI_ax❙
equivEl = [F,G,fg,f] [w] (fg w) equivEl (f w)❙
equivEr = [F,G,fg,g] [w] (fg w) equivEr (g w)❙
classical = [F,p] [w] classical [Fwincon] [A] p ([Fw,Gv,v] Fwincon (Fw w) (Gv v)) ([u] A) w❙
❚
view TermSemantics : latin:/?TypedTerms → ?Worlds =
/T constant universe; alternative would be tp = tm W ⟶ tp❙
tp = tp❙
tm = [S] tm W ⟶ tm S❙
❚
view SFOLSemantics : latin:/?SFOLEQ → ?Worlds =
include ?TermSemantics❙
include ?PLSemantics❙
include ?LogicSemantics❙
forall = liftbind forall❙
exists = liftbind exists❙
equal = [S] liftFun2 (equal S)❙
❚
view MLSemantics : latin:/?ML → ?KripkeModel =
include ?PLSemantics❙
include ?LogicSemantics❙
box = [p] [v] ∀ [w] v acc w ⇒ p w❙
diamond = [p] [v] ∃ [w] v acc w ∧ p w❙
❚
view MLHilbertSemantics : latin:/?MLHilbert → ?KripkeModel =
include ?MLSemantics❙
include ?PLHilbertSemantics❙
❚