Semantics (Section 2.2) #
Models and Truth #
def
complexityOfQuery
{W : Type}
:
(_ : KripkeModel W) ×' (_ : W) ×' Formula ⊕' (_ : KripkeModel W) ×' (_ : Program) ×' (_ : W) ×' W → ℕ
Equations
- complexityOfQuery (PSum.inl val) = lengthOfFormula val.snd.snd
- complexityOfQuery (PSum.inr val) = lengthOfProgram val.snd.fst
Instances For
Equations
Instances For
Equations
- relate x✝² (·c) x✝¹ x✝ = x✝².Rel c x✝¹ x✝
- relate x✝² (α;'β) x✝¹ x✝ = ∃ (y : W), relate x✝² α x✝¹ y ∧ relate x✝² β y x✝
- relate x✝² (α⋓β) x✝¹ x✝ = (relate x✝² α x✝¹ x✝ ∨ relate x✝² β x✝¹ x✝)
- relate x✝² (∗α) x✝¹ x✝ = Relation.ReflTransGen (relate x✝² α) x✝¹ x✝
- relate x✝² (?'φ) x✝¹ x✝ = (x✝¹ = x✝ ∧ evaluate x✝² x✝¹ φ)
Instances For
Equations
- evaluatePoint (M, w) x✝ = evaluate M w x✝
Instances For
Equations
- contradiction φ = ∀ (W : Type) (M : KripkeModel W) (w : W), ¬evaluate M w φ
Instances For
Satisfiability #
Equations
- formHasSat = { satisfiable := fun (ϕ : Formula) => ∃ (W : Type) (M : KripkeModel W) (w : W), evaluate M w ϕ }
Equations
- listHasSat = { satisfiable := fun (X : List Formula) => ∃ (W : Type) (M : KripkeModel W) (w : W), ∀ φ ∈ X, evaluate M w φ }
Semantic implication and vDash notation #
Equations
- semImpliesSets X Y = ∀ (W : Type) (M : KripkeModel W) (w : W), (∀ φ ∈ X, evaluate M w φ) → ∀ ψ ∈ Y, evaluate M w ψ
Instances For
Equations
- semImpliesLists X Y = ∀ (W : Type) (M : KripkeModel W) (w : W), (∀ φ ∈ X, evaluate M w φ) → ∀ ψ ∈ Y, evaluate M w ψ
Instances For
Equations
- modelCanSemImplyForm = { SemImplies := evaluatePoint }
Equations
- modelCanSemImplySet = { SemImplies := fun (x : KripkeModel W × W) (fs : List Formula) => match x with | (M, w) => ∀ f ∈ fs, evaluate M w f }
Equations
- modelCanSemImplyList = { SemImplies := fun (x : KripkeModel W × W) (fs : List Formula) => match x with | (M, w) => ∀ f ∈ fs, evaluate M w f }
Equations
- One or more equations did not get rendered due to their size.
Equations
- modelCanSemImplyAnyNegFormula = { SemImplies := fun (x : KripkeModel W × W) (x_1 : AnyNegFormula) => match x with | (M, w) => match x_1 with | ~''ξ => ¬(M, w)⊨ξ }
Equations
- setCanSemImplySet = { SemImplies := semImpliesLists }
Equations
- setCanSemImplyForm = { SemImplies := fun (X : List Formula) (ψ : Formula) => semImpliesLists X [ψ] }
Equations
- formCanSemImplySet = { SemImplies := fun (φ : Formula) (X : List Formula) => semImpliesLists [φ] X }
Equations
- formCanSemImplyForm = { SemImplies := fun (φ ψ : Formula) => semImpliesLists [φ] [ψ] }
Equations
- «term_⊨_» = Lean.ParserDescr.trailingNode `«term_⊨_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊨") (Lean.ParserDescr.cat `term 41))
Instances For
Equations
- «term_≡_» = Lean.ParserDescr.trailingNode `«term_≡_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "≡") (Lean.ParserDescr.cat `term 41))
Instances For
Equations
- «term_≡ᵣ_» = Lean.ParserDescr.trailingNode `«term_≡ᵣ_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "≡ᵣ") (Lean.ParserDescr.cat `term 41))
Instances For
Equations
- «term_⊭_» = Lean.ParserDescr.trailingNode `«term_⊭_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊭") (Lean.ParserDescr.cat `term 41))
Instances For
@[simp]
@[simp]
theorem
relate_steps_append
{W✝ : Type}
{M : KripkeModel W✝}
{as bs : List Program}
(x z : W✝)
:
relate M (Program.steps (as ++ bs)) x z ↔ ∃ (y : W✝), relate M (Program.steps as) x y ∧ relate M (Program.steps bs) y z
theorem
rel_steps_last
{W✝ : Type}
{M : KripkeModel W✝}
{a : Program}
{as : List Program}
(v w : W✝)
:
relate M (Program.steps (as ++ [a])) v w ↔ ∃ (mid : W✝), relate M (Program.steps as) v mid ∧ relate M a mid w
@[simp]
@[simp]
@[simp]
theorem
evaluate_unload_box
{W✝ : Type}
{M : KripkeModel W✝}
{w : W✝}
{α : Program}
{af : AnyFormula}
:
theorem
truthImply_then_satImply
(X Y : List Formula)
:
X⊨Y → HasSat.satisfiable X → HasSat.satisfiable Y
theorem
SemImplyAnyNegFormula_loadBoxes_iff
{W : Type}
{w : W}
{δ : List Program}
{M : KripkeModel W}
{ξ : AnyFormula}
: