假设我想假设写一致性规则:
postulate
writeconsistent : {A B : Set} {var : A} {wval rval : B} ->
(w : W var wval) (r : R var rval) -> (store w) hb (load r) ->
(p : (wval' : B) -> (w' : W var wval') ->
Either ((store w') hb (store w)) ((load r) hb (store w'))) ->
wval == rval
这就是说,如果你可以证明任何其他写w
发生在r
之前,或者发生在 - { - 1}},那么给定一个写w'
和一个读w
。在r
之后,我们会证明r
读取w
所写的值。
但是要提供可以准确排序所有写入w'
的函数似乎有问题。似乎总是可以编写一个能够证明所有可能写入的特定子集的函数。
如何以这样的方式限制证明类型p
,只需要一些已知的写入就像这样排序?