Finite-level thresholds for pure sets #
Back-and-forth equivalence between an infinite pure set X and a finite pure set Y
(empty language, arbitrary empty-language structure instances) is decided by a count: for tuples
a, b with the same equality pattern and a natural level k,
BFEquiv k n a b ↔ k ≤ spare b,
where spare b is the number of elements of Y outside the range of b (as Set.ncard,
meaningful for finite Y) (bfEquiv_natCast_iff). The positive direction answers a fresh
element on the infinite side by a spare one and an old element by its match; failure is pinned
exactly at spare b + 1
(not_bfEquiv_spare_succ): the infinite side plays a fresh element and the finite side must
answer with a fresh one, using up a spare, until none is left.
For empty tuples of ℕ and Fin m this is k ≤ m, with failure at m + 1
(bfEquiv_nat_fin_iff, not_bfEquiv_nat_fin_succ).
Also: every tuple of any pure set has orbit rank 0 (orbitRank_pure_eq_zero), the finite
counterpart of orbitRank_pureSet: a tuple with the same pattern is the image under a
permutation extended from the finite matching (exists_equiv_of_matching with the trivial
equivalence relation).
This module sits in the Scott layer: its import closure contains no fiber-assembly module.
Atomic agreement in the empty language, between two carriers, is agreement of the equality pattern.
Positive direction: a common pattern and k ≤ spare b give BFEquiv k.
Failure at spare b + 1, for any tuples: the infinite side plays fresh elements until
the finite side has no fresh answer.
The threshold: at a natural level k, equivalence holds iff the patterns agree and
k ≤ spare b.
Every tuple of any pure set has orbit rank 0, finite or infinite.
No isomorphism between an infinite and a finite structure.