source: CIVL/examples/focus/difficultExample.cvl@ a389857

main test-branch
Last change on this file since a389857 was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

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

  • Property mode set to 100644
File size: 624 bytes
RevLine 
[01c5b2ce]1#include<assert.h>
2
3#pragma CIVL ACSL
4$input int N;
5$assume(0 < N);
6
7int nondet(int a, int b) {
8 int x;
9 $havoc(&x);
10 $assume(a <= x && x < b);
11 return x;
12}
13
14int main() {
15 int A[N];
16 //@ focus F;
17 for (int i = 0; i < N; i++) {
18 A[i] = nondet(0,100);
19 }
20
21 int x = 0;
22 /*@ loop invariant 0 <= i && i <= N;
23 @ loop invariant \forall int j; 0 <= j && j < i ==>
24 @ x >= A[j];
25 @*/
26 for (int i = 0; i < N; i++) {
27 if (x < A[i]) {
28 x = A[i];
29 }
30 }
31
32 //@ focus F;
33 for (int i = 0; i < N; i++) {
34 A[i] -= x;
35 }
36
37 //@ focus F;
38 $assert($forall(int i:0..N-1) A[i] <= 0);
39}
Note: See TracBrowser for help on using the repository browser.