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

Dafny使用sum量词时出现“rbrace expected”错误求助

解决Dafny中sum量词的"rbrace expected"错误

你的代码错误出在sum量词的语法使用不当,Dafny要求遍历映射或集合的量词必须用in关键字明确指定范围,你漏掉了这个关键字,导致解析器无法正确识别语法结构,从而抛出"rbrace expected"错误。

修正后的代码

datatype MapSet<T> = MapSet (s : map<int,bool>)

function getSize<T> (m:MapSet<T>): int {
   sum i in m.s :: if m.s[i] then 1 else 0
}

关键调整说明

  • 在sum i后添加in关键字,明确i的取值范围是映射m.s的键集合
  • 移除了if条件里多余的括号(Dafny中条件表达式的括号不是必须的,不影响功能但更简洁)
  • 将函数参数的MapSet<int>改为MapSet<T>,因为你的MapSet泛型参数T并未在成员s中使用,这样函数可以适用于任意类型参数的MapSet实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:57:33