付録B:ツールインストールガイド
本書のツール実行は、再現性(環境差の最小化)を優先し、次の2系統で提供する。
- コンテナ(推奨):devcontainer で統一環境を用意する
- ローカル:最小依存(Java/curl/unzip)で実行する
コマンドは代表例であり、配布形式や前提は変更される可能性がある。必要に応じて付録E(一次情報)も参照する。
本付録の手順により、少なくとも 1つのモデルチェック(Alloy/TLC/Apalache)と、1つのプログラム検証(Dafny)を再現できる。
対象ツール(最小セット)
- Alloy 6.x(CLI実行)
- TLA+ TLC(tla2tools.jar)
- Apalache(TLA+ 向け、SMT ベース)
- Dafny(検証器)
補足:
- Quint CLI は、TLA+ 意味論に基づく型付き仕様言語をCIに載せる選択肢であり、本リポジトリでは固定版のtypecheck/testを
nightlyで実行する。 - Rocq/Isabelle等の定理証明器は依存が大きいため、本付録では一次情報リンク(付録E)を主とする。
- Lean 4 は、本書の導線として 最小構成のみを本付録末尾に示す(Optional)。
- SPIN / NuSMV / CBMC / Quint / PRISM / Tamarin / SymbiYosys / RTLola に加え、cvc5 + Carcara の証明証跡再検査も
nightlylaneで扱う。source buildまたはarchive検査に必要な追加前提を後述する。
Tool lane inventoryと実行保証
全toolの分類、実行版、配布物digest、artifact上限、更新手順の正本は tools/tool-manifest.json である。
pr-quick はPR差分に関連する小さい例、nightly はtool単位の独立matrix、optional/manual は明示的な workflow_dispatch だけで実行する。
documentation-only は本文で紹介するが、このリポジトリがversion、環境、実行結果を保証しないtool/serviceを表す。
他toolに内蔵されたsolverを間接利用しても、solver単体の実行保証には数えない。
| Tool / service | lane | 検証済み version | 分類理由 | | — | — | — | — | | Alloy Analyzer | pr-quick | 6.2.0 | 小さい scope の4例を短時間で再現できる。 | | TLC | pr-quick | 1.7.4 | 固定 cfg・worker・seed・timeout で有限モデルを検査する。 | | Apalache | pr-quick | 0.52.1 | 短い探索長を固定した不変条件検査を毎PRで再現できる。 | | Dafny | pr-quick | 4.11.0 | 最小検証例が高速で安定している。 | | SPIN | nightly | 6.5.2 | source buildと状態探索をtool単位nightlyで分離する。 | | NuSMV | nightly | 2.7.1 | 依存を伴う公式source buildのためnightlyへ分離する。 | | CBMC | nightly | 6.10.0 | Ubuntu固定配布と有界検査をtool単位nightlyで実行する。 | | Quint | nightly | 0.32.0 | 公式single binaryでtypecheck/testを固定seedかつTypeScript backendで再現する。 | | PRISM Model Checker | nightly | 4.10.1 | 約41 MBの固定公式配布を取得し、定量的性質をtool単位nightlyで再現する。 | | Tamarin Prover | nightly | 1.12.0 | Tamarinと対応Maudeの固定公式配布を取得し、攻撃トレースと補題をtool単位nightlyで再現する。 | | SymbiYosys (sby) | nightly | v0.67-4-gfea6e46 | 約733 MBの固定OSS CAD Suiteを取得し、RTLのBMC、k-induction、coverをtool単位nightlyで再現する。 | | Kani Rust Verifier | optional/manual | 0.67.0 | 固定Rust nightlyを追加取得するため明示的manual dispatchに限定する。 | | TLA+ Toolbox | documentation-only | — | GUI/編集環境であり、本リポジトリのCLI保証対象外。 | | TLA+ VS Code extension | documentation-only | — | 編集支援はCLI検査と分離し、extension版を固定していない。 | | Community Z Tools (CZT) | documentation-only | — | Zの一次情報導線のみで実行assetがない。 | | FDR | documentation-only | — | CSPM例は掲載するが、配布・licenseを含むCI環境を固定していない。 | | ProB | documentation-only | — | 紹介のみで実行assetと固定環境がない。 | | PAT | documentation-only | — | 紹介のみで実行assetと固定環境がない。 | | nuXmv | documentation-only | — | NuSMVとは別製品として紹介するが、CIはNuSMVだけを保証する。 | | Java PathFinder | documentation-only | — | 紹介・演習候補のみで実行assetがない。 | | UPPAAL | documentation-only | — | GUI/license/配布条件を伴い自動化していない。 | | TIMES | documentation-only | — | リアルタイム検証の紹介のみ。 | | Rocq / Coq | documentation-only | — | 証明project、opam switch、library版を固定していない。 | | Lean 4 / Lake / mathlib / elan | documentation-only | — | proof projectと依存revisionがなく、Linux配布物も大きいため未実行。 | | Isabelle/HOL | documentation-only | — | 紹介のみでsession/build環境を固定していない。 | | Agda | documentation-only | — | 紹介のみでprojectとlibrary版を固定していない。 | | HOL4 | documentation-only | — | Aeneas接続先として紹介するだけで実行契約がない。 | | F* | documentation-only | — | 接続先/関連技術として紹介するだけで実行契約がない。 | | Frama-C | documentation-only | — | 紹介のみでplugin/solver構成を固定していない。 | | VeriFast | documentation-only | — | 紹介のみで実行assetがない。 | | SPARK | documentation-only | — | 産業toolchain/licenseを含む実行環境を固定していない。 | | Why3 | documentation-only | — | backend solverを含む実行構成を固定していない。 | | Verus | documentation-only | — | Rust/Z3/revisionを含む実行構成を固定していない。 | | Creusot | documentation-only | — | Why3/solver/Rustの組合せを固定していない。 | | Prusti / Viper | documentation-only | — | Rust/Viper toolchainと実行assetを固定していない。 | | Aeneas / Charon | documentation-only | — | 変換先を含むend-to-end contractを固定していない。 | | Z3 | documentation-only | — | 他toolの間接依存をsolver単体の実行保証には数えない。 | | cvc5 / CVC4 | nightly | 1.3.4 | 固定公式solver assetを毎夜検証・再展開し、独立Alethe checkerをsourceから再構築してUNSAT証明書を再検査する。 | | RTLola | nightly | 0.1.2 | 固定crates.io source packageを安全に再展開し、固定Rust toolchainとCargo.lockで構築したCLIにより、架空の有限CSV traceをoffline監視する。 | | Yices | documentation-only | — | 紹介のみで実行assetを固定していない。 | | MathSAT | documentation-only | — | 紹介のみでlicense/配布を含む環境を固定していない。 | | SCADE | documentation-only | — | 商用/GUI toolchainでありCI必須化しない。 | | Simulink | documentation-only | — | 産業事例の紹介のみでlicense環境を固定していない。 | | SAW | documentation-only | — | 産業事例の参照のみでs2n検証assetを同梱していない。 | | Cedar Analysis | documentation-only | — | service/APIとtool群が変化し、対象policy assetを固定していない。 | | Bedrock Guardrails Automated Reasoning checks | documentation-only | — | 外部service、region、API条件を固定CIへ必須化しない。 | | Solidity SMTChecker | documentation-only | — | Solidity/compiler/solver構成とcontract assetを固定していない。 | | Aptos Move Prover | documentation-only | — | Move toolchainとcontract assetを固定していない。 | | Certora Prover | documentation-only | — | 外部/産業toolchainを必須CIへ組み込まない。 | | LeanDojo | documentation-only | — | AI証明支援の評価基盤として紹介するだけ。 | | Lean Copilot | documentation-only | — | AI証明支援の紹介のみでmodel/projectを固定していない。 | | AlphaProof / AlphaGeometry 2 | documentation-only | — | 研究成果の紹介で、再配布可能なCLI契約がない。 | | DeepSeek-Prover-V2 | documentation-only | — | 研究成果の紹介でmodel/runtimeを固定していない。 | | ProofGym | documentation-only | — | 評価基盤の紹介のみでdataset/runtimeを固定していない。 | | APOLLO | documentation-only | — | 研究成果の紹介のみで実行contractがない。 |
上の inventory ブロックにある cvc5 の nightly 分類は、cvc5-alethe-unsat-certificate という狭い pinned nightly contract を表します。
「cvc5 全機能の一般保証」ではなく、cvc5 1.3.4 が生成した Alethe 証跡を Carcara 1.1.0 で独立再検査する一例だけを固定します。
RTLolaのnightly分類も、架空の3 event有限traceをoffline検査する二つの狭いcontractだけを表します。
正常traceで違反0件、既知の違反traceで1件を再現するものであり、RTLola全機能、本番event収集の完全性、すべての実行の正しさを保証しません。
実行laneでは、各entryにtimeout、memory budget、seed、scope、depth、boundを明示する。
artifactはtool version、command、入力ファイル別SHA-256と集約hash、exit code、stdout/stderr、success、counterexample、unknown、timeout、resource exhaustionを区別して残す。
保持期間は14日、stdout/stderrは1 entry当たり16 MiB、tool outputは1 entry当たり64 MiBを上限とする。
timeoutとstdout/stderr上限はrunnerが強制し、retained tool outputは実行後に検査する。一方、memoryMiBはCI容量計画用の申告値であり、OS/cgroupによる強制上限ではない。このためresource-exhaustedは検出可能な出力超過を表し、OOM killはtool-errorまたはrunner failureになる場合がある。
quint-counter: examples/quint/counter.qnt をQuint 0.32.0のTypeScript evaluatorでtypecheckし、seed20260716、各test 1 sampleで実行する。別配布のRust evaluatorを暗黙downloadしない。 【ツール準拠(そのまま動く)】node scripts/run-example-manifest.js --id quint-counterkani-abs: examples/kani/abs.rs のabs_is_nonnegativeharnessをKani 0.67.0、固定Rust nightly、unwind 1で検査する。追加downloadと実行コストがあるためoptional/manualであり、PRやscheduleからは起動しない。
cache復元後もQuint binaryとPRISM archiveのSHA-256を再検証する。
PRISM 4.10.1はGPL-2.0の公式Linux x86-64 archiveを毎回再展開して絶対pathを再設定し、tool binaryはrepository、CI artifact、Pagesへ再配布しない。
Tamarin Prover 1.12.0(GPL-3.0)と対応するMaude 3.5.1(GPL-2.0-or-later)も、固定SHA-256の公式archiveから毎回再展開する。Tamarinのartifactはlemma結果と欠陥版のattack graphを保持するが、両tool binaryは再配布しない。attack graphはmodel constantを保持するため、実在する秘密情報をmodelへ含めない。
SymbiYosysはOSS CAD Suite 20260716の公式Linux x64 archiveをSHA-256検証後に毎回再展開する。archive path、重複entry、symlinkの解決先、special fileを検査し、suite versionと、SBY、Yosys、Bitwuzlaのversion/source commitをbundle内のmetadata/licenseに照合する。suite release tagのcommitは配布物digestとは別の出典provenanceとして記録する。SBYとYosysはISC、BitwuzlaはMITであり、bundle内の他componentにはそれぞれのlicenseがある。artifactには正規化結果と必要なVCDだけを保持し、suite archive、展開binary、solver modelを再配布しない。
保持するのは入力hash、標準出力、期待値との比較結果だけである。
Kaniは検証済みarchiveから毎回再展開し、固定日のRust channel manifestもSHA-256を検証する。Rust component本体の整合性検査は、そのmanifestに記録されたchecksumを検証するrustupに委ねる。
RTLola CLI 0.1.2はApache-2.0のcrates.io source packageを固定SHA-256で取得し、暗黙の単一rootを含むarchive path、member数、展開size、file typeを検査して毎回再展開する。package内のCargo.lockと.cargo_vcs_info.jsonを照合し、固定Rust 1.87.0で--locked buildする。artifactには正規化判定と入力hashだけを保持し、source package、binary、未加工logを再配布しない。
【ツール準拠(そのまま動く)】
node scripts/run-example-manifest.js --id kani-abs
version更新は月次に公式release/tagとasset digestを確認し、versionだけの専用PRでclean-cache実行と出力契約差分をレビューする。 任意のrelease assetはDependabot/Renovateのpackage参照ではないため、自動更新されたものとして扱わない。
推奨:devcontainer(コンテナ手順)
前提:
- Docker が利用可能
- devcontainer を扱えるエディタ(例:VS Code + Dev Containers)
手順:
- 本リポジトリを devcontainer で開く(
.devcontainer/を利用) - 初回起動時に
tools/bootstrap.shが実行され、ツールがtools/.cache/に配置される - 次のコマンドでサンプルを実行する
# ツール取得(再実行しても可)
bash tools/bootstrap.sh
# Alloy(SATを確認)
bash tools/alloy-check.sh --verbose examples/alloy/collection.als
# TLC(No errorを確認)
bash tools/tlc-run.sh --config examples/tla/QueueBounded.cfg examples/tla/QueueBounded.tla
# Apalache(NoErrorを確認)
bash tools/apalache-check.sh --config examples/apalache/Counter.cfg --length 10 --init Init --next Next --inv Inv examples/apalache/Counter.tla
# Dafny(0 errorsを確認)
bash tools/dafny-verify.sh examples/dafny/Abs.dfy
期待される出力(抜粋):
- Alloy:
SAT(例:SATを含む行が表示される) - TLC:
Model checking completed. No error has been found. - Apalache:
The outcome is: NoErrorおよびEXITCODE: OK - Dafny:
finished with ... verified, 0 errors
出力(反例・ログ)は .artifacts/ 配下に保存される(CI のartifactとしてもアップロードされる)。
ローカル手順(非コンテナ)
前提(Linux/WSL)
- Java 17 以上(TLC/Alloy/Apalache の実行に必要)
curl/unzip
手順は devcontainer と同じで、bash tools/bootstrap.sh で必要物を取得し、tools/*.sh を実行する。
nightly lane の追加前提(Ubuntu 24.04 x86-64)
node scripts/run-example-manifest.js --lane nightlyはSPIN 6.5.2、NuSMV 2.7.1、CBMC 6.10.0、Quint 0.32.0、PRISM 4.10.1、Tamarin Prover 1.12.0、SymbiYosys、cvc5 / Carcara、RTLolaの15 entryを実行する。最小セットとは別に、SPIN/NuSMV/Carcara/RTLolaのsource buildとSymbiYosys archiveの安全なlayout検査には次の前提が必要である。CBMCはUbuntu 24.04 x86-64用の固定deb、Quintは同platform用の固定single binary、PRISMは約41 MBの固定公式archive、Tamarinは対応するMaude 3.5.1と二つの固定公式archive、SymbiYosysは約733 MBのOSS CAD Suite 20260716 Linux x64 archiveを使うため、この手順は同環境または互換環境を対象とする。
sudo apt-get update
sudo apt-get install --yes \
bison build-essential flex g++ gcc m4 patch pkg-config \
python3 python3-venv xz-utils
python3 -m venv tools/.tmp/nusmv-build-tools
tools/.tmp/nusmv-build-tools/bin/pip install \
--disable-pip-version-check \
--require-hashes \
--requirement tools/nusmv-build-requirements.txt
PATH="$PWD/tools/.tmp/nusmv-build-tools/bin:$PATH" \
node scripts/run-example-manifest.js --lane nightly
取得物は commit/version と SHA-256、Meson/Ninja は requirements の package hash で固定される。macOS、Windows ネイティブ、異なる CPU architecture ではこの lane を直接再現せず、Ubuntu 24.04 x86-64 のコンテナ、WSL2、または GitHub Actions の workflow_dispatch を使う。
証明証跡の独立再検査(cvc5 + Carcara)に追加で必要なもの
cvc5-alethe-unsat-certificate は、cvc5 1.3.4 の公式 release asset を取得して Alethe proof を生成し、Carcara 1.1.0 互換 commit の source archive を取得して source build した checker で検査する想定です。
対象環境は Ubuntu 24.04 x86-64 または同等の Linux を推奨します。
sudo apt-get update
sudo apt-get install --yes build-essential m4
# rustup と cargo が PATH 上にあることを確認する。
# bootstrap は固定した Rust/Cargo 1.87.0 を取得して使用する。
rustup --version
cargo --version
node scripts/run-example-manifest.js --id cvc5-alethe-unsat-certificate
この lane では、cvc5 binary と Carcara build 生成物をリポジトリや Pages へ再配布しません。
公式 Rust channel manifest の digest は provenance sentinel として検査し、rustup が固定versionのcomponent checksumを検査した後、導入済みrustc/Cargoのcommitとhostもmanifest値へ照合します。検証済みmanifest file自体をrustupへ渡しているわけではないため、二つの検査を同一視しません。
certificateは1 MiB、checker outputは64 KiBで制限します。保持対象は、SMT-LIB 入力、manifest の期待結果契約、生成された証明証跡、stdout/stderr、入力 hash、version metadata です。
証跡検査の成功は「その encoded problem に対して checker が受理した」ことだけを保証し、自然言語要件、元仕様、エンコーダ、未モデル化仮定までは保証しません。
runtime verification(RTLola)に追加で必要なもの
rtlola-auth-before-sensitive-normalとrtlola-auth-before-sensitive-violationは、固定したRTLola CLI source packageをRust 1.87.0でbuildし、相対時刻CSVをoffline監視します。
対象環境はUbuntu 24.04 x86-64または同等のLinuxです。
sudo apt-get update
sudo apt-get install --yes build-essential
rustup --version
cargo --version
node scripts/run-example-manifest.js --id rtlola-auth-before-sensitive-normal
node scripts/run-example-manifest.js --id rtlola-auth-before-sensitive-violation
bootstrapはRust channel manifest、rustc/Cargo commit、host、.crate digest、埋め込みCargo.lock、upstream commitを照合します。
正常系と違反系は固定した教材traceを検査するため、本番logをこのrepositoryやCI artifactへ投入してはいけません。
違反系のcounterexampleは期待結果であり、monitorが所定の違反を検出できることを回帰検査します。
PRISMだけを再実行する場合は次を使う。
node scripts/run-example-manifest.js --id prism-retry-communication
この実行はDTMCと4 propertyの数値契約を再現するだけであり、教育用成功確率0.8が実システムに妥当であることは保証しない。
Tamarinの欠陥版と修正版だけを再実行する場合は次を使う。
node scripts/run-example-manifest.js --id tamarin-replay-flawed
node scripts/run-example-manifest.js --id tamarin-replay-fixed
欠陥版のcounterexampleは期待された成功結果であり、修正版は四つの指定lemmaが同じsymbolic model設定でverifiedとなることを確認する。
SymbiYosysの欠陥版BMC、修正版proof、修正版coverだけを再実行する場合は次を使う。
node scripts/run-example-manifest.js --id sby-rtl-arbiter-flawed-bmc
node scripts/run-example-manifest.js --id sby-rtl-arbiter-fixed-prove
node scripts/run-example-manifest.js --id sby-rtl-arbiter-fixed-cover
欠陥版のcounterexampleは期待された成功結果である。proofのPASSは指定propertyとassumptionに相対的なk-induction結果であり、coverのPASSは対象状態へ至るwitnessが見つかったことを表す。
OS差分(要点)
- Windows:
- WSL2での実行を推奨(ツール配布物・シェルスクリプトの前提が揃う)
- WSL側に Java を導入する(Windows側のJavaではなく)
- macOS:
timeoutが標準でないため、tools/tlc-run.sh --time-limitを利用するにはgtimeout等の提供が必要(例:Homebrewでcoreutilsを導入)。tools/tlc-run.shはtimeout/gtimeoutを自動検出する。tools/bootstrap.shが取得する Dafny はLinux向け配布物のため、macOSでは公式配布物(macOS向け)かdotnet toolを利用する
- Linux:
- ディストリ依存でJavaパッケージ名が異なる(例:Ubuntu/Debianは
openjdk-17-jre)
- ディストリ依存でJavaパッケージ名が異なる(例:Ubuntu/Debianは
TLA+ / Apalache / Quint のエディタ・CLI導線(Optional)
本リポジトリでは tools/bootstrap.sh が TLC (tla2tools.jar) と Apalache を取得し、次のラッパーでログと成果物を .artifacts/ に保存する。
# TLC: .cfg、workers、depth、seed、timeoutを明示できる
bash tools/tlc-run.sh --config examples/tla/QueueBounded.cfg --workers 1 --seed 202606 --time-limit 120 examples/tla/QueueBounded.tla
# Apalache: init/next/invariantと探索長を明示する
bash tools/apalache-check.sh --config examples/apalache/Counter.cfg --length 10 --init Init --next Next --inv Inv examples/apalache/Counter.tla
TLA+ をエディタで編集する場合は、VS Code拡張を利用しつつ、拡張、Java、tla2tools.jar、.cfg の版を PR 本文に記録する。
本リポジトリのQuint契約は、公式release binaryとSHA-256をtools/tool-manifest.jsonで固定し、暗黙に追加componentを取得しないTypeScript evaluatorでtypecheckとtestを実行する。
verifyを追加する場合はApalache/TLC backend、JDK、探索境界、timeout、trace artifactを別entryとして固定する。
node scripts/run-example-manifest.js --id quint-counter
quint-counterの成功は、対象仕様の型検査と固定testが通ったことだけを表す。
結果を「仕様全体の証明」とは扱わず、verifyを使う場合は対象仕様、backend、境界、seed、timeout、反例traceの保存場所を合わせて確認する。
Lean 4 環境構築(最小構成 / Optional)
Lean 4 は、本書では「定理証明を資産化し、運用可能にする」選択肢として位置づける(第9章参照)。ここでは 最短・最小構成として、起動までの導線のみを示す(詳細は一次情報を参照)。
事前に理解しておくこと(最小)
- elan:Lean toolchain(Lean 本体・コンパイラ等)を管理するためのツール
- Lake:Lean 4 のビルド/依存管理ツール(プロジェクト作成・ビルドに使用)
- VS Code拡張:型チェック結果やゴール表示など、対話的な開発体験を提供
手順(代表例)
- elan を導入する(一次情報)
- VS Code + Lean 4 拡張を導入する(一次情報)
- Lean 4 の最小プロジェクトを作成して起動確認する(代表例)
mkdir -p lean-sandbox && cd lean-sandbox
lake init hello
lake build
確認:
- VS Code で
lean-sandbox/を開き、生成された.leanファイルを開く - エラーが出ないこと(ツールチェーンが有効であること)を確認する
一次情報(公式/代表):
- Lean 公式: https://lean-lang.org/
- Lean 4(GitHub): https://github.com/leanprover/lean4
- elan: https://github.com/leanprover/elan
- VS Code Lean 4 拡張: https://github.com/leanprover/vscode-lean4
主要ツール別の導入メモ(最小導線)
個別ツールは更新頻度が高いため、本書では完全なインストール手順を固定しない。 導入時は付録Eの一次情報を起点に、次の三点を PR 本文または CI 設定に残す。
- 公式ドキュメントまたは公式リリースへのリンク
- 実行したバージョン確認コマンドと結果
- CI で固定した依存(バイナリ、jar、npm package、opam switch、Rust toolchain、solver、timeout、seed)
| 領域 | ツール | 導入・確認の最小方針 |
|---|---|---|
| Alloy | Alloy 6 Analyzer | 公式リリースから jar を固定し、java -jar ... で起動確認する。CI では jar のURL、SHAまたはバージョン、steps、scope を記録する。 |
| TLA+ | TLC / VS Code 拡張 | tla2tools.jar、Java、.cfg、workers、seed、timeout を記録する。VS Code拡張は編集支援であり、CI ではCLI再実行を正本にする。 |
| TLA+ 周辺 | Apalache | 配布zipまたはコンテナを固定し、apalache-mc version 相当の出力、探索長、init/next/invariant、solver設定を記録する。 |
| TLA+ 周辺 | Quint | @informalsystems/quint を package.json / lockfile で固定し、typecheck、test、verify を分ける。backend(Apalache/TLC)と出力traceの保存先を記録する。 |
| 定理証明 | Lean 4 / Lake / mathlib | elan で toolchain を固定し、lake build を CI で再実行する。lean-toolchain、lake-manifest.json、mathlibのrevisionを証跡に含める。 |
| 定理証明 | Rocq | 公式リリース/パッケージ手順を使い、Rocq/Coq 互換コマンド名、opam switch、ライブラリ版を記録する。Admitted. や不要な公理は CI で棚卸しする。 |
| Rust検証 | Kani | cargo kani または公式手順で導入し、kani --version 相当、Rust toolchain、proof harness、unwind/探索境界を記録する。 |
| Rust検証 | Verus | 公式配布またはソースビルドのrevision、verus --version 相当、Rust toolchain、Z3版、未証明 assume を記録する。 |
| Rust検証 | Creusot | 公式ガイドに従い、Creusot、Why3、SMT ソルバー、Rust toolchain、loop invariant / variant、ghost codeの扱いを記録する。 |
| Rust検証 | Prusti | Prusti/Viper、Rust toolchain、事前条件・事後条件・ループ不変条件、counterexample出力を記録する。 |
| Rust検証 | Aeneas | 変換対象のRust subset、Charon/LLBC、接続先(F*、Rocq、HOL4、Lean 等)、生成物のrevisionを記録する。 |
| SMT | cvc5 / Z3 | solver単体の版、呼び出し元ツール、timeout、unknown の扱いを記録する。solver差し替え時は結果差分をレビュー対象にする。 |
Cedar、Bedrock Guardrails、スマートコントラクト検証のようなクラウド/産業ツールは、CLI手順よりもサービス仕様の変化が大きい。 導入メモでは、対象API、リージョン、対応言語、ポリシー/仕様の版、検証対象コミット、実行ログを中心に残す。
CI(自動実行)
GitHub Actions では .github/workflows/formal-checks.yml で、PR 向け(軽量)と夜間向け(深い探索)のジョブを提供している。
ローカルで同等の実行をしたい場合は、bash examples/ci/pr-quick-check.sh を実行する。