Logical operators #
This module contains typeclasses and associated notation for common logical operators: propositional
connectives (like ∧ and →), modalities (like ◇, plain and indexed), linear connectives (like
⊗), etc.
Propositional connectives #
The type α has an and connective (∧).
- and (a b : α) : α
a ∧ bis the conjunction ofaandb.
Instances
a ∧ b is the conjunction of a and b.
Equations
- Cslib.Logic.«term_∧_» = Lean.ParserDescr.trailingNode `Cslib.Logic.«term_∧_» 36 37 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∧ ") (Lean.ParserDescr.cat `term 36))
Instances For
The type α has an or connective (∨).
- or (a b : α) : α
a ∨ bis the disjunction ofaandb.
Instances
a ∨ b is the disjunction of a and b.
Equations
- Cslib.Logic.«term_∨_» = Lean.ParserDescr.trailingNode `Cslib.Logic.«term_∨_» 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∨ ") (Lean.ParserDescr.cat `term 30))
Instances For
Finite conjunction, with empty conjunction equal to truth.
Equations
- Cslib.Logic.finiteAnd as = List.foldr (fun (x1 x2 : α) => Cslib.Logic.HasAnd.and x1 x2) ⊤ as
Instances For
Finite conjunction, with empty conjunction equal to truth.
Equations
- Cslib.Logic.«term⋀_» = Lean.ParserDescr.node `Cslib.Logic.«term⋀_» 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋀") (Lean.ParserDescr.cat `term 1024))
Instances For
Finite disjunction, with empty disjunction equal to falsehood.
Equations
- Cslib.Logic.finiteOr as = List.foldr (fun (x1 x2 : α) => Cslib.Logic.HasOr.or x1 x2) ⊥ as
Instances For
Finite disjunction, with empty disjunction equal to falsehood.
Equations
- Cslib.Logic.«term⋁_» = Lean.ParserDescr.node `Cslib.Logic.«term⋁_» 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋁") (Lean.ParserDescr.cat `term 1024))
Instances For
The type α has an implication connective (→).
- imp (a b : α) : α
a → bdenotesaimpliesb.
Instances
a → b denotes a implies b.
Equations
- Cslib.Logic.«term_→_» = Lean.ParserDescr.trailingNode `Cslib.Logic.«term_→_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " → ") (Lean.ParserDescr.cat `term 25))
Instances For
The type α has a bi-implication connective (↔).
- iff (a b : α) : α
a ↔ bdenotesaimpliesband vice-versa.
Instances
a ↔ b denotes a implies b and vice-versa.
Equations
- Cslib.Logic.«term_↔_» = Lean.ParserDescr.trailingNode `Cslib.Logic.«term_↔_» 20 21 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↔ ") (Lean.ParserDescr.cat `term 20))
Instances For
The type α has a negation connective (¬).
- not (a : α) : α
¬ais the negation ofa.
Instances
¬a is the negation of a.
Equations
- Cslib.Logic.«term¬_» = Lean.ParserDescr.node `Cslib.Logic.«term¬_» 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "¬") (Lean.ParserDescr.cat `term 40))
Instances For
General modalities from modal similarity types (polynomial functors) #
The type α has a family of triangle operators (Δ).
Δ[op](φ₁, ..., φₙ)means thatφ₁, ...,φₙare valid at some respective related states.
Instances
Δ[op](φ₁, ..., φₙ) means that φ₁, ..., φₙ are valid at some respective related states.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The type α has a family of nabla operators (∇).
∇[op](φ₁, ..., φₙ)means thatφ₁, ...,φₙare valid at all respective related states.
Instances
∇[op](φ₁, ..., φₙ) means that φ₁, ..., φₙ are valid at all respective related states.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dynamic modalities #
Here we need to use the prefix d to distinguish our notation from the normal [·] and ⟨·⟩.
A refactoring that makes this unnecessary would be welcome.
b is possibly valid after a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
b is necessarily valid after a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A family of triangle operators over induces dynamic diamond modalities by applying each operator to the constant argument family.
Equations
- Cslib.Logic.instHasDynamicDiamondAOfHasTriangle = { dynDiamond := fun (op : τ.A) (φ : α) => Cslib.Logic.HasTriangle.triangle op (PFunctor.const op φ) }
A family of nabla operators induces dynamic box modalities by applying each operator to the constant argument family.
Equations
- Cslib.Logic.instHasDynamicBoxAOfHasNabla = { dynBox := fun (op : τ.A) (φ : α) => Cslib.Logic.HasNabla.nabla op (PFunctor.const op φ) }
Basic modalities (Unimodal logic operators) #
The type α has a box modality (□).
- box (a : α) : α
ais valid in all immediately reachable states.
Instances
a is valid in all immediately reachable states.
Equations
- Cslib.Logic.«term□_» = Lean.ParserDescr.node `Cslib.Logic.«term□_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "□") (Lean.ParserDescr.cat `term 40))
Instances For
The type α has a diamond modality (◇).
- diamond (a : α) : α
ais valid in a reachable state.
Instances
a is valid in a reachable state.
Equations
- Cslib.Logic.«term◇_» = Lean.ParserDescr.node `Cslib.Logic.«term◇_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "◇") (Lean.ParserDescr.cat `term 40))
Instances For
A dynamic diamond modality with a unique action induces a basic diamond modality.
Equations
- Cslib.Logic.instHasDiamondOfUniqueOfHasDynamicDiamond = { diamond := fun (φ : α) => Cslib.Logic.HasDynamicDiamond.dynDiamond default φ }
A dynamic box modality with a unique action induces a basic box modality.
Equations
- Cslib.Logic.instHasBoxOfUniqueOfHasDynamicBox = { box := fun (φ : α) => Cslib.Logic.HasDynamicBox.dynBox default φ }
Linear connectives #
The type α has a tensor connective (⊗).
- tensor (a b : α) : α
a ⊗ bis the multiplicative conjunction ofaandb.
Instances
a ⊗ b is the multiplicative conjunction of a and b.
Equations
- Cslib.Logic.«term_⊗_» = Lean.ParserDescr.trailingNode `Cslib.Logic.«term_⊗_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ ") (Lean.ParserDescr.cat `term 35))