T × W tense-modal logic: frames, language and satisfaction #
A T × W frame has worlds sharing one time order and, at each time, historical equivalence, an
equivalence relation on worlds, agreement up to that time, that gets finer as time advances. Its
object language has the linear tenses G and H, historical necessity N along historical
equivalence and box over all worlds. Each of the four is necessity along a relation, so the
logic is a multimodal Kripke logic by construction.
Main definitions #
TWFrame: a frame, with historical equivalence an antitone family of setoids.TWFrame.alt: historical equivalence at a time as an accessibility relation.TWFrame.ofDatedFacts: the frame of worlds agreeing on the facts dated by each time.OForm,TWFrame.sat: the object language and satisfaction.OForm.M,OForm.Fut,OForm.Pst,OForm.dia: the dual operators.
References #
A T × W frame ([Tho84], [vK97]) has, at each time, historical equivalence on worlds, which gets finer as time advances.
- sim : T → Setoid World
Historical equivalence
∼ₜ, relating worlds that share their history up tot. - antitone_sim : Antitone self.sim
Worlds that share their history up to a time share it up to every earlier time.
Instances For
Over a stock of dated facts, worlds are historically equivalent up to a time when they agree on every fact dated at or before it, the world–time model of [Tho84].
Equations
- Temporal.TWFrame.ofDatedFacts time holds = { sim := fun (t : T) => { r := fun (w w' : World) => ∀ (f : Fact), time f ≤ t → (holds w f ↔ holds w' f), iseqv := ⋯ }, antitone_sim := ⋯ }
Instances For
The object language L of T × W logic ([vK97] §1).
- atom
{Atom : Type u_1}
: Atom → OForm Atom
A sentential constant.
- neg
{Atom : Type u_1}
: OForm Atom → OForm Atom
Negation.
- and
{Atom : Type u_1}
: OForm Atom → OForm Atom → OForm Atom
Conjunction.
- G
{Atom : Type u_1}
: OForm Atom → OForm Atom
G— "it will always be that" (∀ later times, same world). - H
{Atom : Type u_1}
: OForm Atom → OForm Atom
H— "it has always been that" (∀ earlier times, same world). - N
{Atom : Type u_1}
: OForm Atom → OForm Atom
N— historical necessity (∀∼ₜ-alternatives, same time). - box
{Atom : Type u_1}
: OForm Atom → OForm Atom
box— truth in all worlds (von Kutschera'sN₄).
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) (Temporal.OForm.atom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) a_1.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) a_1.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) a_1.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) a_1.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (Temporal.OForm.atom a) a_1.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg (Temporal.OForm.atom a_1) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg b.neg = if h : a = b then h ▸ have inst := Temporal.instDecidableEqOForm.decEq a a; isTrue ⋯ else isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg a_1.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg a_1.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg a_1.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.neg a_1.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) (Temporal.OForm.atom a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) a_2.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) a_2.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) a_2.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) a_2.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq (a.and a_1) a_2.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G (Temporal.OForm.atom a_1) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G a_1.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G b.G = if h : a = b then h ▸ have inst := Temporal.instDecidableEqOForm.decEq a a; isTrue ⋯ else isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G a_1.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G a_1.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.G a_1.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H (Temporal.OForm.atom a_1) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H a_1.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H a_1.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H b.H = if h : a = b then h ▸ have inst := Temporal.instDecidableEqOForm.decEq a a; isTrue ⋯ else isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H a_1.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.H a_1.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N (Temporal.OForm.atom a_1) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N a_1.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N a_1.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N a_1.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N b.N = if h : a = b then h ▸ have inst := Temporal.instDecidableEqOForm.decEq a a; isTrue ⋯ else isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.N a_1.box = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box (Temporal.OForm.atom a_1) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box a_1.neg = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box (a_1.and a_2) = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box a_1.G = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box a_1.H = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box a_1.N = isFalse ⋯
- Temporal.instDecidableEqOForm.decEq a.box b.box = if h : a = b then h ▸ have inst := Temporal.instDecidableEqOForm.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Satisfaction V_{t,w}(A) ([vK97]) relative to an atomic valuation V.
G/H/N/box are the Kripke boxes □ over, respectively, future precedence <, past
precedence >, historical equivalence sim t, and the universal relation — making the
object logic a multimodal Kripke logic by construction.
Equations
- F.sat V (Temporal.OForm.atom p) x✝¹ x✝ = V p x✝¹ x✝
- F.sat V a.neg x✝¹ x✝ = ¬F.sat V a x✝¹ x✝
- F.sat V (a.and b) x✝¹ x✝ = (F.sat V a x✝¹ x✝ ∧ F.sat V b x✝¹ x✝)
- F.sat V a.G x✝¹ x✝ = ModalLogic.Box {(t, t') : T × T | t < t'} (fun (t' : T) => F.sat V a t' x✝) x✝¹
- F.sat V a.H x✝¹ x✝ = ModalLogic.Box {(t, t') : T × T | t' < t} (fun (t' : T) => F.sat V a t' x✝) x✝¹
- F.sat V a.N x✝¹ x✝ = ModalLogic.Box (F.alt x✝¹) (fun (w' : World) => F.sat V a x✝¹ w') x✝
- F.sat V a.box x✝¹ x✝ = ModalLogic.Box Set.univ (fun (w' : World) => F.sat V a x✝¹ w') x✝