Documentation

Foundation.Logic.LogicSymbol

Logic Symbols #

This file defines structure that has logical connectives $\top, \bot, \land, \lor, \to, \lnot$ and their homomorphisms.

Main Definitions #

class LO.Tilde (α : Type u_1) :
Type u_1
  • tilde : αα
Instances
    class LO.Arrow (α : Type u_1) :
    Type u_1
    • arrow : ααα
    Instances
      class LO.Wedge (α : Type u_1) :
      Type u_1
      • wedge : ααα
      Instances
        class LO.Vee (α : Type u_1) :
        Type u_1
        • vee : ααα
        Instances
          class LO.LogicalConnective (α : Type u_1) extends Top α, Bot α, LO.Tilde α, LO.Arrow α, LO.Wedge α, LO.Vee α :
          Type u_1
          Instances
            Instances
              class LO.NegAbbrev (F : Type u_1) [LO.Tilde F] [LO.Arrow F] [Bot F] :

              Introducing ∼φ as an abbreviation of φ ➝ ⊥.

              Instances
                @[match_pattern]
                def LO.LogicalConnective.iff {α : Type u_1} [LO.LogicalConnective α] (a b : α) :
                α
                Equations
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    @[simp]
                    theorem LO.LogicalConnective.Prop.arrow_eq (φ ψ : Prop) :
                    φ ψ = (φψ)
                    @[simp]
                    theorem LO.LogicalConnective.Prop.and_eq (φ ψ : Prop) :
                    φ ψ = (φ ψ)
                    @[simp]
                    theorem LO.LogicalConnective.Prop.or_eq (φ ψ : Prop) :
                    φ ψ = (φ ψ)
                    @[simp]
                    theorem LO.LogicalConnective.Prop.iff_eq (φ ψ : Prop) :
                    φ ψ = (φ ψ)
                    • map_top : ∀ (f : F), f =
                    • map_bot : ∀ (f : F), f =
                    • map_neg : ∀ (f : F) (φ : α), f (φ) = f φ
                    • map_imply : ∀ (f : F) (φ ψ : α), f (φ ψ) = f φ f ψ
                    • map_and : ∀ (f : F) (φ ψ : α), f (φ ψ) = f φ f ψ
                    • map_or : ∀ (f : F) (φ ψ : α), f (φ ψ) = f φ f ψ
                    Instances
                      instance LO.LogicalConnective.HomClass.instCoeFunForall (F : Type u_1) (α : outParam (Type u_2)) (β : outParam (Type u_3)) [FunLike F α β] :
                      CoeFun F fun (x : F) => αβ
                      Equations
                      @[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 : α) :
                      f (a b) = f a f b
                      structure LO.LogicalConnective.Hom (α : Type u_1) (β : Type u_2) [LO.LogicalConnective α] [LO.LogicalConnective β] :
                      Type (max u_1 u_2)
                      • toTr : αβ
                      • map_top' : self.toTr =
                      • map_bot' : self.toTr =
                      • map_neg' : ∀ (φ : α), self.toTr (φ) = self.toTr φ
                      • map_imply' : ∀ (φ ψ : α), self.toTr (φ ψ) = self.toTr φ self.toTr ψ
                      • map_and' : ∀ (φ ψ : α), self.toTr (φ ψ) = self.toTr φ self.toTr ψ
                      • map_or' : ∀ (φ ψ : α), self.toTr (φ ψ) = self.toTr φ self.toTr ψ
                      Instances For
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          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 β] :
                          CoeFun (α →ˡᶜ β) fun (x : α →ˡᶜ β) => αβ
                          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
                          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
                            • g.comp f = { toTr := g f, map_top' := , map_bot' := , map_neg' := , map_imply' := , map_and' := , map_or' := }
                            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)
                              • verum : C
                              • falsum : C
                              • and : ∀ {f g : F}, C fC gC (f g)
                              • or : ∀ {f g : F}, C fC gC (f g)
                              Instances
                                • and : ∀ {f g : F}, C fC gC (f g)
                                • or : ∀ {f g : F}, C fC gC (f g)
                                • not : ∀ {f : F}, C fC (f)
                                • imply : ∀ {f g : F}, C fC gC (f g)
                                Instances
                                  class LO.Tilde.Subclosed {F : Type u_1} [LO.Tilde F] (C : FProp) :
                                  • tilde_closed : ∀ {φ : F}, C (φ)C φ
                                  Instances
                                    class LO.Arrow.Subclosed {F : Type u_1} [LO.Arrow F] (C : FProp) :
                                    • arrow_closed : ∀ {φ ψ : F}, C (φ ψ)C φ C ψ
                                    Instances
                                      class LO.Wedge.Subclosed {F : Type u_1} [LO.Wedge F] (C : FProp) :
                                      • wedge_closed : ∀ {φ ψ : F}, C (φ ψ)C φ C ψ
                                      Instances
                                        class LO.Vee.Subclosed {F : Type u_1} [LO.Vee F] (C : FProp) :
                                        • vee_closed : ∀ {φ ψ : F}, C (φ ψ)C φ C ψ
                                        Instances
                                          Instances
                                            def LO.conjLt {α : Type u_1} [LO.LogicalConnective α] (φ : α) :
                                            α
                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem LO.conjLt_zero {α : Type u_1} [LO.LogicalConnective α] (φ : α) :
                                              @[simp]
                                              theorem LO.conjLt_succ {α : Type u_1} [LO.LogicalConnective α] (φ : α) (k : ) :
                                              LO.conjLt φ (k + 1) = φ k LO.conjLt φ k
                                              @[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) (φ : α) :
                                              f (LO.conjLt φ k) i < k, f (φ i)
                                              def LO.disjLt {α : Type u_1} [LO.LogicalConnective α] (φ : α) :
                                              α
                                              Equations
                                              Instances For
                                                @[simp]
                                                theorem LO.disjLt_zero {α : Type u_1} [LO.LogicalConnective α] (φ : α) :
                                                @[simp]
                                                theorem LO.disjLt_succ {α : Type u_1} [LO.LogicalConnective α] (φ : α) (k : ) :
                                                LO.disjLt φ (k + 1) = φ k LO.disjLt φ k
                                                @[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) (φ : α) :
                                                f (LO.disjLt φ k) i < k, f (φ i)
                                                def Matrix.conj {α : Type u_1} [LO.LogicalConnective α] {n : } :
                                                (Fin nα)α
                                                Equations
                                                Instances For
                                                  @[simp]
                                                  theorem Matrix.conj_nil {α : Type u_1} [LO.LogicalConnective α] (v : Fin 0α) :
                                                  @[simp]
                                                  theorem Matrix.conj_cons {α : Type u_1} [LO.LogicalConnective α] {n : } {a : α} {v : Fin nα} :
                                                  @[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)
                                                  def Matrix.disj {α : Type u_1} [LO.LogicalConnective α] {n : } :
                                                  (Fin nα)α
                                                  Equations
                                                  Instances For
                                                    @[simp]
                                                    theorem Matrix.disj_nil {α : Type u_1} [LO.LogicalConnective α] (v : Fin 0α) :
                                                    @[simp]
                                                    theorem Matrix.disj_cons {α : Type u_1} [LO.LogicalConnective α] {n : } {a : α} {v : Fin nα} :
                                                    @[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)
                                                    def List.conj {α : Type u_1} [LO.LogicalConnective α] :
                                                    List αα
                                                    Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem List.conj_nil {α : Type u_1} [LO.LogicalConnective α] :
                                                      [].conj =
                                                      @[simp]
                                                      theorem List.conj_cons {α : Type u_1} [LO.LogicalConnective α] {a : α} {as : List α} :
                                                      (a :: as).conj = a as.conj
                                                      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 al, 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 α) :
                                                      f (l₁ ++ l₂).conj f (l₁.conj l₂.conj)
                                                      def List.disj {α : Type u_1} [LO.LogicalConnective α] :
                                                      List αα
                                                      Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem List.disj_nil {α : Type u_1} [LO.LogicalConnective α] :
                                                        [].disj =
                                                        @[simp]
                                                        theorem List.disj_cons {α : Type u_1} [LO.LogicalConnective α] {a : α} {as : List α} :
                                                        (a :: as).disj = a as.disj
                                                        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 al, 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 α) :
                                                        f (l₁ ++ l₂).disj f (l₁.disj l₂.disj)
                                                        def List.conj₂ {F : Type u} [LO.LogicalConnective F] :
                                                        List FF

                                                        Remark: [φ].conj₂ = φ ≠ φ ⋏ ⊤ = [φ].conj

                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          @[simp]
                                                          theorem List.conj₂_singleton {F : Type u} [LO.LogicalConnective F] {φ : F} :
                                                          [φ] = φ
                                                          @[simp]
                                                          theorem List.conj₂_doubleton {F : Type u} [LO.LogicalConnective F] {φ ψ : F} :
                                                          [φ, ψ] = φ ψ
                                                          @[simp]
                                                          theorem List.conj₂_cons_nonempty {F : Type u} [LO.LogicalConnective F] {a : F} {as : List F} (h : as [] := by assumption) :
                                                          (a :: as) = a as
                                                          def List.disj₂ {F : Type u} [LO.LogicalConnective F] :
                                                          List FF

                                                          Remark: [φ].disj = φ ≠ φ ⋎ ⊥ = [φ].disj

                                                          Equations
                                                          Instances For
                                                            @[simp]
                                                            @[simp]
                                                            theorem List.disj₂_singleton {F : Type u} [LO.LogicalConnective F] {φ : F} :
                                                            [φ] = φ
                                                            @[simp]
                                                            theorem List.disj₂_doubleton {F : Type u} [LO.LogicalConnective F] {φ ψ : F} :
                                                            [φ, ψ] = φ ψ
                                                            @[simp]
                                                            theorem List.disj₂_cons_nonempty {F : Type u} [LO.LogicalConnective F] {a : F} {as : List F} (h : as [] := by assumption) :
                                                            (a :: as) = a as
                                                            noncomputable def Finset.conj {α : Type u_1} [LO.LogicalConnective α] (s : Finset α) :
                                                            α
                                                            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 as, 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 α) :
                                                              f (s₁ s₂).conj f (s₁.conj s₂.conj)
                                                              noncomputable def Finset.disj {α : Type u_1} [LO.LogicalConnective α] (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 as, 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 α) :
                                                                f (s₁ s₂).disj f (s₁.disj s₂.disj)