Bottom Line Up Front: Ran into a verus panic when running it on a recursive lemma missing a decreases clause. Here's the panic output:
note: verifying module betree::PivotBranchRefinement_v, function lib::betree::PivotBranchRefinement_v::insert_refines
error: recursive function must have a decreases clause
--> /home/tenzinhl/research/verification/verified-betrfs/Splinter/src/betree/PivotBranchRefinement_v.rs:757:1
|
757 | pub proof fn append_refines(pre: Node, lbl: AppendLabel)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error
thread 'main' panicked at rust_verify/src/main.rs:237:13:
assertion failed: smt_function_breakdown.keys().collect::<std::collections::HashSet<_>>().difference(&smt_run_times.iter().map(|(x,\n _)|\n *x).collect::<std::collections::HashSet<_>>()).next().is_none()
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at verus/src/record_history.rs:184:14:
cannot parse rust_verify output: Error("EOF while parsing a value", line: 1, column: 0)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Notes
Building verus without --features record-history OR adding a decreases clause to the append_refines lemma both "fix" the issue (verus will no longer panic).
Bottom Line Up Front: Ran into a verus panic when running it on a recursive lemma missing a decreases clause. Here's the panic output:
Notes
Building
verus
without--features record-history
OR adding adecreases
clause to theappend_refines
lemma both "fix" the issue (verus
will no longer panic).Environment
Verus Version (built Feb. 2nd):
Verus was built with the
record-history
feature using this commandline:How to Reproduce
Run the following command
on the following version of the verisplinter code: https://github.com/vmware-labs/verified-betrfs/blob/0a488e9794df51f002dbb23a1cd329c62eae2c56/Splinter/src/betree/PivotBranchRefinement_v.rs#L757-L773
(Commit is tagged in repo as
tenzinhl-append-refines-panics
).