Typed BTOR2 transition execution, bounded safety and replayable counterexamples
moon add shangwuxi/moonbtor@0.1.0import {
"shangwuxi/moonbtor",
}git clone https://github.com/shangwuxi/moonbtor.git
cd moonbtor
moon run examples/counter
moon run examples/simulate
moon run examples/externalfn main {
let source =
"1 sort bitvec 2\n2 sort bitvec 1\n3 zero 1\n4 state 1 count\n5 init 1 4 3\n6 inc 1 4\n7 next 1 4 6\n8 constd 1 3\n9 eq 2 4 8\n10 bad 9 overflow"
let model = @moonbtor.parse(source).unwrap()
match model.check(5).unwrap() {
Counterexample(trace) => println(trace.to_json_string())
BoundedSafe(k) => println("bounded safe through frame \{k}")
Unknown(reason) => println(reason)
}
}| 使用者与输入 | 处理 | 输出与可运行入口 |
|---|---|---|
| 硬件工程师的计数器 BTOR2 文件内容 | 语法/类型检查、逐帧展开、有限资源求解、具体重放 | 最短越界轨迹与 JSON,examples/counter |
| 工具集成者的状态模型与外部 SAT 结果 | 导出实际 DIMACS;严格校验 SAT 赋值;解码输入和状态;再求值 | 可重放反例,examples/export、examples/external 与 tools/external_roundtrip.py |
| 教学/测试系统的逐拍输入序列 | observe、同步 step、JSON 往返、初值/转移/约束复核 | 累加器状态 0,2,5,跳帧篡改被拒绝,examples/simulate |
moon run examples/export --target js --quiet > query.cnf
python tools/external_roundtrip.py js{"version":1,"bad_index":0,"frames":[{"state":["0"],"inputs":[]}]}moon info
moon fmt --check
moon check --deny-warn
moon build --deny-warn
moon test --deny-warn
python tools/generate_oracles.py
moon fmt
moon test --deny-warn
python tools/external_roundtrip.py jspub struct Formula {
// private fields
}pub struct Model {
// private fields
}pub struct Query {
// private fields
}Install
Download zipTyped BTOR2 transition execution, bounded safety and replayable counterexamples