source: CIVL/examples/loop_invariants/loop_assigns_given/twoSec.c@ 65582ca

1.23 2.0 main test-branch
Last change on this file since 65582ca was 343762a, checked in by Ziqing Luo <ziqing@…>, 8 years ago

add a new loop invariant example

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

  • Property mode set to 100644
File size: 491 bytes
Line 
1#define M 10
2#define N 20
3int a[N];
4
5int main() {
6 int b[N];
7
8 /*@ loop invariant 0 <= i && i <= N;
9 @ loop invariant i <= M ==> (\forall int i1; 0 <= i1 && i1 < i ==> b[i] == 0);
10 @ loop invariant i > M ==> (\forall int i1; 0 <= i1 && i1 < M ==> b[i] == 0);
11 @ loop invariant \forall int i1; M < i1 && i1 < i ==> b[i] == a[i];
12 @ loop assigns i, b[0 .. M-1], b[M .. N-1];
13 @*/
14 for (int i = 0; i < N; i++) {
15 if (i < M) b[i] = 0;
16 else if (i > M) b[i] = a[i];
17 }
18}
Note: See TracBrowser for help on using the repository browser.