-
Notifications
You must be signed in to change notification settings - Fork 82
/
Copy pathcalc.rs
50 lines (45 loc) · 868 Bytes
/
calc.rs
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#[allow(unused_imports)]
use builtin::*;
#[allow(unused_imports)]
use builtin_macros::*;
#[allow(unused_imports)]
use vstd::{calc_macro::*, prelude, seq::*, seq_lib::*};
verus! {
fn main() {
}
proof fn calc_example_usage() {
let a: Seq<u8> = seq![1u8, 2u8];
let b: Seq<u8> = seq![1u8];
let c: Seq<u8> = seq![2u8];
let d: Seq<u8> = seq![1u8, 2u8];
calc! {
(==)
a; (==) {
assert_seqs_equal!(a == b + c);
}
b + c; {
assert_seqs_equal!(b + c == d);
}
d;
};
calc! {
(<=)
(2 as int); (==) {}
3 - 1; {}
5;
};
calc! {
(==>)
(5 > 4); (==) {}
(4 >= 4); (<==>) {}
(2 > 1); (==>) {}
(1 > 0); {}
true;
};
calc! {
(==>)
false; {}
true;
};
}
} // verus!