Optimistic ZK verification using MATT

From a very high level view and a quick read, this seems like an extremely promising direction. Can you expand a bit on the necessity for OP_CAT and covenants? At the end of the writeup it notes

" and use Bitcoin Script to verify its execution. In order to achieve this we need a covenant like OP_CHECKCONTRACTVERIFY to carry state across transactions."

Why is that needed? Is it needed in a model using fraud proofs? (I’m vaguely remembering the basic idea of bitvm and earlier optimistic rollups etc). Apologies for the slightly uneducated question :slight_smile: