A reduct embedding extends to a -homomorphism of -models
ProvedMoritaEquiv.MoritaData.exists_extension_of_homLet be a theory in a many-sorted signature , and let be Morita data over . Morita data adds product, coproduct, subset and quotient sorts, plus explicitly defined function and predicate symbols, giving the extended signature and the extended theory (D.ext). Let be the reduct functor (D.proj).
Statement. Let be models of and let be an elementary embedding between their -reducts. Then extends to a sort-indexed family of maps , one for every sort of , with two properties:
- agrees with on the old sorts: for every .
- commutes with the interpretation of every function symbol of (old symbols, new defined symbols, projections , injections , inclusions and quotient maps ):
This is the first half of the "Π is full" argument in Barrett–Halvorson. On a new sort, is forced: a product element goes to the unique element of with the images of its two projections, a coproduct element goes to , a subset element goes to the unique element whose inclusion is , and goes to . That these are well defined, and commute with the defined function symbols, follows because preserves the defining formulas.
import Mathlib import Definitions.Def_MoritaEquiv_defs open CategoryTheory
namespace MoritaEquiv
theorem MoritaData.exists_extension_of_hom {L : Sig} {T : Theory L} (D : MoritaData L T)
{N N' : Model D.ext} (f : D.proj.obj N ⟶ D.proj.obj N') :
∃ g : ∀ s : D.sig.Srt, N.str.carrier s → N'.str.carrier s,
(∀ (s : L.Srt) (x : N.str.carrier (D.incl.onSrt s)),
g (D.incl.onSrt s) x = ElemEmb.toFun f s x) ∧
∀ {m : ℕ} {dom : Fin m → D.sig.Srt} {s : D.sig.Srt} (F : D.sig.Func m dom s)
(x : (j : Fin m) → N.str.carrier (dom j)),
g s (N.str.funMap F x) = N'.str.funMap F (fun j => g (dom j) (x j)) := by sorry
end MoritaEquiv