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中