Brams–Taylor procedure

The Brams–Taylor procedure (BTP) is a procedure for envy-free cake-cutting. It explicated the first finite procedure to produce an envy-free division of a cake among any positive integer number of players.

History
In 1988, prior to the discovery of the BTP, Sol Garfunkel contended that the problem solved by the theorem, namely n-person envy-free cake-cutting, was among the most important problems in 20th century mathematics.

The BTP was discovered by Steven Brams and Alan D. Taylor. It was first published in the January 1995 issue of American Mathematical Monthly, and later in 1996 in the authors' book.

Brams and Taylor hold a joint US patent from 1999 related to the BTP.

Description
The BTP divides the cake part-by-part. A typical intermediate state of the BTP is as follows:
 * A part of the cake, say $$X$$, is divided in an envy-free way among all partners.
 * The rest of the cake, say $$Y$$, remains undivided, but -
 * One partner, say Alice, has an Irrevocable Advantage (IA) over another partner, say Bob, with respect to $$Y$$. This means that, regardless of how $$Y$$ is divided, even if we give $$Y$$ entirely to Bob, Alice still doesn't envy Bob.

As an example of how an IA can be generated, consider the first stage of the Selfridge–Conway discrete procedure: After this stage is done, all the cake except $$Y$$ is divided in an envy-free way. Additionally, Alice now has an IA over whoever took $$(A\setminus Y)$$. Why? because Alice took either $$B$$ or $$C$$, and both of them are equal to $$A$$ in her opinion. So, in Alice's opinion, whoever took $$(A\setminus Y)$$ can also have $$Y$$ – this will not make her envy.
 * Alice divides the cake to 3 parts she considers equal; let's call the parts $$A,B,C$$.
 * Bob trims the piece he considers largest (say, $$A$$) to make it equal to the second-largest; let's call the trimmings $$Y$$ and the trimmed piece $$A\setminus Y$$.
 * Charlie chooses a piece out of $$(A\setminus Y),B,C$$; then Bob chooses (he must take $$(A\setminus Y)$$ if it is available); and lastly Alice.

If we want to make sure that Alice gets an IA over a specific player (e.g. Bob), then a much more complicated procedure is required. It successively divides the cake to smaller and smaller pieces, always giving Alice a piece that she values more than Bob's, so that an IA is maintained. This might take an unbounded time – depending on the exact valuations of Alice and Bob.

Using the IA procedure, the main BTP procedure creates IAs for all ordered pairs of partners. For example, when there are 4 partners, there are 12 ordered pairs of partners. For each such pair (X,Y), we run a sub-procedure which guarantees that partner X has an IA over partner Y. After every partner has an IA over every other partner, we can just give the remainder to an arbitrary partner and the result is an envy-free division of the entire cake.