簡體   English   中英

零長度的array_eq_sub行為

[英]array_eq_sub behavior for zero length

why3我有以下引理:

lemma trivial:
  forall a : array 'a, b : array 'a.
  array_eq_sub a b 0 0

這似乎是基本情況下的行為,但顯然不是。 有什么想法為什么不起作用?

更新
我能夠將問題簡化為一個缺失的引理:

lemma array_eq_2:
  forall a : array 'a, b : array 'a.
  map_eq_sub a.elts b.elts 0 0 -> array_eq_sub a b 0 0

鑒於文檔中指定的array_eq_sub的定義,這似乎也很簡單。 為什么我的證明人找不到解決方案?

在解決了這個問題之后,我決定看一下why3源代碼。 我發現一個定義不同於所記錄的定義:

predicate array_eq_sub (a1 a2: array 'a) (l u: int) =
  a1.length = a2.length /\ 0 <= l <= a1.length /\ 0 <= u <= a1.length /\
  map_eq_sub a1.elts a2.elts l u

簡而言之,數組的長度必須相等,以便它們的一部分相等。 這與所記錄的有所不同,我懷疑可能導致許多定理不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM