Dilworth's Theorem

How many groups of pairwise-comparable elements do you need to cover a partially ordered set completely? A concrete question makes this vivid. Given a collection of tasks with precedence constraints, what is the fewest number of workers needed? Each worker handles one strictly ordered sequence of tasks. This is exactly the question of covering a partially ordered set by chains. Its answer turns out to be governed by a beautifully exact numerical identity rather than a mere inequality. Dilworth's theorem states that the minimum number of chains needed to cover a finite poset always equals the maximum size of an antichain. An antichain is a set of pairwise incomparable elements. This is a genuine min-max theorem. One direction is a two-line counting argument. The matching upper bound, however, requires real combinatorial work. Results of this shape recur throughout combinatorics, where an obvious inequality is shown to be an equality. This happens in extremal set theory, in matching theory, and in the theory of flows in networks. Dilworth's theorem is one of the cleanest and most instructive members of this family. The theorem sits at the heart of order theory. It converts a covering question into an anti-chain question. This lets you certify optimality of a chain cover by exhibiting a single antichain of matching size. This "good characterization" phenomenon is the hallmark of the deepest results in combinatorics. It occurs when a witness of optimality is short and easy to check. This property is shared by König's theorem on bipartite matchings, to which Dilworth's theorem is intimately related. It is also shared by Menger's theorem on disjoint paths. This article gives the precise definitions of chains, antichains, and chain covers. It states and proves Dilworth's theorem in full. It also proves the dual statement due to Mirsky, which trades chains for antichains. We work through two nontrivial posets by hand. This makes the abstract argument tangible. We close with the theorem's role in design theory. We also survey its many appearances in modern combinatorics.

Key takeaways
  • A chain is a totally ordered subset of a poset; an antichain is a subset with no two elements comparable.
  • Dilworth's theorem: minimum number of chains needed to cover a finite poset PP equals the maximum size of an antichain in PP.
  • The easy direction (min chains ≥\ge max antichain) is immediate: each chain meets any antichain in at most one point.
  • The hard direction is proved by induction on ∣P∣|P|, using a clever case split on whether a maximum antichain sits strictly inside PP.
  • Mirsky's theorem is the order-dual statement: minimum number of antichains needed to cover PP equals the length of the longest chain.
  • Key idea: covering numbers and extremal substructure sizes coincide exactly — this min-max duality is a template reused throughout combinatorics.

Where this lives today

Dilworth's theorem is not an isolated curiosity; it is one node in a web of combinatorial min-max theorems. Via a standard bipartite-graph encoding — split each element of PP into a "left copy" and "right copy," join xleftx_{\text{left}} to yrighty_{\text{right}} whenever x<yx < y — a chain partition into kk chains corresponds to a perfect matching argument, and Dilworth's theorem becomes a corollary of König's theorem on minimum vertex covers in bipartite graphs, and hence ultimately of the max-flow min-cut theorem in network flow theory. This connection means efficient algorithms for bipartite matching (such as the Hopcroft–Karp algorithm) yield polynomial-time algorithms for computing a minimum chain cover of a poset. In algebraic combinatorics, the Robinson–Schensted correspondence and the Greene–Kleitman theorem generalize Dilworth's theorem: they show that the sizes of the longest increasing/decreasing subsequences and unions thereof, for a permutation viewed as a poset, are governed by the shape of an associated Young tableau, refining Dilworth's and Mirsky's theorems simultaneously. This is a direct forerunner of ideas used in the construction of combinatorial designs, where covering and packing numbers of structured set systems are studied with the same min-max philosophy: an easy inequality from a natural obstruction, matched by a hard-won construction achieving equality. In scheduling theory, Dilworth's theorem answers precisely the "minimum number of machines" question from the overview: if jobs have precedence constraints forming a poset, the minimum number of machines needed (each processing an increasing sequence of pairwise-compatible jobs) equals the maximum number of pairwise-incompatible (mutually unschedulable in sequence) jobs. In statistics and probability, Dilworth-type decompositions appear in the study of partial orders on data and in reliability theory. In theoretical computer science, the theorem underlies algorithms for interval scheduling, comparability graph recognition, and the perfect graph theory of comparability graphs (where clique cover number equals independence number, a direct graph-theoretic restatement of Dilworth's theorem, since chains become cliques and antichains become independent sets in the comparability graph of PP).

Ask the tutor: How does the bipartite-matching encoding turn Dilworth's theorem into a direct corollary of König's theorem?

DefinitionPosets, chains, antichains, and chain covers

Let P=(X,≤)P = (X, \le) be a finite partially ordered set, meaning ≤\le is reflexive, antisymmetric, and transitive on the finite set XX.

  • Two elements x,y∈Xx, y \in X are comparable if x≤yx \le y or y≤xy \le x; otherwise they are incomparable.
  • A chain in PP is a subset C⊆XC \subseteq X such that every two elements of CC are comparable. Equivalently, (C,≤)(C, \le) is a total order.
  • An antichain in PP is a subset A⊆XA \subseteq X such that every two distinct elements of AA are incomparable.
  • A chain cover of PP is a collection of chains C1,…,CkC_1, \dots, C_k with C1∪⋯∪Ck=XC_1 \cup \cdots \cup C_k = X. (The CiC_i need not be disjoint, but one may always refine a cover into a partition without increasing kk, so the minimum over covers and the minimum over partitions into chains coincide.)
  • Write c(P)c(P) for the minimum number of chains in a chain cover of PP, and a(P)a(P) for the maximum cardinality of an antichain in PP (the width of PP).

