Atomic Diagrams for Relational Languages #
This file defines atomic types and atomic diagrams for relational first-order languages. These are the building blocks for Scott formulas.
Main Definitions #
AtomicIdx: An index type for atomic formulas over a relational language.atomicFormula: Builds an atomic formula from an index.atomicDiagram: The conjunction of all true/false atomic facts about a tuple.SameAtomicType: Two tuples have the same atomic type iff they satisfy the same atomics.
Implementation Notes #
We restrict to relational languages (L.IsRelational) so that the atomic diagram of a finite
tuple is determined by equality and relation holding information.
Index type for atomic formulas in a relational language with n free variables.
Either an equality between two variables, or a relation applied to variables.
- eq
{L : Language}
{n : ℕ}
(i j : Fin n)
: L.AtomicIdx n
Equality between variable i and variable j.
- rel
{L : Language}
{n l : ℕ}
(R : L.Relations l)
(f : Fin l → Fin n)
: L.AtomicIdx n
Relation R applied to variables given by f.
Instances For
Evaluates whether an atomic formula indexed by idx holds for a tuple a.
Equations
- (FirstOrder.Language.AtomicIdx.eq i j).holds a = (a i = a j)
- (FirstOrder.Language.AtomicIdx.rel R f).holds a = FirstOrder.Language.Structure.RelMap R (a ∘ f)
Instances For
Pushforward an atomic index through a function σ : Fin m → Fin n. This transforms an atomic index over m variables to one over n variables by composing indices.
Equations
- (FirstOrder.Language.AtomicIdx.eq i j).pushforward σ = FirstOrder.Language.AtomicIdx.eq (σ i) (σ j)
- (FirstOrder.Language.AtomicIdx.rel R f).pushforward σ = FirstOrder.Language.AtomicIdx.rel R (σ ∘ f)
Instances For
Builds an atomic formula from an index. The formula uses free variables for the tuple.
Equations
Instances For
The atomic formula as an Lω₁ω formula.
Equations
Instances For
The atomic diagram of a tuple: the conjunction over all atomic indices of either the atomic formula or its negation, depending on whether it holds.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two tuples have the same atomic type if they satisfy exactly the same atomic formulas.
Note on IsRelational: While this definition is well-formed without [L.IsRelational],
the notion of "same atomic type" only captures the full atomic equivalence for relational
languages. With function symbols, AtomicIdx doesn't cover terms built from functions,
so this would be a weaker notion than the standard "same atomic type" in model theory.
For Scott analysis, we restrict to relational languages where this captures the full notion.
Equations
Instances For
Same atomic type is reflexive.
Same atomic type is symmetric.
Same atomic type is transitive.
Same atomic type is preserved under relabeling.
If SameAtomicType a b and σ : Fin m → Fin n, then SameAtomicType (a ∘ σ) (b ∘ σ).