Lens
Lens works on your covenant model, not the
compiled output. It generates verification conditions (value
conservation, ranges, refinements, invariants, the spend path) and
discharges them with z3, under the assumptions the M0 spec writes
down (A1 to A4). Counter-models are checked fail-closed, and
contradictory premises come back UNKNOWN rather than a
false PROVED.
Where it stops: it proves the model, not the emitted
.sil (validate-translation checks that
correspondence, and only structurally), and it never runs on a DAG,
so nothing it reports is a statement about on-chain behaviour.