Atomic types of finite tuples #
AtomicIdx L n indexes equalities of positions and relation symbols applied to positions in
an n-tuple. Nullary relations are included, even for the empty tuple. SameAtomicType
expresses agreement on these tests, the initial level of back-and-forth equivalence.
For a relational language these are all atomic formulas. SameAtomicType requires a relational
language so that agreement on these tests is agreement on the full atomic type.
The construction follows the atomic tests in Cameron Freer's
cameronfreer/infinitary-logic, InfinitaryLogic/Scott/BackAndForth.lean.
An equality of tuple positions or a relation symbol applied to tuple positions. The arity of a relation may be zero.
- eq {L : FirstOrder.Language} {n : ℕ} (i j : Fin n) : AtomicIdx L n
- rel {L : FirstOrder.Language} {n k : ℕ} (r : L.Relations k) (f : Fin k → Fin n) : AtomicIdx L n
Instances For
A countable relation language has countably many atomic tests on a finite tuple.
A finite relation language has finitely many atomic tests on a finite tuple.
Evaluate an atomic test at a tuple.
Instances For
Agreement on all atomic formulas of a relational language, including nullary relations.
The tuples agree on each atomic test.
Instances For
Atomic-type agreement is pointwise agreement on the atomic tests.
Separate the equality and relation parts of atomic-type agreement.
Tuples with the same atomic type have the same equality pattern.
Tuples with the same atomic type agree on every relation, including nullary ones.
Every tuple agrees with itself on all atomic tests.
Atomic-type agreement is symmetric.
Atomic-type agreement is transitive across three structures.
Atomic-type agreement is preserved by reindexing both tuples along the same map of positions, which may repeat or omit entries.
In a relational language without nullary relation symbols, the empty tuples of any two structures have the same atomic type.