Skip to content

z3Exe flag seems to have stopped working #374

@bobismijnnaam

Description

@bobismijnnaam

In VerCors we call carbon by supplying an explicit path to z3:

class CarbonVerifier[O](o:OriginFactory[O]) extends SilverImplementation[O](o) {
  override def createVerifier(tool_home:Path,settings:Properties):viper.silver.verifier.Verifier = {
    val carbon = viper.carbon.CarbonVerifier(Seq("startedBy" -> "example", "fullCmd" -> "dummy"))
    carbon.parseCommandLine(Seq(
        "--z3Exe", Configuration.getZ3Path.getAbsolutePath,
        "--boogieExe",Configuration.getBoogiePath.getAbsolutePath,
        "-"))
    carbon.start()
    carbon
  }

}

This seems effective enough: in the screenshot below this path appears in the call to boogie.

image

However, upon termination, Boogie reports it cannot find "z3" in the same folder Boogie is located in:

image

So it seems to have swapped out the path I passed for some reason. The issue is resolved when I copy the executable at the z3 path to the Boogie folder and name it "z3.exe", but we'd like to avoid that and keep the tools separate.

For what it's worth, I've looked a bit through carbon's code, and it seems to handle the presence of the flag just fine. But when I pull the carbon repository and run carbon from the command line, the same problem happens: besides adding the --z3Exe flag, z3.exe needs to be present in the boogie folder, to make verification work.

This used to work on 20.07, but after upgrading to 21.01 this broke. The boogie version we use is: "2.4.1.10503", which is the one available from the viper/ETH Zurich site. Did I miss an interface change, is this a bug, or is the boogie version we use no longer supported?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions