source: CIVL/examples/focus/simpleForWindow.cvl@ a7752a9

main test-branch
Last change on this file since a7752a9 was a7752a9, checked in by Alex Wilton <awilton@…>, 8 months ago

Added ability to loop focus with an offset or over a contiguous window of values.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5989 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 465 bytes
Line 
1#include<assert.h>
2#include<mem.cvh>
3
4#pragma CIVL ACSL
5$input int N;
6$assume(0 < N);
7int a[N];
8
9int main() {
10
11 int x = 0;
12 // Note loop variable i should auto-include into unfocus.
13 /*@ loop invariant x == i;
14 @ loop assigns a[0..N-1],x;
15 @ focus F+{-1..1} | a[F-1..F+1];
16 @*/
17 for (int i = 0; i < N; i++) {
18 a[i] = i + x;
19 x = x+1;
20 }
21
22 //@ focus F;
23 $assert($forall(int i:1..N-2) a[i-1] == 2*(i-1) && a[i] == 2*i && a[i+1] == 2*(i+1));
24}
Note: See TracBrowser for help on using the repository browser.