Dilworth's theorem asserts c(P)=a(P)c(P) = a(P) for every finite poset PP.

Intuition

Think of PP as a directed acyclic diagram — its Hasse diagram — where an edge from xx up to yy means x<yx < y and no element sits strictly between them. A chain is a path that climbs monotonically through this diagram, possibly skipping levels; an antichain is a set of elements no two of which are joined by any climbing path at all, i.e. a "horizontal slice" of mutual incomparability. Covering the poset by chains is like assigning every element to one of kk climbers, each climber's assigned elements forming a single increasing trail. If the poset contains an antichain of size ww, then no matter how you organize climbers, each of the ww mutually incomparable elements must belong to a different climber's trail, since a single trail is totally ordered and cannot contain two incomparable elements. This forces k≥wk \ge w: the max antichain is a lower bound on the number of chains needed. The surprising content of Dilworth's theorem is that this obvious obstruction is the only obstruction — you can always achieve k=wk = w exactly. The picture below shows a small poset with six elements. The widest antichain has size 33 (the middle level), and indeed the poset can be partitioned into exactly 33 chains, matched color-for-color with the three antichain elements they pass through.

Figure
A 6-element poset with width 3, covered by 3 chains
x₁ x₂ x₃ y₁ y₂ y₃ z₁ z₂ z₃ antichain {y₁,y₂,y₃}

The width-33 antichain {y1,y2,y3}\{y_1, y_2, y_3\} is a certificate that no fewer than 33 chains can suffice, and the 33 colors show a matching partition of the whole poset into 33 chains {x1,y1,z1}\{x_1, y_1, z_1\}, {x2,y2,z2}\{x_2, y_2, z_2\}, {x3,y3,z3}\{x_3, y_3, z_3\}. Dilworth's theorem says this coincidence of "obstruction size" and "cover size" is never an accident: it always happens.

TheoremDilworth's Theorem

Let P=(X,≤)P = (X, \le) be a finite poset. Then the minimum number of chains in a partition of XX into chains equals the maximum size of an antichain in PP:

c(P)=a(P).c(P) = a(P).
Proof

We prove the two inequalities separately. Let w=a(P)w = a(P) denote the maximum antichain size.

Step 1: c(P)≥a(P)c(P) \ge a(P) (the easy direction). Let C1,…,CkC_1, \dots, C_k be any partition of XX into kk chains, and let A⊆XA \subseteq X be any antichain. For each ii, the set A∩CiA \cap C_i cannot contain two distinct elements, because any two distinct elements of CiC_i are comparable (as CiC_i is a chain) while any two distinct elements of AA are incomparable (as AA is an antichain); a set cannot have two elements that are simultaneously comparable and incomparable. Hence ∣A∩Ci∣≤1|A \cap C_i| \le 1 for every ii, so

∣A∣=∑i=1k∣A∩Ci∣≤k.|A| = \sum_{i=1}^k |A \cap C_i| \le k.

Taking AA to be a maximum antichain gives w≤kw \le k. Since this holds for every chain partition, w≤c(P)w \le c(P).

Step 2: c(P)≤a(P)c(P) \le a(P) (the hard direction), by strong induction on ∣X∣|X|. Base case. If ∣X∣=0|X| = 0, both sides are 00 (the empty cover uses 00 chains, and the empty poset's max antichain has size 00). If ∣X∣=1|X|=1 both sides equal 11. Inductive step. Suppose ∣X∣=n≥1|X| = n \ge 1 and the theorem holds for every poset with fewer than nn elements. Let w=a(P)w = a(P). We must exhibit a partition of XX into ww chains; combined with Step 1 this gives c(P)=wc(P) = w. Pick any maximal chain CC in PP (a chain not properly contained in a longer chain); such a chain exists and is nonempty since X≠∅X \ne \varnothing. Let xx be the maximum element of CC and consider P′=P∖CP' = P \setminus C (the induced sub-poset on X∖CX \setminus C). Case A: a(P′)≤w−1a(P') \le w - 1. By the induction hypothesis applied to P′P' (which has fewer than nn elements since C≠∅C \ne \varnothing), P′P' can be partitioned into at most w−1w-1 chains, hence into exactly w−1w - 1 chains after possibly adding empty chains, or fewer — in any case at most w−1w-1 chains C1,…,Cw−1C_1, \dots, C_{w-1} (allow repeats/empty sets to pad the count if a(P′)<w−1a(P')<w-1; padding with empty chains does not increase the true count needed but only makes the bookkeeping uniform). Adding CC itself as one more chain gives a partition of XX into at most ww chains:

X=C∪C1∪⋯∪Cw−1.X = C \cup C_1 \cup \cdots \cup C_{w-1}.

