@BmcProof
void clamp_result_is_always_within_bounds() {
int x = Bmc.anyInt(), lo = Bmc.anyInt(), hi = Bmc.anyInt();
Bmc.assume(lo <= hi);
int r = Example.clamp(x, lo, hi);
Bmc.check(r >= lo && r <= hi);
}
then you can run it like any other test, you will get a result indicating its verified, refuted (and you get the input and replay test, or unknown (reached a timeout etc).
if you used you it may be aware of the gaps when it comes to java, so bmc4j does leg work to fill it in (lots of JDK modelling, kotlin intrinsics, some byte-code transformation to fill in soundness holes) while trying making the developer experience not so painful.