Syntax of Basic Modal Logic #
Here we supply basic definitions, abbreviations, and lemmas about the syntax of BML.
Equations
- instReprFormula = { reprPrec := instReprFormula.repr }
Equations
- One or more equations did not get rendered due to their size.
- instReprFormula.repr Formula.bottom prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Formula.bottom")).group prec✝
- instReprFormula.repr Formula.top prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Formula.top")).group prec✝
- instReprFormula.repr (at a) prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Formula.atom" ++ Std.Format.line ++ reprArg a)).group prec✝
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqFormula.decEq Formula.bottom Formula.bottom = isTrue ⋯
- instDecidableEqFormula.decEq Formula.bottom Formula.top = isFalse instDecidableEqFormula.decEq._proof_1
- instDecidableEqFormula.decEq Formula.bottom (at a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.bottom (na a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.bottom (a&a_1) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.bottom (a v a_1) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.bottom (□a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.bottom (◇a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top Formula.bottom = isFalse instDecidableEqFormula.decEq._proof_8
- instDecidableEqFormula.decEq Formula.top Formula.top = isTrue ⋯
- instDecidableEqFormula.decEq Formula.top (at a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top (na a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top (a&a_1) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top (a v a_1) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top (□a) = isFalse ⋯
- instDecidableEqFormula.decEq Formula.top (◇a) = isFalse ⋯
- instDecidableEqFormula.decEq (at a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (at a) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (at a) (at b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq (at a) (na a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (at a) (a_1&a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (at a) (a_1 v a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (at a) (□a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (at a) (◇a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (na a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (na a) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (na a) (at a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (na a) (na b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq (na a) (a_1&a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (na a) (a_1 v a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (na a) (□a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (na a) (◇a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) (at a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) (na a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) (a_2 v a_3) = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) (□a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a&a_1) (◇a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) (at a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) (na a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) (a_2&a_3) = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) (□a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (a v a_1) (◇a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (□a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (□a) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (□a) (at a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (□a) (na a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (□a) (a_1&a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (□a) (a_1 v a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (□a) (□b) = if h : a = b then h ▸ have inst := instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- instDecidableEqFormula.decEq (□a) (◇a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) Formula.bottom = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) Formula.top = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (at a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (na a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (a_1&a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (a_1 v a_2) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (□a_1) = isFalse ⋯
- instDecidableEqFormula.decEq (◇a) (◇b) = if h : a = b then h ▸ have inst := instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Formula.termAt_ = Lean.ParserDescr.node `Formula.termAt_ 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "at") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- Formula.termNa_ = Lean.ParserDescr.node `Formula.termNa_ 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "na") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- Formula.«term□_» = Lean.ParserDescr.node `Formula.«term□_» 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "□") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- Formula.«term◇_» = Lean.ParserDescr.node `Formula.«term◇_» 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "◇") (Lean.ParserDescr.cat `term 70))
Instances For
Equations
- Formula.«term_&_» = Lean.ParserDescr.trailingNode `Formula.«term_&_» 6 7 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "&") (Lean.ParserDescr.cat `term 6))
Instances For
Equations
- Formula.term_V_ = Lean.ParserDescr.trailingNode `Formula.term_V_ 6 7 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "v") (Lean.ParserDescr.cat `term 6))
Instances For
Equations
- Formula.«term~_» = Lean.ParserDescr.node `Formula.«term~_» 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "~") (Lean.ParserDescr.cat `term 50))
Instances For
Equations
- Formula.«term_↣_» = Lean.ParserDescr.trailingNode `Formula.«term_↣_» 55 56 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↣ ") (Lean.ParserDescr.cat `term 55))
Instances For
Equations
- Formula.«term_⟷_» = Lean.ParserDescr.trailingNode `Formula.«term_⟷_» 55 56 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⟷ ") (Lean.ParserDescr.cat `term 55))
Instances For
Equations
- Formula.«term⊡_» = Lean.ParserDescr.node `Formula.«term⊡_» 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊡ ") (Lean.ParserDescr.cat `term 50))
Instances For
Basic operations and simp lemmas for Formulas #
Equations
- (na a).isNegAtomic = true
- x✝.isNegAtomic = false
Instances For
Length of a BML Formula.
Equations
Instances For
Vocab of a BML Formula. Expressed as underlying natural numbers
Equations
Instances For
φtoms of a BML Formula. Expressed as underlying natural numbers
Equations
Instances For
Literals of a BML Formula. Expressed as underlying natural numbers
Equations
Instances For
Get a fresh variable not occuring in a BML Formula.
Equations
Instances For
Lemmas about FL Closure of BML Formulas #
Basic operations and simp lemmas for Sequents #
Length of a sequent.
Equations
Instances For
Equations
Instances For
Equations
- Sequent.freshVar Γ = if h : Γ = ∅ then 0 else (Finset.image Formula.freshVar Γ).max' ⋯
Instances For
Lemmas about FL Closure of Sequents #
Equations
Instances For
Equations
Instances For
Basic operations and simp lemmas for Split Sequents #
Equations
Instances For
Equations
Instances For
Equations
- SplitFormula.length (Sum.inl φ) = φ.length
- SplitFormula.length (Sum.inr φ) = φ.length
Instances For
Equations
- SplitFormula.FL (Sum.inl Formula.bottom) = {Sum.inl ⊥}
- SplitFormula.FL (Sum.inr Formula.bottom) = {Sum.inr ⊥}
- SplitFormula.FL (Sum.inl Formula.top) = {Sum.inl ⊤}
- SplitFormula.FL (Sum.inr Formula.top) = {Sum.inr ⊤}
- SplitFormula.FL (Sum.inl (at n)) = {Sum.inl (at n)}
- SplitFormula.FL (Sum.inr (at n)) = {Sum.inr (at n)}
- SplitFormula.FL (Sum.inl (na n)) = {Sum.inl (na n)}
- SplitFormula.FL (Sum.inr (na n)) = {Sum.inr (na n)}
- SplitFormula.FL (Sum.inl (φ v ψ)) = {Sum.inl (φ v ψ)} ∪ SplitFormula.FL (Sum.inl φ) ∪ SplitFormula.FL (Sum.inl ψ)
- SplitFormula.FL (Sum.inr (φ v ψ)) = {Sum.inr (φ v ψ)} ∪ SplitFormula.FL (Sum.inr φ) ∪ SplitFormula.FL (Sum.inr ψ)
- SplitFormula.FL (Sum.inl (φ&ψ)) = {Sum.inl (φ&ψ)} ∪ SplitFormula.FL (Sum.inl φ) ∪ SplitFormula.FL (Sum.inl ψ)
- SplitFormula.FL (Sum.inr (φ&ψ)) = {Sum.inr (φ&ψ)} ∪ SplitFormula.FL (Sum.inr φ) ∪ SplitFormula.FL (Sum.inr ψ)
- SplitFormula.FL (Sum.inl (□φ)) = {Sum.inl (□φ)} ∪ SplitFormula.FL (Sum.inl φ)
- SplitFormula.FL (Sum.inr (□φ)) = {Sum.inr (□φ)} ∪ SplitFormula.FL (Sum.inr φ)
- SplitFormula.FL (Sum.inl (◇φ)) = {Sum.inl (◇φ)} ∪ SplitFormula.FL (Sum.inl φ)
- SplitFormula.FL (Sum.inr (◇φ)) = {Sum.inr (◇φ)} ∪ SplitFormula.FL (Sum.inr φ)
Instances For
Lemmas about FL Closure of Split Formulas #
Fischer-Ladner Closure is monotone.
Lemmas about FL Closure of Split Sequents #
Equations
Instances For
Fischer-Ladner Closure is monotone.
Fischer-Ladner Closure is idempotent.
□₄⁻¹ operator for Split Sequents
Equations
- Γ.D = {x ∈ Γ | decide (x.isDiamond = true) = true} ∪ Finset.filterMap SplitFormula.opUnDi Γ SplitSequent.D._proof_1
Instances For
Basic operations and simp lemmas for Split Sequents #
Find underlying Sequent of a Split Sequent.
Instances For
Length of a Split Sequent.
Equations
Instances For
Equations
- SplitSequent.filterLeft = Finset.filter fun (x : SplitFormula) => match x with | Sum.inl val => true = true | Sum.inr val => false = true
Instances For
Equations
- SplitSequent.filterRight = Finset.filter fun (x : SplitFormula) => match x with | Sum.inl val => false = true | Sum.inr val => true = true
Instances For
Equations
Instances For
Equations
Instances For
Properties of Substitutions #
Substiting p with ψ in φ (φ[ψ/p]). -
Equations
- single n ψ Formula.bottom = ⊥
- single n ψ Formula.top = ⊤
- single n ψ (at a) = if (a == n) = true then ψ else at a
- single n ψ (na a) = if (a == n) = true then ~ψ else na a
- single n ψ (a&a_1) = (single n ψ a&single n ψ a_1)
- single n ψ (a v a_1) = (single n ψ a v single n ψ a_1)
- single n ψ (□a) = □single n ψ a
- single n ψ (◇a) = ◇single n ψ a
Instances For
Simultaneous substitution for p meeting criteria c. -
Equations
- partial_ σ Formula.bottom = ⊥
- partial_ σ Formula.top = ⊤
- partial_ σ (at a) = if h : c a then σ ⟨a, h⟩ else at a
- partial_ σ (na a) = if h : c a then ~σ ⟨a, h⟩ else na a
- partial_ σ (a&a_1) = (partial_ σ a&partial_ σ a_1)
- partial_ σ (a v a_1) = (partial_ σ a v partial_ σ a_1)
- partial_ σ (□a) = □partial_ σ a
- partial_ σ (◇a) = ◇partial_ σ a
Instances For
Full substitution of all p.
Equations
Instances For
Properties of Vocab #
Some very specific lemmas about Finset.sum #
Ideally grind or aesop or some other tactic could sort out these simple helper lemmas, but I could not figure out how.