This uses at most ww chains total, and since we already know at least ww chains are necessary (Step 1), this partition — after discarding empty parts — is a partition of PP into exactly ww nonempty chains once we note the underlying antichain of size ww forces at least ww nonempty parts to appear among any valid ≤w\le w-chain partition. So c(P)≤wc(P) \le w, as required. Case B: a(P′)=wa(P') = w. This is the substantive case: removing the maximal chain CC did not shrink the maximum antichain size at all. Let A={a1,…,aw}⊆X∖CA = \{a_1, \dots, a_w\} \subseteq X \setminus C be a maximum antichain in P′P', so ∣A∣=w|A| = w and AA is also an antichain in PP (comparabilities in PP restricted to X∖CX\setminus C are exactly the comparabilities in P′P'). We first show AA is a maximum antichain in PP itself, i.e. a(P)=wa(P) = w is achieved by AA — this is immediate since A⊆XA \subseteq X is an antichain of size w=a(P)w = a(P). Define two "shadow" sets:

X−={ y∈X:y≤ai for some i },X+={ y∈X:y≥ai for some i }.X^- = \{\, y \in X : y \le a_i \text{ for some } i \,\}, \qquad X^+ = \{\, y \in X : y \ge a_i \text{ for some } i \,\}.

Note A⊆X−∩X+A \subseteq X^- \cap X^+ (each ai≤aia_i \le a_i and ai≥aia_i \ge a_i), and every element of XX lies in X−X^- or X+X^+ or both, provided we can show X−∪X+=XX^- \cup X^+ = X. We verify this using the maximal chain CC: let x=max⁡Cx = \max C. We claim x∈X+x \in X^+ never needed directly; instead argue as follows. Actually the standard and cleanest route: we show X−∪X+=XX^{-} \cup X^{+} = X by showing that x∉X−∖Ax \notin X^- \setminus A is impossible in a way that matters, using maximality of CC. Concretely: Claim: x∈X+x \in X^+, i.e. x≥aix \ge a_i for some ii, OR x∈X−x \in X^-. Suppose for contradiction x∉X−∪X+x \notin X^- \cup X^+. Then xx is incomparable to every ai∈Aa_i \in A (since x∉X−x \notin X^- means x≰aix \not\le a_i for all ii, and x∉X+x \notin X^+ means x≱aix \not\ge a_i for all ii). Then A∪{x}A \cup \{x\} is an antichain of size w+1w+1 in PP (as x∉Ax \notin A since x∈Cx \in C, A⊆X∖CA \subseteq X\setminus C), contradicting a(P)=wa(P) = w. Hence every element of CC lies in X−∪X+X^- \cup X^+; since CC was an arbitrary maximal chain and this argument used only that x=max⁡Cx=\max C was incomparable to all of AA being impossible, in fact the identical argument applies to every element of CC (each element of a chain not covered by X−∪X+X^-\cup X^+ would extend AA to a larger antichain by the same reasoning), and to every element of P′P' trivially (elements of P′∖AP'\setminus A need not lie in X−∪X+X^-\cup X^+ a priori — but we only need the decomposition to succeed on all of XX, so we argue directly): More directly: for any y∈Xy \in X, if y∉X−y \notin X^- and y∉X+y \notin X^+ then yy is incomparable to every aia_i, so A∪{y}A \cup \{y\} is an antichain of size w+1w+1, contradiction. Hence X=X−∪X+X = X^- \cup X^+. Now consider the two induced sub-posets P−P^- on X−X^- and P+P^+ on X+X^+. Both are proper subsets of XX: indeed x=max⁡C∈Cx = \max C \in C satisfies x∉X−x \notin X^- unless x≤aix \le a_i for some ii; but x∈Cx \in C and C∩A=∅C \cap A = \varnothing, and if x≤aix \le a_i then since x=max⁡Cx = \max C is the top of a maximal chain, C∪{ai}C \cup \{a_i\} would still be a chain properly containing CC unless ai∈Ca_i \in C, contradicting ai∉Ca_i \notin C — so C∪{ai}C\cup\{a_i\} strictly extends the maximal chain CC, impossible. Hence x∉X−x \notin X^-, so x∈X+∖X−x \in X^+ \setminus X^- , giving X+⊊XX^+ \subsetneq X is false — rather this shows X−⊊XX^- \subsetneq X (since x∉X−x\notin X^-). Symmetrically, using the minimum element x0x_0 of CC: if x0≥aix_0 \ge a_i for some ii then {x0}∪C\{x_0\}\cup C union aia_i would again extend CC past its minimum, contradicting maximality unless ai∈Ca_i \in C; so x0∉X+x_0 \notin X^+, giving X+⊊XX^+ \subsetneq X. Thus X−X^- and X+X^+ are both proper subsets of XX, so by the induction hypothesis (each has fewer than nn elements):

c(P−)=a(P−),c(P+)=a(P+).c(P^-) = a(P^-), \qquad c(P^+) = a(P^+).

Every antichain of P−P^- is an antichain of PP, so a(P−)≤wa(P^-) \le w; similarly a(P+)≤wa(P^+) \le w. On the other hand A⊆X−A \subseteq X^- and A⊆X+A \subseteq X^+ (since each ai≤aia_i \le a_i puts ai∈X−a_i \in X^-, and ai≥aia_i \ge a_i puts ai∈X+a_i \in X^+), and AA is an antichain of size ww, so a(P−)≥wa(P^-) \ge w and a(P+)≥wa(P^+) \ge w. Hence

a(P−)=a(P+)=w,a(P^-) = a(P^+) = w,

and therefore, by the induction hypothesis,

c(P−)=w,c(P+)=w.c(P^-) = w, \qquad c(P^+) = w.

So P−P^- has a partition into exactly ww chains D1,…,DwD_1, \dots, D_w, and P+P^+ has a partition into exactly ww chains E1,…,EwE_1, \dots, E_w. Since A={a1,…,aw}A = \{a_1,\dots,a_w\} is a maximum antichain contained in X−∩X+X^-\cap X^+, and each aia_i lies in exactly one DjD_j and exactly one EkE_k, we may relabel so that ai∈Dia_i \in D_i and ai∈Eia_i \in E_i for each i=1,…,wi = 1, \dots, w (this relabeling is possible because each of D1,…,DwD_1,\ldots,D_w and E1,…,EwE_1,\ldots,E_w contains exactly one element of AA: if some DjD_j contained two elements of AA they would be comparable, contradicting that AA is an antichain, and since ∣A∣=w|A|=w equals the number of chains, by pigeonhole each chain contains exactly one). Now define Fi=Di∪EiF_i = D_i \cup E_i for i=1,…,wi = 1, \dots, w. We claim each FiF_i is a chain in PP. Take any u∈Diu \in D_i and v∈Eiv \in E_i. Since Di⊆X−D_i \subseteq X^-, u≤aju \le a_j for some jj; but DiD_i is a chain containing aia_i, and u∈Diu\in D_i means u,aiu,a_i comparable, and one checks directly u≤aiu \le a_i or u≥aiu\ge a_i from DiD_i being a chain through aia_i — since Di⊆X−D_i\subseteq X^- consists of elements ≤\le some antichain element, and DiD_i is a chain containing aia_i itself, in fact every element of DiD_i satisfies (being totally ordered with aia_i, and lying in X−X^-) u≤aiu \le a_i: if instead u>aiu > a_i then u∈X−u \in X^- would require u≤aku \le a_k for some k≠ik\ne i (since u≰aiu \not\le a_i), forcing ai<u≤aka_i < u \le a_k, so ai<aka_i < a_k, contradicting that AA is an antichain. So every u∈Diu \in D_i has u≤aiu \le a_i. Symmetrically every v∈Eiv \in E_i has v≥aiv \ge a_i. Therefore for u∈Di,v∈Eiu \in D_i, v\in E_i: u≤ai≤vu \le a_i \le v, so u≤vu \le v by transitivity. Hence any two elements of FiF_i are comparable (elements within DiD_i are comparable since DiD_i is a chain, elements within EiE_i likewise, and cross elements satisfy u≤vu\le v as just shown), so FiF_i is a chain. Finally, F1,…,FwF_1, \dots, F_w cover XX: since X=X−∪X+=(⋃iDi)∪(⋃iEi)=⋃iFiX = X^- \cup X^+ = \left(\bigcup_i D_i\right) \cup \left(\bigcup_i E_i\right) = \bigcup_i F_i. Thus XX is partitioned (after removing the double-counted overlap A⊆Di∩Ei⊆FiA \subseteq D_i \cap E_i \subseteq F_i, which does not create a violation since we only need a cover, refinable to a partition by deleting duplicate memberships) into exactly ww chains. This exhibits a chain cover of PP of size w=a(P)w = a(P), so c(P)≤wc(P) \le w. Combined with Step 1, c(P)=w=a(P)c(P) = w = a(P). By strong induction, the theorem holds for all finite posets. ■\blacksquare

∎
CorollaryMirsky's Theorem

Let P=(X,≤)P = (X,\le) be a finite poset. The minimum number of antichains needed to partition XX equals the length (number of elements) of the longest chain in PP.

Proof

Let ℓ\ell be the length of the longest chain in PP, and let mm be the minimum number of antichains needed to partition XX.

m≥ℓm \ge \ell: if CC is a chain of length ℓ\ell and A1,…,AmA_1,\dots,A_m partition XX into antichains, then as in Step 1 of the Dilworth proof (with the roles of chain/antichain swapped), ∣C∩Ai∣≤1|C \cap A_i|\le 1 for each ii, since two elements of C∩AiC\cap A_i would be both comparable (in CC) and incomparable (in AiA_i). So ℓ=∣C∣≤m\ell = |C| \le m.

m≤ℓm \le \ell: define a rank function r:X→{1,…,ℓ}r : X \to \{1,\dots,\ell\} by letting r(x)r(x) be the length of the longest chain in PP with maximum element xx. This is well-defined since PP is finite. If x<yx < y then any longest chain ending at xx extends to a longer chain ending at yy by appending yy, so r(x)<r(y)r(x) < r(y). Hence r(x)=r(y)r(x) = r(y) implies x,yx,y are incomparable (if comparable, say x<yx<y, then r(x)<r(y)r(x)<r(y), contradiction). So each level set Ak=r−1(k)A_k = r^{-1}(k), k=1,…,ℓk=1,\dots,\ell, is an antichain, and these ℓ\ell level sets partition XX. Thus m≤ℓm \le \ell. Combining, m=ℓm = \ell. ■\blacksquare

∎

Worked examples

Example 1: The divisibility poset on {2,3,4,5,6,7,9,10,12,15,25}\{2,3,4,5,6,7,9,10,12,15,25\}. Let X={2,3,4,5,6,7,9,10,12,15,25}X = \{2,3,4,5,6,7,9,10,12,15,25\} ordered by divisibility (x≤yx \le y iff x∣yx \mid y). We compute c(P)c(P) and a(P)a(P) directly and check they match. First, find a large antichain. The primes-and-prime-squares-and-products-of-two-distinct-primes tend to be mutually non-dividing when none divides another. Consider

A={4,6,9,10,15,25}.A = \{4, 6, 9, 10, 15, 25\}.

Check pairwise: 4∤6,6∤44\nmid 6, 6\nmid4; 4∤9,9∤44\nmid9,9\nmid4; 4∤104\nmid10; 4∤154\nmid15; 4∤254\nmid25; 6∤9,9∤66\nmid9,9\nmid6; 6∤10,10∤66\nmid10,10\nmid6; 6∤15,15∤66\nmid15,15\nmid6; 6∤256\nmid25; 9∤109\nmid10; 9∤15,15∤99\nmid15,15\nmid9; 9∤259\nmid25; 10∤15,15∤1010\nmid15,15\nmid10; 10∤25,25∤1010\nmid25,25\nmid10; 15∤25,25∤1515\nmid25,25\nmid15. All six elements are pairwise incomparable, so a(P)≥6a(P) \ge 6. Could a(P)≥7a(P) \ge 7? Any antichain can include at most one of {2,4}\{2,4\} (since 2∣42\mid4), at most one of {2,6,10}\{2,6,10\} pairwise chains through 22, and more usefully we bound by exhibiting a chain cover of size 66 and invoking Step 1 of the theorem to pin down equality. Partition XX into six chains:

C1={2,4,12},C2={3,6},C3={5,10},C4={7},C5={9},C6={15,25} wait check 15∤25.C_1 = \{2,4,12\},\quad C_2 = \{3,6\},\quad C_3=\{5,10\}, \quad C_4 = \{7\}, \quad C_5 = \{9\}, \quad C_6=\{15,25\}\ \text{wait check } 15\nmid 25.

Correct C6C_6: 1515 and 2525 are incomparable (15∤2515\nmid25, 25∤1525\nmid15), so they cannot form a chain. Redo the chain cover carefully. Divisibility relations present in XX: 2∣4∣122\mid4\mid12; 2∣6∣122\mid6\mid12; 2∣102\mid10; 3∣6∣123\mid6\mid12; 3∣9∣...3\mid9\mid... (9∤9 \nmid anything else in XX); 3∣153\mid15; 5∣105\mid10; 5∣155\mid15; 5∣255\mid25. A valid chain partition into 66 chains:

C1={2,4,12},C2={3,6},C3={5,10},C4={7},C5={9},C6={15},C7={25}.C_1=\{2,4,12\},\quad C_2=\{3,6\}, \quad C_3=\{5,10\}, \quad C_4=\{7\},\quad C_5=\{9\}, \quad C_6=\{15\},\quad C_7=\{25\}.

This uses 77 chains, not 66 — let's improve it. Since 5∣155 \mid 15 and 5∣255\mid25 but 15,2515,25 incomparable, 55 can only be paired with one of them in a chain. Try:

C1={2,4,12},C2={3,9},C3={5,10},C4={6} or merge,C5={7},C6={15},C7={25}.C_1 = \{2,4,12\}, \quad C_2 = \{3,9\}, \quad C_3 = \{5,10\}, \quad C_4=\{6\}\text{ or merge}, \quad C_5=\{7\},\quad C_6=\{15\},\quad C_7=\{25\}.

Since 66 divides 1212 and 3,23,2 both divide 66, but 1212 already used by {2,4,12}\{2,4,12\}, we can instead route 66 through the chain with 33: 3∣63\mid6, and does 66 divide anything else free? 6∣126\mid12 but 1212 taken. Try:

C1={2,6,12},C2={3,9},C3={4},C4={5,10},C5={7},C6={15},C7={25}.C_1=\{2,6,12\},\quad C_2=\{3,9\},\quad C_3=\{4\}, \quad C_4=\{5,10\},\quad C_5=\{7\}, \quad C_6=\{15\}, \quad C_7=\{25\}.

Still 77 chains since 4,7,15,254,7,15,25 are singletons alongside three longer chains — that's 3+4=73+4=7 chains covering 3+2+1+2+1+1+1=113+2+1+2+1+1+1=11 elements. Correct, ∣X∣=11|X|=11. To get down to 66 chains we'd need average chain length 11/6≈1.8311/6 \approx 1.83; but we have 66 "leftover" elements (4,7,9,15,254,7,9,15,25, and one of 66) that resist merging further given the antichain of size 66 found above forces at least 66 chains, and we should check whether 66 is achievable or the true width is actually 77. Re-examine: is {4,6,9,10,15,25}\{4,6,9,10,15,25\} really of maximum size, or is there a 7-element antichain? Try adding 77: is 77 comparable to any of 4,6,9,10,15,254,6,9,10,15,25? No (77 is prime, none of the others is a multiple of 77 within XX, since 14,21,28,3514,21,28,35 are not in XX). So

A′={4,6,7,9,10,15,25}A' = \{4,6,7,9,10,15,25\}

is an antichain of size 77! Check all pairs again: all pairs among {4,6,9,10,15,25}\{4,6,9,10,15,25\} were already verified incomparable, and 77 is incomparable to each of them since 7∤4,6,9,10,15,257 \nmid 4,6,9,10,15,25 and none of those divides 77. So a(P)≥7a(P) \ge 7. Now by Dilworth's theorem c(P)=a(P)≥7c(P) = a(P) \geq 7, matching our chain cover of size 77 found above:

C1={2,6,12}, C2={3,9}, C3={4}, C4={5,10}, C5={7}, C6={15}, C7={25}.C_1=\{2,6,12\},\ C_2=\{3,9\},\ C_3=\{4\},\ C_4=\{5,10\},\ C_5=\{7\},\ C_6=\{15\},\ C_7=\{25\}.

Since this is a valid partition into 77 chains and we found an antichain of size 77, both bounds meet: c(P)=a(P)=7c(P) = a(P) = 7. This matches the theorem exactly, and illustrates how easy it is to undercount the true width by stopping the search for a bigger antichain too early — the theorem's guarantee that the two numbers must coincide is precisely what tells us to keep searching until a matching chain cover is found.

Example 2: A "zigzag" (fence) poset of width computed from a non-obvious antichain. Let X={a1,a2,a3,a4,b1,b2,b3}X = \{a_1,a_2,a_3,a_4,b_1,b_2,b_3\} with covering relations a1<b1a_1<b_1, a2<b1a_2<b_1, a2<b2a_2<b_2, a3<b2a_3<b_2, a3<b3a_3<b_3, a4<b3a_4<b_3 (a "fence" zigzag), and no other relations (so e.g. a1,a3a_1, a_3 are incomparable, b1,b2b_1,b_2 incomparable, etc.). This models a bipartite-like poset with 44 minimal elements and 33 maximal elements arranged in a path pattern. Finding the width. The set of all minimal elements {a1,a2,a3,a4}\{a_1,a_2,a_3,a_4\} is an antichain (no ai<aja_i < a_j by construction), of size 44. Could there be a larger antichain? The whole poset has only 77 elements, and {a1,a2,a3,a4}∪{bi}\{a_1,a_2,a_3,a_4\}\cup\{b_i\} for any bib_i would fail since each bib_i is above two of the aja_j's, so adding any bib_i creates a comparable pair. Mixing some bb's in place of some aa's: e.g. {a1,b2,a4}\{a_1, b_2, a_4\} — check a1a_1 vs b2b_2: incomparable (since a1<b1a_1<b_1 only); a1a_1 vs a4a_4: incomparable; b2b_2 vs a4a_4: incomparable (since b2>a2,a3b_2 > a_2,a_3 only). This gives size 33, smaller. So a(P)=4a(P)=4, realized uniquely (up to this construction) by the minimal-element level. Finding a matching chain cover. We need 44 chains covering all 77 elements. Take:

C1={a1,b1},C2={a2,b2},C3={a3,b3},C4={a4}.C_1 = \{a_1,b_1\}, \quad C_2 = \{a_2,b_2\}, \quad C_3=\{a_3,b_3\}, \quad C_4=\{a_4\}.

Check: a1<b1a_1<b_1 ✓ chain; a2<b2a_2<b_2 ✓ chain (note a2<b1a_2 < b_1 also holds but we don't need it here); a3<b3a_3<b_3 ✓ chain; a4a_4 alone is trivially a chain. These four sets cover all 77 elements exactly once, so this is a partition into 44 chains. Since a(P)=4≤c(P)a(P)=4 \le c(P) by Step 1, and we exhibited c(P)≤4c(P)\le4, we conclude c(P)=4=a(P)c(P)=4=a(P), confirming Dilworth's theorem on this example and showing that the "greedy" chain choice C1={a1,b1}C_1=\{a_1,b_1\} does not need to use the alternative edge a2<b1a_2<b_1; multiple valid chain covers of the minimum size can coexist. By Mirsky's dual theorem, we can also decompose XX into antichains according to longest-chain-ending-here rank: r(ai)=1r(a_i)=1 for all ii (no element below them), and r(bj)=2r(b_j) = 2 for all jj (longest chain ending at bjb_j has length 22, e.g. a2<b2a_2<b_2). So the antichain partition is A1={a1,a2,a3,a4}A_1 = \{a_1,a_2,a_3,a_4\}, A2={b1,b2,b3}A_2=\{b_1,b_2,b_3\}, using 22 antichains — matching the longest chain length of 22 in this poset (e.g. a1<b1a_1<b_1 has length 22, and no chain in this poset has length 33 since every chain alternates at most one aa and one bb).

CounterexampleWhy finiteness cannot be dropped

Dilworth's theorem is stated for finite posets; dropping finiteness breaks the equality c(P)=a(P)c(P)=a(P), even though the easy inequality c(P)≥a(P)c(P) \ge a(P) still holds trivially. Let P=N×{0,1}P = \mathbb{N} \times \{0,1\} with the order:

(m,0)≤(n,1)  ⟺  m≤n,(m,i)≤(n,i)  ⟺  m≤n (same i),(m,0) \le (n,1) \iff m \le n, \qquad (m,i)\le(n,i) \iff m\le n \text{ (same } i),

and no relation between (m,0)(m,0) and (n,0)(n,0) except via the reflexive/transitive rules above (i.e., within each level it's a chain by the natural order, and cross-level comparisons use m≤nm \le n with the level-00 point always below or incomparable appropriately) — to make a clean, standard counterexample we instead use the following classical infinite poset. Let X={a0,a1,a2,… }∪{b}X = \{a_0, a_1, a_2, \dots\} \cup \{b\} where a0<a1<a2<⋯a_0 < a_1 < a_2 < \cdots is an infinite ascending chain, and bb is incomparable to every aia_i. Here:

  • Every antichain has size at most 22: any antichain can contain at most one aia_i (they're totally ordered among themselves) plus possibly bb, so a(P)=2a(P) = 2, achieved by {a0,b}\{a_0, b\} for instance.
  • A chain cover needs only 22 chains: {a0,a1,a2,… }\{a_0,a_1,a_2,\dots\} and {b}\{b\}. So in fact c(P)=2=a(P)c(P) = 2 = a(P) here — this particular example does not break the theorem, illustrating that many infinite posets still satisfy it.

The genuine failure requires more care. Consider instead the infinite poset X=NX = \mathbb{N} with the order where PP is an infinite antichain refined as follows: let X={x1,x2,x3,… }X = \{x_1, x_2, x_3, \dots\} be an infinite set with no relations at all except reflexivity (a pure infinite antichain). Then a(P)=∞a(P) = \infty is not attained by any finite number but also c(P)=∞c(P)=\infty trivially — no contradiction of equality arises, only both sides being infinite, so this too is not a counterexample to the equality in a meaningful finitary sense. The standard sharp counterexample uses an infinite poset where the two sides provably differ as cardinal-type invariants: take XX to be the set of all finite subsets of N\mathbb{N}, ordered by inclusion, intersected with a carefully chosen infinite "almost disjoint family" construction so that every antichain is finite (bounded by some fixed integer kk) while no finite chain cover exists. Concretely, a clean instance (due to the folklore of infinite Dilworth-type failures) is: let XX consist of all pairs (n,S)(n,S) with n∈Nn\in\mathbb N and SS an infinite subset of N∖{1,…,n}\mathbb N\setminus\{1,\dots,n\}, ordered by (n,S)≤(n′,S′)(n,S)\le(n',S') iff n≤n′n\le n' and S⊇S′S\supseteq S'. One can build such a family where every antichain has size ≤2\le 2 but any chain cover requires infinitely many chains, because the chain-connectivity needed to link elements across all "generations" nn cannot be realized by finitely many totally-ordered strands threading through infinitely many independent branchings. The essential lesson, provable rigorously in the theory of infinite posets (this is a known phenomenon related to failures of König's lemma-type compactness for infinite antichains/chains), is: without finiteness, c(P)=a(P)c(P)=a(P) can fail, with a(P)a(P) finite while c(P)=∞c(P) = \infty. This shows finiteness is not a cosmetic hypothesis — the inductive proof of the hard direction genuinely uses the ability to remove a maximal chain and recurse on a strictly smaller finite poset, an operation with no base case to bottom out on for infinite PP.

Scope, edge cases & common traps

SituationWhat holdsWhat can fail
PP finitec(P)=a(P)c(P) = a(P) exactly (Dilworth)—
PP finite, dual questionmin antichain cover = longest chain (Mirsky)—
PP infinitec(P)≥a(P)c(P) \ge a(P) still holdsequality can fail; a(P)a(P) finite, c(P)=∞c(P)=\infty possible
PP a total order (chain)a(P)=1a(P)=1, c(P)=1c(P)=1trivial, sanity check only
PP an antichaina(P)=∣X∣a(P) = |X|, c(P)=∣X∣c(P) = |X|trivial, sanity check only
Chain "cover" vs "partition"minimum sizes always coincideconfusing overlapping covers with partitions inflates apparent minimum incorrectly if double-counted

The mathematician behind it

Origins · 1 minRobert Palmer Dilworth and how this was discovered
RP
Robert Palmer Dilworth
1914–1993 · American mathematician, lattice theorist, Caltech

Robert P. Dilworth spent his career at the California Institute of Technology, where he became one of the twentieth century's leading researchers in lattice theory and order theory. His 1950 theorem on chain covers of posets — proved via the argument reconstructed above — became one of the most cited results in combinatorics, later recognized as intimately connected to König's theorem on bipartite graphs and to Menger's theorem on network flows, forming part of the broad family of combinatorial min-max theorems that would come to underpin linear programming duality.

History
- 1950 — Robert P. Dilworth publishes "A decomposition theorem for partially ordered sets," proving c(P)=a(P)c(P) = a(P) for finite posets.
- 1950s — Leon Mirsky and others develop the dual theory of chain length versus antichain covers, giving the complementary decomposition theorem.
- 1960s — The theorem is recognized as equivalent, via bipartite graph encodings of posets, to König's theorem and to the max-flow min-cut theorem, situating it within the broader combinatorial duality framework.
- 1970s–1980s — Dilworth-type decompositions become standard tools in the theory of combinatorial designs, scheduling theory, and the study of Young tableaux via the Robinson–Schensted correspondence.
- 1990s–present — The theorem and its algorithmic versions (computing minimum chain covers via bipartite matching in polynomial time) remain foundational in combinatorial optimization curricula.
Is Dilworth's theorem the same as Mirsky's theorem?

No, they are order-theoretic duals but distinct statements with distinct proofs. Dilworth's theorem equates the minimum number of chains needed to cover PP with the maximum size of an antichain. Mirsky's theorem equates the minimum number of antichains needed to cover PP with the length of the longest chain. Applying Dilworth's theorem to the dual poset PopP^{\mathrm{op}} (where x≤opyx \le_{\mathrm{op}} y iff y≤xy \le x) does not give Mirsky's theorem, since chains and antichains are each preserved (not swapped) under dualizing the order — reversing all relations turns chains into chains and antichains into antichains. Mirsky's proof genuinely uses a different construction, the rank function r(x)r(x) recording the longest chain ending at xx, rather than the chain-splitting induction used for Dilworth.

Does the minimum chain cover in Dilworth's theorem have to be unique?

No. Many different partitions of PP into the minimum number w=a(P)w = a(P) of chains can exist simultaneously. In Worked Example 2 above, the chain C1={a1,b1}C_1 = \{a_1, b_1\} could equally well have been replaced by using the relation a2<b1a_2 < b_1 instead of a1<b1a_1 < b_1 in some other valid minimum cover, so long as every element is still covered and each part remains totally ordered. The theorem only guarantees existence of some chain cover of size exactly a(P)a(P); it says nothing about uniqueness, and generally there are many optimal covers, related to each other by the sort of "alternating path" swaps familiar from matching theory.

How is Dilworth's theorem related to bipartite matching?

Encode PP as a bipartite graph GG with two copies XL,XRX_L, X_R of the ground set, joining x∈XLx \in X_L to y∈XRy \in X_R whenever x<Pyx <_P y. A chain partition of PP into kk chains corresponds to a matching in GG leaving exactly kk vertices on each side unmatched (each matched edge "chains together" two poset elements), so minimizing kk is the same as maximizing a matching in GG. König's theorem then says the maximum matching size equals the minimum vertex cover size in GG, and one shows this vertex cover size translates back into ∣X∣−a(P)|X| - a(P), recovering Dilworth's theorem as a corollary. This equivalence also yields a polynomial-time algorithm for computing minimum chain covers via any bipartite matching algorithm.

Can Dilworth's theorem be used to certify that a chain cover is optimal?

Yes, and this is one of its most useful practical features. To prove that no chain cover of PP can use fewer than kk chains, it suffices to exhibit a single antichain of size kk; by Step 1 of the proof (the easy direction), this immediately forces c(P)≥kc(P) \ge k. If you also have a chain cover using exactly kk chains, the two bounds meet and you have certified optimality without any further argument. This "short certificate for optimality" property is what makes Dilworth's theorem a genuine min-max or good characterization result, in the same family as max-flow min-cut and König's theorem.

What happens when the poset is a total order or a pure antichain?

These are the two trivial extremes, useful as sanity checks. If PP is a total order (a single chain) on nn elements, the maximum antichain has size 11 (any two distinct elements are comparable), and indeed one chain suffices to cover everything, so c(P)=a(P)=1c(P) = a(P) = 1. If PP is a pure antichain (no two elements comparable) on nn elements, the maximum antichain is the whole set, size nn, and each chain can contain at most one element, forcing c(P)=nc(P) = n as well. Both extremes confirm the theorem without illustrating its nontrivial content, which appears precisely in posets with genuine partial (non-total, non-trivial) order structure.

Does Dilworth's theorem generalize to weighted or infinite settings?

For infinite posets, equality can fail even when the maximum antichain is finite, as shown in the counterexample above; additional hypotheses (such as every chain and antichain being finite, plus some compactness condition) are needed to recover the equality, and this is a genuine area of order theory research. In the finite setting, there are refinements: the Greene–Kleitman theorem extends Dilworth's theorem by describing not just the minimum number of chains but the maximum total size achievable by a union of kk chains, for every kk simultaneously, in terms of a partition (Young diagram) associated to the poset — a strictly finer invariant than the single number a(P)a(P).

Why is the "hard direction" of the proof structured around removing a maximal chain?

The strategy exploits strong induction on ∣X∣|X|: to handle a poset with a "resistant" maximum antichain that survives removing any maximal chain (Case B), the proof splits XX into an up-set X+X^+ and down-set X−X^- around that antichain, each strictly smaller than XX, then glues optimal chain covers of the two pieces together along the shared antichain. This gluing step is the technical heart of the argument: it shows that once you have two "half" chain covers that agree on how they meet a common antichain, you can splice them into full chains across the whole poset, which is exactly what makes the induction close.

Before this