You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

F*教程断言示例无法类型检查,求适配新版本的修正方法

修复F*断言示例的类型检查问题

你遇到的问题源于F*新版本的类型系统与证明自动化逻辑更新,旧教程代码已不再适配。以下是两种可直接生效的修复方案:

方案1:启用SMT自动证明

新版本F默认不会自动调用Z3验证简单算术断言,需显式开启自动化。给函数添加#[smt_auto]属性即可让F自动完成证明:

#[smt_auto]
let sqr_is_nat (x:int) : unit = assert (x * x >= 0)

也可通过编译参数全局启用:

fstar --smt-auto your_file.fst

方案2:显式标注命题类型

将断言表达式明确标记为Prop类型,引导F*将其视为可证明的命题:

let sqr_is_nat (x:int) : unit = assert ((x * x >= 0) : Prop)

补充说明

在新版F*中,assert要求参数是可被严格证明的Prop类型,旧教程代码依赖的早期版本默认自动SMT验证行为已被调整。通过上述两种方式,Z3能正常介入验证整数平方非负这一算术恒等式,从而通过类型检查。

内容的提问来源于stack exchange,提问作者Dragno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:52:39