Documentation

TauCeti.ModelTheory.Infinitary.GraphTranslation.Language

The graph language of a first-order language #

The graph language L.graphLanguage has no function symbols. Its relation symbols are those of L, at their arities, together with one (k + 1)-ary relation symbol G_f for each k-ary function symbol f of L, standing for the graph f(x₀, …, x_{k-1}) = y of f. Every L-structure becomes an L.graphLanguage-structure on the same carrier, its graph expansion graphExpansion L M.

Formulas of L translate into formulas of the graph language with the same realization in the graph expansion (TauCeti.ModelTheory.Infinitary.GraphTranslation.Relationalize). This is how statements proved for relational languages, in which every closed term of a constant expansion is a constant, reach languages with function symbols.

The relation symbols of the graph language coming from given sets F of function symbols and R of relation symbols of L form the set relSym F R. The two kinds of graph-language symbols are disjoint, so relSym commutes with intersections: the symbols shared by two translated formulas are the translations of the symbols shared by the two formulas (relSym_inter).

Main definitions #

Main results #

References #

inductive FirstOrder.Language.GraphRelation (L : Language) :
ℕ → Type (max u v)

The relation symbols of the graph language of L: every relation symbol of L is kept at its arity (base), and every k-ary function symbol of L gives a (k + 1)-ary relation symbol (graph) for its graph.

Instances For
    @[reducible, inline]

    The graph language of L: no function symbols, and as relation symbols those of L together with the graph of each function symbol of L. The definition is reducible, so that a relation symbol of the graph language is built and taken apart as a GraphRelation.

    Instances For
      def FirstOrder.Language.baseRelSym {L : Language} (R : (n : ℕ) × L.Relations n) :
      (n : ℕ) × L.GraphRelation n

      The graph-language symbol of an arity-tagged relation symbol of L.

      Instances For
        def FirstOrder.Language.graphRelSym {L : Language} (f : (n : ℕ) × L.Functions n) :
        (n : ℕ) × L.GraphRelation n

        The graph-language symbol of an arity-tagged function symbol of L: the graph relation, of arity one more.

        Instances For
          theorem FirstOrder.Language.baseRelSym_or_graphRelSym {L : Language} (S : (n : ℕ) × L.GraphRelation n) :
          (∃ (R : (n : ℕ) × L.Relations n), baseRelSym R = S) ∨ ∃ (f : (n : ℕ) × L.Functions n), graphRelSym f = S

          A graph-language symbol is the symbol of a relation symbol or of a function symbol of L.

          The graph language has countably many relation symbols when L has countably many symbols of both sorts.

          The symbols coming from sets of symbols of L #

          def FirstOrder.Language.relSym {L : Language} (F : Set ((n : ℕ) × L.Functions n)) (R : Set ((n : ℕ) × L.Relations n)) :
          Set ((n : ℕ) × L.GraphRelation n)

          The relation symbols of the graph language coming from a set F of function symbols and a set R of relation symbols of L: the base symbols of R and the graph symbols of F.

          Instances For
            theorem FirstOrder.Language.relSym_def {L : Language} (F : Set ((n : ℕ) × L.Functions n)) (R : Set ((n : ℕ) × L.Relations n)) :
            @[simp]
            theorem FirstOrder.Language.baseRelSym_mem_relSym {L : Language} {F : Set ((n : ℕ) × L.Functions n)} {R : Set ((n : ℕ) × L.Relations n)} {r : (n : ℕ) × L.Relations n} :
            @[simp]
            theorem FirstOrder.Language.graphRelSym_mem_relSym {L : Language} {F : Set ((n : ℕ) × L.Functions n)} {R : Set ((n : ℕ) × L.Relations n)} {f : (n : ℕ) × L.Functions n} :
            @[simp]
            theorem FirstOrder.Language.mk_base_mem_relSym {L : Language} {F : Set ((n : ℕ) × L.Functions n)} {R : Set ((n : ℕ) × L.Relations n)} {n : ℕ} {r : L.Relations n} :

            baseRelSym_mem_relSym for the raw pair, the simp normal form of baseRelSym ⟨n, r⟩.

            @[simp]
            theorem FirstOrder.Language.mk_graph_mem_relSym {L : Language} {F : Set ((n : ℕ) × L.Functions n)} {R : Set ((n : ℕ) × L.Relations n)} {n : ℕ} {f : L.Functions n} :

            graphRelSym_mem_relSym for the raw pair, the simp normal form of graphRelSym ⟨n, f⟩.

            @[simp]
            theorem FirstOrder.Language.preimage_baseRelSym_relSym {L : Language} (F : Set ((n : ℕ) × L.Functions n)) (R : Set ((n : ℕ) × L.Relations n)) :

            The relation symbols of L whose base symbol comes from F and R are those of R.

            @[simp]
            theorem FirstOrder.Language.preimage_graphRelSym_relSym {L : Language} (F : Set ((n : ℕ) × L.Functions n)) (R : Set ((n : ℕ) × L.Relations n)) :

            The function symbols of L whose graph symbol comes from F and R are those of F.

            theorem FirstOrder.Language.relSym_union {L : Language} (F₁ F₂ : Set ((n : ℕ) × L.Functions n)) (R₁ R₂ : Set ((n : ℕ) × L.Relations n)) :
            relSym (F₁ ∪ F₂) (R₁ ∪ R₂) = relSym F₁ R₁ ∪ relSym F₂ R₂
            theorem FirstOrder.Language.relSym_iUnion {L : Language} {κ : Sort u_1} (F : κ → Set ((n : ℕ) × L.Functions n)) (R : κ → Set ((n : ℕ) × L.Relations n)) :
            relSym (⋃ (i : κ), F i) (⋃ (i : κ), R i) = ⋃ (i : κ), relSym (F i) (R i)
            theorem FirstOrder.Language.relSym_inter {L : Language} (F₁ F₂ : Set ((n : ℕ) × L.Functions n)) (R₁ R₂ : Set ((n : ℕ) × L.Relations n)) :
            relSym F₁ R₁ ∩ relSym F₂ R₂ = relSym (F₁ ∩ F₂) (R₁ ∩ R₂)

            The shared-vocabulary identity: the graph-language symbols coming from two pairs of symbol sets meet exactly in the symbols coming from the shared symbols.

            The graph expansion #

            @[instance_reducible]

            The graph expansion of an L-structure: relation symbols of L keep their interpretation, and the graph relation of f holds of (x₀, …, x_{k-1}, y) exactly when f(x₀, …, x_{k-1}) = y. The graph language has no function symbols to interpret.

            Instances For

              Two structures are isomorphic exactly when their graph expansions are: an L-isomorphism preserves the graph of every function symbol, and a bijection preserving these graphs commutes with the function symbols.