我试图了解组合的 ssreflect 策略应该如何“分解”(或者它们首先是如何组合的)。我遇到的问题之一是了解战术的顺序和关联性。
有时,我觉得顺序是从右到左。例如
apply : AiB.
似乎相当于
move : AiB; apply.
忽略 no-op move
,就好像我们AiB
在按顺序应用函数一样,apply : AiB.
可以看作 apply (: AiB).
. 也就是说,我们首先将 AiB 移动到目标中,然后apply
在其中调用目标AiB
。
但是,我在其他场合感到困惑:
case: (EM (P y)) => // notPy.
根据教程,这个对 进行案例分析(EM (P y))
,然后//
尝试解决琐碎的子目标。然后??move =>
将其余的引入上下文?这里的操作顺序是什么?
让,是EM_
吗?我读对了吗,战术应用的“正确顺序”是什么?(EM (P y))
(move=> notPy (// ( case (:EM_) ) ) )
顺序有点扭曲,一般来说notPy
不一致。有没有办法在合法的 ssreflect 中从右到左写上面的内容?