Documentation

Foundation.Logic.Semantics

Basic definitions and properties of semantics-related notions #

This file defines the semantics of formulas based on Tarski's truth definitions. Also provides 𝓜 characterization of compactness.

Main Definitions #

Notation #

class FFL.Semantics (M : Type u_1) (F : outParam (Type u_2)) :
Type (max u_1 u_2)

Semantics M F denotes semantics of formulae F for models M`

  • Models : M → F → Prop
Instances
    @[reducible, inline]
    abbrev FFL.Semantics.NotModels {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) (φ : F) :

    The negation of 𝓜 ⊧ φ

    Equations
    Instances For

      Tarski's truth definitions #

      class FFL.Semantics.Top (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalNeutral F] :

      Tarski's truth definition for ⊤.

      • models_verum (𝓜 : M) : 𝓜 ⊧ ⊤
      Instances
        class FFL.Semantics.Bot (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalNeutral F] :

        Tarski's truth definition for ⊥.

        • models_falsum (𝓜 : M) : ¬𝓜 ⊧ ⊥
        Instances
          class FFL.Semantics.And (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] :

          Tarski's truth definition for ⋏.

          Instances
            class FFL.Semantics.Or (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] :

            Tarski's truth definition for ⋎.

            Instances
              class FFL.Semantics.Imp (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] :

              Tarski's truth definition for 🡒.

              • models_imply {𝓜 : M} {φ ψ : F} : 𝓜 ⊧ φ 🡒 ψ ↔ 𝓜 ⊧ φ → 𝓜 ⊧ ψ
              Instances
                class FFL.Semantics.Not (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] :

                Tarski's truth definition for ∼.

                Instances

                  Tarski's truth definitions.

                  Instances
                    @[simp]
                    theorem FFL.Semantics.models_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {φ ψ : F} :
                    𝓜 ⊧ φ 🡘 ψ ↔ (𝓜 ⊧ φ ↔ 𝓜 ⊧ ψ)
                    @[simp]
                    theorem FFL.Semantics.models_list_conj {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {l : List F} :
                    𝓜 ⊧ l.conj ↔ ∀ φ ∈ l, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_list_conj₂ {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {l : List F} :
                    𝓜 ⊧ ⋀l ↔ ∀ φ ∈ l, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_list_conj' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {α : Type u_3} {l : List α} {ι : α → F} :
                    𝓜 ⊧ List.conj' ι l ↔ ∀ i ∈ l, 𝓜 ⊧ ι i
                    @[simp]
                    theorem FFL.Semantics.models_finset_conj {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {s : Finset F} :
                    𝓜 ⊧ s.conj ↔ ∀ φ ∈ s, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_finset_conj' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {α : Type u_3} {s : Finset α} {ι : α → F} :
                    𝓜 ⊧ s.conj' ι ↔ ∀ i ∈ s, 𝓜 ⊧ ι i
                    @[simp]
                    theorem FFL.Semantics.models_list_disj {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {l : List F} :
                    𝓜 ⊧ l.disj ↔ ∃ φ ∈ l, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_list_disj₂ {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {l : List F} :
                    𝓜 ⊧ ⋁l ↔ ∃ φ ∈ l, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_list_disj' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {α : Type u_3} {l : List α} {ι : α → F} :
                    𝓜 ⊧ List.disj' ι l ↔ ∃ i ∈ l, 𝓜 ⊧ ι i
                    @[simp]
                    theorem FFL.Semantics.models_finset_disj {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {s : Finset F} :
                    𝓜 ⊧ s.disj ↔ ∃ φ ∈ s, 𝓜 ⊧ φ
                    @[simp]
                    theorem FFL.Semantics.models_finset_disj' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] {𝓜 : M} {α : Type u_3} {s : Finset α} {ι : α → F} :
                    𝓜 ⊧ s.disj' ι ↔ ∃ i ∈ s, 𝓜 ⊧ ι i

                    A semantics and satisfiability over a set of formulas #

                    class FFL.Semantics.ModelsSet {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) (T : Set F) :

                    𝓜 ⊧* T denotes 𝓜 ⊧ φ for all φ in T.

                    • models_set ⦃φ : F⦄ : φ ∈ T → 𝓜 ⊧ φ
                    Instances
                      def FFL.Semantics.Valid (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] (φ : F) :
                      Equations
                      Instances For
                        def FFL.Semantics.Satisfiable (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] (T : Set F) :
                        Equations
                        Instances For
                          def FFL.Semantics.models (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] (T : Set F) :
                          Set M

                          A set of models satisfies set of formulae T.

                          Equations
                          Instances For
                            def FFL.Semantics.theory {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                            Set F

                            A set of formulae satisfied by model 𝓜.

                            Equations
                            Instances For
                              class FFL.Semantics.Meaningful {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                              • exists_unmodels : ∃ (φ : F), 𝓜 ⊭ φ
                              Instances
                                instance FFL.Semantics.instMeaningfulOfBot {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalNeutral F] [Semantics.Bot M] (𝓜 : M) :
                                theorem FFL.Semantics.meaningful_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {𝓜 : M} :
                                Meaningful 𝓜 ↔ ∃ (φ : F), 𝓜 ⊭ φ
                                theorem FFL.Semantics.not_meaningful_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                                ¬Meaningful 𝓜 ↔ ∀ (φ : F), 𝓜 ⊧ φ
                                theorem FFL.Semantics.modelsSet_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {𝓜 : M} {T : Set F} :
                                𝓜 ⊧* T ↔ ∀ ⦃φ : F⦄, φ ∈ T → 𝓜 ⊧ φ
                                @[simp]
                                theorem FFL.Semantics.modelsTheory_theory {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                                𝓜 ⊧* theory 𝓜
                                @[simp]
                                theorem FFL.Semantics.theory_satisfiable {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                                theorem FFL.Semantics.not_satisfiable_finset {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] [DecidableEq F] (t : Finset F) :
                                ¬Satisfiable M ↑t ↔ Valid M (Finset.image (fun (x : F) => ∼x) t).disj
                                @[simp]
                                theorem FFL.Semantics.satisfiable_conj₂ {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] [DecidableEq F] (l : List F) :
                                @[simp]
                                theorem FFL.Semantics.satisfiable_fconj {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] [DecidableEq F] (s : Finset F) :
                                theorem FFL.Semantics.satisfiableSet_iff_models_nonempty {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} :
                                theorem FFL.Semantics.ModelsSet.models {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {φ : F} {T : Set F} (𝓜 : M) [𝓜 ⊧* T] (hf : φ ∈ T) :
                                𝓜 ⊧ φ
                                theorem FFL.Semantics.ModelsSet.of_subset {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T U : Set F} {𝓜 : M} (h : 𝓜 ⊧* U) (ss : T ⊆ U) :
                                𝓜 ⊧* T
                                theorem FFL.Semantics.ModelsSet.of_subset' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T U : Set F} {𝓜 : M} [𝓜 ⊧* U] (ss : T ⊆ U) :
                                𝓜 ⊧* T
                                instance FFL.Semantics.ModelsSet.empty' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                                𝓜 ⊧* ∅
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.empty {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] (𝓜 : M) :
                                𝓜 ⊧* ∅
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.singleton_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {φ : F} {𝓜 : M} :
                                𝓜 ⊧* {φ} ↔ 𝓜 ⊧ φ
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.insert_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} {φ : F} {𝓜 : M} :
                                𝓜 ⊧* insert φ T ↔ 𝓜 ⊧ φ ∧ 𝓜 ⊧* T
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.union_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T U : Set F} {𝓜 : M} :
                                𝓜 ⊧* T ∪ U ↔ 𝓜 ⊧* T ∧ 𝓜 ⊧* U
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.image_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {ι : Type u_3} {φ : ι → F} {A : Set ι} {𝓜 : M} :
                                𝓜 ⊧* φ '' A ↔ ∀ i ∈ A, 𝓜 ⊧ φ i
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.range_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {ι : Sort u_3} {φ : ι → F} {𝓜 : M} :
                                𝓜 ⊧* Set.range φ ↔ ∀ (i : ι), 𝓜 ⊧ φ i
                                @[simp]
                                theorem FFL.Semantics.ModelsSet.setOf_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {P : F → Prop} {𝓜 : M} :
                                𝓜 ⊧* Set.ofPred P ↔ ∀ (φ : F), P φ → 𝓜 ⊧ φ
                                theorem FFL.Semantics.valid_neg_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalConnective F] [LogicalNeutral F] [Tarski M] (φ : F) :
                                theorem FFL.Semantics.Satisfiable.of_subset {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T U : Set F} (h : Satisfiable M U) (ss : T ⊆ U) :
                                @[instance_reducible]
                                instance FFL.Semantics.instSet (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] :
                                Equations
                                @[simp]
                                theorem FFL.Semantics.empty_models (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] (φ : F) :
                                ∅ ⊧ φ

                                Logical consequence

                                def FFL.Semantics.Consequence (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] (T : Set F) (φ : F) :

                                The logical conseqence.

                                Equations
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    theorem FFL.Semantics.set_models_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {φ : F} {s : Set M} :
                                    s ⊧ φ ↔ ∀ 𝓜 ∈ s, 𝓜 ⊧ φ
                                    instance FFL.Semantics.instTopSet {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [LogicalNeutral F] [Semantics.Top M] :
                                    theorem FFL.Semantics.set_meaningful_iff_nonempty {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [∀ (𝓜 : M), Meaningful 𝓜] {s : Set M} :
                                    theorem FFL.Semantics.meaningful_iff_satisfiableSet {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} [∀ (𝓜 : M), Meaningful 𝓜] :
                                    theorem FFL.Semantics.consequence_iff {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} {φ : F} :
                                    T ⊨[M] φ ↔ ∀ {𝓜 : M}, 𝓜 ⊧* T → 𝓜 ⊧ φ
                                    theorem FFL.Semantics.consequence_iff' {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} {φ : F} :
                                    T ⊨[M] φ ↔ ∀ (𝓜 : M) [𝓜 ⊧* T], 𝓜 ⊧ φ
                                    theorem FFL.Semantics.consequence_iff_not_satisfiable {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} [LogicalConnective F] [LogicalNeutral F] [Tarski M] {φ : F} :
                                    T ⊨[M] φ ↔ ¬Satisfiable M (insert (∼φ) T)
                                    theorem FFL.Semantics.weakening {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T U : Set F} {φ : F} (h : T ⊨[M] φ) (ss : T ⊆ U) :
                                    U ⊨[M] φ
                                    theorem FFL.Semantics.of_mem {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] {T : Set F} {φ : F} (h : φ ∈ T) :
                                    T ⊨[M] φ

                                    Compactness

                                    def FFL.Cumulative {F : Type u_2} (T : ℕ → Set F) :

                                    A cumulative sequence of sets.

                                    Equations
                                    Instances For
                                      theorem FFL.Cumulative.subset_of_le {F : Type u_2} {T : ℕ → Set F} (H : Cumulative T) {s₁ s₂ : ℕ} (h : s₁ ≤ s₂) :
                                      T s₁ ⊆ T s₂
                                      theorem FFL.Cumulative.finset_mem {F : Type u_2} {T : ℕ → Set F} (H : Cumulative T) {u : Finset F} (hu : ↑u ⊆ ⋃ (s : ℕ), T s) :
                                      ∃ (s : ℕ), ↑u ⊆ T s
                                      class FFL.Compact (M : Type u_1) {F : Type u_2} [𝓢 : Semantics M F] :

                                      A Semantics M F is compact if, for any set of formulas, the satisfiability of the set is equivalent to the satisfiability of every finite subset of it.

                                      Instances
                                        theorem FFL.Compact.conseq_compact {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [Compact M] {T : Set F} [LogicalConnective F] [LogicalNeutral F] [Semantics.Tarski M] [DecidableEq F] {φ : F} :
                                        T ⊨[M] φ ↔ ∃ (u : Finset F), ↑u ⊆ T ∧ ↑u ⊨[M] φ
                                        theorem FFL.Compact.compact_cumulative {M : Type u_1} {F : Type u_2} [𝓢 : Semantics M F] [Compact M] {T : ℕ → Set F} (hT : Cumulative T) :
                                        Semantics.Satisfiable M (⋃ (s : ℕ), T s) ↔ ∀ (s : ℕ), Semantics.Satisfiable M (T s)