Syntax of Basic Modal Logic #
Here we supply basic definitions, abbreviations, and lemmas about the syntax of BML.
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom Lean4GlCoalgebras.Formula.bottom = isTrue ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom Lean4GlCoalgebras.Formula.top = isFalse Lean4GlCoalgebras.instDecidableEqFormula.decEq._proof_1
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (at a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (na a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (a&a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (a v a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (□a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.bottom (◇a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top Lean4GlCoalgebras.Formula.bottom = isFalse Lean4GlCoalgebras.instDecidableEqFormula.decEq._proof_8
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top Lean4GlCoalgebras.Formula.top = isTrue ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (at a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (na a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (a&a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (a v a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (□a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq Lean4GlCoalgebras.Formula.top (◇a) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (at b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (na a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (a_1&a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (a_1 v a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (□a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (at a) (◇a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (at a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (na b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (a_1&a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (a_1 v a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (□a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (na a) (◇a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) (at a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) (na a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) (a_2 v a_3) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) (□a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a&a_1) (◇a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) (at a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) (na a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) (a_2&a_3) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) (□a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (a v a_1) (◇a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (at a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (na a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (a_1&a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (a_1 v a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (□b) = if h : a = b then h ▸ have inst := Lean4GlCoalgebras.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (□a) (◇a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) Lean4GlCoalgebras.Formula.bottom = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) Lean4GlCoalgebras.Formula.top = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (at a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (na a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (a_1&a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (a_1 v a_2) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (□a_1) = isFalse ⋯
- Lean4GlCoalgebras.instDecidableEqFormula.decEq (◇a) (◇b) = if h : a = b then h ▸ have inst := Lean4GlCoalgebras.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
A sequent is a finite set of formulas, read disjunctively.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Formula.termAt_ = Lean.ParserDescr.node `Lean4GlCoalgebras.Formula.termAt_ 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "at") (Lean.ParserDescr.cat `term 70))
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Formula.termNa_ = Lean.ParserDescr.node `Lean4GlCoalgebras.Formula.termNa_ 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "na") (Lean.ParserDescr.cat `term 70))
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Basic operations and simp lemmas for Formulas #
Returns true if the formula is a negated atom na n.
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
Atoms 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
Fischer-Ladner closure of a BML Formula.
Equations
Instances For
Lemmas about FL Closure of BML Formulas #
Fischer-Ladner closure is reflexive.
Basic operations and simp lemmas for Sequents #
Length of a sequent.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Γ.neg = Finset.biUnion Γ fun (φ : Lean4GlCoalgebras.Formula) => {~φ}
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Sequent.freshVar Γ = if h : Γ = ∅ then 0 else (Finset.image Lean4GlCoalgebras.Formula.freshVar Γ).max' ⋯
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Γ.D = {x ∈ Γ | decide (x.isDiamond = true) = true} ∪ Finset.filterMap Lean4GlCoalgebras.Formula.opUnDi Γ Lean4GlCoalgebras.Sequent.D._proof_1
Instances For
Fischer-Ladner closure of a sequent.
Equations
Instances For
Lemmas about FL Closure of Sequents #
Auxiliary declaration used in the GL coalgebra development.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Instances For
Basic operations and simp lemmas for Split Sequents #
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl Lean4GlCoalgebras.Formula.bottom) = {Sum.inl ⊥}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr Lean4GlCoalgebras.Formula.bottom) = {Sum.inr ⊥}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl Lean4GlCoalgebras.Formula.top) = {Sum.inl ⊤}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr Lean4GlCoalgebras.Formula.top) = {Sum.inr ⊤}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (at n)) = {Sum.inl (at n)}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (at n)) = {Sum.inr (at n)}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (na n)) = {Sum.inl (na n)}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (na n)) = {Sum.inr (na n)}
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (φ v ψ)) = {Sum.inl (φ v ψ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl φ) ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl ψ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (φ v ψ)) = {Sum.inr (φ v ψ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr φ) ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr ψ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (φ&ψ)) = {Sum.inl (φ&ψ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl φ) ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl ψ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (φ&ψ)) = {Sum.inr (φ&ψ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr φ) ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr ψ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (□φ)) = {Sum.inl (□φ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl φ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (□φ)) = {Sum.inr (□φ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr φ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inl (◇φ)) = {Sum.inl (◇φ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inl φ)
- Lean4GlCoalgebras.SplitFormula.FL (Sum.inr (◇φ)) = {Sum.inr (◇φ)} ∪ Lean4GlCoalgebras.SplitFormula.FL (Sum.inr φ)
Instances For
Lemmas about FL Closure of Split Formulas #
Fischer-Ladner Closure is reflexive.
Fischer-Ladner Closure is monotone.
Lemmas about FL Closure of Split Sequents #
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Fischer-Ladner Closure is reflexive.
Fischer-Ladner Closure is monotone.
Fischer-Ladner Closure is idempotent.
□₄⁻¹ operator for Split Sequents.
Equations
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
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.SplitSequent.filterLeft = Finset.filter fun (x : Lean4GlCoalgebras.SplitFormula) => match x with | Sum.inl val => true = true | Sum.inr val => false = true
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.SplitSequent.filterRight = Finset.filter fun (x : Lean4GlCoalgebras.SplitFormula) => match x with | Sum.inl val => false = true | Sum.inr val => true = true
Instances For
Auxiliary declaration used in the GL coalgebra development.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Instances For
Properties of Substitutions #
Substiting p with ψ in φ (φ[ψ/p]).
Equations
- Lean4GlCoalgebras.single n ψ Lean4GlCoalgebras.Formula.bottom = ⊥
- Lean4GlCoalgebras.single n ψ Lean4GlCoalgebras.Formula.top = ⊤
- Lean4GlCoalgebras.single n ψ (at a) = if (a == n) = true then ψ else at a
- Lean4GlCoalgebras.single n ψ (na a) = if (a == n) = true then ~ψ else na a
- Lean4GlCoalgebras.single n ψ (a&a_1) = (Lean4GlCoalgebras.single n ψ a&Lean4GlCoalgebras.single n ψ a_1)
- Lean4GlCoalgebras.single n ψ (a v a_1) = (Lean4GlCoalgebras.single n ψ a v Lean4GlCoalgebras.single n ψ a_1)
- Lean4GlCoalgebras.single n ψ (□a) = □Lean4GlCoalgebras.single n ψ a
- Lean4GlCoalgebras.single n ψ (◇a) = ◇Lean4GlCoalgebras.single n ψ a
Instances For
Simultaneous substitution for p meeting criteria c.
Equations
- Lean4GlCoalgebras.partial_ σ Lean4GlCoalgebras.Formula.bottom = ⊥
- Lean4GlCoalgebras.partial_ σ Lean4GlCoalgebras.Formula.top = ⊤
- Lean4GlCoalgebras.partial_ σ (at a) = if h : c a then σ ⟨a, h⟩ else at a
- Lean4GlCoalgebras.partial_ σ (na a) = if h : c a then ~σ ⟨a, h⟩ else na a
- Lean4GlCoalgebras.partial_ σ (a&a_1) = (Lean4GlCoalgebras.partial_ σ a&Lean4GlCoalgebras.partial_ σ a_1)
- Lean4GlCoalgebras.partial_ σ (a v a_1) = (Lean4GlCoalgebras.partial_ σ a v Lean4GlCoalgebras.partial_ σ a_1)
- Lean4GlCoalgebras.partial_ σ (□a) = □Lean4GlCoalgebras.partial_ σ a
- Lean4GlCoalgebras.partial_ σ (◇a) = ◇Lean4GlCoalgebras.partial_ σ a
Instances For
Full substitution of all p.
Equations
- Lean4GlCoalgebras.full σ Lean4GlCoalgebras.Formula.bottom = ⊥
- Lean4GlCoalgebras.full σ Lean4GlCoalgebras.Formula.top = ⊤
- Lean4GlCoalgebras.full σ (at a) = σ a
- Lean4GlCoalgebras.full σ (na a) = (~σ a)
- Lean4GlCoalgebras.full σ (a&a_1) = (Lean4GlCoalgebras.full σ a&Lean4GlCoalgebras.full σ a_1)
- Lean4GlCoalgebras.full σ (a v a_1) = (Lean4GlCoalgebras.full σ a v Lean4GlCoalgebras.full σ a_1)
- Lean4GlCoalgebras.full σ (□a) = □Lean4GlCoalgebras.full σ a
- Lean4GlCoalgebras.full σ (◇a) = ◇Lean4GlCoalgebras.full σ a
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.