- atom {α : Type u} : α → Formula α
 - verum {α : Type u} : Formula α
 - falsum {α : Type u} : Formula α
 - neg {α : Type u} : Formula α → Formula α
 - and {α : Type u} : Formula α → Formula α → Formula α
 - or {α : Type u} : Formula α → Formula α → Formula α
 - imp {α : Type u} : Formula α → Formula α → Formula α
 
Instances For
instance
LO.IntProp.instDecidableEqFormula
{α✝ : Type u_1}
[DecidableEq α✝]
 :
DecidableEq (Formula α✝)
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 }
 
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]
def
LO.IntProp.Formula.cases'
{α : Type u_1}
{C : Formula α → Sort w}
(hfalsum : C ⊥)
(hverum : C ⊤)
(hatom : (a : α) → C (atom a))
(hneg : (φ : Formula α) → C (∼φ))
(himp : (φ ψ : Formula α) → C (φ ➝ ψ))
(hand : (φ ψ : Formula α) → C (φ ⋏ ψ))
(hor : (φ ψ : Formula α) → C (φ ⋎ ψ))
(φ : 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 : Formula α → Sort w}
(hfalsum : C ⊥)
(hverum : C ⊤)
(hatom : (a : α) → C (atom a))
(hneg : (φ : Formula α) → C φ → C (∼φ))
(himp : (φ ψ : Formula α) → C φ → C ψ → C (φ ➝ ψ))
(hand : (φ ψ : Formula α) → C φ → C ψ → C (φ ⋏ ψ))
(hor : (φ ψ : Formula α) → C φ → C ψ → C (φ ⋎ ψ))
(φ : 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.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
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
@[reducible, inline]
Equations
Instances For
@[reducible, inline]