Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Property (3), p. 978 — split is monotone in its second argument

Proved
PaigeTarjan.Coarsest.split_monotone

by mikedeng1 · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

coarsest-partitionp2o-batch-p100bp2o-gran-per-chapterp2o-plan-paperp2o-v1partition-refinement

Let EEE be a relation on a finite set UUU, let PPP and QQQ be partitions of UUU with PPP a refinement of QQQ, and let S⊆US \subseteq US⊆U. Then

split(S,P) is a refinement of split(S,Q).\mathrm{split}(S, P) \text{ is a refinement of } \mathrm{split}(S, Q).split(S,P) is a refinement of split(S,Q).

Monotonicity of split\mathrm{split}split is the step that carries the invariant of Lemma 2 from one refinement step to the next.

Preamble
import Mathlib
import Definitions.Def_PaigeTarjan_Coarsest_Basic
Formal statement
namespace PaigeTarjan.Coarsest

/-- Property (3), p. 978: `split` is monotone in its second argument — if `S ⊆ U` and `P` is a
refinement of `Q`, then `split(S, P)` is a refinement of `split(S, Q)`. -/
theorem split_monotone {U : Type*} [Fintype U] [DecidableEq U]
    (E : U → U → Prop) [DecidableRel E] (P Q : Finset (Finset U)) (S : Finset U)
    (hP : IsPartition P) (hQ : IsPartition Q) (hPQ : Refines P Q) :
    Refines (split E S P) (split E S Q) := by sorry

end PaigeTarjan.Coarsest
Source
Paige, Tarjan, Three Partition Refinement Algorithms, SIAM J. Comput. 16 (1987), p. 978, property (3)
Read-back

What the Lean code literally says, in plain math · claude-opus-5-5

Take a finite set UUU with decidable equality, a decidable binary relation EEE on UUU, families PPP and QQQ of subsets of UUU, and a set S⊆US \subseteq US⊆U. Assume:

  • PPP is a partition of UUU;
  • QQQ is a partition of UUU;
  • PPP refines QQQ.

Then split⁡(S,P)\operatorname{split}(S, P)split(S,P) refines split⁡(S,Q)\operatorname{split}(S, Q)split(S,Q): every block of split⁡(S,P)\operatorname{split}(S, P)split(S,P) lies inside some block of split⁡(S,Q)\operatorname{split}(S, Q)split(S,Q). Here split⁡(S,⋅)\operatorname{split}(S, \cdot)split(S,⋅) replaces each block BBB by the nonempty sets among B∩E−1(S)B \cap E^{-1}(S)B∩E−1(S) and B∖E−1(S)B \setminus E^{-1}(S)B∖E−1(S), where E−1(S)={x:∃y∈S, xEy}E^{-1}(S) = \{x : \exists y \in S,\ x \mathrel{E} y\}E−1(S)={x:∃y∈S, xEy}.

Degenerate cases. If U=∅U = \varnothingU=∅, all families involved are empty and the claim is vacuous. If S=∅S = \varnothingS=∅, splitting leaves both partitions unchanged, and the claim reduces to the hypothesis that PPP refines QQQ.

Human review
  • Endorsed by Shuze Chen · Sep 27, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Sep 27, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me