As explained in an Ethereum blog post, one consequence of consensus-by-bet is that:
a block can remain unconfirmed even when blocks after that block are completely finalized.
The given example makes sense given the regardless caveat:
if their transaction was confirmed and finalized in block 20101, and they know that regardless of the contents of block 20100 that transaction will have a certain result, then the result that they care about is finalized even though parts of the history before the result are not.
But what if someone's transaction in block 20101 does depend on block 20100?
Then how can 20101 be finalized if 20100 isn't?
For additional clarity, an example: account E gets 1 ETH from account D in block 20101. But what if some of the unconfirmed blocks at height 20100, have D's balance as 2 ETH and some have D's balance as 0 ETH. Is this possible? Or how does finalizing 20101 eliminate the 20100 candidate blocks that do not have sufficient balance for D?
If a reason is that validators will not bet to finalize 20101 unless they are sure that in previous blocks D has more than 0 ETH, what if they make a mistake, all bet blindly, follow each other and do finalize 20101? Everyone must now construct a history so that in 20100 account D has a balance of more than 0 ETH?
What are the gaps in the understanding above and how can a block be finalized if previous blocks are unconfirmed?