6
/*@ predicate reachable{L}(struct list *root, struct list *to) =
7
@ root == to || root != \null && reachable(root->next,to) ;
11
void reset(int *p) { *p = 0; }
13
// three equivalent assigns clauses
14
//@ assigns t[0..n-1];
15
void reset_array1(int t[],int n) {
17
for (i=0; i < n; i++) t[i] = 0;
20
//@ assigns *(t+(0..n-1));
21
void reset_array2(int t[],int n) {
23
for (i=0; i < n; i++) t[i] = 0;
26
//@ assigns *(t+{ i | int i ; 0 <= i < n });
27
void reset_array3(int t[],int n) {
29
for (i=0; i < n; i++) t[i] = 0;
32
//@ assigns { q->hd | struct list *q ; reachable(p,q) };
33
void incr_list(struct list *p) {
34
while (p) { p->hd++ ; p = p->next; }