- atom {α : Type u} : α → NNFormula α
- natom {α : Type u} : α → NNFormula α
- falsum {α : Type u} : NNFormula α
- verum {α : Type u} : NNFormula α
- or {α : Type u} : NNFormula α → NNFormula α → NNFormula α
- and {α : Type u} : NNFormula α → NNFormula α → NNFormula α
- box {α : Type u} : NNFormula α → NNFormula α
- dia {α : Type u} : NNFormula α → NNFormula α
Instances For
instance
LO.Modal.instDecidableEqNNFormula
{α✝ : Type u_1}
[DecidableEq α✝]
:
DecidableEq (NNFormula α✝)
def
LO.Modal.instDecidableEqNNFormula.decEq
{α✝ : Type u_1}
[DecidableEq α✝]
(x✝ x✝¹ : NNFormula α✝)
:
Equations
- One or more equations did not get rendered due to their size.
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) (LO.Modal.NNFormula.atom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) (LO.Modal.NNFormula.natom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) (a_1.or a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) (a_1.and a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) a_1.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.atom a) a_1.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) (LO.Modal.NNFormula.atom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) (LO.Modal.NNFormula.natom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) (a_1.or a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) (a_1.and a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) a_1.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (LO.Modal.NNFormula.natom a) a_1.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum (LO.Modal.NNFormula.atom a) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum (LO.Modal.NNFormula.natom a) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum LO.Modal.NNFormula.falsum = isTrue ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum (a.or a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum (a.and a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum a.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.falsum a.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum (LO.Modal.NNFormula.atom a) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum (LO.Modal.NNFormula.natom a) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum LO.Modal.NNFormula.verum = isTrue ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum (a.or a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum (a.and a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum a.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq LO.Modal.NNFormula.verum a.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) (LO.Modal.NNFormula.atom a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) (LO.Modal.NNFormula.natom a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) (a_2.and a_3) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) a_2.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.or a_1) a_2.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) (LO.Modal.NNFormula.atom a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) (LO.Modal.NNFormula.natom a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) (a_2.or a_3) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) a_2.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq (a.and a_1) a_2.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box (LO.Modal.NNFormula.atom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box (LO.Modal.NNFormula.natom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box (a_1.or a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box (a_1.and a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box b.box = if h : a = b then h ▸ have inst := LO.Modal.instDecidableEqNNFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.box a_1.dia = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia (LO.Modal.NNFormula.atom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia (LO.Modal.NNFormula.natom a_1) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia LO.Modal.NNFormula.falsum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia LO.Modal.NNFormula.verum = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia (a_1.or a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia (a_1.and a_2) = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia a_1.box = isFalse ⋯
- LO.Modal.instDecidableEqNNFormula.decEq a.dia b.dia = if h : a = b then h ▸ have inst := LO.Modal.instDecidableEqNNFormula.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- (LO.Modal.NNFormula.atom a).neg = LO.Modal.NNFormula.natom a
- (LO.Modal.NNFormula.natom a).neg = LO.Modal.NNFormula.atom a
- LO.Modal.NNFormula.falsum.neg = LO.Modal.NNFormula.verum
- LO.Modal.NNFormula.verum.neg = LO.Modal.NNFormula.falsum
- (φ.or ψ).neg = φ.neg.and ψ.neg
- (φ.and ψ).neg = φ.neg.or ψ.neg
- φ.box.neg = φ.neg.dia
- φ.dia.neg = φ.neg.box
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- (LO.Modal.NNFormula.atom a).toStr = toString "+" ++ toString a
- (LO.Modal.NNFormula.natom a).toStr = toString "-" ++ toString a
- LO.Modal.NNFormula.falsum.toStr = "⊥"
- LO.Modal.NNFormula.verum.toStr = "⊤"
- (φ.or ψ).toStr = toString "(" ++ toString φ.toStr ++ toString " ∨ " ++ toString ψ.toStr ++ toString ")"
- (φ.and ψ).toStr = toString "(" ++ toString φ.toStr ++ toString " ∧ " ++ toString ψ.toStr ++ toString ")"
- φ.box.toStr = toString "□" ++ toString φ.toStr
- φ.dia.toStr = toString "◇" ++ toString φ.toStr
Instances For
Equations
- LO.Modal.NNFormula.instRepr = { reprPrec := fun (t : LO.Modal.NNFormula α) (x : ℕ) => Std.Format.text t.toStr }
Equations
- (LO.Modal.NNFormula.atom a).toFormula = LO.Modal.Formula.atom a
- (LO.Modal.NNFormula.natom a).toFormula = ∼LO.Modal.Formula.atom a
- LO.Modal.NNFormula.falsum.toFormula = ⊥
- LO.Modal.NNFormula.verum.toFormula = ⊤
- (φ.or ψ).toFormula = φ.toFormula ⋎ ψ.toFormula
- (φ.and ψ).toFormula = φ.toFormula ⋏ ψ.toFormula
- φ.box.toFormula = □φ.toFormula
- φ.dia.toFormula = ◇φ.toFormula
Instances For
Equations
@[simp]
@[simp]
def
LO.Modal.NNFormula.cases'
{α : Type u}
{C : NNFormula α → Sort v}
(hAtom : (a : α) → C (atom a))
(hNatom : (a : α) → C (natom a))
(hFalsum : C ⊥)
(hVerum : C ⊤)
(hOr : (φ ψ : NNFormula α) → C (φ ⋎ ψ))
(hAnd : (φ ψ : NNFormula α) → C (φ ⋏ ψ))
(hBox : (φ : NNFormula α) → C (□φ))
(hDia : (φ : NNFormula α) → C (◇φ))
(φ : NNFormula α)
:
C φ
Equations
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (LO.Modal.NNFormula.atom a) = hAtom a
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (LO.Modal.NNFormula.natom a) = hNatom a
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia LO.Modal.NNFormula.falsum = hFalsum
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia LO.Modal.NNFormula.verum = hVerum
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (φ.or ψ) = hOr φ ψ
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (φ.and ψ) = hAnd φ ψ
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ.box = hBox φ
- LO.Modal.NNFormula.cases' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ.dia = hDia φ
Instances For
def
LO.Modal.NNFormula.rec'
{α : Type u}
{C : NNFormula α → Sort v}
(hAtom : (a : α) → C (atom a))
(hNatom : (a : α) → C (natom a))
(hFalsum : C ⊥)
(hVerum : C ⊤)
(hOr : (φ ψ : NNFormula α) → C φ → C ψ → C (φ ⋎ ψ))
(hAnd : (φ ψ : NNFormula α) → C φ → C ψ → C (φ ⋏ ψ))
(hBox : (φ : NNFormula α) → C φ → C (□φ))
(hDia : (φ : NNFormula α) → C φ → C (◇φ))
(φ : NNFormula α)
:
C φ
Equations
- One or more equations did not get rendered due to their size.
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (LO.Modal.NNFormula.atom a) = hAtom a
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia (LO.Modal.NNFormula.natom a) = hNatom a
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia LO.Modal.NNFormula.falsum = hFalsum
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia LO.Modal.NNFormula.verum = hVerum
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ.box = hBox φ (LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ)
- LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ.dia = hDia φ (LO.Modal.NNFormula.rec' hAtom hNatom hFalsum hVerum hOr hAnd hBox hDia φ)
Instances For
Equations
- LO.Modal.NNFormula.falsum.toNat = Nat.pair 0 0 + 1
- LO.Modal.NNFormula.verum.toNat = Nat.pair 1 0 + 1
- (LO.Modal.NNFormula.atom a).toNat = Nat.pair 2 (Encodable.encode a) + 1
- (LO.Modal.NNFormula.natom a).toNat = Nat.pair 3 (Encodable.encode a) + 1
- (φ.or ψ).toNat = Nat.pair 4 (Nat.pair φ.toNat ψ.toNat) + 1
- (φ.and ψ).toNat = Nat.pair 5 (Nat.pair φ.toNat ψ.toNat) + 1
- φ.box.toNat = Nat.pair 6 φ.toNat + 1
- φ.dia.toNat = Nat.pair 7 φ.toNat + 1
Instances For
@[irreducible]
Equations
- One or more equations did not get rendered due to their size.
- LO.Modal.NNFormula.ofNat 0 = none
Instances For
Equations
- LO.Modal.NNFormula.instEncodable = { encode := LO.Modal.NNFormula.toNat, decode := LO.Modal.NNFormula.ofNat, encodek := ⋯ }
Equations
Instances For
theorem
LO.Modal.NNFormula.isModalCNFPart.def_box
{α : Type u}
{φ : NNFormula α}
:
(□φ).isModalCNFPart
theorem
LO.Modal.NNFormula.isModalCNFPart.def_dia
{α : Type u}
{φ : NNFormula α}
:
(◇φ).isModalCNFPart
Equations
- φ.isModalCNF = ∃ (Γ : List { ψ : LO.Modal.NNFormula α // ψ.isModalCNFPart }), φ = ⋀Γ.unattach
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
Equations
- (φ.and ψ).isModalDNFPart = (φ.isModalDNFPart ∧ ψ.isModalDNFPart)
- x✝.isModalDNFPart = (x✝.isPrebox ∨ x✝.isPredia ∨ x✝.degree = 0)
Instances For
theorem
LO.Modal.NNFormula.isModalDNFPart.of_degree_zero
{α : Type u}
{φ : NNFormula α}
(h : φ.degree = 0)
:
Equations
- (φ.or ψ).isModalDNF = (φ.isModalDNF ∧ ψ.isModalDNF)
- x✝.isModalDNF = x✝.isModalDNFPart
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
Equations
Instances For
Equations
@[simp]