The SPV system is not something that "keeps miners in check". The SPV system is a cryptographically secure way to know that a given transaction is part of a given block chain.
I never said that SPV was to "keep miners in check". You are completely misunderstanding me.
Fraud proofs are necessary to have a cryptogrpahically secure way to know that a transaction is part of a given blockchain AND that the transaction is valid. Yes, merkle trees ensure that a transaction is part of the blockchain. But nothing currently exist to prove that a transaction is valid without having to have the full transaction history. The only way that a transaction can be fully validated is to know the transactions that it spends from, and then the transactions those spend from, etc.
Nobody cares whether the transaction is valid, if it is included in the block chain of course ! The hypothesis of having to check whether transactions that are part of the SOLE current collective consensus might be "wrong" somehow, is making the hypothesis that bitcoin is entirely broken and that nobody gives a shit.
It would mean that miners have made a false block, that all other miners agreed to mine on top of that false block and then on top of that other block and so on. If a false transaction is deeply burried within the block chain, and miners are still mining on it, and no "clean prong" exists that doesn't include that block, then bitcoin is entirely broken. Because if that can happen, miners can just include ANYTHING. They can include erroneously signed transactions, they can include transactions of which the sum of the outputs is 500 times the sum of the inputs, they can include a coin base transaction that gives them 2000 BTC, they can include headers that don't correspond to the Merkle tree, they could include a porn movie, anything.
Moreover,
there's not even another block chain in this world that is made correctly, because the massive amount of PoW that goes in this butched-up block chain cannot be re-done elsewhere. If the massive PoW voting power of the bitcoin miners collectively decide to make a butched-up block chain with false transactions in it, that's all there is to bitcoin, there is no clean version any more.
But even then, SPV is still working, in the following way: it is up to the payer to give you (by e-mail/ftp or other form of communication) the full history of his payment: that is, he has to give you the backward tree of all coinbase transactions and all successive transactions up to his payment to you. That's quite some data, but unless all coins are mixed up with all other coins, still much, much less than the block chain. For each transaction in this "pedigree", he needs to specify the block and Merkle tree leg.
With simply the block header list, you can verify the exactitude of his e-mail. You don't even need an SPV server for that. You can check the mini-block chain of the pedigree, from the coinbase of each origin at the leaves, all the way up to his last transaction to you. You don't depend on any form of bitcoin network for that, except that you need to know the head of the current header list. One single hash you need to know from bitcoin's system, and you can verify all the rest by yourself.
Of course, the payer needs to have all his previous transactions that way. In other words, if you pay someone, you make a new transaction, you have to watch the bitcoin network in one way or another, and catch your transaction once it is included in a block. From that, you can extract its SPV data (block header, Merkle leg, transaction). And you don't care any more about the system. No need for an extended P2P network. Only the miner pool servers, or some derived servers from that.
It is true that this way, you cannot be sure that there are no double spends included in the block chain. But this hassle is only necessary if we take it for granted that bitcoin is already entirely broken, and that miners collectively decide to continue to build a totally broken chain... Indeed, imagine that in the same block, the same coin is spent 500 times to different addresses. Normally, this cannot happen, but our working hypothesis is that miners make false blocks. So which one of the 500 transactions is the real one ? Or is this coin dead now ?
Moreover, in what way would a full node be helpful here ?
A full node would have stopped for good when the first false block was mined. All full nodes would have come to a grinding halt since a long time, because no miner made a correct block. They wouldn't be able to tell you anything about recent "valid" transactions on a broken block chain.