Isabelle 伊莎贝尔
在伊莎贝尔身上有什么工具可以描述战术吗 我基本上有一个战术的形式Isabelle 伊莎贝尔,isabelle,Isabelle,在伊莎贝尔身上有什么工具可以描述战术吗 我基本上有一个战术的形式 REPEAT ( tac1 ORELSE ... ORELSE tacN ) 我想计算出每种战术的持续时间,以确定 优化的热点 我可能需要以嵌套方式执行此操作,例如 tac1 = tac12 THEN simp_tac ... 我想知道在简化上花了多少时间。不确定这是否是您要找的,但是有timeit在ML中,您可以围绕函数进行包装。这是一个艾斯巴赫包装: ML \<open>fun method_evaluate
REPEAT ( tac1 ORELSE ... ORELSE tacN )
我想计算出每种战术的持续时间,以确定
优化的热点
我可能需要以嵌套方式执行此操作,例如
tac1 = tac12 THEN simp_tac ...
我想知道在简化上花了多少时间。不确定这是否是您要找的,但是有
timeit
在ML中,您可以围绕函数进行包装。这是一个艾斯巴赫包装:
ML \<open>fun method_evaluate text ctxt facts =
Method.NO_CONTEXT_TACTIC ctxt
(Method.evaluate_runtime text ctxt facts)\<close>
method_setup timeit =
\<open>Method.text_closure >> (fn m => fn ctxt => fn facts =>
let
fun timed_tac st seq = Seq.make (fn () => Option.map (apsnd (timed_tac st))
(timeit (fn () => (Seq.pull seq))));
fun tac st' =
timed_tac st' (method_evaluate m ctxt facts st');
in SIMPLE_METHOD tac [] end)
\<close>
ML\fun方法\u评估文本ctxt事实=
Method.NO_CONTEXT_ctxt
(Method.evaluate_运行时文本ctxt facts)\
方法\u设置时间IT=
\Method.text_closure>>(fn m=>fn ctxt=>fn facts=>
让
fun timed_tac st seq=seq.make(fn()=>Option.map(apsnd(timed_tac st))
(timeit(fn()=>(Seq.pull Seq));
趣味塔克街=
定时测试(方法评估m ctxt事实测试);
在简单方法中(tac[]结束)
\
()
由于Eisbach包装的这一选择刚刚在另一个问题中提出,我将看看是否将其大部分包含在发行版中。现在已将这一选择添加到HOL-Eisbach.Eisbach中