Dafny, массивы и мультимножества
От: WolfHound  
Дата: 29.04.16 15:21
Оценка: 27 (1)
Играюсь вот с этой штукой:
http://research.microsoft.com/en-us/projects/dafny/
Попробовать в браузере можно тут:
http://rise4fun.com/dafny/Hello

Вот в этом коде дафна не может доказать первый ассерт. Но с моей точки зрения должна.
Это баг или я что-то не понимаю?
lemma TestMultiset(a : array<int>, begin : int, mid : int, end : int)
  requires a != null;
  requires 0 <= begin <= mid <= end <= a.Length;
{
  assert multiset(a[begin..mid]) + multiset(a[mid..end]) == multiset(a[begin..end]);
  assert a[begin..mid] + a[mid..end] == a[begin..end];
  assert |multiset(a[begin..mid])| + |multiset(a[mid..end])| == |multiset(a[begin..end])|;
  assert |a[begin..mid]| + |a[mid..end]| == |a[begin..end]|;
}

Без этого у меня квиксорт доказать не получается.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.