在TLA +中,我如何表示带有时间运算符的定理是错误的?

时间:2019-07-25 15:05:10

标签: tla+

让我们说以下是不正确的

input_shape = (28,28,1)
inputs = Input(shape=input_shape)
image_size = 28
image_resize = image_size // 4
x = Dense(image_resize * image_resize * 128)(inputs)
x = Reshape((image_resize, image_resize, 128))(x)

存在一些满足Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/venv/lib/python3.7/site-packages/keras/engine/base_layer.py", line 474, in __call__ output_shape = self.compute_output_shape(input_shape) File "/Users/venv/lib/python3.7/site-packages/keras/layers/core.py", line 398, in compute_output_shape input_shape[1:], self.target_shape) File "/Users/venv/lib/python3.7/site-packages/keras/layers/core.py", line 386, in _fix_unknown_dimension raise ValueError(msg) ValueError: total size of new array must be unchanged 且未显示THEOREM Spec => []P \* Not correct! 的行为。如何在TLA +中表达这一点?

如果我使用简单的否定,我最终会得到

Spec

但是,这个定理也有可能是不正确的!特别是,即使有些满足[]P的行为没有表现出THEOREM Spec /\ <>~P \* Also not correct! ,也可能存在某些行为,并且这种行为将反驳这个新定理。

是否存在某种表达“该定理对某些行为不正确”的想法,即对行为进行量化?

3 个答案:

答案 0 :(得分:0)

我们处于经典逻辑中,因此[]P \/ ~[]P是有效的。您重申了第二部分,以便我们有[]P \/ <>~P。因此,对于任何P,两者之一都是正确的。

答案 1 :(得分:0)

通常的做法是编写THEOREM ~(Spec => []P),使[]P成为临时属性,并告诉人们规范是否正确,如果该属性失败

>

答案 2 :(得分:0)

提供了将属性参数化为带有参数的运算符的方法,是的,可以表示存在满足Spec(x)但违反[]P(x)的行为。使用现存的时间量化(\EE),可表示如下

Spec(x) == ...  (* a suitable definition here *)
P(x) == ...  (* a suitable definition here *)

THEOREM \EE x:  Spec(x) /\ ~ []P(x)

我们假设在运算符Spec(x)P(x)的定义中没有变量。

我们还可以表示,既存在满足Spec(x) /\ []P(x)的行为,也存在满足Spec(x) /\ ~ []P(x)的行为,如下所示

THEOREM /\ \EE x:  Spec(x) /\ []P(x)
        /\ \EE x:  Spec(x) /\ ~ []P(x)