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

Isabelle自定义action数据类型语法翻译定义报错如何解决?

错误产生原因
  1. 变量匹配不符合双向翻译要求:你使用了双向翻译符号⇌,Isabelle要求双向翻译规则的左右两侧自由变量必须完全对应,不能有单侧独有的变量。你目前的代码有两处不满足:
    • 左侧接收的第三个参数c没有在右侧用到,你误把bool参数的位置写死成了Some True
    • action类型自带的泛型参数'a,你在右侧给对应位置填了None,这个'a类型变量没有出现在左侧参数中,属于右侧独有未绑定变量
  2. 语法模式书写错误:你把优先级参数误写到了模式字符串开头,多了一个多余的3,会导致输入example(...)无法匹配到你定义的语法规则。
修复方法

如果你只需要把example(...)作为单向语法糖使用,不需要把已有的Action项反向解析回example(...)的写法,优先使用单向翻译符=>,不需要处理反向匹配的变量问题,修改后代码如下:

syntax
  "_example" :: "[int, int, bool] ⇒ 'a action" ("example'(_, _, _')" [60, 60, 60] 60)
translations
  "_example a b c"  => "CONST Action ''example'' (Some a) (Some b) None (Some c) None"

如果你确实需要双向翻译支持,需要补全变量对应关系,给固定的None加类型标注固定泛型参数,避免未绑定变量问题:

syntax
  "_example" :: "[int, int, bool] ⇒ unit action" ("example'(_, _, _')" [60, 60, 60] 60)
translations
  "_example a b c"  ⇌ "CONST Action ''example'' (Some a) (Some b) (None :: unit option) (Some c) None"

修改后输入example(3, 4, True)就会自动翻译为你需要的Action ''example'' (Some 3) (Some 4) None (Some True) None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:36:04