作者只写一份 program … where。源码不含平台标签——由 target 决定物化,不改业务语义。
切换 --target 只能改制品与编码。整数语义、状态迁移、回滚、调用顺序与授权保持不变。
平台无法保持语义时,编译器给出稳定诊断并停止。禁止静默降级与旧路径回退。
语言
在一份 program … where 中描述 state、init、entry 与 view。需求由编译器推导;物化由 --target 选择。
import ProofForgeV2
open ProofForgeV2.Language
program Counter where
state count : UInt64
init(initial : UInt64) do
count := initial
entry increment(delta : UInt64) : UInt64 do
count := count + delta
return count
view get() : UInt64 do
return count