Skip to content

[move-prover] Support bit-vector values in behavioral predicates #20375

Description

@wrwg

Context

Behavioral-predicate Skolems and evaluators introduced for inline HOF verification are emitted with non-bit-vector Boogie types. Functional specifications involving values marked with pragma bv therefore cannot be consumed without type mismatches.

The concrete framework case is std::features::set: feature bytes and its functional specification use bit-vector operations. Calling it from a for_each_ref lambda leaves the captured feature vector mutation underivable, so feature enable/disable iteration has to be written as explicit loops.

This boundary is documented in third_party/move/move-prover/doc/dev/inline_fun_specs.md.

Missing feature

Make behavioral predicate functions, Skolems, evaluators, and number-operation analysis bit-vector aware, including Operation::Behavior lowering and functional &mut post-value routing.

Expected result

Lambdas mutating bit-vector-modeled integers through function calls should verify through inline HOF invariants without weakening or explicit-loop workarounds.

Tracked from #20360.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions