This is an example of how this idea works.
Lets be 3 node network that want to mint new coins HM1, HM2, SfM.
2 of them are honest minters, while the third is selfish minter.
The honest minters have only 25 coins each one, in a single address with the 30 days of coin age.
The hash of the address of HM1 is 0x1111, for HM2 is 0xbbbb and the hashes for SfM's addresses are from 0x1000 to 0xa000
The selfish minter has 10 times more coins, 25 coins, in 10 addresses with the 30 days of coin age.
Block reward is 25 coins.
Addresses and hashes are only 16 bit long for an easy example.
The selfish minter is better connected to the network than the honest minters.
Some other, non minter nodes (like cellphones, or web wallets) send 3 transactions to the network, Tx1, Tx2 and Tx3.
The example begins here
In the block receiving window (second zero to second 590 since last block):
HM1 receives Tx1 and Tx2
HM2 receives Tx2 and Tx3
SfM receives Tx1, Tx2, and Tx3
The three of the minters enter the PoH block minting window of 20 seconds.
HM1 generates a block with his memory pool and gets the hash of it. Let suppose that the hash is H1=0x1234
HM2 generates a block with his memory pool and gets the hash of it. Let suppose that the hash is H2=0xabcd
SfM has many options. He first generates a has of the three transactions, H3=0x7437, then he can calculate the hash equal to H1 and H2, and also can calculate the Hash H4 of Tx1 and Tx3 H4=0x2731, and of course he can calculate the the hash of every single transaction and also calculate the hash of the empty block. This leave many options to the selfish minter.
Because in this example every address has the same coin age of 0x1a5e0 (30 days * 24 hours * 6 blocks per hour * 25 coins in the address) in this example all the score depends of the match with the block's hash.
HM1 can get in which place he is using the data he has in the block chain. Because addresses must have settled funds with more than 30 days, every synced minter knows very well who has what.
HM1 gets that the difference between the block and his address is 0x0123, and the score is 0x0123/0x1a5e0 = 0.00b09546c
HM2 gets that the difference between the block and his address is 0x0fee, and the score is 0x0fee/0x1a5e0 = 0.09aa973fa
SfM gets that scores and also the scores of all the combinations
All the combinations they get are:
Here HM1 sees clearly that he is the winner, because he has the best score (lowest value).
Also HM2 sees that he is not the best but is inside the top ten, so he could be winner if nobody with better score broadcast the block.
Then, the SfM can see that he can be winner in every combination but in column C. The simple fact that he is has the best score on B should be enough to broadcast the block immediatly, but suppose that he thinks that he can broadcast another block because he knows the solution for a Proof of Work hash with other set of transactions and pretends to send both, or because fees in another combination are higher. He then tries to send another block, but whichever other block than the block in B will be of lower quality because has less transactions. And if he sends other block like in column E, he loses because column C has better score.
So a selfish minter does not have incentive to send a lower quality block.
In this case, the SfM will be forced to send the highest quality block, with better score, because if he doesn't send it he will lose the opportunity, and it is also the possibility that HM1 or HM2 will receive the missing transaction before the 20 seconds window and broadcast a block with 3 transactions, that will win over any other that SfM send if he keeps his 3 transaction block for later.
After the 20 second window, most of the network should know all the candidates and will chose the best. SfM should had broadcasted the block ad B10 if he wants to be the winner. If not, then C14 will be the winner, and the networks adds that block. If that's the case, transaction Tx3 is then added to the next block. If the SfM sends the 3 TX block, then the next block starts without transactions in memory pool.