假设我想使用~X
策略将X -> False
转换为unfold
。
我有两种选择方法:通过unfold not
或通过unfold "~"
。
第二种方法显然更方便,因为不需要记住什么定义名称留在符号后面。
但是在更复杂的情况下我还是没有做到:
Definition assn_sub X a P : Assertion :=
fun (st : state) =>
P (X !-> aeval st a ; st).
Notation "P [ X |-> a ]" := (assn_sub X a P)
(at level 10, X at next level).
我想在表达式中展开它
((fun st0 : state => st0 Y = st0 X + st0 Z) [Z |-> Y - X]) st
不使用assn_sub
。有可能吗?
答案 0 :(得分:1)
带有下划线,似乎很有效。
unfold "_ [ _ |-> _ ]".
答案 1 :(得分:0)
很难说,没有可复制的例子,但是Ssreflect的展开应该起作用:
rewrite /(_[_|->_]).