Zulip Chat Archive

Stream: mathlib4

Topic: Elementary Extensions


Yongxi Lin (Aaron) (Dec 06 2025 at 18:00):

Given a language L and an L.Structure M, what is the best way to state in lean that M has an elementary extension N? Here's my attempt:

import Mathlib

open FirstOrder Language Structure

variable {L : Language} {M : Type*} [L.Structure M]

example :  (N : Type*) (hN : L.Structure N) (S : L.ElementarySubstructure N), Nonempty (S [L] M) := by sorry

This seems very uncanonical but this is the best I can do because the type of M is not set N, and L.ElementarySubstructure N is defined by using set N.

Aaron Anderson (Dec 06 2025 at 20:52):

You want to show that there is some N with an L.Structure N instance and an L.ElementaryEmbedding M N such that whatever other properties are satisfied by that elementary embedding.

Aaron Anderson (Dec 06 2025 at 20:53):

This is mathematically equivalent to there existing a substructure of N that is isomorphic to M, but is the version I would work with.


Last updated: Dec 20 2025 at 21:32 UTC