blob: df35e214d9e995657ff859c3b0bdacc20d98ae8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// RUN: %dafny /compile:0 /dprint:"%t.dprint" "%s" > "%t"
// RUN: %diff "%s.expect" "%t"
datatype Abc = End | Wrapper(seq<Abc>)
lemma SeqRank0(a: Abc)
ensures a != Wrapper([a])
{
assert [a][0] == a; // TODO: one could consider strengthening axioms to eliminate the need for this assert
// The reason we need the assert is to match the trigger in the rank axioms produced
// for datatypes containing sequences.
// See "is SeqType" case of AddDatatype in Translator.cs
}
lemma SeqRank1(s: seq<Abc>)
requires s != []
ensures s[0] != Wrapper(s)
{
}
datatype Def = End | MultiWrapper(multiset<Def>)
lemma MultisetRank(a: Def)
ensures a != MultiWrapper(multiset{a})
{
}
datatype Ghi = End | SetWrapper(set<Ghi>)
lemma SetRank(a: Ghi)
ensures a != SetWrapper({a})
{
}
|