想知道外量词级别的变量是否可以在内部量词级别访问

时间:2016-11-28 12:44:21

标签: z3 z3py

我正在使用嵌套量词(Forall,Exists),并且想知道外部量词级别的变量是否可以在内部量词级别中访问。例如,在下面的代码中,变量“pack”在整个约束中是否具有相同的值?换句话说,在使用“pack”时的Exists量词级别中,它与暗示的前半部分中的“pack”具有相同的值。

如果没有,我如何指定它们都引用相同的变量或值?

s.add(Implies(constraint17a,
          ForAll((t,p,pack),
                 Implies(And(knows(t+1,p,pack)==True,knows(t,p,pack)==False,pack>0,p>0,t>=0,p<=2,t<=16,pack<=2),#if process p knows a packet now and did not know it in previous step
                         And(listen(t,p)==True,                                                                 #then p listened in the previous step,
                             Exists(q,And(q<p,q>=0,q<=2,transmit(t,q)==pack)),                                  #another process q transmitted that packet in the previous step
                             ForAll(q1,Implies(And(not(q1==p),not(q1==q),q1>=0,q1<=2),transmit(t,q1)==-1))      #and no other process q1 except q was transmitting in previous step
                             )
                         )
                 )
          )
  )

0 个答案:

没有答案