Proper posets and the proper forcing axiom (PFA)
DefinitionSingularCardinals_PFAForcing notions are preorders with the convention that means is stronger than . Conditions are compatible if some satisfies and . A set is predense below if every is compatible with some member of ; is dense if every has an extension in . A filter is a nonempty, upward-closed in which any two members have a common extension in .
Names for ordinals. Below a condition , a name for an ordinal is given by a maximal antichain below (a set of pairwise incompatible conditions that is predense below ) together with an ordinal label for each ; for an ordinal set , a condition forces "the name lies in " iff is predense below .
Properness game. Fix . In round player I plays a name for an ordinal below , and player II answers with an ordinal . A strategy for II is winning if for every sequence of moves of I there is such that
is proper if, for every , player II has a winning strategy in this game.
PFA. The proper forcing axiom states: for every nonempty proper poset and every family of dense subsets of with , there is a filter with for every .
Formalization Note The usual definition of properness (via countable elementary submodels of , or via preservation of stationary subsets of ) needs a formalized forcing relation or model theory of set theory, which Mathlib lacks. This definition uses instead the game characterization of properness (Gray; Shelah, Proper and Improper Forcing), with names for ordinals given in antichain form and the forcing relation unfolded into predensity; this equivalence is a ZFC theorem but is not itself checked here, so this definition should be reviewed with particular care. Posets, index types and ordinal labels live in one fixed universe.
import Mathlib
universe u
namespace SingularCardinals
open Cardinal
/-! Forcing convention throughout: in a poset `P`, `q ≤ p` means `q` is a stronger condition. -/
/-- Two conditions are compatible if they have a common extension. -/
def Compatible {P : Type u} [Preorder P] (p q : P) : Prop := ∃ r, r ≤ p ∧ r ≤ q
/-- `S` is predense below `q`: every extension of `q` is compatible with some member of `S`. -/
def PredenseBelow {P : Type u} [Preorder P] (S : Set P) (q : P) : Prop :=
∀ r ≤ q, ∃ s ∈ S, Compatible r s
/-- `D` is dense: every condition has an extension in `D`. -/
def IsDense {P : Type u} [Preorder P] (D : Set P) : Prop := ∀ p : P, ∃ d ∈ D, d ≤ p
/-- A filter in the forcing sense: nonempty, upward closed, and any two members have a common
extension inside it. -/
def IsForcingFilter {P : Type u} [Preorder P] (G : Set P) : Prop :=
G.Nonempty ∧ (∀ p ∈ G, ∀ q, p ≤ q → q ∈ G) ∧ ∀ p ∈ G, ∀ q ∈ G, ∃ r ∈ G, r ≤ p ∧ r ≤ q
/-- A name for an ordinal below `p`, in antichain form: a maximal antichain below `p` whose
members are labelled by ordinals (the name takes the value `label a` on generic filters
containing `a`). -/
structure OrdinalNameBelow (P : Type u) [Preorder P] (p : P) where
antichain : Set P
le : ∀ a ∈ antichain, a ≤ p
pairwise_incompatible : antichain.Pairwise fun a b => ¬ Compatible a b
predense : PredenseBelow antichain p
label : P → Ordinal.{u}
/-- The properness game below `p`: in round `n` player I plays a name `ȧₙ` for an ordinal and
player II answers with an ordinal `βₙ` (computed by the strategy `σ` from I's moves so far).
`σ` is winning if for every play of I there is `q ≤ p` forcing `∀ n ∃ m, ȧₙ = βₘ`, i.e. for
every `n` the members of the `n`-th antichain whose label is some `βₘ` are predense below `q`. -/
def IsWinningProperStrategy {P : Type u} [Preorder P] {p : P}
(σ : List (OrdinalNameBelow P p) → Ordinal.{u}) : Prop :=
∀ x : ℕ → OrdinalNameBelow P p, ∃ q ≤ p, ∀ n : ℕ,
PredenseBelow {a ∈ (x n).antichain |
∃ m : ℕ, (x n).label a = σ (List.ofFn fun i : Fin (m + 1) => x i)} q
/-- A poset is proper if, below every condition, player II has a winning strategy in the
properness game (Gray–Shelah game characterization of properness). -/
def IsProper (P : Type u) [Preorder P] : Prop :=
∀ p : P, ∃ σ : List (OrdinalNameBelow P p) → Ordinal.{u}, IsWinningProperStrategy σ
/-- The proper forcing axiom: for every nonempty proper poset `P` and every family of `ℵ₁`
dense subsets of `P`, some filter meets every member of the family. -/
def PFA : Prop :=
∀ (P : Type u) [Preorder P] [Nonempty P], IsProper P →
∀ (ι : Type u), #ι = aleph 1 → ∀ D : ι → Set P, (∀ i, IsDense (D i)) →
∃ G : Set P, IsForcingFilter G ∧ ∀ i, (G ∩ D i).Nonempty
end SingularCardinals
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.