forked from viperproject/silicon
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCVC5ProverStdIO.scala
More file actions
62 lines (52 loc) · 2.46 KB
/
Copy pathCVC5ProverStdIO.scala
File metadata and controls
62 lines (52 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2011-2021 ETH Zurich.
package viper.silicon.decider
import java.nio.file.{Path, Paths}
import viper.silicon.state.IdentifierFactory
import viper.silicon.verifier.Verifier
import viper.silver.verifier.{DefaultDependency => SilDefaultDependency}
import viper.silver.reporter.Reporter
import viper.silicon.common.config.Version
object Cvc5ProverStdIO {
val name = "cvc5"
val minVersion: Version = Version("1.0.0")
val maxVersion: None.type = None
val exeEnvironmentalVariable = "CVC5_EXE"
val dependencies: Seq[SilDefaultDependency] = Seq(SilDefaultDependency("cvc5", minVersion.version, "https://github.com/cvc5/cvc5"))
val staticPreamble = "/cvc5config.smt2"
val startUpArgs: Seq[String] = Seq("--lang=smt2.6")
val randomizeSeedsOptions: Seq[String] = Seq("seed", "sat-random-seed")
}
class Cvc5ProverStdIO(uniqueId: String,
termConverter: TermToSMTLib2Converter,
identifierFactory: IdentifierFactory,
reporter: Reporter)
extends ProverStdIO(uniqueId, termConverter, identifierFactory, reporter) {
val name: String = Cvc5ProverStdIO.name
val minVersion: Version = Cvc5ProverStdIO.minVersion
val maxVersion: Option[Version] = Cvc5ProverStdIO.maxVersion
val exeEnvironmentalVariable: String = Cvc5ProverStdIO.exeEnvironmentalVariable
val dependencies: Seq[SilDefaultDependency] = Cvc5ProverStdIO.dependencies
val staticPreamble: String = Cvc5ProverStdIO.staticPreamble
val startUpArgs: Seq[String] = Cvc5ProverStdIO.startUpArgs
val randomizeSeedsOptions: Seq[String] = Cvc5ProverStdIO.randomizeSeedsOptions
protected def setTimeout(timeout: Option[Int]): Unit = {
val effectiveTimeout = timeout.getOrElse(Verifier.config.proverTimeout)
if (lastTimeout != effectiveTimeout) {
lastTimeout = effectiveTimeout
if (Verifier.config.proverEnableResourceBounds) {
writeLine(s"(set-option :reproducible-resource-limit ${effectiveTimeout * Verifier.config.proverResourcesPerMillisecond})")
} else {
writeLine(s"(set-option :tlimit-per $effectiveTimeout)")
}
readSuccess()
}
}
protected def getProverPath: Path = {
Paths.get(Verifier.config.cvc5Exe)
}
override def emitSettings(contents: Iterable[String]): Unit = emit(contents)
}