Isabelle中如何指定策略重复执行次数?是否属于Eisbach?
关于Isabelle中指定策略重复执行次数的问题
嘿,这个场景我太熟悉了——拆分出一堆子目标后,针对性重复策略确实能省不少事!下面给你拆解清楚:
1. 指定重复次数的语法
完全可以直接指定策略的重复执行次数,用Isabelle内置的repeat n战术组合器(tactical)就行:
- 执行
auto两次:repeat 2 auto - 执行
algebra十次:repeat 10 algebra - 结合你提到的完整流程,写法大概是:
这里的分号safe; repeat 2 auto; repeat 10 algebra; argo;表示顺序执行:先跑safe拆分目标,接着对每个子目标重复2次auto,再重复10次algebra,最后用argo收尾。
2. 语法查阅的地方
这类基础战术组合器的用法,直接看Isabelle官方的《Isabelle/Isar Reference Manual》就行,重点翻Tactics and Tacticals章节。另外在Isabelle/jEdit里,你可以按住Ctrl点击repeat或者对应的战术,直接跳转到官方的文档注释,非常方便。
3. 属于Eisbach范畴吗?
其实单纯的repeat n是Isabelle核心系统里的基础tactical,不属于Eisbach。Eisbach是更高级的策略定义框架,用来写复杂的自定义策略、带条件的循环或者可复用的策略模板。比如如果你需要更灵活的逻辑(比如重复执行直到某个目标状态满足),Eisbach会更合适,但你现在只是指定固定次数,用内置的repeat n就足够啦。如果之后想把这些重复逻辑封装成自己的常用策略,再用Eisbach来定义会很顺手。
内容的提问来源于stack exchange,提问作者user1868607
相关产品推荐
相关产品推荐

