補題があり、たとえばmylem: foo ?a = bar ?a
が 2 回出現するゴールにそれを適用する必要があるとしますが、これらの位置の 1 つだけです。複雑な式になる可能性のある, ...をすべて書き出す必要なく、それを行う 2 つの方法を知っています。foo
baz (foo (f p q)) (foo (g r s))
p
q
- 適切な数 (ここでは 0 または 1) のコマンド
apply (subst mylem)
が続きます。back
- を使用します。
apply (subst mylem[where a = 'foo x y', standard])
ここで、x
およびy
はバインドされていない名前です。
ここでの使用はsubst
デモンストレーションのためだけです。私は本当に補題を変更したいと思っています。たとえば、rule
この方法で曖昧さをなくしたい複数の可能な一致がある場合に使用します。
どちらのアプローチも、私には悪いスタイルに見えます。それを達成するためのより良い方法はありますか?