Logic Symbols #
This file defines structure that has logical connectives $\top, \bot, \land, \lor, \to, \lnot$ and their homomorphisms.
Main Definitions #
LO.LogicalConnective
is defined so thatLO.LogicalConnective F
is a type that has logical connectives $\top, \bot, \land, \lor, \to, \lnot$.LO.LogicalConnective.Hom
is defined so thatf : F →ˡᶜ G
is a homomorphism fromF
toG
, i.e., a function that preserves logical connectives.
Equations
- LO.«term∼_» = Lean.ParserDescr.node `LO.«term∼_» 75 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "∼") (Lean.ParserDescr.cat `term 75))
Instances For
Equations
- LO.«term_➝_» = Lean.ParserDescr.trailingNode `LO.«term_➝_» 60 61 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ➝ ") (Lean.ParserDescr.cat `term 60))
Instances For
Equations
- LO.«term_⋏_» = Lean.ParserDescr.trailingNode `LO.«term_⋏_» 69 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋏ ") (Lean.ParserDescr.cat `term 69))
Instances For
Equations
- LO.«term_⋎_» = Lean.ParserDescr.trailingNode `LO.«term_⋎_» 68 69 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋎ ") (Lean.ParserDescr.cat `term 68))
Instances For
@[match_pattern]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible]
Equations
- LO.LogicalConnective.PropLogicSymbols = LO.LogicalConnective.mk
Equations
class
LO.LogicalConnective.HomClass
(F : Type u_1)
(α : outParam (Type u_2))
(β : outParam (Type u_3))
[LO.LogicalConnective α]
[LO.LogicalConnective β]
[FunLike F α β]
:
Instances
@[simp]
theorem
LO.LogicalConnective.HomClass.map_iff
(F : Type u_1)
(α : outParam (Type u_2))
(β : outParam (Type u_3))
[LO.LogicalConnective α]
[LO.LogicalConnective β]
[FunLike F α β]
[LO.LogicalConnective.HomClass F α β]
(f : F)
(a b : α)
:
structure
LO.LogicalConnective.Hom
(α : Type u_1)
(β : Type u_2)
[LO.LogicalConnective α]
[LO.LogicalConnective β]
:
Type (max u_1 u_2)
- toTr : α → β
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
LO.LogicalConnective.Hom.instFunLike
{α : Type u_1}
{β : Type u_2}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
:
Equations
- LO.LogicalConnective.Hom.instFunLike = { coe := LO.LogicalConnective.Hom.toTr, coe_injective' := ⋯ }
instance
LO.LogicalConnective.Hom.instCoeFunForall
{α : Type u_1}
{β : Type u_2}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
:
Equations
- LO.LogicalConnective.Hom.instCoeFunForall = DFunLike.hasCoeToFun
theorem
LO.LogicalConnective.Hom.ext
{α : Type u_1}
{β : Type u_2}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
(f g : α →ˡᶜ β)
(h : ∀ (x : α), f x = g x)
:
f = g
instance
LO.LogicalConnective.Hom.instHomClass
{α : Type u_1}
{β : Type u_2}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
:
LO.LogicalConnective.HomClass (α →ˡᶜ β) α β
Equations
- ⋯ = ⋯
Equations
- LO.LogicalConnective.Hom.id = { toTr := id, map_top' := ⋯, map_bot' := ⋯, map_neg' := ⋯, map_imply' := ⋯, map_and' := ⋯, map_or' := ⋯ }
Instances For
@[simp]
theorem
LO.LogicalConnective.Hom.app_id
{α : Type u_1}
[LO.LogicalConnective α]
(a : α)
:
LO.LogicalConnective.Hom.id a = a
def
LO.LogicalConnective.Hom.comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
[LO.LogicalConnective γ]
(g : β →ˡᶜ γ)
(f : α →ˡᶜ β)
:
α →ˡᶜ γ
Equations
Instances For
@[simp]
theorem
LO.LogicalConnective.Hom.app_comp
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
[LO.LogicalConnective γ]
(g : β →ˡᶜ γ)
(f : α →ˡᶜ β)
(a : α)
:
(g.comp f) a = g (f a)
class
LO.LogicalConnective.Closed
{F : Type u_4}
[LO.LogicalConnective F]
(C : F → Prop)
extends LO.LogicalConnective.AndOrClosed C :
Instances
class
LO.LogicalConnective.Subclosed
{F : Type u_1}
[LO.LogicalConnective F]
(C : F → Prop)
extends LO.Tilde.Subclosed C, LO.Arrow.Subclosed C, LO.Wedge.Subclosed C, LO.Vee.Subclosed C :
- tilde_closed : ∀ {φ : F}, C (∼φ) → C φ
- arrow_closed : ∀ {φ ψ : F}, C (φ ➝ ψ) → C φ ∧ C ψ
- wedge_closed : ∀ {φ ψ : F}, C (φ ⋏ ψ) → C φ ∧ C ψ
- vee_closed : ∀ {φ ψ : F}, C (φ ⋎ ψ) → C φ ∧ C ψ
Instances
@[simp]
@[simp]
theorem
LO.hom_conj_prop
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_3}
{k : ℕ}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(φ : ℕ → α)
:
@[simp]
@[simp]
theorem
LO.hom_disj_prop
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_3}
{k : ℕ}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(φ : ℕ → α)
:
Equations
- Matrix.conj x_2 = ⊤
- Matrix.conj v = v 0 ⋏ Matrix.conj (Matrix.vecTail v)
Instances For
@[simp]
@[simp]
theorem
Matrix.conj_cons
{α : Type u_1}
[LO.LogicalConnective α]
{n : ℕ}
{a : α}
{v : Fin n → α}
:
Matrix.conj (a :> v) = a ⋏ Matrix.conj v
@[simp]
theorem
Matrix.conj_hom_prop
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
{n : ℕ}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(v : Fin n → α)
:
f (Matrix.conj v) = ∀ (i : Fin n), f (v i)
theorem
Matrix.hom_conj
{β : Type u_3}
{α : Type u_1}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
{F : Type u_2}
{n : ℕ}
[FunLike F α β]
[LO.LogicalConnective.HomClass F α β]
(f : F)
(v : Fin n → α)
:
f (Matrix.conj v) = Matrix.conj (⇑f ∘ v)
theorem
Matrix.hom_conj₂
{β : Type u_3}
{α : Type u_1}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
{F : Type u_2}
{n : ℕ}
[FunLike F α β]
[LO.LogicalConnective.HomClass F α β]
(f : F)
(v : Fin n → α)
:
f (Matrix.conj v) = Matrix.conj fun (i : Fin n) => f (v i)
Equations
- Matrix.disj x_2 = ⊥
- Matrix.disj v = v 0 ⋎ Matrix.disj (Matrix.vecTail v)
Instances For
@[simp]
@[simp]
theorem
Matrix.disj_cons
{α : Type u_1}
[LO.LogicalConnective α]
{n : ℕ}
{a : α}
{v : Fin n → α}
:
Matrix.disj (a :> v) = a ⋎ Matrix.disj v
@[simp]
theorem
Matrix.disj_hom_prop
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
{n : ℕ}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(v : Fin n → α)
:
f (Matrix.disj v) = ∃ (i : Fin n), f (v i)
theorem
Matrix.hom_disj
{β : Type u_3}
{α : Type u_1}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
{F : Type u_2}
{n : ℕ}
[FunLike F α β]
[LO.LogicalConnective.HomClass F α β]
(f : F)
(v : Fin n → α)
:
f (Matrix.disj v) = Matrix.disj (⇑f ∘ v)
theorem
Matrix.hom_disj'
{β : Type u_3}
{α : Type u_1}
[LO.LogicalConnective α]
[LO.LogicalConnective β]
{F : Type u_2}
{n : ℕ}
[FunLike F α β]
[LO.LogicalConnective.HomClass F α β]
(f : F)
(v : Fin n → α)
:
f (Matrix.disj v) = Matrix.disj fun (i : Fin n) => f (v i)
@[simp]
theorem
List.map_conj
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(l : List α)
:
f l.conj ↔ ∀ a ∈ l, f a
theorem
List.map_conj_append
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(l₁ l₂ : List α)
:
@[simp]
theorem
List.map_disj
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(l : List α)
:
f l.disj ↔ ∃ a ∈ l, f a
theorem
List.map_disj_append
{α : Type u_1}
[LO.LogicalConnective α]
{F : Type u_2}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(l₁ l₂ : List α)
:
Equations
- List.«term⋀_» = Lean.ParserDescr.node `List.«term⋀_» 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋀") (Lean.ParserDescr.cat `term 80))
Instances For
@[simp]
Equations
- List.«term⋁_» = Lean.ParserDescr.node `List.«term⋁_» 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⋁") (Lean.ParserDescr.cat `term 80))
Instances For
@[simp]
Equations
- s.conj = s.toList.conj
Instances For
theorem
Finset.map_conj
{α : Type u_2}
[LO.LogicalConnective α]
{F : Type u_1}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(s : Finset α)
:
f s.conj ↔ ∀ a ∈ s, f a
theorem
Finset.map_conj_union
{α : Type u_2}
[LO.LogicalConnective α]
{F : Type u_1}
[DecidableEq α]
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(s₁ s₂ : Finset α)
:
Equations
- s.disj = s.toList.disj
Instances For
theorem
Finset.map_disj
{α : Type u_2}
[LO.LogicalConnective α]
{F : Type u_1}
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(s : Finset α)
:
f s.disj ↔ ∃ a ∈ s, f a
theorem
Finset.map_disj_union
{α : Type u_2}
[LO.LogicalConnective α]
{F : Type u_1}
[DecidableEq α]
[FunLike F α Prop]
[LO.LogicalConnective.HomClass F α Prop]
(f : F)
(s₁ s₂ : Finset α)
: