Expansions along composite language maps, and language maps for adjoining constants #
Additions to Mathlib's Mathlib.ModelTheory.LanguageMap: expansions compose along composite
language maps, and the reduct of an expansion along a composite h.comp g along the outer map h
is an expansion along the inner map g. Together they say that an L''-structure expands an
L-structure along h.comp g exactly when it expands, along h, some L'-structure that expands
the L-structure along g; the L'-structure can be taken to be the reduct.
Main results #
FirstOrder.Language.LHom.comp_isExpansionOn: expansions alonggand alonghcompose to an expansion alongh.comp g.FirstOrder.Language.LHom.isExpansionOn_reduct_of_comp: the reduct alonghof an expansion alongh.comp gis an expansion alongg.FirstOrder.Language.LHom.id_isExpansionOn_reduct: the reduct of an expansion along the map it expands along is the original structure.FirstOrder.Language.LHom.sumMap_isExpansionOn_of_reduct: a structure on a sum language is expanded alongϕ.sumMap ψby a sum structure expanding its two parts alongϕandψ.FirstOrder.Language.LHom.mem_range_sumInl_onFunction_of_mem_range_sumMapandFirstOrder.Language.LHom.mem_range_sumInl_onRelation_of_mem_range_sumMap: the symbols ofL.sum (L₁.sum L₂)shared by the images ofL.sum L₁andL.sum L₂come fromL.
The relation map of lhomWithConstants inverts the elimination of the empty summand of
L[[γ]].Relations n by Equiv.sumEmpty
(FirstOrder.Language.lhomWithConstants_onRelation_sumEmpty), symbol sets of L[[γ]] avoiding the
added constants lie in the range of lhomWithConstants
(FirstOrder.Language.subset_range_lhomWithConstants_onFunction,
FirstOrder.Language.subset_range_lhomWithConstants_onRelation), and every L[[γ]]-structure is
the expansion of its L-reduct by the interpretations of the added constants
(FirstOrder.Language.withConstantsStructure_reduct_eq).
Expansions compose: if the L'-structure on M expands its L-structure along g, and the
L''-structure expands the L'-structure along h, then the L''-structure expands the
L-structure along h.comp g.
If the L''-structure on M expands its L-structure along h.comp g, then its reduct
along h expands the L-structure along g.
If the L'-structure on M expands its L-structure along g, then its reduct along g is
the L-structure again, in the sense that the identity map expands the reduct to it.
A structure on L.sum L₁ is expanded along ϕ.sumMap ψ by the sum of an L₀-structure and
an L₁'-structure that expand, along ϕ and ψ, its parts on L and on L₁. Mathlib's
LHom.sumMap_isExpansionOn is the case of a source that is itself a sum structure.
A function symbol of L.sum (L₁.sum L₂) that is the image of a function symbol of L.sum L₁
along (LHom.id L).sumMap LHom.sumInl and of a function symbol of L.sum L₂ along
(LHom.id L).sumMap LHom.sumInr is the image of a function symbol of L along LHom.sumInl.
A relation symbol of L.sum (L₁.sum L₂) that is the image of a relation symbol of L.sum L₁
along (LHom.id L).sumMap LHom.sumInl and of a relation symbol of L.sum L₂ along
(LHom.id L).sumMap LHom.sumInr is the image of a relation symbol of L along LHom.sumInl.
Any set of arity-tagged function symbols of L[[γ]] containing none of the added constants
L.con c lies in the range of (L.lhomWithConstants γ).onFunction.
Every set of arity-tagged relation symbols of L[[γ]] lies in the range of
(L.lhomWithConstants γ).onRelation.
Every L[[γ]]-structure on M is the expansion of its L-reduct interpreting each c : γ
as (L.con c : M).