- atom: {α : Type u} → α → LO.IntProp.Formula α
- verum: {α : Type u} → LO.IntProp.Formula α
- falsum: {α : Type u} → LO.IntProp.Formula α
- neg: {α : Type u} → LO.IntProp.Formula α → LO.IntProp.Formula α
- and: {α : Type u} → LO.IntProp.Formula α → LO.IntProp.Formula α → LO.IntProp.Formula α
- or: {α : Type u} → LO.IntProp.Formula α → LO.IntProp.Formula α → LO.IntProp.Formula α
- imp: {α : Type u} → LO.IntProp.Formula α → LO.IntProp.Formula α → LO.IntProp.Formula α
Instances For
Equations
- LO.IntProp.instDecidableEqFormula = LO.IntProp.decEqFormula✝
Equations
- LO.IntProp.Formula.instLogicalConnective = LO.LogicalConnective.mk
Equations
- LO.IntProp.Formula.verum.toStr = "\\top"
- LO.IntProp.Formula.falsum.toStr = "\\bot"
- (LO.IntProp.Formula.atom a).toStr = "{" ++ toString a ++ "}"
- φ.neg.toStr = "\\lnot " ++ φ.toStr
- (φ.and ψ).toStr = "\\left(" ++ φ.toStr ++ " \\land " ++ ψ.toStr ++ "\\right)"
- (φ.or ψ).toStr = "\\left(" ++ φ.toStr ++ " \\lor " ++ ψ.toStr ++ "\\right)"
- (φ.imp ψ).toStr = "\\left(" ++ φ.toStr ++ " \\rightarrow " ++ ψ.toStr ++ "\\right)"
Instances For
Equations
- LO.IntProp.Formula.instRepr = { reprPrec := fun (t : LO.IntProp.Formula α) (x : ℕ) => Std.Format.text t.toStr }
Equations
- LO.IntProp.Formula.instToString = { toString := LO.IntProp.Formula.toStr }
@[simp]
Equations
- (LO.IntProp.Formula.atom a).complexity = 0
- LO.IntProp.Formula.verum.complexity = 0
- LO.IntProp.Formula.falsum.complexity = 0
- φ.neg.complexity = φ.complexity + 1
- (φ.imp ψ).complexity = φ.complexity ⊔ ψ.complexity + 1
- (φ.and ψ).complexity = φ.complexity ⊔ ψ.complexity + 1
- (φ.or ψ).complexity = φ.complexity ⊔ ψ.complexity + 1
Instances For
@[simp]
theorem
LO.IntProp.Formula.complexity_atom
{α : Type u_1}
(a : α)
:
(LO.IntProp.Formula.atom a).complexity = 0
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
def
LO.IntProp.Formula.cases'
{α : Type u_1}
{C : LO.IntProp.Formula α → Sort w}
(hfalsum : C ⊥)
(hverum : C ⊤)
(hatom : (a : α) → C (LO.IntProp.Formula.atom a))
(hneg : (φ : LO.IntProp.Formula α) → C (∼φ))
(himp : (φ ψ : LO.IntProp.Formula α) → C (φ ➝ ψ))
(hand : (φ ψ : LO.IntProp.Formula α) → C (φ ⋏ ψ))
(hor : (φ ψ : LO.IntProp.Formula α) → C (φ ⋎ ψ))
(φ : LO.IntProp.Formula α)
:
C φ
Equations
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor LO.IntProp.Formula.falsum = hfalsum
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor LO.IntProp.Formula.verum = hverum
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor (LO.IntProp.Formula.atom a) = hatom a
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor φ.neg = hneg φ
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor (φ.imp ψ) = himp φ ψ
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor (φ.and ψ) = hand φ ψ
- LO.IntProp.Formula.cases' hfalsum hverum hatom hneg himp hand hor (φ.or ψ) = hor φ ψ
Instances For
def
LO.IntProp.Formula.rec'
{α : Type u_1}
{C : LO.IntProp.Formula α → Sort w}
(hfalsum : C ⊥)
(hverum : C ⊤)
(hatom : (a : α) → C (LO.IntProp.Formula.atom a))
(hneg : (φ : LO.IntProp.Formula α) → C φ → C (∼φ))
(himp : (φ ψ : LO.IntProp.Formula α) → C φ → C ψ → C (φ ➝ ψ))
(hand : (φ ψ : LO.IntProp.Formula α) → C φ → C ψ → C (φ ⋏ ψ))
(hor : (φ ψ : LO.IntProp.Formula α) → C φ → C ψ → C (φ ⋎ ψ))
(φ : LO.IntProp.Formula α)
:
C φ
Equations
- One or more equations did not get rendered due to their size.
- LO.IntProp.Formula.rec' hfalsum hverum hatom hneg himp hand hor LO.IntProp.Formula.falsum = hfalsum
- LO.IntProp.Formula.rec' hfalsum hverum hatom hneg himp hand hor LO.IntProp.Formula.verum = hverum
- LO.IntProp.Formula.rec' hfalsum hverum hatom hneg himp hand hor (LO.IntProp.Formula.atom a) = hatom a
- LO.IntProp.Formula.rec' hfalsum hverum hatom hneg himp hand hor φ.neg = hneg φ (LO.IntProp.Formula.rec' hfalsum hverum hatom hneg himp hand hor φ)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LO.IntProp.Formula.instDecidableEq = LO.IntProp.Formula.hasDecEq
Equations
- (LO.IntProp.Formula.atom a).toNat = Nat.pair 0 (Encodable.encode a) + 1
- LO.IntProp.Formula.verum.toNat = Nat.pair 1 0 + 1
- LO.IntProp.Formula.falsum.toNat = Nat.pair 2 0 + 1
- φ.neg.toNat = Nat.pair 3 φ.toNat + 1
- (φ.imp ψ).toNat = Nat.pair 4 (Nat.pair φ.toNat ψ.toNat) + 1
- (φ.and ψ).toNat = Nat.pair 5 (Nat.pair φ.toNat ψ.toNat) + 1
- (φ.or ψ).toNat = Nat.pair 6 (Nat.pair φ.toNat ψ.toNat) + 1
Instances For
@[irreducible]
Equations
- One or more equations did not get rendered due to their size.
- LO.IntProp.Formula.ofNat 0 = none
Instances For
theorem
LO.IntProp.Formula.ofNat_toNat
{α : Type u_1}
[Encodable α]
(φ : LO.IntProp.Formula α)
:
LO.IntProp.Formula.ofNat φ.toNat = some φ
Equations
- LO.IntProp.Formula.instEncodable = { encode := LO.IntProp.Formula.toNat, decode := LO.IntProp.Formula.ofNat, encodek := ⋯ }
Equations
- LO.IntProp.Formula.subst s (LO.IntProp.Formula.atom a) = s a
- LO.IntProp.Formula.subst s LO.IntProp.Formula.verum = ⊤
- LO.IntProp.Formula.subst s LO.IntProp.Formula.falsum = ⊥
- LO.IntProp.Formula.subst s φ.neg = ∼LO.IntProp.Formula.subst s φ
- LO.IntProp.Formula.subst s (φ.imp ψ) = LO.IntProp.Formula.subst s φ ➝ LO.IntProp.Formula.subst s ψ
- LO.IntProp.Formula.subst s (φ.and ψ) = LO.IntProp.Formula.subst s φ ⋏ LO.IntProp.Formula.subst s ψ
- LO.IntProp.Formula.subst s (φ.or ψ) = LO.IntProp.Formula.subst s φ ⋎ LO.IntProp.Formula.subst s ψ
Instances For
@[simp]
theorem
LO.IntProp.Formula.subst_atom
{α : Type u_1}
{s : α → LO.IntProp.Formula α}
{a : α}
:
LO.IntProp.Formula.subst s (LO.IntProp.Formula.atom a) = s a
@[simp]
theorem
LO.IntProp.Formula.subst_and
{α : Type u_1}
{s : α → LO.IntProp.Formula α}
{φ ψ : LO.IntProp.Formula α}
:
LO.IntProp.Formula.subst s (φ ⋏ ψ) = LO.IntProp.Formula.subst s φ ⋏ LO.IntProp.Formula.subst s ψ
@[simp]
theorem
LO.IntProp.Formula.subst_or
{α : Type u_1}
{s : α → LO.IntProp.Formula α}
{φ ψ : LO.IntProp.Formula α}
:
LO.IntProp.Formula.subst s (φ ⋎ ψ) = LO.IntProp.Formula.subst s φ ⋎ LO.IntProp.Formula.subst s ψ
@[simp]
theorem
LO.IntProp.Formula.subst_imp
{α : Type u_1}
{s : α → LO.IntProp.Formula α}
{φ ψ : LO.IntProp.Formula α}
:
LO.IntProp.Formula.subst s (φ ➝ ψ) = LO.IntProp.Formula.subst s φ ➝ LO.IntProp.Formula.subst s ψ
@[simp]
theorem
LO.IntProp.Formula.subst_neg
{α : Type u_1}
{s : α → LO.IntProp.Formula α}
{φ : LO.IntProp.Formula α}
:
@[simp]
@[simp]
@[reducible, inline]
Equations
Instances For
@[reducible, inline]