Skip to content

Z3 version control by attribute #2730

Open
@seebees

Description

@seebees

Currently Dafny pins z3 to v4.8.5.
However this is not the current version of z3.

The verification performance/stability for different versions of z3 and different code bases is large enough that there does not seem to be a single simple z3 version.

I suggest adding some kind of compile attribute to let people use older versions of z3.
This would let the Dafny project stay more current on versions of z3,
but still give customers a way to unblock themselves if verification times begin to time out.

I suggest taking 2 arguments, a version and a path.
Like this:

{ :vcs_z3_runtime v4.8.5, path/to/binary }

Obviously this would complicate the Dafny CI pipeline because it would need to test agains multiple versions of z3.
But this would unblock both Dafny and many Dafny projects to track more recent versions of z3.
The longer we wait to upgrade the more pain and work it will be.
And I don't see a path to a zero touch upgrade were ever proof obligation is just faster.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: performancePerformance issueskind: enhancementEnhancements, feature requests, etc. These are NOT bugs, but ways we can improve Dafnymisc: brittlenessWhen Dafny sometimes proves something, and sometimes doesn'tpart: z3Issue is in Z3

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions