Macro vstd::prelude::decreases_to

macro_rules! decreases_to {
    ($($x:tt)*) => { ... };
}
Expand description

decreases_to!(b => a) means that height(a) < height(b), so that b can decrease to a in decreases clauses. decreases_to!(b1, …, bn => a1, …, am) can compare lexicographically ordered values, which can be useful when making assertions about decreases clauses. Notes:

  • decreases_to! desugars to a call to is_smaller_than_lexicographic.
  • you can write #[trigger](decreases_to!(b => a)) to trigger on height(a). (in the SMT encoding, height is a function call and is a useful trigger, while is_smaller_than/is_smaller_than_lexicographic is not a function call and is not a useful trigger.)