Skip to content

CVC5 unable to reason about "power" function #49

@rod-chapman

Description

@rod-chapman

Dear AdaCore,
I'm experimenting with verification of some cryptographic code (in this case the LibMLKEM library). We have found that CVC5 1.2.0 is very poor at reasoning about the "power" theory for integers, and we have to fall back on AltErgo to discharge those VCs.

BUT... we find that CVC5 has a built-in "int.pow2" operator, which it is able to reason with. If I remove the "power" theory from the SMT file, and change all instances of (power 2 i) to (int.pow2 i) then CVC5 proves my VCs almost instantly. Perhaps gnatprove could be changed to use "int.pow2" where possible when --prover=cvc5 is selected?

This is using GNATProve 14.1.0 on macOS.

I can send example SMT files if you'd like to see an example.

Metadata

Metadata

Assignees

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