File: main.c

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (58 lines) | stat: -rw-r--r-- 1,164 bytes parent folder | download | duplicates (3)
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
51
52
53
54
55
56
57
58
#include <assert.h>

#define WIDTH 10

signed __CPROVER_bitvector[WIDTH] add(signed __CPROVER_bitvector[WIDTH] a, signed __CPROVER_bitvector[WIDTH] b)
{
  return a+b;
}

int main(int argc, char** argv)
{
  unsigned __CPROVER_bitvector[WIDTH] x;
  x = 1;
  unsigned __CPROVER_bitvector[WIDTH] y = 2;

  unsigned __CPROVER_bitvector[WIDTH] z = 0;
  z += x;
  z += y;

  unsigned __CPROVER_bitvector[WIDTH] w = 3;
  assert(z == w);

  assert(add(-x,-y) == -w);

  {
    unsigned __CPROVER_bitvector[5] a = 30;
    unsigned __CPROVER_bitvector[3] b;
    unsigned __CPROVER_bitvector[3] c = 6;
    b = a;
    assert(b == c);
  }

  {
    unsigned __CPROVER_bitvector[3] a = 6;
    unsigned __CPROVER_bitvector[5] b;
    unsigned __CPROVER_bitvector[5] c = 6;
    b = a;
    assert(b == c);
  }

  {
    signed __CPROVER_bitvector[5] a = 30;
    signed __CPROVER_bitvector[3] b;
    signed __CPROVER_bitvector[3] c = -2;
    b = a; //just truncated
    assert(b == c);
  }

  {
    signed __CPROVER_bitvector[3] a = -2;
    signed __CPROVER_bitvector[5] b;
    signed __CPROVER_bitvector[5] c = -2;
    b = a; //sign gets extended
    assert(b == c);
  }

  return 0;
}