Pointed fragment spectra of coded classes #
For a fragment F, an arity n, and a class C of coded structures, the realized spectrum
Fragment.typeSpectrum F n C is the set of F-types of n-tuples of naturals in members of
C, counted across the whole class: two members realizing the same type contribute one point.
Fragment.pointedType F c a— the realized type at a tuple of a coded structure.pointedType_iso— pointed isomorphism invariance: an isomorphism of codes transports the type ofato the type ofe ∘ a.pointedType_zero_eq_sentenceTheory— arity zero recovers the sentence interface.typeSpectrum_countable_of_determining_cover— the counting theorem: if a countable family of descriptions covers the pointed structures ofCand any two pointed structures ofCsatisfying the same description have the sameF-type, the spectrum is countable. Descriptions may overlap, need not belong toF, and carry no measurability.typeSpectrum_singleton_countable,typeSpectrum_isoClass— one code, hence one isomorphism class, realizes countably many types at every arity: the countably many tuples of one structure. This is the per-model count that the counting theorem is not.measurableSet_pointedRealize,measurable_pointedType— joint measurability in the code and the tuple, a countable union over tuples of fixed-tuple measurability.typeSpectrum_countable_iff_encoded— the Cantor encoding through an enumeration of the slice is a comparison theorem, secondary to the intrinsic slice-indexed type.
Empty slices, empty fragments, empty classes, and repeated coordinates are all admitted; the
regression guard scripts/check_fragment_spectrum_regressions.lean exercises them. No
isomorphism-invariance of C is assumed anywhere. The relation between countable spectra at
every arity and thinness (scatteredness) is outside this module: the arity-zero direction
follows from the sentence-spectrum characterization, and the pointed-to-unpointed bridge is a
separate theorem.
Classical background: fragment types are Marker, Lectures on Infinitary Model Theory (Cambridge, 2016), Definition 2.2.19, and the Borel pointed-type map his Lemma 3.3.2; the spectrum over a class and the determining-cover packaging are as implemented here.
The realized F-type of a tuple of naturals in a coded structure.
Equations
- F.pointedType c a = F.realizedType ℕ a
Instances For
Pointed isomorphism invariance on codes.
Arity zero is the sentence interface: a sentence list inside F has the truth sequence
read off the arity-zero pointed type.
The spectrum #
The realized spectrum of F at arity n on a class C: the types of all n-tuples of
all members, counted across the class.
Equations
- F.typeSpectrum n C = (fun (p : L.StructureSpace × (Fin n → ℕ)) => F.pointedType p.1 p.2) '' C ×ˢ Set.univ
Instances For
One code realizes countably many types: the countably many tuples of one structure. This is the per-model count, not the counting theorem.
The spectrum of an isomorphism class is the spectrum of any representative.
The counting theorem #
Countable spectrum from a determining cover. A countable family of descriptions
χ e (formulas of arity n, not necessarily in F) covers the pointed structures of C, and
any two pointed structures of C satisfying the same description agree on every member of the
slice; then the realized spectrum of F at arity n on C is countable. Overlapping
descriptions and repeated tuple coordinates are admitted; no measurability of the cover is
used.
Joint measurability in the code and the tuple #
The pointed type is jointly measurable in the code and the tuple.
The Cantor encoding, as a comparison #
The Cantor encoding is secondary. Through a surjective enumeration of the slice, the
spectrum is countable iff its encoded image in Cantor space is: the encoding is injective on
types. The surjection ℕ → F.slice n excludes an empty slice from this particular comparison;
the intrinsic API above handles empty slices directly, and no padded encoding is needed.