Mathlib-grounded team-set closure substrate #
@cite{anttila-2021} @cite{vaananen-2007}
The deep mathematical content of Core/Logic/Team/Properties re-expressed
as facts about subsets of Finset α using mathlib's existing primitives:
| linglib name | mathlib name |
|---|---|
downwardClosed-shape | IsLowerSet (T : Set (Finset α)) |
unionClosed-shape | SupClosed (T : Set (Finset α)) |
emptyTeam-shape | ∅ ∈ T |
flat-shape | (defined below) |
Properties.lean's API is parameterised over Model → Form → Finset α → Prop for consumer ergonomics, but the content of every closure-property
theorem reduces to a fact about Set (Finset α) independent of formula
or model. This file states those facts at the parametric-content-free
level. Properties.lean becomes a thin wrapper exporting the consumer
form.
Why this matters #
The Form/Model parameters in Properties.lean are decorative: every
theorem unionClosed support φ ↔ ... reduces to "the set
{ t | support M φ t } is SupClosed." Hoisting to the mathlib level
exposes:
- The theorem is about lattice structure on
Finset α, not about logic. The flatness theorem is "principal lower set generated by atoms" — pure powerset combinatorics. - Cross-carrier portability:
Set α(used byQuestion) carries the same lattice structure (Set αis aCompleteBooleanAlgebrawith⊔ = ∪,⊥ = ∅). The same flatness theorem holds forSet (Set α)with mathlibIsLowerSetand arbitrary-union closure. TheQuestionbridge inCore/Question/Flatness.leanis theSetcarrier instance. - No re-proof per consumer: BSML, QBSML, and any future
team-semantic logic with
Finset αcarrier inherit the flatness theorem at zero substrate cost.
Mathlib alignment #
IsLowerSet (s : Set α) [LE α]—Mathlib.Order.Defs.Unbundled. ForFinset α, theLEinstance is⊆.SupClosed (s : Set α) [SemilatticeSup α]—Mathlib.Order.SupClosed. ForFinset α,⊔ = ∪.Finset αis aSemilatticeSupwithOrderBot(⊥ = ∅), so all three predicates apply directly.
A team-set: a subset of teams (each team is a Finset α).
Equivalently, the extension of a team-semantic predicate at a fixed
model + formula: { t : Finset α | support M φ t }.
Equations
- Core.Logic.Team.TeamSet α = Set (Finset α)
Instances For
A team-set T is flat iff its membership reduces pointwise:
s ∈ T ↔ every singleton drawn from s is in T.
Anttila Definition 2.2.1 (using "for all w ∈ s" — the standard Yang-Väänänen formulation).
Equivalently: T is the principal lower set generated by its
singletons (proved by isTeamFlat_iff_lower_supClosed_empty).
Equations
- Core.Logic.Team.IsTeamFlat T = ∀ (s : Finset α), s ∈ T ↔ ∀ w ∈ s, {w} ∈ T
Instances For
Anttila Proposition 2.2.2 at the substrate level: a team-set
is flat iff it is downward-closed under inclusion (IsLowerSet),
closed under binary union (SupClosed), and contains the empty team.
No formula or model parameters — this is a pure lattice-theoretic
fact about subsets of Finset α under inclusion + union.
The forward direction (flatness implies the three closure properties)
is by case analysis on s ∈ T. The backward direction (the three
properties imply flatness) inducts on s (Finset induction): empty
case uses HasEmpty, insert case uses SupClosed to combine the
singleton with the inductive hypothesis.
Backward direction extracted as a constructor: the three closure properties imply flatness. The most-used direction in consumers.
Forward extraction: flat team-sets are downward-closed.
Forward extraction: flat team-sets are sup-closed.
Forward extraction: flat team-sets contain the empty team.
A team predicate: a Finset α → Prop. Equivalent to TeamSet α via
set-builder, but more ergonomic for consumers who think of support M φ
as a function from teams to propositions.
The closure properties on a TeamPred are defined as the corresponding
properties on { t | P t } : TeamSet α.
Equations
- Core.Logic.Team.TeamPred α = (Finset α → Prop)
Instances For
A team-predicate is downward-closed iff { t | P t } is a lower set
under inclusion. Wraps mathlib's IsLowerSet; the underlying definition
is ∀ a b, a ⊆ b → P b → P a.
Equations
- P.IsDownward = IsLowerSet {t : Finset α | P t}
Instances For
A team-predicate is sup-closed iff { t | P t } is closed under
binary union. Wraps mathlib's SupClosed (with ⊔ = ∪ on Finset);
underlying: ∀ a b, P a → P b → P (a ∪ b).
Equations
- P.IsSupClosed = SupClosed {t : Finset α | P t}
Instances For
A team-predicate is flat iff its membership reduces pointwise:
P s ↔ ∀ w ∈ s, P {w}. Wraps IsTeamFlat on { t | P t }.
Equations
- P.IsFlat = Core.Logic.Team.IsTeamFlat {t : Finset α | P t}
Instances For
Anttila Proposition 2.2.2 in TeamPred form: a team-predicate is
flat iff it is downward-closed, sup-closed, and has the empty team.
Direct corollary of the TeamSet-level theorem.
Constructor: combine the three closure properties to get flatness.
Forward extraction: flat team-predicates are downward-closed.
Forward extraction: flat team-predicates are sup-closed.
Pointwise form of IsDownward: a team-predicate is downward-closed iff
∀ a b, a ⊆ b → P b → P a. Just unfolds IsLowerSet for the
{ t | P t } instance — Finset α's ≤ is ⊆.
Pointwise form of IsSupClosed: ∀ a b, P a → P b → P (a ∪ b).