diff --git a/.github/actions/cbmc/report.py b/.github/actions/cbmc/report.py index 7e3138b34..ffb1f558c 100644 --- a/.github/actions/cbmc/report.py +++ b/.github/actions/cbmc/report.py @@ -25,9 +25,13 @@ FAIL = "❌" ProofResult = namedtuple( - "ProofResult", ["name", "status", "current", "previous", "change"] + "ProofResult", ["name", "solver", "status", "current", "previous", "change"] ) +# Solver assigned to baseline runtime entries that lack a `solver` field. +# Older baseline JSONs predate multi-solver support and mostly ran under Z3. +LEGACY_DEFAULT_SOLVER = "Z3" + def get_args(): parser = argparse.ArgumentParser(description="CBMC proof results reporter") @@ -78,11 +82,11 @@ def fetch_baseline(cfg): def render_table(rows): """Render a markdown table from ProofResult rows.""" lines = [ - "| Proof | Status | Current | Previous | Change |", - "|-------|--------|---------|----------|--------|", + "| Proof | Solver | Status | Current | Previous | Change |", + "|-------|--------|--------|---------|----------|--------|", ] lines.extend( - f"| `{r.name}` | {r.status} | {r.current} | {r.previous} | {r.change} |" + f"| `{r.name}` | {r.solver} | {r.status} | {r.current} | {r.previous} | {r.change} |" for r in rows ) return lines @@ -91,41 +95,87 @@ def render_table(rows): def classify_proof(r, baseline_runtimes, cfg): """Classify a single proof result, returning (ProofResult, is_alert).""" name = r["name"] - base = baseline_runtimes.get(name, {}) + solver = r.get("solver", LEGACY_DEFAULT_SOLVER) + base = baseline_runtimes.get((name, solver), {}) base_val, base_failed = base.get("value"), base.get("status") == "failed" + base_omitted = base.get("status") == "omitted" + base_inconclusive = base.get("status") == "inconclusive" + + # Solver could not decide -- not a real failure, not a regression. + if r.get("status") == "inconclusive": + prev = ( + f"{base_val}s" if base_val + else "failed" if base_failed + else "inconclusive" if base_inconclusive + else "omitted" if base_omitted + else "-" + ) + # Was passing in the baseline, now inconclusive: surface as a warning. + if base_val is not None and not base_failed: + return ( + ProofResult(name, solver, WARN, "?", prev, "inconclusive"), + True, + ) + return ProofResult(name, solver, OK, "?", prev, "inconclusive"), False + + # Pair was intentionally not run. + if r.get("status") == "omitted": + # Was passing in the baseline, now omitted: surface as a warning. + if base_val is not None and not base_failed: + return ( + ProofResult(name, solver, WARN, "-", f"{base_val}s", "omitted"), + True, + ) + return ProofResult(name, solver, OK, "-", "-", "omitted"), False if r.get("status") == "failed": prev = "failed" if base_failed else (f"{base_val}s" if base_val else "-") - return ProofResult(name, FAIL, "-", prev, "-"), True + if base_omitted: + prev = "omitted" + return ProofResult(name, solver, FAIL, "-", prev, "-"), True cur_val = r["value"] if base_failed: - return ProofResult(name, OK, f"{cur_val}s", "failed", "fixed"), False + return ( + ProofResult(name, solver, OK, f"{cur_val}s", "failed", "fixed"), + False, + ) + if base_omitted: + return ( + ProofResult(name, solver, OK, f"{cur_val}s", "omitted", "new"), + False, + ) if base_val is None: - return ProofResult(name, OK, f"{cur_val}s", "-", "new"), False + return ProofResult(name, solver, OK, f"{cur_val}s", "-", "new"), False ratio = cur_val / base_val if base_val > 0 else 1 change = f"{(ratio - 1) * 100:+.0f}%" if base_val > 0 else "-" is_regression = cur_val >= cfg.min_runtime and ratio >= cfg.regression_threshold status = WARN if is_regression else OK return ( - ProofResult(name, status, f"{cur_val}s", f"{base_val}s", change), + ProofResult(name, solver, status, f"{cur_val}s", f"{base_val}s", change), is_regression, ) def compute_total_runtime(data): - """Compute total runtime from proof results.""" + """Compute total runtime from proof results, ignoring failed/omitted/inconclusive.""" if not data: return None return sum( - r["value"] for r in data.get("runtimes", []) if r.get("status") != "failed" + r["value"] + for r in data.get("runtimes", []) + if r.get("status") not in ("failed", "omitted", "inconclusive") + and "value" in r ) def build_comment(current, baseline, cfg): """Build the PR comment markdown.""" - baseline_runtimes = {r["name"]: r for r in (baseline or {}).get("runtimes", [])} + baseline_runtimes = { + (r["name"], r.get("solver", LEGACY_DEFAULT_SOLVER)): r + for r in (baseline or {}).get("runtimes", []) + } alerts, all_rows = [], [] for r in current.get("runtimes", []): @@ -136,8 +186,8 @@ def build_comment(current, baseline, cfg): def sort_key(r): if r.current == "-": - return -1 - return -int(r.current.rstrip("s")) + return (-1, r.name, r.solver) + return (-int(r.current.rstrip("s")), r.name, r.solver) all_rows.sort(key=sort_key) @@ -153,6 +203,7 @@ def sort_key(r): total_status = OK total_row = ProofResult( "**TOTAL**", + "-", total_status, f"{cur_total}s", f"{base_total}s" if base_total else "-", diff --git a/.github/workflows/cbmc.yml b/.github/workflows/cbmc.yml index bb791f036..5c6ca733f 100644 --- a/.github/workflows/cbmc.yml +++ b/.github/workflows/cbmc.yml @@ -24,9 +24,9 @@ jobs: uses: ./.github/workflows/ci_ec2_reusable.yml with: name: CBMC (ML-DSA-${{ matrix.parameter_set }}${{ matrix.reduce_ram && ', REDUCE_RAM' || '' }}) - ec2_instance_type: c7g.4xlarge + ec2_instance_type: r7g.4xlarge ec2_ami: ubuntu-latest (aarch64) - ec2_volume_size: 20 + ec2_volume_size: 64 compile_mode: native opt: no_opt lint: false diff --git a/flake.nix b/flake.nix index 7714eec95..c56601733 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,7 @@ pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${system}; pkgs-2405 = inputs.nixpkgs-2405.legacyPackages.${system}; util = pkgs.callPackage ./nix/util.nix { - inherit (pkgs) bitwuzla z3; + inherit (pkgs) bitwuzla cvc5 z3; inherit (pkgs-unstable) cbmc; # TODO: switch back to stable python3 for slothy once ortools is fixed in 25.11 python3-for-slothy = pkgs-unstable.python3; @@ -240,7 +240,7 @@ pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux; util = pkgs.callPackage ./nix/util.nix { inherit pkgs; - inherit (pkgs) bitwuzla z3; + inherit (pkgs) bitwuzla cvc5 z3; inherit (pkgs-unstable) cbmc; # TODO: switch back to stable python3 for slothy once ortools is fixed in 25.11 python3-for-slothy = pkgs-unstable.python3; diff --git a/nix/cbmc/default.nix b/nix/cbmc/default.nix index 58e21c796..f9f20350b 100644 --- a/nix/cbmc/default.nix +++ b/nix/cbmc/default.nix @@ -6,6 +6,7 @@ , fetchFromGitHub , callPackage , bitwuzla +, cvc5 , ninja , z3 }: @@ -37,6 +38,7 @@ buildEnv { inherit bitwuzla# 0.8.2 + cvc5# 1.3.2 ninja; # 1.13.2 }; } diff --git a/nix/util.nix b/nix/util.nix index 8babbfb86..286969f2b 100644 --- a/nix/util.nix +++ b/nix/util.nix @@ -2,7 +2,7 @@ # Copyright (c) The mldsa-native project authors # SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT -{ pkgs, cbmc, bitwuzla, z3, python3-for-slothy }: +{ pkgs, cbmc, bitwuzla, cvc5, z3, python3-for-slothy }: rec { glibc-join = p: p.buildPackages.symlinkJoin { name = "glibc-join"; @@ -97,7 +97,7 @@ rec { }; cbmc_pkgs = pkgs.callPackage ./cbmc { - inherit cbmc bitwuzla z3; + inherit cbmc bitwuzla cvc5 z3; }; valgrind_varlat = pkgs.callPackage ./valgrind { }; diff --git a/proofs/cbmc/H/Makefile b/proofs/cbmc/H/Makefile index 367bc2ad8..37ad12eb7 100644 --- a/proofs/cbmc/H/Makefile +++ b/proofs/cbmc/H/Makefile @@ -28,9 +28,25 @@ USE_FUNCTION_CONTRACTS+=mld_shake256_release APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_h diff --git a/proofs/cbmc/Makefile.common b/proofs/cbmc/Makefile.common index a8acb5bf4..bcaa3785a 100644 --- a/proofs/cbmc/Makefile.common +++ b/proofs/cbmc/Makefile.common @@ -169,22 +169,106 @@ PROOFDIR ?= $(abspath .) ################################################################ # Define how to run CBMC -# Do property checking with the external SAT solver given by -# EXTERNAL_SAT_SOLVER. Do coverage checking with the default solver, -# since coverage checking requires the use of an incremental solver. -# The EXTERNAL_SAT_SOLVER variable is typically set (if it is at all) -# as an environment variable or as a makefile variable in -# Makefile-project-defines. +# Multi-solver support +# -------------------- # -# For a particular proof, if the default solver is faster, do property -# checking with the default solver by including this definition in the -# proof Makefile: -# USE_EXTERNAL_SAT_SOLVER = +# Each per-harness Makefile declares the set of solvers it supports +# via: # +# CBMC_SOLVER_Z3_ENABLED ?= 0/1 +# CBMC_SOLVER_Z3_FLAGS ?= +# CBMC_SOLVER_Z3_EXT_SAT ?= +# CBMC_SOLVER_BITWUZLA_ENABLED ?= 0/1 +# CBMC_SOLVER_BITWUZLA_FLAGS ?= ... +# CBMC_SOLVER_BITWUZLA_EXT_SAT ?= ... +# CBMC_DEFAULT_SOLVER ?= Z3 | BITWUZLA +# +# When the harness is invoked directly (`make report` from a proof +# directory), CBMC_SOLVER falls back to CBMC_DEFAULT_SOLVER. The +# top-level driver run-cbmc-proofs.py overrides CBMC_SOLVER explicitly +# to fan each harness out across all enabled solvers. +# +# CBMC_SOLVER__FLAGS is appended to CBMCFLAGS *after* the backend +# selection flag (--smt2 / --bitwuzla) is chosen by Makefile.common. +# This is where a proof can express e.g. a Z3-only --external-smt2-solver +# wrapper. + +# Canonical solver list and per-solver backend tables. +CBMC_SOLVERS_ALL := Z3 BITWUZLA CVC5 + +CBMC_SOLVER_Z3_BACKEND := --smt2 +CBMC_SOLVER_Z3_PROVER_NAME := Z3 +CBMC_SOLVER_Z3_SMT_FORMAT := --z3 + +CBMC_SOLVER_BITWUZLA_BACKEND := --bitwuzla +CBMC_SOLVER_BITWUZLA_PROVER_NAME := Bitwuzla +CBMC_SOLVER_BITWUZLA_SMT_FORMAT := --bitwuzla + +CBMC_SOLVER_CVC5_BACKEND := --cvc5 +CBMC_SOLVER_CVC5_PROVER_NAME := cvc5 +CBMC_SOLVER_CVC5_SMT_FORMAT := --cvc5 + +# Default per-harness solver matrix entries (overridable by the +# per-harness Makefile, which is included before Makefile.common). +CBMC_SOLVER_Z3_ENABLED ?= 1 +CBMC_SOLVER_Z3_FLAGS ?= +CBMC_SOLVER_Z3_EXT_SAT ?= +CBMC_SOLVER_BITWUZLA_ENABLED ?= 1 +CBMC_SOLVER_BITWUZLA_FLAGS ?= +CBMC_SOLVER_BITWUZLA_EXT_SAT ?= +# CVC5 needs --arrays-exp to handle the STORE_ALL term kind that the +# CPROVER library generates; without it CBMC's CVC5 backend errors out +# on most harnesses. We invoke cvc5 via a small wrapper that adds the +# flag so each per-harness Makefile doesn't have to. +CBMC_SOLVER_CVC5_ENABLED ?= 1 +CBMC_SOLVER_CVC5_FLAGS ?= --external-smt2-solver $(PROOF_ROOT)/lib/cvc5_arrays_exp --cvc5 +CBMC_SOLVER_CVC5_EXT_SAT ?= + +# Choose active solver for this make invocation. The driver passes +# CBMC_SOLVER= on the command line; interactive use falls back to +# CBMC_DEFAULT_SOLVER. +# +# Skip the heavy validation when only an introspection target is being +# invoked (echo-solver-matrix, echo-proof-uid, etc.). Such targets are +# invoked by the driver before it knows which solver to pick, so they +# must succeed without a fully resolved solver configuration. +CBMC_INTROSPECTION_TARGETS := echo-solver-matrix echo-default-solver echo-proof-uid echo-project-name litani-path +ifeq ($(filter-out $(CBMC_INTROSPECTION_TARGETS),$(MAKECMDGOALS)),) +ifneq ($(strip $(MAKECMDGOALS)),) +CBMC_SKIP_SOLVER_RESOLUTION := 1 +endif +endif + +ifndef CBMC_SKIP_SOLVER_RESOLUTION +ifndef CBMC_DEFAULT_SOLVER +$(error Per-harness Makefile must set CBMC_DEFAULT_SOLVER (one of $(CBMC_SOLVERS_ALL))) +endif +CBMC_SOLVER ?= $(CBMC_DEFAULT_SOLVER) + +# Validate the chosen solver is known. +ifeq ($(filter $(CBMC_SOLVER),$(CBMC_SOLVERS_ALL)),) +$(error Unknown CBMC_SOLVER='$(CBMC_SOLVER)'; expected one of $(CBMC_SOLVERS_ALL)) +endif + +# Validate the chosen solver is enabled for this harness. +ifneq ($(CBMC_SOLVER_$(CBMC_SOLVER)_ENABLED),1) +$(error Solver $(CBMC_SOLVER) is not enabled for this harness (set CBMC_SOLVER_$(CBMC_SOLVER)_ENABLED=1)) +endif + +# Materialize the active configuration via indirect references. When +# CBMC_SOLVER=BITWUZLA, $(CBMC_SOLVER_$(CBMC_SOLVER)_BACKEND) expands +# to $(CBMC_SOLVER_BITWUZLA_BACKEND) which is --bitwuzla. +BACKEND_OPTION := $(CBMC_SOLVER_$(CBMC_SOLVER)_BACKEND) +PROVER_NAME := $(CBMC_SOLVER_$(CBMC_SOLVER)_PROVER_NAME) +SMT_FORMAT := $(CBMC_SOLVER_$(CBMC_SOLVER)_SMT_FORMAT) +EXTERNAL_SAT_SOLVER := $(CBMC_SOLVER_$(CBMC_SOLVER)_EXT_SAT) +CBMCFLAGS += $(CBMC_SOLVER_$(CBMC_SOLVER)_FLAGS) + ifneq ($(strip $(EXTERNAL_SAT_SOLVER)),) USE_EXTERNAL_SAT_SOLVER ?= --external-sat-solver $(EXTERNAL_SAT_SOLVER) endif CHECKFLAGS += $(USE_EXTERNAL_SAT_SOLVER) +endif # CBMC_SKIP_SOLVER_RESOLUTION # Job pools # For version of Litani that are new enough (where `litani print-capabilities` @@ -263,23 +347,8 @@ CBMC_FLAG_UNWINDING_ASSERTIONS ?= # set to --no-unwinding-assertions to disable CBMC_DEFAULT_UNWIND ?= --unwind 1 CBMC_FLAG_FLUSH ?= --flush -# Determine SMT back-end and prover combination chosen by the user -ifeq ($(findstring --smt2,$(CBMCFLAGS)),--smt2) # User has chosen SMT2 (which defaults to Z3) -CBMCFLAGS := $(subst --smt2,,$(CBMCFLAGS)) # Remove --smt2 from CBMCFLAGS -BACKEND_OPTION := --smt2 -PROVER_NAME=Z3 -SMT_FORMAT := --z3 -else ifeq ($(findstring --bitwuzla,$(CBMCFLAGS)),--bitwuzla) # User has chosen Bitwuzla -CBMCFLAGS := $(subst --bitwuzla,,$(CBMCFLAGS)) # Remove --bitwuzla from CBMCFLAGS -BACKEND_OPTION := --bitwuzla -PROVER_NAME=Bitwuzla -SMT_FORMAT := --bitwuzla -else ifeq ($(findstring --cvc5,$(CBMCFLAGS)),--cvc5) # User has chosen cvc5 -CBMCFLAGS := $(subst --cvc5,,$(CBMCFLAGS)) # Remove --cvc5 from CBMCFLAGS -BACKEND_OPTION := --cvc5 -PROVER_NAME=cvc5 -SMT_FORMAT := --cvc5 -endif +# BACKEND_OPTION, PROVER_NAME, and SMT_FORMAT are set above based on +# CBMC_SOLVER selection. # CBMC flags used for property checking and coverage checking @@ -553,8 +622,9 @@ VIEWER ?= cbmc-viewer VIEWER2 ?= cbmc-viewer CMAKE ?= cmake -GOTODIR ?= $(PROOFDIR)/gotos -LOGDIR ?= $(PROOFDIR)/logs +GOTODIR ?= $(PROOFDIR)/gotos/$(CBMC_SOLVER) +LOGDIR ?= $(PROOFDIR)/logs/$(CBMC_SOLVER) +REPORTDIR ?= $(PROOFDIR)/report/$(CBMC_SOLVER) PROJECT ?= project PROOF ?= proof @@ -707,7 +777,8 @@ $(REWRITTEN_SOURCES): --outputs $@ \ --stdout-file $(LOGDIR)/crangler-$(subst /,_,$(subst .,_,$@))-log.txt \ --interleave-stdout-stderr \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): removing static" @@ -722,7 +793,8 @@ $(PROJECT_GOTO)0100.goto: $(PROJECT_SOURCES) $(REWRITTEN_SOURCES) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/project_sources-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): building project binary" @@ -734,7 +806,8 @@ $(PROOF_GOTO)0100.goto: $(PROOF_SOURCES) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/proof_sources-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): building proof binary" @@ -746,7 +819,8 @@ $(PROJECT_GOTO)0200.goto: $(PROJECT_GOTO)0100.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/remove_function_body-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): removing function bodies from project sources" @@ -757,7 +831,8 @@ $(HARNESS_GOTO)0100.goto: $(PROOF_GOTO)0100.goto $(PROJECT_GOTO)0200.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/link_proof_project-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): linking project to proof" @@ -769,7 +844,8 @@ $(HARNESS_GOTO)0200.goto: $(HARNESS_GOTO)0100.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/restrict_function_pointer-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): restricting function pointers in project sources" @@ -781,7 +857,8 @@ ifneq ($(strip $(CODE_CONTRACTS)),) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/nondet_static-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): not setting static variables to nondet (will do during contract instrumentation)" else @@ -791,7 +868,8 @@ else --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/nondet_static-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): setting static variables to nondet" endif @@ -805,7 +883,8 @@ ifneq ($(strip $(USE_DYNAMIC_FRAMES)),) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/linking-library-models-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): linking CPROVER library" else @@ -814,7 +893,8 @@ else --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/linking-library-models-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): not linking CPROVER library" endif @@ -828,7 +908,8 @@ ifneq ($(strip $(USE_DYNAMIC_FRAMES)),) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/unwind_loops-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description $(UNWIND_0500_DESC) else ifneq ($(strip $(CODE_CONTRACTS)),) @@ -838,7 +919,8 @@ else ifneq ($(strip $(CODE_CONTRACTS)),) --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/unwind_loops-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): unwinding loops in proof and project code" else @@ -847,7 +929,8 @@ else --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/unwind_loops-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): not unwinding loops" endif @@ -860,7 +943,8 @@ $(HARNESS_GOTO)0600.goto: $(HARNESS_GOTO)0500.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/check_function_contracts-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): checking function contracts" @@ -872,7 +956,8 @@ $(HARNESS_GOTO)0700.goto: $(HARNESS_GOTO)0600.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/slice_global_inits-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): slicing global initializations" @@ -884,7 +969,8 @@ $(HARNESS_GOTO)0800.goto: $(HARNESS_GOTO)0700.goto --inputs $^ \ --outputs $@ \ --stdout-file $(LOGDIR)/drop_unused_functions-log.txt \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): dropping unused functions" @@ -894,7 +980,8 @@ $(HARNESS_GOTO).goto: $(HARNESS_GOTO)0800.goto --command 'cp $< $@' \ --inputs $^ \ --outputs $@ \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --ci-stage build \ --description "$(PROOF_UID): copying final goto-binary" @@ -921,8 +1008,8 @@ $(LOGDIR)/result.xml: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/result-err-log.txt \ --description "$(PROOF_UID): checking safety properties" @@ -938,8 +1025,8 @@ $(LOGDIR)/result.txt: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/result-err-log.txt \ --description "$(PROOF_UID): checking safety properties" @@ -956,8 +1043,8 @@ $(HARNESS_GOTO).smt2: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/smt2-err-log.txt \ --description "$(PROOF_UID): checking safety properties (SMT to file only)" @@ -974,8 +1061,8 @@ $(HARNESS_GOTO).smtz: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/smtz-err-log.txt \ --description "$(PROOF_UID): checking safety properties (SMT for Z3 only)" @@ -992,8 +1079,8 @@ $(HARNESS_GOTO).smtb: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/smtb-err-log.txt \ --description "$(PROOF_UID): checking safety properties (SMT for Bitwuzla only)" @@ -1010,8 +1097,8 @@ $(HARNESS_GOTO).smtc: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:safety checks" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:safety checks" \ --stderr-file $(LOGDIR)/smtc-err-log.txt \ --description "$(PROOF_UID): checking safety properties (SMT for cvc5 only)" @@ -1024,7 +1111,8 @@ $(LOGDIR)/property.xml: $(HARNESS_GOTO).goto --ci-stage test \ --stdout-file $@ \ --ignore-returns 10 \ - --pipeline-name "$(PROOF_UID)" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --stderr-file $(LOGDIR)/property-err-log.txt \ --description "$(PROOF_UID): printing safety properties" @@ -1040,15 +1128,15 @@ $(LOGDIR)/coverage.xml: $(HARNESS_GOTO).goto $(MEMORY_PROFILING) \ --ignore-returns 10 \ --timeout $(CBMC_TIMEOUT) \ - --pipeline-name "$(PROOF_UID)" \ - --tags "stats-group:coverage computation" \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" "stats-group:coverage computation" \ --stderr-file $(LOGDIR)/coverage-err-log.txt \ --description "$(PROOF_UID): calculating coverage" COVERAGE ?= $(LOGDIR)/coverage.xml VIEWER_COVERAGE_FLAG ?= --coverage $(COVERAGE) -$(PROOFDIR)/report: $(LOGDIR)/result.xml $(LOGDIR)/property.xml $(COVERAGE) +$(REPORTDIR): $(LOGDIR)/result.xml $(LOGDIR)/property.xml $(COVERAGE) $(LITANI) add-job \ --command " $(VIEWER) \ --result $(LOGDIR)/result.xml \ @@ -1056,14 +1144,15 @@ $(PROOFDIR)/report: $(LOGDIR)/result.xml $(LOGDIR)/property.xml $(COVERAGE) --property $(LOGDIR)/property.xml \ --srcdir $(SRCDIR) \ --goto $(HARNESS_GOTO).goto \ - --reportdir $(PROOFDIR)/report \ + --reportdir $(REPORTDIR) \ --config $(PROOFDIR)/cbmc-viewer.json" \ --inputs $^ \ - --outputs $(PROOFDIR)/report \ - --pipeline-name "$(PROOF_UID)" \ + --outputs $(REPORTDIR) \ + --pipeline-name "$(PROOF_UID)__$(CBMC_SOLVER)" \ + --tags "solver:$(CBMC_SOLVER)" \ --stdout-file $(LOGDIR)/viewer-log.txt \ --ci-stage report \ - --description "$(PROOF_UID): generating report" + --description "$(PROOF_UID)/$(CBMC_SOLVER): generating report" litani-path: @echo $(LITANI) @@ -1168,7 +1257,7 @@ coverage: @ echo Running 'litani build' $(LITANI) run-build -_report: $(PROOFDIR)/report +_report: $(REPORTDIR) report: @ echo Running 'litani init' $(LITANI) init $(INIT_POOLS) --project $(PROJECT_NAME) @@ -1191,8 +1280,8 @@ clean: -$(RM) $(REWRITTEN_SOURCES) $(foreach rs,$(REWRITTEN_SOURCES),$(rs).json) veryclean: clean - -$(RM) -r report - -$(RM) -r $(LOGDIR) $(GOTODIR) + -$(RM) -r $(PROOFDIR)/report + -$(RM) -r $(PROOFDIR)/logs $(PROOFDIR)/gotos .PHONY: \ _coverage \ @@ -1223,6 +1312,17 @@ veryclean: clean echo-proof-uid: @echo $(PROOF_UID) +# Print the solver matrix as space-separated :<0|1> tokens. +# Consumed by run-cbmc-proofs.py to discover which (harness, solver) +# pairs are enabled for this proof. +.PHONY: echo-solver-matrix +echo-solver-matrix: + @echo $(foreach s,$(CBMC_SOLVERS_ALL),$(s):$(CBMC_SOLVER_$(s)_ENABLED)) + +.PHONY: echo-default-solver +echo-default-solver: + @echo $(CBMC_DEFAULT_SOLVER) + .PHONY: echo-project-name echo-project-name: @echo $(PROJECT_NAME) diff --git a/proofs/cbmc/attempt_signature_generation/Makefile b/proofs/cbmc/attempt_signature_generation/Makefile index 2829e198b..6b1913fee 100644 --- a/proofs/cbmc/attempt_signature_generation/Makefile +++ b/proofs/cbmc/attempt_signature_generation/Makefile @@ -44,9 +44,26 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = mld_attempt_signature_generation diff --git a/proofs/cbmc/caddq/Makefile b/proofs/cbmc/caddq/Makefile index 2d01d82d9..b32d75dae 100644 --- a/proofs/cbmc/caddq/Makefile +++ b/proofs/cbmc/caddq/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_neg_i32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = caddq diff --git a/proofs/cbmc/check_pct/Makefile b/proofs/cbmc/check_pct/Makefile index 99bb0d174..74a45d9f8 100644 --- a/proofs/cbmc/check_pct/Makefile +++ b/proofs/cbmc/check_pct/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_check_pct diff --git a/proofs/cbmc/compute_pack_t0_t1/Makefile b/proofs/cbmc/compute_pack_t0_t1/Makefile index e8ce5a9dc..d0e3c21e9 100644 --- a/proofs/cbmc/compute_pack_t0_t1/Makefile +++ b/proofs/cbmc/compute_pack_t0_t1/Makefile @@ -32,9 +32,26 @@ USE_FUNCTION_CONTRACTS+=mld_polyvec_matrix_expand APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = compute_pack_t0_t1 diff --git a/proofs/cbmc/compute_pack_z/Makefile b/proofs/cbmc/compute_pack_z/Makefile index 622a875da..3c277417b 100644 --- a/proofs/cbmc/compute_pack_z/Makefile +++ b/proofs/cbmc/compute_pack_z/Makefile @@ -33,9 +33,26 @@ USE_FUNCTION_CONTRACTS+=mld_yvec_get_poly APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = mld_compute_pack_z diff --git a/proofs/cbmc/ct_abs_i32/Makefile b/proofs/cbmc/ct_abs_i32/Makefile index d20a9d31c..e9ea42a4b 100644 --- a/proofs/cbmc/ct_abs_i32/Makefile +++ b/proofs/cbmc/ct_abs_i32/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_neg_i32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_abs_i32 diff --git a/proofs/cbmc/ct_cmask_neg_i32/Makefile b/proofs/cbmc/ct_cmask_neg_i32/Makefile index f61f39bd8..fa9a56437 100644 --- a/proofs/cbmc/ct_cmask_neg_i32/Makefile +++ b/proofs/cbmc/ct_cmask_neg_i32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_value_barrier_i64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_cmask_neg_i32 diff --git a/proofs/cbmc/ct_cmask_nonzero_u32/Makefile b/proofs/cbmc/ct_cmask_nonzero_u32/Makefile index b7e6db0b2..255f86071 100644 --- a/proofs/cbmc/ct_cmask_nonzero_u32/Makefile +++ b/proofs/cbmc/ct_cmask_nonzero_u32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_value_barrier_i64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_cmask_nonzero_u32 diff --git a/proofs/cbmc/ct_cmask_nonzero_u8/Makefile b/proofs/cbmc/ct_cmask_nonzero_u8/Makefile index a0eb44884..c3bb39072 100644 --- a/proofs/cbmc/ct_cmask_nonzero_u8/Makefile +++ b/proofs/cbmc/ct_cmask_nonzero_u8/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_value_barrier_u32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_cmask_nonzero_u8 diff --git a/proofs/cbmc/ct_get_optblocker_i64/Makefile b/proofs/cbmc/ct_get_optblocker_i64/Makefile index 41b35704f..3fe207b7b 100644 --- a/proofs/cbmc/ct_get_optblocker_i64/Makefile +++ b/proofs/cbmc/ct_get_optblocker_i64/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_u64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_get_optblocker_i64 diff --git a/proofs/cbmc/ct_get_optblocker_u32/Makefile b/proofs/cbmc/ct_get_optblocker_u32/Makefile index 163634af8..d1f12e28d 100644 --- a/proofs/cbmc/ct_get_optblocker_u32/Makefile +++ b/proofs/cbmc/ct_get_optblocker_u32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_u64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_get_optblocker_u32 diff --git a/proofs/cbmc/ct_get_optblocker_u8/Makefile b/proofs/cbmc/ct_get_optblocker_u8/Makefile index 2237b9af3..29d6d1324 100644 --- a/proofs/cbmc/ct_get_optblocker_u8/Makefile +++ b/proofs/cbmc/ct_get_optblocker_u8/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_u64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_ct_get_optblocker_u8 diff --git a/proofs/cbmc/ct_memcmp/Makefile b/proofs/cbmc/ct_memcmp/Makefile index 765ba07b5..432c084d5 100644 --- a/proofs/cbmc/ct_memcmp/Makefile +++ b/proofs/cbmc/ct_memcmp/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_nonzero_u8 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_memcmp diff --git a/proofs/cbmc/ct_sel_int32/Makefile b/proofs/cbmc/ct_sel_int32/Makefile index 76d76b470..e1ac524b0 100644 --- a/proofs/cbmc/ct_sel_int32/Makefile +++ b/proofs/cbmc/ct_sel_int32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_value_barrier_u32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_ct_sel_int32 diff --git a/proofs/cbmc/decompose/Makefile b/proofs/cbmc/decompose/Makefile index c8c290201..6b54574d3 100644 --- a/proofs/cbmc/decompose/Makefile +++ b/proofs/cbmc/decompose/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_neg_i32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = decompose diff --git a/proofs/cbmc/fqmul/Makefile b/proofs/cbmc/fqmul/Makefile index 8652000fc..4a73940f9 100644 --- a/proofs/cbmc/fqmul/Makefile +++ b/proofs/cbmc/fqmul/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_montgomery_reduce APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_fqmul diff --git a/proofs/cbmc/fqscale/Makefile b/proofs/cbmc/fqscale/Makefile index d821b2d26..4c6aefdd3 100644 --- a/proofs/cbmc/fqscale/Makefile +++ b/proofs/cbmc/fqscale/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_montgomery_reduce APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_fqscale diff --git a/proofs/cbmc/intt_native_aarch64/Makefile b/proofs/cbmc/intt_native_aarch64/Makefile index 34e8e25b1..b2b57a3a0 100644 --- a/proofs/cbmc/intt_native_aarch64/Makefile +++ b/proofs/cbmc/intt_native_aarch64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = intt_native_aarch64 diff --git a/proofs/cbmc/intt_native_x86_64/Makefile b/proofs/cbmc/intt_native_x86_64/Makefile index 3b266140f..f2f5c89ec 100644 --- a/proofs/cbmc/intt_native_x86_64/Makefile +++ b/proofs/cbmc/intt_native_x86_64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = intt_native_x86_64 diff --git a/proofs/cbmc/invntt_layer/Makefile b/proofs/cbmc/invntt_layer/Makefile index b1503d8a5..0613921c2 100644 --- a/proofs/cbmc/invntt_layer/Makefile +++ b/proofs/cbmc/invntt_layer/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_fqmul APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_invntt_layer diff --git a/proofs/cbmc/keccak_absorb/Makefile b/proofs/cbmc/keccak_absorb/Makefile index 85cc8e9eb..ab4cb1d91 100644 --- a/proofs/cbmc/keccak_absorb/Makefile +++ b/proofs/cbmc/keccak_absorb/Makefile @@ -28,9 +28,25 @@ USE_FUNCTION_CONTRACTS+=mld_keccakf1600_xor_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = keccak_absorb diff --git a/proofs/cbmc/keccak_absorb_once_x4/Makefile b/proofs/cbmc/keccak_absorb_once_x4/Makefile index 43fad1b73..67ba3036c 100644 --- a/proofs/cbmc/keccak_absorb_once_x4/Makefile +++ b/proofs/cbmc/keccak_absorb_once_x4/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_keccakf1600x4_xor_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_keccak_absorb_once_x4 diff --git a/proofs/cbmc/keccak_f1600_x1_native_aarch64/Makefile b/proofs/cbmc/keccak_f1600_x1_native_aarch64/Makefile index 6deddaa92..97a070e0e 100644 --- a/proofs/cbmc/keccak_f1600_x1_native_aarch64/Makefile +++ b/proofs/cbmc/keccak_f1600_x1_native_aarch64/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x1_scalar_aarch64_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x1_native diff --git a/proofs/cbmc/keccak_f1600_x1_native_aarch64_v84a/Makefile b/proofs/cbmc/keccak_f1600_x1_native_aarch64_v84a/Makefile index a75bd297b..23aec7913 100644 --- a/proofs/cbmc/keccak_f1600_x1_native_aarch64_v84a/Makefile +++ b/proofs/cbmc/keccak_f1600_x1_native_aarch64_v84a/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x1_v84a_aarch64_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x1_native diff --git a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v84a/Makefile b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v84a/Makefile index ef1367f20..0b7a2dae5 100644 --- a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v84a/Makefile +++ b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v84a/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x2_v84a_aarch64_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x4_native_aarch64_v84a diff --git a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid/Makefile b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid/Makefile index 4d67c24cf..d41325db0 100644 --- a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid/Makefile +++ b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x4_native_aarch64_v8a_scalar_hybrid diff --git a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid/Makefile b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid/Makefile index fe88c1810..812dbb10e 100644 --- a/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid/Makefile +++ b/proofs/cbmc/keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x4_native_aarch64_v8a_v84a_scalar_hybrid diff --git a/proofs/cbmc/keccak_f1600_x4_native_avx2/Makefile b/proofs/cbmc/keccak_f1600_x4_native_avx2/Makefile index a62d65850..e4bb3ca3e 100644 --- a/proofs/cbmc/keccak_f1600_x4_native_avx2/Makefile +++ b/proofs/cbmc/keccak_f1600_x4_native_avx2/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x4_avx2_asm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_f1600_x4_native_avx2 diff --git a/proofs/cbmc/keccak_finalize/Makefile b/proofs/cbmc/keccak_finalize/Makefile index e130320ab..2851492c6 100644 --- a/proofs/cbmc/keccak_finalize/Makefile +++ b/proofs/cbmc/keccak_finalize/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_xor_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = keccak_finalize diff --git a/proofs/cbmc/keccak_init/Makefile b/proofs/cbmc/keccak_init/Makefile index 382641481..05d3a0ab3 100644 --- a/proofs/cbmc/keccak_init/Makefile +++ b/proofs/cbmc/keccak_init/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = keccak_init diff --git a/proofs/cbmc/keccak_squeeze/Makefile b/proofs/cbmc/keccak_squeeze/Makefile index e6a4681fc..10491d2c4 100644 --- a/proofs/cbmc/keccak_squeeze/Makefile +++ b/proofs/cbmc/keccak_squeeze/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_keccakf1600_extract_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccak_squeeze diff --git a/proofs/cbmc/keccak_squeezeblocks_x4/Makefile b/proofs/cbmc/keccak_squeezeblocks_x4/Makefile index ed6c9d42c..3eb2633d8 100644 --- a/proofs/cbmc/keccak_squeezeblocks_x4/Makefile +++ b/proofs/cbmc/keccak_squeezeblocks_x4/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_keccakf1600x4_permute APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_keccak_squeezeblocks_x4 diff --git a/proofs/cbmc/keccakf1600_extract_bytes/Makefile b/proofs/cbmc/keccakf1600_extract_bytes/Makefile index 9dcadd54d..da52b16e9 100644 --- a/proofs/cbmc/keccakf1600_extract_bytes/Makefile +++ b/proofs/cbmc/keccakf1600_extract_bytes/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600_extract_bytes diff --git a/proofs/cbmc/keccakf1600_extract_bytes_BE/Makefile b/proofs/cbmc/keccakf1600_extract_bytes_BE/Makefile index 823b3915e..dd8dc0475 100644 --- a/proofs/cbmc/keccakf1600_extract_bytes_BE/Makefile +++ b/proofs/cbmc/keccakf1600_extract_bytes_BE/Makefile @@ -24,9 +24,27 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 --big-endian +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --big-endian + DEFINES += -DMLD_SYS_BIG_ENDIAN=1 FUNCTION_NAME = mld_keccakf1600_extract_bytes diff --git a/proofs/cbmc/keccakf1600_permute/Makefile b/proofs/cbmc/keccakf1600_permute/Makefile index cfdafabda..3a35ba9bc 100644 --- a/proofs/cbmc/keccakf1600_permute/Makefile +++ b/proofs/cbmc/keccakf1600_permute/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_permute_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600_permute diff --git a/proofs/cbmc/keccakf1600_permute_c/Makefile b/proofs/cbmc/keccakf1600_permute_c/Makefile index 0885a8515..a1cf352de 100644 --- a/proofs/cbmc/keccakf1600_permute_c/Makefile +++ b/proofs/cbmc/keccakf1600_permute_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600_permute_c diff --git a/proofs/cbmc/keccakf1600_permute_native/Makefile b/proofs/cbmc/keccakf1600_permute_native/Makefile index 5cd1543ed..c28f3f759 100644 --- a/proofs/cbmc/keccakf1600_permute_native/Makefile +++ b/proofs/cbmc/keccakf1600_permute_native/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x1_native mld_keccakf1600_permute_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600_permute_native diff --git a/proofs/cbmc/keccakf1600_xor_bytes/Makefile b/proofs/cbmc/keccakf1600_xor_bytes/Makefile index 1f771707e..e0ee62957 100644 --- a/proofs/cbmc/keccakf1600_xor_bytes/Makefile +++ b/proofs/cbmc/keccakf1600_xor_bytes/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600_xor_bytes diff --git a/proofs/cbmc/keccakf1600_xor_bytes_BE/Makefile b/proofs/cbmc/keccakf1600_xor_bytes_BE/Makefile index 99985884a..f148fbdab 100644 --- a/proofs/cbmc/keccakf1600_xor_bytes_BE/Makefile +++ b/proofs/cbmc/keccakf1600_xor_bytes_BE/Makefile @@ -25,9 +25,26 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla --big-endian +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 +CBMC_SOLVER_BITWUZLA_FLAGS = --big-endian DEFINES += -DMLD_SYS_BIG_ENDIAN diff --git a/proofs/cbmc/keccakf1600x4_extract_bytes/Makefile b/proofs/cbmc/keccakf1600x4_extract_bytes/Makefile index b8a76752f..86ee02437 100644 --- a/proofs/cbmc/keccakf1600x4_extract_bytes/Makefile +++ b/proofs/cbmc/keccakf1600x4_extract_bytes/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600x4_extract_bytes_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_extract_bytes diff --git a/proofs/cbmc/keccakf1600x4_extract_bytes_c/Makefile b/proofs/cbmc/keccakf1600x4_extract_bytes_c/Makefile index bfa29e43b..397db75c8 100644 --- a/proofs/cbmc/keccakf1600x4_extract_bytes_c/Makefile +++ b/proofs/cbmc/keccakf1600x4_extract_bytes_c/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_extract_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_extract_bytes_c diff --git a/proofs/cbmc/keccakf1600x4_extract_bytes_native/Makefile b/proofs/cbmc/keccakf1600x4_extract_bytes_native/Makefile index 3a478f899..4d99021fc 100644 --- a/proofs/cbmc/keccakf1600x4_extract_bytes_native/Makefile +++ b/proofs/cbmc/keccakf1600x4_extract_bytes_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_extract_bytes_x4_native mld_keccakf1600x4 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccakf1600x4_extract_bytes_native diff --git a/proofs/cbmc/keccakf1600x4_permute/Makefile b/proofs/cbmc/keccakf1600x4_permute/Makefile index 35a101501..0e9fdd793 100644 --- a/proofs/cbmc/keccakf1600x4_permute/Makefile +++ b/proofs/cbmc/keccakf1600x4_permute/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_permute APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_permute diff --git a/proofs/cbmc/keccakf1600x4_permute_native/Makefile b/proofs/cbmc/keccakf1600x4_permute_native/Makefile index fb523ec63..e46307964 100644 --- a/proofs/cbmc/keccakf1600x4_permute_native/Makefile +++ b/proofs/cbmc/keccakf1600x4_permute_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_f1600_x4_native APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_permute_native diff --git a/proofs/cbmc/keccakf1600x4_xor_bytes/Makefile b/proofs/cbmc/keccakf1600x4_xor_bytes/Makefile index b1a806d35..83a8f9334 100644 --- a/proofs/cbmc/keccakf1600x4_xor_bytes/Makefile +++ b/proofs/cbmc/keccakf1600x4_xor_bytes/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600x4_xor_bytes_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_xor_bytes diff --git a/proofs/cbmc/keccakf1600x4_xor_bytes_c/Makefile b/proofs/cbmc/keccakf1600x4_xor_bytes_c/Makefile index 180f7d48c..ce30b03cb 100644 --- a/proofs/cbmc/keccakf1600x4_xor_bytes_c/Makefile +++ b/proofs/cbmc/keccakf1600x4_xor_bytes_c/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_xor_bytes APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_keccakf1600x4_xor_bytes_c diff --git a/proofs/cbmc/keccakf1600x4_xor_bytes_native/Makefile b/proofs/cbmc/keccakf1600x4_xor_bytes_native/Makefile index 994583981..a7fa3a54f 100644 --- a/proofs/cbmc/keccakf1600x4_xor_bytes_native/Makefile +++ b/proofs/cbmc/keccakf1600x4_xor_bytes_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccakf1600_xor_bytes_x4_native mld_keccakf1600x4_xor APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = keccakf1600x4_xor_bytes_native diff --git a/proofs/cbmc/lib/cvc5_arrays_exp b/proofs/cbmc/lib/cvc5_arrays_exp new file mode 100755 index 000000000..291264042 --- /dev/null +++ b/proofs/cbmc/lib/cvc5_arrays_exp @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Copyright (c) The mldsa-native project authors +# SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + +# Enable the experimental array theory in cvc5. CBMC encodes parts of +# the CPROVER library using STORE_ALL, which cvc5 only accepts under +# --arrays-exp. +# +# `exec` is load-bearing: without it bash sits between cbmc and cvc5, +# holds the stdout FD open after cvc5 closes it, and cbmc's reader +# stops mid-stream and treats every property verdict as ERROR even +# though cvc5 returned `unsat`. +exec cvc5 --arrays-exp "$@" diff --git a/proofs/cbmc/lib/summarize.py b/proofs/cbmc/lib/summarize.py index ccabcf1e4..9a742815c 100644 --- a/proofs/cbmc/lib/summarize.py +++ b/proofs/cbmc/lib/summarize.py @@ -74,22 +74,70 @@ def _get_rendered_table(data): return "".join(table) +def _split_pipeline_name(pipeline_name): + """Split a litani pipeline name of the form `__` back + into (proof_uid, solver). Returns (None, None) for names that don't carry + a solver suffix (e.g. the `print_tool_versions` pipeline).""" + if "__" not in pipeline_name: + return None, None + proof_uid, _, solver = pipeline_name.rpartition("__") + return proof_uid, solver + + +# Marker emitted by cbmc when the SMT backend returned `unknown` on the +# verification query. cbmc still exits non-zero (cprover-status: ERROR) +# in this case, so the pipeline shows up as `fail` in litani; but no +# property was actually refuted -- the solver simply could not decide. +# We surface this as a distinct "Inconclusive" outcome. +_SOLVER_UNKNOWN_MARKER = 'SMT2 solver returned "unknown"' + + +def _is_solver_inconclusive(stdout_file): + """Return True iff the cbmc safety-check job's stdout-file (result.xml) + contains the cbmc message indicating the SMT backend returned `unknown`. + """ + if not stdout_file: + return False + try: + with open(stdout_file, encoding="utf-8", errors="replace") as f: + return _SOLVER_UNKNOWN_MARKER in f.read() + except OSError: + return False + + def _parse_proof_pipeline(proof_pipeline): - """Parse a single proof pipeline, returning (name, status, duration, has_timeout).""" + """Parse a single proof pipeline, returning + (name, solver, status, duration, has_timeout).""" duration = 0 has_timeout = False + inconclusive = False for stage in proof_pipeline["ci_stages"]: for job in stage["jobs"]: if job.get("timeout_reached", False): has_timeout = True if "duration" in job: duration += int(job["duration"]) - - status = "Timeout" if has_timeout else proof_pipeline["status"].title() - return proof_pipeline["name"], status, duration, has_timeout + # Identify the safety-check job by its description suffix. + # Litani stores both description and stdout_file under + # wrapper_arguments (the args passed to `litani add-job`). + wa = job.get("wrapper_arguments") or {} + desc = wa.get("description") or "" + if desc.endswith(": checking safety properties") and _is_solver_inconclusive( + wa.get("stdout_file") + ): + inconclusive = True + + if has_timeout: + status = "Timeout" + elif inconclusive: + status = "Inconclusive" + else: + status = proof_pipeline["status"].title() + name, solver = _split_pipeline_name(proof_pipeline["name"]) + return name, solver, status, duration, has_timeout -def _get_status_and_proof_summaries(run_dict): +def _get_status_and_proof_summaries(run_dict, omitted_pairs=None): """Parse a dict representing a Litani run and create lists summarizing the proof results. @@ -97,26 +145,47 @@ def _get_status_and_proof_summaries(run_dict): ---------- run_dict A dictionary representing a Litani run. + omitted_pairs + Optional iterable of (proof_uid, solver) tuples corresponding to + (harness, solver) pairs that were intentionally not run because the + harness disables that solver. They render as blank rows so they + remain visible. Returns ------- A list of 2 lists. The first sub-list maps a status to the number of proofs with that status. - The second sub-list maps each proof to its status. + The second sub-list maps each (proof, solver) to its status. """ count_statuses = {} - proofs = [["Proof", "Status", "Duration (in s)"]] + proofs = [["Proof", "Solver", "Status", "Duration (in s)"]] for proof_pipeline in run_dict["pipelines"]: if proof_pipeline["name"] == "print_tool_versions": continue - name, status, duration, has_timeout = _parse_proof_pipeline(proof_pipeline) + name, solver, status, duration, has_timeout = _parse_proof_pipeline( + proof_pipeline + ) + if name is None: + # Pipelines that don't follow the __ convention + # (e.g. legacy or other-purpose entries) are surfaced as-is. + name, solver = proof_pipeline["name"], "-" status_pretty = status.replace("_", " ") duration_str = "TIMEOUT" if has_timeout else str(duration) count_statuses[status_pretty] = count_statuses.get(status_pretty, 0) + 1 - proofs.append([name, status_pretty, duration_str]) + proofs.append([name, solver, status_pretty, duration_str]) + + if omitted_pairs: + for proof_uid, solver in omitted_pairs: + count_statuses["Omitted"] = count_statuses.get("Omitted", 0) + 1 + proofs.append([proof_uid, solver, "-", ""]) + + # Sort body rows by (proof, solver) so paired rows are adjacent. + body = proofs[1:] + body.sort(key=lambda r: (r[0], r[1])) + proofs = [proofs[0]] + body statuses = [["Status", "Count"]] for status, count in count_statuses.items(): @@ -124,7 +193,7 @@ def _get_status_and_proof_summaries(run_dict): return [statuses, proofs] -def export_result_json(output_path, run_file): +def export_result_json(output_path, run_file, omitted_pairs=None): """Export JSON with summary, failures, and runtimes.""" if output_path is None: return @@ -132,17 +201,41 @@ def export_result_json(output_path, run_file): with open(run_file, encoding="utf-8") as f: run_dict = json.load(f) - _, proof_table = _get_status_and_proof_summaries(run_dict) - # proof_table: [["Proof", "Status", "Duration (in s)"], [name, status, duration], ...] + _, proof_table = _get_status_and_proof_summaries(run_dict, omitted_pairs) + # proof_table rows are [name, solver, status, duration_str]. failures, runtimes = [], [] - for name, status, duration_str in proof_table[1:]: # skip header + for name, solver, status, duration_str in proof_table[1:]: # skip header is_success = status == "Success" + is_omitted = status == "-" + is_inconclusive = status == "Inconclusive" - if not is_success: - failures.append({"name": name, "status": status, "duration": duration_str}) + if is_omitted: + runtimes.append({"name": name, "solver": solver, "status": "omitted"}) + continue - runtime = {"name": name, "unit": "seconds"} + if is_inconclusive: + runtimes.append( + { + "name": name, + "solver": solver, + "status": "inconclusive", + "duration": duration_str, + } + ) + continue + + if not is_success: + failures.append( + { + "name": name, + "solver": solver, + "status": status, + "duration": duration_str, + } + ) + + runtime = {"name": name, "solver": solver, "unit": "seconds"} if is_success: runtime["value"] = int(duration_str) else: @@ -152,14 +245,18 @@ def export_result_json(output_path, run_file): total = len(runtimes) failed = sum(1 for f in failures if f["status"] != "Timeout") timeout = sum(1 for f in failures if f["status"] == "Timeout") + omitted = sum(1 for r in runtimes if r.get("status") == "omitted") + inconclusive = sum(1 for r in runtimes if r.get("status") == "inconclusive") result = { "mldsa_parameter_set": os.getenv("MLD_CONFIG_PARAMETER_SET", "unknown"), "summary": { "total": total, - "success": total - failed - timeout, + "success": total - failed - timeout - omitted - inconclusive, "failed": failed, "timeout": timeout, + "omitted": omitted, + "inconclusive": inconclusive, }, "failures": failures, "runtimes": runtimes, @@ -169,7 +266,7 @@ def export_result_json(output_path, run_file): json.dump(result, f, indent=2) -def print_proof_results(out_file): +def print_proof_results(out_file, omitted_pairs=None): """ Print 2 strings that summarize the proof results. When printing, each string will render as a GitHub flavored Markdown table. @@ -177,7 +274,7 @@ def print_proof_results(out_file): output = "## Summary of CBMC proof results\n\n" with open(out_file, encoding="utf-8") as run_json: run_dict = json.load(run_json) - status_table, proof_table = _get_status_and_proof_summaries(run_dict) + status_table, proof_table = _get_status_and_proof_summaries(run_dict, omitted_pairs) for summary in (status_table, proof_table): output += _get_rendered_table(summary) @@ -197,16 +294,23 @@ def print_proof_results(out_file): "summarizing all proof results" ) - # Check for timeouts by examining status table - has_timeout = any(row[0] == "Timeout" for row in status_table[1:]) - has_failure = run_dict["status"] != "success" + # Check for timeouts and real failures. "Inconclusive" rows count as + # neither: the solver could not decide, but no property was refuted. + proof_statuses = [row[2] for row in proof_table[1:]] # status column + has_timeout = any(s == "Timeout" for s in proof_statuses) + has_real_failure = any(s == "Fail" for s in proof_statuses) + has_inconclusive = any(s == "Inconclusive" for s in proof_statuses) - if has_timeout or has_failure: + if has_timeout or has_real_failure: logging.error("Not all proofs passed.") if has_timeout: logging.error("Some proofs timed out.") logging.error(msg) sys.exit(1) + if has_inconclusive: + logging.warning( + "Some (proof, solver) pairs were inconclusive (solver returned 'unknown')." + ) logging.info(msg) diff --git a/proofs/cbmc/make_hint/Makefile b/proofs/cbmc/make_hint/Makefile index 3b5f8ed04..23270ec1c 100644 --- a/proofs/cbmc/make_hint/Makefile +++ b/proofs/cbmc/make_hint/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = make_hint diff --git a/proofs/cbmc/montgomery_reduce/Makefile b/proofs/cbmc/montgomery_reduce/Makefile index 10a38d216..3a4beefe8 100644 --- a/proofs/cbmc/montgomery_reduce/Makefile +++ b/proofs/cbmc/montgomery_reduce/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = montgomery_reduce diff --git a/proofs/cbmc/ntt_butterfly_block/Makefile b/proofs/cbmc/ntt_butterfly_block/Makefile index ae4b238e9..da147e00b 100644 --- a/proofs/cbmc/ntt_butterfly_block/Makefile +++ b/proofs/cbmc/ntt_butterfly_block/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_fqmul APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_ntt_butterfly_block diff --git a/proofs/cbmc/ntt_layer/Makefile b/proofs/cbmc/ntt_layer/Makefile index e2c8a0816..adec8a55c 100644 --- a/proofs/cbmc/ntt_layer/Makefile +++ b/proofs/cbmc/ntt_layer/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ntt_butterfly_block APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_ntt_layer diff --git a/proofs/cbmc/ntt_native_aarch64/Makefile b/proofs/cbmc/ntt_native_aarch64/Makefile index 7d0b65830..3cb852db1 100644 --- a/proofs/cbmc/ntt_native_aarch64/Makefile +++ b/proofs/cbmc/ntt_native_aarch64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = ntt_native_aarch64 diff --git a/proofs/cbmc/ntt_native_x86_64/Makefile b/proofs/cbmc/ntt_native_x86_64/Makefile index 432c2105f..1269bfdfe 100644 --- a/proofs/cbmc/ntt_native_x86_64/Makefile +++ b/proofs/cbmc/ntt_native_x86_64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = ntt_native_x86_64 diff --git a/proofs/cbmc/nttunpack_native_x86_64/Makefile b/proofs/cbmc/nttunpack_native_x86_64/Makefile index 380b7277a..939c47360 100644 --- a/proofs/cbmc/nttunpack_native_x86_64/Makefile +++ b/proofs/cbmc/nttunpack_native_x86_64/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS=mld_nttunpack_avx2_asm mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = nttunpack_native_x86_64 diff --git a/proofs/cbmc/pack_sig_c/Makefile b/proofs/cbmc/pack_sig_c/Makefile index 78019a47a..68eaf505c 100644 --- a/proofs/cbmc/pack_sig_c/Makefile +++ b/proofs/cbmc/pack_sig_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pack_sig_c diff --git a/proofs/cbmc/pack_sig_h/Makefile b/proofs/cbmc/pack_sig_h/Makefile index e16e14641..c718ad6d0 100644 --- a/proofs/cbmc/pack_sig_h/Makefile +++ b/proofs/cbmc/pack_sig_h/Makefile @@ -24,9 +24,26 @@ USE_FUNCTION_CONTRACTS=mld_make_hint APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = pack_sig_h diff --git a/proofs/cbmc/pack_sig_z/Makefile b/proofs/cbmc/pack_sig_z/Makefile index b30881434..9944e7d59 100644 --- a/proofs/cbmc/pack_sig_z/Makefile +++ b/proofs/cbmc/pack_sig_z/Makefile @@ -23,9 +23,25 @@ USE_FUNCTION_CONTRACTS=mld_polyz_pack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pack_sig_z diff --git a/proofs/cbmc/pack_sk_rho_key_tr_s2/Makefile b/proofs/cbmc/pack_sk_rho_key_tr_s2/Makefile index 1fec653ad..57284f103 100644 --- a/proofs/cbmc/pack_sk_rho_key_tr_s2/Makefile +++ b/proofs/cbmc/pack_sk_rho_key_tr_s2/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyveck_pack_eta APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pack_sk_rho_key_tr_s2 diff --git a/proofs/cbmc/pack_sk_s1/Makefile b/proofs/cbmc/pack_sk_s1/Makefile index 9d77946f5..3eb4633a3 100644 --- a/proofs/cbmc/pack_sk_s1/Makefile +++ b/proofs/cbmc/pack_sk_s1/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyvecl_pack_eta APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pack_sk_s1 diff --git a/proofs/cbmc/pointwise_acc_native_aarch64/Makefile b/proofs/cbmc/pointwise_acc_native_aarch64/Makefile index 2ba611f36..6d4c3a84c 100644 --- a/proofs/cbmc/pointwise_acc_native_aarch64/Makefile +++ b/proofs/cbmc/pointwise_acc_native_aarch64/Makefile @@ -35,9 +35,26 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 FUNCTION_NAME = pointwise_acc_native_aarch64 diff --git a/proofs/cbmc/pointwise_acc_native_x86_64/Makefile b/proofs/cbmc/pointwise_acc_native_x86_64/Makefile index 59545087b..95c1cc773 100644 --- a/proofs/cbmc/pointwise_acc_native_x86_64/Makefile +++ b/proofs/cbmc/pointwise_acc_native_x86_64/Makefile @@ -35,9 +35,26 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 FUNCTION_NAME = pointwise_acc_native_x86_64 diff --git a/proofs/cbmc/pointwise_native_aarch64/Makefile b/proofs/cbmc/pointwise_native_aarch64/Makefile index 53609a75e..0b159f82a 100644 --- a/proofs/cbmc/pointwise_native_aarch64/Makefile +++ b/proofs/cbmc/pointwise_native_aarch64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pointwise_native_aarch64 diff --git a/proofs/cbmc/pointwise_native_x86_64/Makefile b/proofs/cbmc/pointwise_native_x86_64/Makefile index 37274292c..e29b641c8 100644 --- a/proofs/cbmc/pointwise_native_x86_64/Makefile +++ b/proofs/cbmc/pointwise_native_x86_64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = pointwise_native_x86_64 diff --git a/proofs/cbmc/poly_add/Makefile b/proofs/cbmc/poly_add/Makefile index 9ef41e9b3..3aa40b154 100644 --- a/proofs/cbmc/poly_add/Makefile +++ b/proofs/cbmc/poly_add/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_add diff --git a/proofs/cbmc/poly_caddq/Makefile b/proofs/cbmc/poly_caddq/Makefile index 6655c0c38..b59c6a49d 100644 --- a/proofs/cbmc/poly_caddq/Makefile +++ b/proofs/cbmc/poly_caddq/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_caddq_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_caddq diff --git a/proofs/cbmc/poly_caddq_c/Makefile b/proofs/cbmc/poly_caddq_c/Makefile index 04868ff84..6a7f02080 100644 --- a/proofs/cbmc/poly_caddq_c/Makefile +++ b/proofs/cbmc/poly_caddq_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_caddq APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_caddq_c diff --git a/proofs/cbmc/poly_caddq_native/Makefile b/proofs/cbmc/poly_caddq_native/Makefile index 8d43e75e1..a6521dbf3 100644 --- a/proofs/cbmc/poly_caddq_native/Makefile +++ b/proofs/cbmc/poly_caddq_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_poly_caddq_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_caddq_native diff --git a/proofs/cbmc/poly_caddq_native_aarch64/Makefile b/proofs/cbmc/poly_caddq_native_aarch64/Makefile index 2089990d0..05e253ed0 100644 --- a/proofs/cbmc/poly_caddq_native_aarch64/Makefile +++ b/proofs/cbmc/poly_caddq_native_aarch64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS += mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_caddq_native_aarch64 diff --git a/proofs/cbmc/poly_challenge/Makefile b/proofs/cbmc/poly_challenge/Makefile index ec8f91c3f..315538966 100644 --- a/proofs/cbmc/poly_challenge/Makefile +++ b/proofs/cbmc/poly_challenge/Makefile @@ -29,9 +29,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_challenge diff --git a/proofs/cbmc/poly_chknorm/Makefile b/proofs/cbmc/poly_chknorm/Makefile index 97e169ff4..ff0699e4d 100644 --- a/proofs/cbmc/poly_chknorm/Makefile +++ b/proofs/cbmc/poly_chknorm/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_chknorm_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_chknorm diff --git a/proofs/cbmc/poly_chknorm_c/Makefile b/proofs/cbmc/poly_chknorm_c/Makefile index 5dd6526c5..d9cf46b03 100644 --- a/proofs/cbmc/poly_chknorm_c/Makefile +++ b/proofs/cbmc/poly_chknorm_c/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_neg_i32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_chknorm_c diff --git a/proofs/cbmc/poly_chknorm_native/Makefile b/proofs/cbmc/poly_chknorm_native/Makefile index e8f5f4e27..ec288f033 100644 --- a/proofs/cbmc/poly_chknorm_native/Makefile +++ b/proofs/cbmc/poly_chknorm_native/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_ct_cmask_nonzero_u32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_chknorm_native diff --git a/proofs/cbmc/poly_chknorm_native_aarch64/Makefile b/proofs/cbmc/poly_chknorm_native_aarch64/Makefile index 29c878278..8d3bc5910 100644 --- a/proofs/cbmc/poly_chknorm_native_aarch64/Makefile +++ b/proofs/cbmc/poly_chknorm_native_aarch64/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS += mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_chknorm_native_aarch64 diff --git a/proofs/cbmc/poly_decompose/Makefile b/proofs/cbmc/poly_decompose/Makefile index 106a35b45..e6967c021 100644 --- a/proofs/cbmc/poly_decompose/Makefile +++ b/proofs/cbmc/poly_decompose/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= mld_poly_decompose_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_decompose diff --git a/proofs/cbmc/poly_decompose_32_native_aarch64/Makefile b/proofs/cbmc/poly_decompose_32_native_aarch64/Makefile index 3b78a88b5..d88e24dcd 100644 --- a/proofs/cbmc/poly_decompose_32_native_aarch64/Makefile +++ b/proofs/cbmc/poly_decompose_32_native_aarch64/Makefile @@ -35,9 +35,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_decompose_32_native_aarch64 diff --git a/proofs/cbmc/poly_decompose_88_native_aarch64/Makefile b/proofs/cbmc/poly_decompose_88_native_aarch64/Makefile index 0bdff0dad..03ccfcbf0 100644 --- a/proofs/cbmc/poly_decompose_88_native_aarch64/Makefile +++ b/proofs/cbmc/poly_decompose_88_native_aarch64/Makefile @@ -32,9 +32,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_decompose_88_native_aarch64 diff --git a/proofs/cbmc/poly_decompose_c/Makefile b/proofs/cbmc/poly_decompose_c/Makefile index 92a10d6e0..b80fb3ead 100644 --- a/proofs/cbmc/poly_decompose_c/Makefile +++ b/proofs/cbmc/poly_decompose_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_decompose APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_decompose_c diff --git a/proofs/cbmc/poly_decompose_native/Makefile b/proofs/cbmc/poly_decompose_native/Makefile index 8bfb251cf..2643e7c42 100644 --- a/proofs/cbmc/poly_decompose_native/Makefile +++ b/proofs/cbmc/poly_decompose_native/Makefile @@ -31,9 +31,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_decompose_native diff --git a/proofs/cbmc/poly_invntt_tomont/Makefile b/proofs/cbmc/poly_invntt_tomont/Makefile index f7e5f75af..2aaf306b9 100644 --- a/proofs/cbmc/poly_invntt_tomont/Makefile +++ b/proofs/cbmc/poly_invntt_tomont/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_invntt_tomont_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_invntt_tomont diff --git a/proofs/cbmc/poly_invntt_tomont_c/Makefile b/proofs/cbmc/poly_invntt_tomont_c/Makefile index 070ea4a38..72847b3c5 100644 --- a/proofs/cbmc/poly_invntt_tomont_c/Makefile +++ b/proofs/cbmc/poly_invntt_tomont_c/Makefile @@ -24,9 +24,26 @@ USE_FUNCTION_CONTRACTS=mld_invntt_layer APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 FUNCTION_NAME = mld_poly_invntt_tomont_c diff --git a/proofs/cbmc/poly_invntt_tomont_native/Makefile b/proofs/cbmc/poly_invntt_tomont_native/Makefile index 3328ae0f1..2ee8063bf 100644 --- a/proofs/cbmc/poly_invntt_tomont_native/Makefile +++ b/proofs/cbmc/poly_invntt_tomont_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_poly_invntt_tomont_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_invntt_tomont_native diff --git a/proofs/cbmc/poly_ntt/Makefile b/proofs/cbmc/poly_ntt/Makefile index 76ce01105..de8e2267b 100644 --- a/proofs/cbmc/poly_ntt/Makefile +++ b/proofs/cbmc/poly_ntt/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_ntt_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_ntt diff --git a/proofs/cbmc/poly_ntt_c/Makefile b/proofs/cbmc/poly_ntt_c/Makefile index 6139dee9c..463fb2ec5 100644 --- a/proofs/cbmc/poly_ntt_c/Makefile +++ b/proofs/cbmc/poly_ntt_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ntt_layer APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_ntt_c diff --git a/proofs/cbmc/poly_ntt_native/Makefile b/proofs/cbmc/poly_ntt_native/Makefile index 4b9ab2179..1fe8b4bc9 100644 --- a/proofs/cbmc/poly_ntt_native/Makefile +++ b/proofs/cbmc/poly_ntt_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_poly_ntt_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_ntt diff --git a/proofs/cbmc/poly_permute_bitrev_to_custom_optional/Makefile b/proofs/cbmc/poly_permute_bitrev_to_custom_optional/Makefile index 395ac5215..46644feed 100644 --- a/proofs/cbmc/poly_permute_bitrev_to_custom_optional/Makefile +++ b/proofs/cbmc/poly_permute_bitrev_to_custom_optional/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_permute_bitrev_to_custom_optional diff --git a/proofs/cbmc/poly_permute_bitrev_to_custom_optional_native/Makefile b/proofs/cbmc/poly_permute_bitrev_to_custom_optional_native/Makefile index 5b0e484e0..24c9c5968 100644 --- a/proofs/cbmc/poly_permute_bitrev_to_custom_optional_native/Makefile +++ b/proofs/cbmc/poly_permute_bitrev_to_custom_optional_native/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_permute_bitrev_to_custom APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_permute_bitrev_to_custom_optional_native diff --git a/proofs/cbmc/poly_pointwise_montgomery/Makefile b/proofs/cbmc/poly_pointwise_montgomery/Makefile index a63ff5a72..5af2f7ca3 100644 --- a/proofs/cbmc/poly_pointwise_montgomery/Makefile +++ b/proofs/cbmc/poly_pointwise_montgomery/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_pointwise_montgomery_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_pointwise_montgomery diff --git a/proofs/cbmc/poly_pointwise_montgomery_c/Makefile b/proofs/cbmc/poly_pointwise_montgomery_c/Makefile index 587b45915..49ced24eb 100644 --- a/proofs/cbmc/poly_pointwise_montgomery_c/Makefile +++ b/proofs/cbmc/poly_pointwise_montgomery_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_montgomery_reduce APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_pointwise_montgomery_c diff --git a/proofs/cbmc/poly_pointwise_montgomery_native/Makefile b/proofs/cbmc/poly_pointwise_montgomery_native/Makefile index f56f250e9..d0e3bd72e 100644 --- a/proofs/cbmc/poly_pointwise_montgomery_native/Makefile +++ b/proofs/cbmc/poly_pointwise_montgomery_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_poly_pointwise_montgomery_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_pointwise_montgomery_native diff --git a/proofs/cbmc/poly_power2round/Makefile b/proofs/cbmc/poly_power2round/Makefile index 870df24e9..611f05e02 100644 --- a/proofs/cbmc/poly_power2round/Makefile +++ b/proofs/cbmc/poly_power2round/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_power2round APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_power2round diff --git a/proofs/cbmc/poly_reduce/Makefile b/proofs/cbmc/poly_reduce/Makefile index b536df0da..cd09614ff 100644 --- a/proofs/cbmc/poly_reduce/Makefile +++ b/proofs/cbmc/poly_reduce/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_reduce32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_reduce diff --git a/proofs/cbmc/poly_shiftl/Makefile b/proofs/cbmc/poly_shiftl/Makefile index 667cde513..dd1fd278a 100644 --- a/proofs/cbmc/poly_shiftl/Makefile +++ b/proofs/cbmc/poly_shiftl/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_shiftl diff --git a/proofs/cbmc/poly_sub/Makefile b/proofs/cbmc/poly_sub/Makefile index 9a960fe3d..c5a9a126b 100644 --- a/proofs/cbmc/poly_sub/Makefile +++ b/proofs/cbmc/poly_sub/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_sub diff --git a/proofs/cbmc/poly_uniform/Makefile b/proofs/cbmc/poly_uniform/Makefile index 7196a0d42..d53328269 100644 --- a/proofs/cbmc/poly_uniform/Makefile +++ b/proofs/cbmc/poly_uniform/Makefile @@ -30,9 +30,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform diff --git a/proofs/cbmc/poly_uniform_4x/Makefile b/proofs/cbmc/poly_uniform_4x/Makefile index cad5fe42b..02e4976bc 100644 --- a/proofs/cbmc/poly_uniform_4x/Makefile +++ b/proofs/cbmc/poly_uniform_4x/Makefile @@ -32,9 +32,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform_4x diff --git a/proofs/cbmc/poly_uniform_eta/Makefile b/proofs/cbmc/poly_uniform_eta/Makefile index 42a8b4a21..80b26a3b5 100644 --- a/proofs/cbmc/poly_uniform_eta/Makefile +++ b/proofs/cbmc/poly_uniform_eta/Makefile @@ -30,9 +30,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform_eta diff --git a/proofs/cbmc/poly_uniform_eta_4x/Makefile b/proofs/cbmc/poly_uniform_eta_4x/Makefile index f183853fc..607673e35 100644 --- a/proofs/cbmc/poly_uniform_eta_4x/Makefile +++ b/proofs/cbmc/poly_uniform_eta_4x/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform_eta_4x diff --git a/proofs/cbmc/poly_uniform_gamma1/Makefile b/proofs/cbmc/poly_uniform_gamma1/Makefile index cb7907c9c..87a78d843 100644 --- a/proofs/cbmc/poly_uniform_gamma1/Makefile +++ b/proofs/cbmc/poly_uniform_gamma1/Makefile @@ -35,9 +35,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform_gamma1 diff --git a/proofs/cbmc/poly_uniform_gamma1_4x/Makefile b/proofs/cbmc/poly_uniform_gamma1_4x/Makefile index 73f27d938..7568db0bd 100644 --- a/proofs/cbmc/poly_uniform_gamma1_4x/Makefile +++ b/proofs/cbmc/poly_uniform_gamma1_4x/Makefile @@ -32,9 +32,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_uniform_gamma1_4x diff --git a/proofs/cbmc/poly_use_hint/Makefile b/proofs/cbmc/poly_use_hint/Makefile index 1fe11a03d..80b364eb3 100644 --- a/proofs/cbmc/poly_use_hint/Makefile +++ b/proofs/cbmc/poly_use_hint/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_use_hint_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_use_hint diff --git a/proofs/cbmc/poly_use_hint_c/Makefile b/proofs/cbmc/poly_use_hint_c/Makefile index 188b8e705..cda37b599 100644 --- a/proofs/cbmc/poly_use_hint_c/Makefile +++ b/proofs/cbmc/poly_use_hint_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_use_hint APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_poly_use_hint_c diff --git a/proofs/cbmc/poly_use_hint_native/Makefile b/proofs/cbmc/poly_use_hint_native/Makefile index b4438cc33..6d875cbcf 100644 --- a/proofs/cbmc/poly_use_hint_native/Makefile +++ b/proofs/cbmc/poly_use_hint_native/Makefile @@ -31,9 +31,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_use_hint_native diff --git a/proofs/cbmc/poly_use_hint_native_aarch64/Makefile b/proofs/cbmc/poly_use_hint_native_aarch64/Makefile index 4a5da443c..2f8870c6b 100644 --- a/proofs/cbmc/poly_use_hint_native_aarch64/Makefile +++ b/proofs/cbmc/poly_use_hint_native_aarch64/Makefile @@ -35,9 +35,25 @@ USE_FUNCTION_CONTRACTS+=mld_sys_check_capability APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = poly_use_hint_native_aarch64 diff --git a/proofs/cbmc/polyeta_pack/Makefile b/proofs/cbmc/polyeta_pack/Makefile index eae68d53e..2966a0f75 100644 --- a/proofs/cbmc/polyeta_pack/Makefile +++ b/proofs/cbmc/polyeta_pack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyeta_pack diff --git a/proofs/cbmc/polyeta_unpack/Makefile b/proofs/cbmc/polyeta_unpack/Makefile index 848bb9af2..3bc1f5bac 100644 --- a/proofs/cbmc/polyeta_unpack/Makefile +++ b/proofs/cbmc/polyeta_unpack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyeta_unpack diff --git a/proofs/cbmc/polymat_expand_entry/Makefile b/proofs/cbmc/polymat_expand_entry/Makefile index 9b3d8b3cb..c22f3b57a 100644 --- a/proofs/cbmc/polymat_expand_entry/Makefile +++ b/proofs/cbmc/polymat_expand_entry/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_poly_permute_bitrev_to_custom_optional APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_polymat_expand_entry diff --git a/proofs/cbmc/polyt0_pack/Makefile b/proofs/cbmc/polyt0_pack/Makefile index 8e86bc2ae..01b06831c 100644 --- a/proofs/cbmc/polyt0_pack/Makefile +++ b/proofs/cbmc/polyt0_pack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyt0_pack diff --git a/proofs/cbmc/polyt0_unpack/Makefile b/proofs/cbmc/polyt0_unpack/Makefile index 9264b63be..a5d24fc8b 100644 --- a/proofs/cbmc/polyt0_unpack/Makefile +++ b/proofs/cbmc/polyt0_unpack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyt0_unpack diff --git a/proofs/cbmc/polyt1_pack/Makefile b/proofs/cbmc/polyt1_pack/Makefile index 6e3bfb854..725e148b1 100644 --- a/proofs/cbmc/polyt1_pack/Makefile +++ b/proofs/cbmc/polyt1_pack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyt1_pack diff --git a/proofs/cbmc/polyt1_unpack/Makefile b/proofs/cbmc/polyt1_unpack/Makefile index 2ad340a06..d456e6468 100644 --- a/proofs/cbmc/polyt1_unpack/Makefile +++ b/proofs/cbmc/polyt1_unpack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyt1_unpack diff --git a/proofs/cbmc/polyvec_matrix_expand/Makefile b/proofs/cbmc/polyvec_matrix_expand/Makefile index 41a895e0a..e1adee4f9 100644 --- a/proofs/cbmc/polyvec_matrix_expand/Makefile +++ b/proofs/cbmc/polyvec_matrix_expand/Makefile @@ -30,9 +30,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = polyvec_matrix_expand diff --git a/proofs/cbmc/polyvec_matrix_expand_serial/Makefile b/proofs/cbmc/polyvec_matrix_expand_serial/Makefile index 22f6a35be..7db0d8ebe 100644 --- a/proofs/cbmc/polyvec_matrix_expand_serial/Makefile +++ b/proofs/cbmc/polyvec_matrix_expand_serial/Makefile @@ -28,9 +28,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvec_matrix_expand_serial diff --git a/proofs/cbmc/polyvec_matrix_pointwise_montgomery_row/Makefile b/proofs/cbmc/polyvec_matrix_pointwise_montgomery_row/Makefile index 122b3f8a7..435c222cd 100644 --- a/proofs/cbmc/polyvec_matrix_pointwise_montgomery_row/Makefile +++ b/proofs/cbmc/polyvec_matrix_pointwise_montgomery_row/Makefile @@ -31,9 +31,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = polyvec_matrix_pointwise_montgomery_row diff --git a/proofs/cbmc/polyvec_matrix_pointwise_montgomery_yvec/Makefile b/proofs/cbmc/polyvec_matrix_pointwise_montgomery_yvec/Makefile index f84c1cd01..0c0cf403a 100644 --- a/proofs/cbmc/polyvec_matrix_pointwise_montgomery_yvec/Makefile +++ b/proofs/cbmc/polyvec_matrix_pointwise_montgomery_yvec/Makefile @@ -37,9 +37,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 --arrays-uf-always +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --arrays-uf-always FUNCTION_NAME = polyvec_matrix_pointwise_montgomery_yvec diff --git a/proofs/cbmc/polyveck_caddq/Makefile b/proofs/cbmc/polyveck_caddq/Makefile index ca9ad511b..d5fc78144 100644 --- a/proofs/cbmc/polyveck_caddq/Makefile +++ b/proofs/cbmc/polyveck_caddq/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_caddq APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_caddq diff --git a/proofs/cbmc/polyveck_chknorm/Makefile b/proofs/cbmc/polyveck_chknorm/Makefile index 1ea9d7256..eeae858f2 100644 --- a/proofs/cbmc/polyveck_chknorm/Makefile +++ b/proofs/cbmc/polyveck_chknorm/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_chknorm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_chknorm diff --git a/proofs/cbmc/polyveck_decompose/Makefile b/proofs/cbmc/polyveck_decompose/Makefile index 7500d6807..0f71db167 100644 --- a/proofs/cbmc/polyveck_decompose/Makefile +++ b/proofs/cbmc/polyveck_decompose/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_decompose APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_decompose diff --git a/proofs/cbmc/polyveck_invntt_tomont/Makefile b/proofs/cbmc/polyveck_invntt_tomont/Makefile index b6e763148..09062124e 100644 --- a/proofs/cbmc/polyveck_invntt_tomont/Makefile +++ b/proofs/cbmc/polyveck_invntt_tomont/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_invntt_tomont APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_invntt_tomont diff --git a/proofs/cbmc/polyveck_ntt/Makefile b/proofs/cbmc/polyveck_ntt/Makefile index 88eed1a89..8e83107cf 100644 --- a/proofs/cbmc/polyveck_ntt/Makefile +++ b/proofs/cbmc/polyveck_ntt/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_ntt diff --git a/proofs/cbmc/polyveck_pack_eta/Makefile b/proofs/cbmc/polyveck_pack_eta/Makefile index 67fdd0d1e..c6d5833ed 100644 --- a/proofs/cbmc/polyveck_pack_eta/Makefile +++ b/proofs/cbmc/polyveck_pack_eta/Makefile @@ -23,9 +23,25 @@ USE_FUNCTION_CONTRACTS=mld_polyeta_pack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_pack_eta diff --git a/proofs/cbmc/polyveck_pack_w1/Makefile b/proofs/cbmc/polyveck_pack_w1/Makefile index 0dff07c42..da532679f 100644 --- a/proofs/cbmc/polyveck_pack_w1/Makefile +++ b/proofs/cbmc/polyveck_pack_w1/Makefile @@ -23,9 +23,25 @@ USE_FUNCTION_CONTRACTS=mld_polyw1_pack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_pack_w1 diff --git a/proofs/cbmc/polyveck_reduce/Makefile b/proofs/cbmc/polyveck_reduce/Makefile index 6d9c17ef8..217fec1e2 100644 --- a/proofs/cbmc/polyveck_reduce/Makefile +++ b/proofs/cbmc/polyveck_reduce/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_reduce diff --git a/proofs/cbmc/polyveck_unpack_eta/Makefile b/proofs/cbmc/polyveck_unpack_eta/Makefile index 0b7cfaeb7..f3610d7c9 100644 --- a/proofs/cbmc/polyveck_unpack_eta/Makefile +++ b/proofs/cbmc/polyveck_unpack_eta/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyeta_unpack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyveck_unpack_eta diff --git a/proofs/cbmc/polyvecl_chknorm/Makefile b/proofs/cbmc/polyvecl_chknorm/Makefile index 15f5316a2..36b3bd009 100644 --- a/proofs/cbmc/polyvecl_chknorm/Makefile +++ b/proofs/cbmc/polyvecl_chknorm/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_chknorm APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_chknorm diff --git a/proofs/cbmc/polyvecl_ntt/Makefile b/proofs/cbmc/polyvecl_ntt/Makefile index f82517c90..1996d6b30 100644 --- a/proofs/cbmc/polyvecl_ntt/Makefile +++ b/proofs/cbmc/polyvecl_ntt/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_ntt APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_ntt diff --git a/proofs/cbmc/polyvecl_pack_eta/Makefile b/proofs/cbmc/polyvecl_pack_eta/Makefile index 598a1ca30..1908ff512 100644 --- a/proofs/cbmc/polyvecl_pack_eta/Makefile +++ b/proofs/cbmc/polyvecl_pack_eta/Makefile @@ -23,9 +23,25 @@ USE_FUNCTION_CONTRACTS=mld_polyeta_pack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_pack_eta diff --git a/proofs/cbmc/polyvecl_pointwise_acc_montgomery/Makefile b/proofs/cbmc/polyvecl_pointwise_acc_montgomery/Makefile index 2857aa424..bd2cbd936 100644 --- a/proofs/cbmc/polyvecl_pointwise_acc_montgomery/Makefile +++ b/proofs/cbmc/polyvecl_pointwise_acc_montgomery/Makefile @@ -29,9 +29,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 FUNCTION_NAME = polyvecl_pointwise_acc_montgomery diff --git a/proofs/cbmc/polyvecl_pointwise_acc_montgomery_c/Makefile b/proofs/cbmc/polyvecl_pointwise_acc_montgomery_c/Makefile index 7eefed633..76f4e0524 100644 --- a/proofs/cbmc/polyvecl_pointwise_acc_montgomery_c/Makefile +++ b/proofs/cbmc/polyvecl_pointwise_acc_montgomery_c/Makefile @@ -29,9 +29,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = mld_polyvecl_pointwise_acc_montgomery_c diff --git a/proofs/cbmc/polyvecl_pointwise_acc_montgomery_native/Makefile b/proofs/cbmc/polyvecl_pointwise_acc_montgomery_native/Makefile index a854cb907..ec6fbefc8 100644 --- a/proofs/cbmc/polyvecl_pointwise_acc_montgomery_native/Makefile +++ b/proofs/cbmc/polyvecl_pointwise_acc_montgomery_native/Makefile @@ -36,9 +36,26 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_smt_only --z3 FUNCTION_NAME = polyvecl_pointwise_acc_montgomery_native diff --git a/proofs/cbmc/polyvecl_uniform_gamma1/Makefile b/proofs/cbmc/polyvecl_uniform_gamma1/Makefile index 914989f87..3c9786e81 100644 --- a/proofs/cbmc/polyvecl_uniform_gamma1/Makefile +++ b/proofs/cbmc/polyvecl_uniform_gamma1/Makefile @@ -33,9 +33,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_uniform_gamma1 diff --git a/proofs/cbmc/polyvecl_uniform_gamma1_serial/Makefile b/proofs/cbmc/polyvecl_uniform_gamma1_serial/Makefile index 60b44643c..0f5fd1057 100644 --- a/proofs/cbmc/polyvecl_uniform_gamma1_serial/Makefile +++ b/proofs/cbmc/polyvecl_uniform_gamma1_serial/Makefile @@ -31,9 +31,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_uniform_gamma1_serial diff --git a/proofs/cbmc/polyvecl_unpack_eta/Makefile b/proofs/cbmc/polyvecl_unpack_eta/Makefile index d49d9601f..43a200e4c 100644 --- a/proofs/cbmc/polyvecl_unpack_eta/Makefile +++ b/proofs/cbmc/polyvecl_unpack_eta/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyeta_unpack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_unpack_eta diff --git a/proofs/cbmc/polyvecl_unpack_z/Makefile b/proofs/cbmc/polyvecl_unpack_z/Makefile index e7b8fc85c..03a2d9617 100644 --- a/proofs/cbmc/polyvecl_unpack_z/Makefile +++ b/proofs/cbmc/polyvecl_unpack_z/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyz_unpack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyvecl_unpack_z diff --git a/proofs/cbmc/polyw1_pack/Makefile b/proofs/cbmc/polyw1_pack/Makefile index 658175e75..e9151f10a 100644 --- a/proofs/cbmc/polyw1_pack/Makefile +++ b/proofs/cbmc/polyw1_pack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyw1_pack diff --git a/proofs/cbmc/polyz_pack/Makefile b/proofs/cbmc/polyz_pack/Makefile index ec3c3aa79..c8a211f55 100644 --- a/proofs/cbmc/polyz_pack/Makefile +++ b/proofs/cbmc/polyz_pack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyz_pack diff --git a/proofs/cbmc/polyz_unpack/Makefile b/proofs/cbmc/polyz_unpack/Makefile index dd2c964e1..5699e3fbd 100644 --- a/proofs/cbmc/polyz_unpack/Makefile +++ b/proofs/cbmc/polyz_unpack/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyz_unpack_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyz_unpack diff --git a/proofs/cbmc/polyz_unpack_17_native_aarch64/Makefile b/proofs/cbmc/polyz_unpack_17_native_aarch64/Makefile index 652527ceb..fbf43082c 100644 --- a/proofs/cbmc/polyz_unpack_17_native_aarch64/Makefile +++ b/proofs/cbmc/polyz_unpack_17_native_aarch64/Makefile @@ -32,9 +32,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyz_unpack_17_native_aarch64 diff --git a/proofs/cbmc/polyz_unpack_19_native_aarch64/Makefile b/proofs/cbmc/polyz_unpack_19_native_aarch64/Makefile index 13ab6abe0..1a8ce3355 100644 --- a/proofs/cbmc/polyz_unpack_19_native_aarch64/Makefile +++ b/proofs/cbmc/polyz_unpack_19_native_aarch64/Makefile @@ -35,9 +35,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyz_unpack_19_native_aarch64 diff --git a/proofs/cbmc/polyz_unpack_c/Makefile b/proofs/cbmc/polyz_unpack_c/Makefile index 0a3112c17..90e2f8897 100644 --- a/proofs/cbmc/polyz_unpack_c/Makefile +++ b/proofs/cbmc/polyz_unpack_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_polyz_unpack_c diff --git a/proofs/cbmc/polyz_unpack_native/Makefile b/proofs/cbmc/polyz_unpack_native/Makefile index fd1de793f..60e64e248 100644 --- a/proofs/cbmc/polyz_unpack_native/Makefile +++ b/proofs/cbmc/polyz_unpack_native/Makefile @@ -31,9 +31,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = polyz_unpack_native diff --git a/proofs/cbmc/power2round/Makefile b/proofs/cbmc/power2round/Makefile index a8b2bcf3f..9a2847ac7 100644 --- a/proofs/cbmc/power2round/Makefile +++ b/proofs/cbmc/power2round/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = power2round diff --git a/proofs/cbmc/prepare_domain_separation_prefix/Makefile b/proofs/cbmc/prepare_domain_separation_prefix/Makefile index d4e70e9cc..ffced7ea4 100644 --- a/proofs/cbmc/prepare_domain_separation_prefix/Makefile +++ b/proofs/cbmc/prepare_domain_separation_prefix/Makefile @@ -24,8 +24,25 @@ USE_DYNAMIC_FRAMES=1 FUNCTION_NAME = prepare_domain_separation_prefix -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 CBMC_OBJECT_BITS = 8 diff --git a/proofs/cbmc/reduce32/Makefile b/proofs/cbmc/reduce32/Makefile index ae879ac33..0ca4f7861 100644 --- a/proofs/cbmc/reduce32/Makefile +++ b/proofs/cbmc/reduce32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = reduce32 diff --git a/proofs/cbmc/rej_eta/Makefile b/proofs/cbmc/rej_eta/Makefile index 350b80ca3..055188633 100644 --- a/proofs/cbmc/rej_eta/Makefile +++ b/proofs/cbmc/rej_eta/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= mld_rej_eta_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_rej_eta diff --git a/proofs/cbmc/rej_eta_c/Makefile b/proofs/cbmc/rej_eta_c/Makefile index ba0294c64..f50aa596f 100644 --- a/proofs/cbmc/rej_eta_c/Makefile +++ b/proofs/cbmc/rej_eta_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_rej_eta_c diff --git a/proofs/cbmc/rej_eta_native/Makefile b/proofs/cbmc/rej_eta_native/Makefile index 76fb0b117..c6c3f7fbe 100644 --- a/proofs/cbmc/rej_eta_native/Makefile +++ b/proofs/cbmc/rej_eta_native/Makefile @@ -31,9 +31,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_rej_eta_native diff --git a/proofs/cbmc/rej_uniform/Makefile b/proofs/cbmc/rej_uniform/Makefile index 12633d07d..bb8a1d4a4 100644 --- a/proofs/cbmc/rej_uniform/Makefile +++ b/proofs/cbmc/rej_uniform/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_rej_uniform_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_rej_uniform diff --git a/proofs/cbmc/rej_uniform_c/Makefile b/proofs/cbmc/rej_uniform_c/Makefile index 6acca2b4d..2440cda8c 100644 --- a/proofs/cbmc/rej_uniform_c/Makefile +++ b/proofs/cbmc/rej_uniform_c/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_rej_uniform_c diff --git a/proofs/cbmc/rej_uniform_native/Makefile b/proofs/cbmc/rej_uniform_native/Makefile index dfa85d68b..d63b6b36c 100644 --- a/proofs/cbmc/rej_uniform_native/Makefile +++ b/proofs/cbmc/rej_uniform_native/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS+=mld_rej_uniform_c APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_rej_uniform_native_native diff --git a/proofs/cbmc/run-cbmc-proofs.py b/proofs/cbmc/run-cbmc-proofs.py index c18515fa8..ae5fc423c 100755 --- a/proofs/cbmc/run-cbmc-proofs.py +++ b/proofs/cbmc/run-cbmc-proofs.py @@ -190,6 +190,23 @@ def get_args(): "metavar": "FILE", "help": "path to export result JSON", }, + { + "flags": ["--solver"], + "action": "append", + "metavar": "SOLVER", + "help": ( + "restrict run to the given solver (repeatable). Default: all " + "solvers in the canonical list (Z3, BITWUZLA, CVC5)" + ), + }, + { + "flags": ["--default-solver-only"], + "action": "store_true", + "help": ( + "for each harness, run only the solver named by its " + "CBMC_DEFAULT_SOLVER. Cannot be combined with --solver." + ), + }, ]: flags = arg.pop("flags") pars.add_argument(*flags, **arg) @@ -246,7 +263,14 @@ def get_proof_dirs(proof_root, proof_list, marker_file): sys.exit(1) -def run_build(litani, jobs, fail_on_proof_failure, summarize, output_result_json=None): +def run_build( + litani, + jobs, + fail_on_proof_failure, + summarize, + output_result_json=None, + omitted_pairs=None, +): cmd = [str(litani), "run-build"] if jobs: cmd.extend(["-j", str(jobs)]) @@ -264,8 +288,8 @@ def run_build(litani, jobs, fail_on_proof_failure, summarize, output_result_json sys.exit(1) if summarize: - export_result_json(output_result_json, out_file) - print_proof_results(out_file) + export_result_json(output_result_json, out_file, omitted_pairs) + print_proof_results(out_file, omitted_pairs) out_file.unlink() if proc.returncode: @@ -306,6 +330,74 @@ def get_litani_capabilities(litani_path): return [] +# Canonical solver list. Kept in sync with CBMC_SOLVERS_ALL in +# proofs/cbmc/Makefile.common. +ALL_SOLVERS = ["Z3", "BITWUZLA", "CVC5"] + + +def read_solver_matrix(proof_dir): + """Return the dict {solver: enabled_bool} declared by a per-harness Makefile. + + Invokes `make echo-solver-matrix` in proof_dir, which prints space- + separated tokens of the form `:<0|1>`. + """ + cmd = ["make", "--no-print-directory", "echo-solver-matrix"] + proc = subprocess.run( + cmd, + cwd=proof_dir, + universal_newlines=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if proc.returncode: + logging.critical( + "Could not read solver matrix from %s: %s", proof_dir, proc.stderr + ) + sys.exit(1) + out = {s: False for s in ALL_SOLVERS} + for tok in proc.stdout.split(): + if ":" not in tok: + continue + name, _, val = tok.partition(":") + if name not in out: + logging.warning( + "Solver %s in %s not in ALL_SOLVERS; ignoring", name, proof_dir + ) + continue + out[name] = val.strip() == "1" + return out + + +def read_default_solver(proof_dir): + """Return CBMC_DEFAULT_SOLVER for a per-harness Makefile.""" + cmd = ["make", "--no-print-directory", "echo-default-solver"] + proc = subprocess.run( + cmd, + cwd=proof_dir, + universal_newlines=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False, + ) + if proc.returncode: + logging.critical( + "Could not read default solver from %s: %s", proof_dir, proc.stderr + ) + sys.exit(1) + return proc.stdout.strip() + + +def read_proof_uid(proof_dir): + """Read PROOF_UID from a per-harness Makefile.""" + with (pathlib.Path(proof_dir) / "Makefile").open() as handle: + for line in handle: + match = re.match(r"^PROOF_UID\s*=(?P[^#]+)", line) + if match: + return match["uid"].strip() + return None + + def check_uid_uniqueness(proof_dir, proof_uids): with (pathlib.Path(proof_dir) / "Makefile").open() as handle: for line in handle: @@ -348,7 +440,6 @@ def should_enable_pools(litani_caps, args): async def configure_proof_dirs( # pylint: disable=too-many-arguments queue, counter, - proof_uids, enable_pools, enable_memory_profiling, report_target, @@ -357,9 +448,8 @@ async def configure_proof_dirs( # pylint: disable=too-many-arguments ): while True: print_counter(counter) - path = str(await queue.get()) - - check_uid_uniqueness(path, proof_uids) + path, solver = await queue.get() + path = str(path) pools = ["ENABLE_POOLS=true"] if enable_pools else [] profiling = ["ENABLE_MEMORY_PROFILING=true"] if enable_memory_profiling else [] @@ -368,21 +458,13 @@ async def configure_proof_dirs( # pylint: disable=too-many-arguments env = os.environ.copy() env["CBMC_TIMEOUT"] = str(timeout) - # delete old reports - proc = await asyncio.create_subprocess_exec( - "make", - "veryclean", - cwd=path, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE, - ) - # Allow interactive tasks to preempt proof configuration proc = await asyncio.create_subprocess_exec( "nice", "-n", "15", "make", + f"CBMC_SOLVER={solver}", *pools, *profiling, "-B", @@ -402,7 +484,8 @@ async def configure_proof_dirs( # pylint: disable=too-many-arguments for line in stderr.decode().splitlines(): logging.debug(line) - counter["fail" if proc.returncode else "pass"].append(path) + key = f"{path}::{solver}" + counter["fail" if proc.returncode else "pass"].append(key) counter["complete"] += 1 print_counter(counter) @@ -486,19 +569,69 @@ async def main(): # pylint: disable=too-many-locals logging.critical("No proof directories found") sys.exit(1) - proof_queue = asyncio.Queue() + if args.default_solver_only and args.solver: + logging.critical("--default-solver-only and --solver are mutually exclusive") + sys.exit(1) + + selected_solvers = args.solver if args.solver else list(ALL_SOLVERS) + for s in selected_solvers: + if s not in ALL_SOLVERS: + logging.critical( + "Unknown --solver %s; expected one of %s", s, ", ".join(ALL_SOLVERS) + ) + sys.exit(1) + + # Enforce PROOF_UID uniqueness up-front, then expand each proof + # directory into the Cartesian product with its solver matrix. + # When --default-solver-only is given, the per-harness solver list + # collapses to {CBMC_DEFAULT_SOLVER}; otherwise every solver in + # selected_solvers that the matrix declares enabled is used. + proof_uids = {} + pairs_to_run = [] # (proof_dir, solver) + omitted_pairs = [] # (proof_uid, solver) for proof_dir in proof_dirs: - proof_queue.put_nowait(proof_dir) + check_uid_uniqueness(proof_dir, proof_uids) + proof_uid = read_proof_uid(proof_dir) + matrix = read_solver_matrix(proof_dir) + if args.default_solver_only: + per_harness_solvers = [read_default_solver(proof_dir)] + else: + per_harness_solvers = selected_solvers + for solver in per_harness_solvers: + if matrix.get(solver): + pairs_to_run.append((proof_dir, solver)) + else: + omitted_pairs.append((proof_uid, solver)) + + if not pairs_to_run and not omitted_pairs: + logging.critical("No (proof, solver) pairs to run") + sys.exit(1) + + # Wipe stale per-solver outputs once per proof directory before + # configuring any (proof, solver) pair. `make veryclean` deletes + # logs/, gotos/, and report/ recursively. + for proof_dir in proof_dirs: + subprocess.run( + ["make", "veryclean"], + cwd=proof_dir, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + check=False, + ) + proof_queue = asyncio.Queue() + for pair in pairs_to_run: + proof_queue.put_nowait(pair) + + total = len(pairs_to_run) counter = { "pass": [], "fail": [], "complete": 0, - "total": len(proof_dirs), - "width": int(math.log10(len(proof_dirs))) + 1, + "total": total, + "width": int(math.log10(max(total, 1))) + 1, } - proof_uids = {} tasks = [] enable_memory_profiling = should_enable_memory_profiling(litani_caps, args) @@ -509,7 +642,6 @@ async def main(): # pylint: disable=too-many-locals configure_proof_dirs( proof_queue, counter, - proof_uids, enable_pools, enable_memory_profiling, report_target, @@ -528,7 +660,7 @@ async def main(): # pylint: disable=too-many-locals if counter["fail"]: logging.critical( - "Failed to configure the following proofs:\n%s", + "Failed to configure the following (proof, solver) pairs:\n%s", "\n".join([str(f) for f in counter["fail"]]), ) sys.exit(1) @@ -540,6 +672,7 @@ async def main(): # pylint: disable=too-many-locals args.fail_on_proof_failure, args.summarize, args.output_result_json, + omitted_pairs=omitted_pairs, ) diff --git a/proofs/cbmc/sample_s1_s2/Makefile b/proofs/cbmc/sample_s1_s2/Makefile index 1436dcdf8..de6daceda 100644 --- a/proofs/cbmc/sample_s1_s2/Makefile +++ b/proofs/cbmc/sample_s1_s2/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_uniform_eta_4x APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_sample_s1_s2 diff --git a/proofs/cbmc/sample_s1_s2_serial/Makefile b/proofs/cbmc/sample_s1_s2_serial/Makefile index e1034c6ca..8c0d9a72d 100644 --- a/proofs/cbmc/sample_s1_s2_serial/Makefile +++ b/proofs/cbmc/sample_s1_s2_serial/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_poly_uniform_eta APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_sample_s1_s2_serial diff --git a/proofs/cbmc/shake128_absorb/Makefile b/proofs/cbmc/shake128_absorb/Makefile index 37934e24c..5bb1121c6 100644 --- a/proofs/cbmc/shake128_absorb/Makefile +++ b/proofs/cbmc/shake128_absorb/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_absorb APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake128_absorb diff --git a/proofs/cbmc/shake128_finalize/Makefile b/proofs/cbmc/shake128_finalize/Makefile index 1829f2367..9e6a8b050 100644 --- a/proofs/cbmc/shake128_finalize/Makefile +++ b/proofs/cbmc/shake128_finalize/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_finalize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake128_finalize diff --git a/proofs/cbmc/shake128_init/Makefile b/proofs/cbmc/shake128_init/Makefile index de5b5ebc4..60c7eb3e3 100644 --- a/proofs/cbmc/shake128_init/Makefile +++ b/proofs/cbmc/shake128_init/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake128_init diff --git a/proofs/cbmc/shake128_release/Makefile b/proofs/cbmc/shake128_release/Makefile index 574ab51fe..f121b569b 100644 --- a/proofs/cbmc/shake128_release/Makefile +++ b/proofs/cbmc/shake128_release/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake128_release diff --git a/proofs/cbmc/shake128_squeeze/Makefile b/proofs/cbmc/shake128_squeeze/Makefile index 5218df41d..47d9c4113 100644 --- a/proofs/cbmc/shake128_squeeze/Makefile +++ b/proofs/cbmc/shake128_squeeze/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_squeeze APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = shake128_squeeze diff --git a/proofs/cbmc/shake128x4_absorb_once/Makefile b/proofs/cbmc/shake128x4_absorb_once/Makefile index 01903851e..db49fdfb6 100644 --- a/proofs/cbmc/shake128x4_absorb_once/Makefile +++ b/proofs/cbmc/shake128x4_absorb_once/Makefile @@ -30,9 +30,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_shake128x4_absorb_once diff --git a/proofs/cbmc/shake128x4_squeezeblocks/Makefile b/proofs/cbmc/shake128x4_squeezeblocks/Makefile index 1884c7987..603b65002 100644 --- a/proofs/cbmc/shake128x4_squeezeblocks/Makefile +++ b/proofs/cbmc/shake128x4_squeezeblocks/Makefile @@ -30,9 +30,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_shake128x4_squeezeblocks diff --git a/proofs/cbmc/shake256/Makefile b/proofs/cbmc/shake256/Makefile index 3a0c6a8ee..e5386b8e3 100644 --- a/proofs/cbmc/shake256/Makefile +++ b/proofs/cbmc/shake256/Makefile @@ -28,9 +28,25 @@ USE_FUNCTION_CONTRACTS+=mld_shake256_release APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake256 diff --git a/proofs/cbmc/shake256_absorb/Makefile b/proofs/cbmc/shake256_absorb/Makefile index ef57c2888..6a3d26396 100644 --- a/proofs/cbmc/shake256_absorb/Makefile +++ b/proofs/cbmc/shake256_absorb/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_absorb APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake256_absorb diff --git a/proofs/cbmc/shake256_finalize/Makefile b/proofs/cbmc/shake256_finalize/Makefile index 8a63169e0..908c8b57a 100644 --- a/proofs/cbmc/shake256_finalize/Makefile +++ b/proofs/cbmc/shake256_finalize/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_finalize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake256_finalize diff --git a/proofs/cbmc/shake256_init/Makefile b/proofs/cbmc/shake256_init/Makefile index a26a19d4b..81b84599d 100644 --- a/proofs/cbmc/shake256_init/Makefile +++ b/proofs/cbmc/shake256_init/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake256_init diff --git a/proofs/cbmc/shake256_release/Makefile b/proofs/cbmc/shake256_release/Makefile index b2100ec98..bea6fc0d8 100644 --- a/proofs/cbmc/shake256_release/Makefile +++ b/proofs/cbmc/shake256_release/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = shake256_release diff --git a/proofs/cbmc/shake256_squeeze/Makefile b/proofs/cbmc/shake256_squeeze/Makefile index f28f1129b..b1dfde681 100644 --- a/proofs/cbmc/shake256_squeeze/Makefile +++ b/proofs/cbmc/shake256_squeeze/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=keccak_squeeze APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = shake256_squeeze diff --git a/proofs/cbmc/shake256x4_absorb_once/Makefile b/proofs/cbmc/shake256x4_absorb_once/Makefile index 0d8bc83e3..da3488ad2 100644 --- a/proofs/cbmc/shake256x4_absorb_once/Makefile +++ b/proofs/cbmc/shake256x4_absorb_once/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_absorb_once_x4 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_shake256x4_absorb_once diff --git a/proofs/cbmc/shake256x4_squeezeblocks/Makefile b/proofs/cbmc/shake256x4_squeezeblocks/Makefile index cc30e9387..b56198a84 100644 --- a/proofs/cbmc/shake256x4_squeezeblocks/Makefile +++ b/proofs/cbmc/shake256x4_squeezeblocks/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_keccak_squeezeblocks_x4 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--bitwuzla +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = BITWUZLA +CBMC_SOLVER_BITWUZLA_ENABLED = 1 FUNCTION_NAME = mld_shake256x4_squeezeblocks diff --git a/proofs/cbmc/sig_unpack_hints/Makefile b/proofs/cbmc/sig_unpack_hints/Makefile index 22b8cb1f7..5a19d0d3c 100644 --- a/proofs/cbmc/sig_unpack_hints/Makefile +++ b/proofs/cbmc/sig_unpack_hints/Makefile @@ -23,9 +23,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_sig_unpack_hints diff --git a/proofs/cbmc/sign/Makefile b/proofs/cbmc/sign/Makefile index 01e626dd1..aa90becce 100644 --- a/proofs/cbmc/sign/Makefile +++ b/proofs/cbmc/sign/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_signature APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign diff --git a/proofs/cbmc/sign_keypair/Makefile b/proofs/cbmc/sign_keypair/Makefile index 6c50ae366..ed0faa9bf 100644 --- a/proofs/cbmc/sign_keypair/Makefile +++ b/proofs/cbmc/sign_keypair/Makefile @@ -27,9 +27,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_keypair diff --git a/proofs/cbmc/sign_keypair_internal/Makefile b/proofs/cbmc/sign_keypair_internal/Makefile index 113d4ed07..0372216c0 100644 --- a/proofs/cbmc/sign_keypair_internal/Makefile +++ b/proofs/cbmc/sign_keypair_internal/Makefile @@ -32,9 +32,26 @@ USE_FUNCTION_CONTRACTS+=mld_check_pct APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = sign_keypair_internal diff --git a/proofs/cbmc/sign_open/Makefile b/proofs/cbmc/sign_open/Makefile index 88389f818..196f10f92 100644 --- a/proofs/cbmc/sign_open/Makefile +++ b/proofs/cbmc/sign_open/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_verify APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_open diff --git a/proofs/cbmc/sign_pk_from_sk/Makefile b/proofs/cbmc/sign_pk_from_sk/Makefile index e2880954f..97fbac558 100644 --- a/proofs/cbmc/sign_pk_from_sk/Makefile +++ b/proofs/cbmc/sign_pk_from_sk/Makefile @@ -34,9 +34,26 @@ USE_FUNCTION_CONTRACTS+=mld_shake256 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = sign_pk_from_sk diff --git a/proofs/cbmc/sign_signature/Makefile b/proofs/cbmc/sign_signature/Makefile index 1cd24647b..ffc646a07 100644 --- a/proofs/cbmc/sign_signature/Makefile +++ b/proofs/cbmc/sign_signature/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_signature_internal APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_signature diff --git a/proofs/cbmc/sign_signature_extmu/Makefile b/proofs/cbmc/sign_signature_extmu/Makefile index b574e9302..17a429cb5 100644 --- a/proofs/cbmc/sign_signature_extmu/Makefile +++ b/proofs/cbmc/sign_signature_extmu/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_signature_internal APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_signature_extmu diff --git a/proofs/cbmc/sign_signature_internal/Makefile b/proofs/cbmc/sign_signature_internal/Makefile index e282030c1..8276ed0cc 100644 --- a/proofs/cbmc/sign_signature_internal/Makefile +++ b/proofs/cbmc/sign_signature_internal/Makefile @@ -30,9 +30,26 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = sign_signature_internal diff --git a/proofs/cbmc/sign_signature_pre_hash_internal/Makefile b/proofs/cbmc/sign_signature_pre_hash_internal/Makefile index c125a4340..625e13634 100644 --- a/proofs/cbmc/sign_signature_pre_hash_internal/Makefile +++ b/proofs/cbmc/sign_signature_pre_hash_internal/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_signature_internal APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_signature_pre_hash_internal diff --git a/proofs/cbmc/sign_signature_pre_hash_shake256/Makefile b/proofs/cbmc/sign_signature_pre_hash_shake256/Makefile index d38251a01..c4e331404 100644 --- a/proofs/cbmc/sign_signature_pre_hash_shake256/Makefile +++ b/proofs/cbmc/sign_signature_pre_hash_shake256/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_shake256 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_signature_pre_hash_shake256 diff --git a/proofs/cbmc/sign_verify/Makefile b/proofs/cbmc/sign_verify/Makefile index 00e665a71..69b1db334 100644 --- a/proofs/cbmc/sign_verify/Makefile +++ b/proofs/cbmc/sign_verify/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_verify diff --git a/proofs/cbmc/sign_verify_extmu/Makefile b/proofs/cbmc/sign_verify_extmu/Makefile index d9d4bc84f..b59851dc7 100644 --- a/proofs/cbmc/sign_verify_extmu/Makefile +++ b/proofs/cbmc/sign_verify_extmu/Makefile @@ -25,9 +25,25 @@ USE_FUNCTION_CONTRACTS=mld_verify_internal APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_verify_extmu diff --git a/proofs/cbmc/sign_verify_internal/Makefile b/proofs/cbmc/sign_verify_internal/Makefile index 6311f1585..c7b76cfd8 100644 --- a/proofs/cbmc/sign_verify_internal/Makefile +++ b/proofs/cbmc/sign_verify_internal/Makefile @@ -44,9 +44,26 @@ USE_FUNCTION_CONTRACTS+=mld_ct_memcmp APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 +CBMC_SOLVER_Z3_FLAGS = --external-smt2-solver $(PROOF_ROOT)/lib/z3_no_bv_extract --z3 FUNCTION_NAME = sign_verify_internal diff --git a/proofs/cbmc/sign_verify_pre_hash_internal/Makefile b/proofs/cbmc/sign_verify_pre_hash_internal/Makefile index ad8ce5099..907efe11f 100644 --- a/proofs/cbmc/sign_verify_pre_hash_internal/Makefile +++ b/proofs/cbmc/sign_verify_pre_hash_internal/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_zeroize APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_verify_pre_hash_internal diff --git a/proofs/cbmc/sign_verify_pre_hash_shake256/Makefile b/proofs/cbmc/sign_verify_pre_hash_shake256/Makefile index 1cc7093b1..9deafcbaf 100644 --- a/proofs/cbmc/sign_verify_pre_hash_shake256/Makefile +++ b/proofs/cbmc/sign_verify_pre_hash_shake256/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_shake256 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sign_verify_pre_hash_shake256 diff --git a/proofs/cbmc/sk_s1hat_get_poly/Makefile b/proofs/cbmc/sk_s1hat_get_poly/Makefile index 800f7452c..d4c1f374a 100644 --- a/proofs/cbmc/sk_s1hat_get_poly/Makefile +++ b/proofs/cbmc/sk_s1hat_get_poly/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sk_s1hat_get_poly diff --git a/proofs/cbmc/sk_s2hat_get_poly/Makefile b/proofs/cbmc/sk_s2hat_get_poly/Makefile index 820f6804d..0fb70f707 100644 --- a/proofs/cbmc/sk_s2hat_get_poly/Makefile +++ b/proofs/cbmc/sk_s2hat_get_poly/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sk_s2hat_get_poly diff --git a/proofs/cbmc/sk_t0hat_get_poly/Makefile b/proofs/cbmc/sk_t0hat_get_poly/Makefile index 261e635ac..793591976 100644 --- a/proofs/cbmc/sk_t0hat_get_poly/Makefile +++ b/proofs/cbmc/sk_t0hat_get_poly/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = sk_t0hat_get_poly diff --git a/proofs/cbmc/sys_check_capability/Makefile b/proofs/cbmc/sys_check_capability/Makefile index 879ea9964..7955c38db 100644 --- a/proofs/cbmc/sys_check_capability/Makefile +++ b/proofs/cbmc/sys_check_capability/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS= APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = is_native_capable diff --git a/proofs/cbmc/unpack_pk_t1/Makefile b/proofs/cbmc/unpack_pk_t1/Makefile index 838497fcc..7256cced9 100644 --- a/proofs/cbmc/unpack_pk_t1/Makefile +++ b/proofs/cbmc/unpack_pk_t1/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_polyt1_unpack APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = unpack_pk_t1 diff --git a/proofs/cbmc/unpack_sk/Makefile b/proofs/cbmc/unpack_sk/Makefile index e6945c5c2..ffd66a35d 100644 --- a/proofs/cbmc/unpack_sk/Makefile +++ b/proofs/cbmc/unpack_sk/Makefile @@ -26,9 +26,25 @@ USE_FUNCTION_CONTRACTS+=mld_unpack_sk_t0hat APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = unpack_sk diff --git a/proofs/cbmc/unpack_sk_s1hat/Makefile b/proofs/cbmc/unpack_sk_s1hat/Makefile index fe2213121..be4ef82be 100644 --- a/proofs/cbmc/unpack_sk_s1hat/Makefile +++ b/proofs/cbmc/unpack_sk_s1hat/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = unpack_sk_s1hat diff --git a/proofs/cbmc/unpack_sk_s2hat/Makefile b/proofs/cbmc/unpack_sk_s2hat/Makefile index 5d0a611a3..2737b7df9 100644 --- a/proofs/cbmc/unpack_sk_s2hat/Makefile +++ b/proofs/cbmc/unpack_sk_s2hat/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = unpack_sk_s2hat diff --git a/proofs/cbmc/unpack_sk_t0hat/Makefile b/proofs/cbmc/unpack_sk_t0hat/Makefile index 0daa969cd..e13b91bd7 100644 --- a/proofs/cbmc/unpack_sk_t0hat/Makefile +++ b/proofs/cbmc/unpack_sk_t0hat/Makefile @@ -29,9 +29,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = unpack_sk_t0hat diff --git a/proofs/cbmc/use_hint/Makefile b/proofs/cbmc/use_hint/Makefile index 5f01b0c1e..fd94827bb 100644 --- a/proofs/cbmc/use_hint/Makefile +++ b/proofs/cbmc/use_hint/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_decompose APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = use_hint diff --git a/proofs/cbmc/value_barrier_i64/Makefile b/proofs/cbmc/value_barrier_i64/Makefile index 0321332a5..09d0fc359 100644 --- a/proofs/cbmc/value_barrier_i64/Makefile +++ b/proofs/cbmc/value_barrier_i64/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_i64 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_value_barrier_i64 diff --git a/proofs/cbmc/value_barrier_u32/Makefile b/proofs/cbmc/value_barrier_u32/Makefile index eed24a975..0ea53231b 100644 --- a/proofs/cbmc/value_barrier_u32/Makefile +++ b/proofs/cbmc/value_barrier_u32/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_u32 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_value_barrier_u32 diff --git a/proofs/cbmc/value_barrier_u8/Makefile b/proofs/cbmc/value_barrier_u8/Makefile index 5336a5b54..e5e141c65 100644 --- a/proofs/cbmc/value_barrier_u8/Makefile +++ b/proofs/cbmc/value_barrier_u8/Makefile @@ -24,9 +24,25 @@ USE_FUNCTION_CONTRACTS=mld_ct_get_optblocker_u8 APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = mld_value_barrier_u8 diff --git a/proofs/cbmc/yvec_get_poly/Makefile b/proofs/cbmc/yvec_get_poly/Makefile index afe6b7e6b..43a2c7116 100644 --- a/proofs/cbmc/yvec_get_poly/Makefile +++ b/proofs/cbmc/yvec_get_poly/Makefile @@ -28,9 +28,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = yvec_get_poly diff --git a/proofs/cbmc/yvec_init/Makefile b/proofs/cbmc/yvec_init/Makefile index d73e4f1ef..cbad59692 100644 --- a/proofs/cbmc/yvec_init/Makefile +++ b/proofs/cbmc/yvec_init/Makefile @@ -28,9 +28,25 @@ endif APPLY_LOOP_CONTRACTS=on USE_DYNAMIC_FRAMES=1 -# Disable any setting of EXTERNAL_SAT_SOLVER, and choose SMT backend instead -EXTERNAL_SAT_SOLVER= -CBMCFLAGS=--smt2 +# To add or override per-solver entries in the solver matrix, set the +# variables below for each solver. {SOLVER} is one of the canonical +# solver identifiers (Z3, BITWUZLA, CVC5), declared in Makefile.common as +# CBMC_SOLVERS_ALL. +# +# CBMC_SOLVER_{SOLVER}_ENABLED ?= 0/1 +# CBMC_SOLVER_{SOLVER}_FLAGS ?= +# CBMC_SOLVER_{SOLVER}_EXT_SAT ?= +# +# Solvers default to enabled; disable a solver explicitly by setting +# CBMC_SOLVER_{SOLVER}_ENABLED = 0. The per-harness CBMC_DEFAULT_SOLVER +# selects which enabled solver is used when the harness is invoked +# directly (`make report` from this directory). The driver +# run-cbmc-proofs.py overrides CBMC_SOLVER on the command line to fan +# out across all enabled solvers. +# +# Solver matrix +CBMC_DEFAULT_SOLVER = Z3 +CBMC_SOLVER_Z3_ENABLED = 1 FUNCTION_NAME = yvec_init diff --git a/scripts/tests b/scripts/tests index c6f1cad32..31c94e271 100755 --- a/scripts/tests +++ b/scripts/tests @@ -918,6 +918,15 @@ class Tests: print(p) exit(0) + def solver_args(): + args = [] + if self.args.default_solver_only: + args.append("--default-solver-only") + if self.args.solver: + for s in self.args.solver: + args += ["--solver", s] + return args + def run_cbmc_single_step(mldsa_parameter_set, proofs): envvars = {"MLD_CONFIG_PARAMETER_SET": mldsa_parameter_set} if self.args.reduce_ram: @@ -940,6 +949,7 @@ class Tests: "-p", func, ] + + solver_args() + self.make_j(), cwd="proofs/cbmc", env=os.environ.copy() | envvars, @@ -1004,6 +1014,7 @@ class Tests: "-p", ] + proofs + + solver_args() + self.make_j() ) if self.args.output_result_json: @@ -1478,6 +1489,28 @@ def cli(): default=False, ) + cbmc_parser.add_argument( + "--solver", + action="append", + help=( + "Restrict CBMC run to the given solver (repeatable). Forwarded " + "to run-cbmc-proofs.py --solver. Default: all solvers in the " + "canonical list (Z3, BITWUZLA, CVC5)." + ), + default=None, + ) + + cbmc_parser.add_argument( + "--default-solver-only", + help=( + "For each harness, run only the solver named by its " + "CBMC_DEFAULT_SOLVER. Forwarded to run-cbmc-proofs.py. " + "Cannot be combined with --solver." + ), + action="store_true", + default=False, + ) + # hol_light arguments hol_light_parser = cmd_subparsers.add_parser( "hol_light",