[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/misc/bug0196.c (with preprocessing)
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
  
[value] computing for function fact <- main.
        Called from tests/misc/bug0196.c:16.
tests/misc/bug0196.c:7:[value] entering loop for the first time
tests/misc/bug0196.c:8:[value] Assertion got status valid.
tests/misc/bug0196.c:11:[value] cannot evaluate ACSL term, \at() on a C label is unsupported
tests/misc/bug0196.c:11:[value] Assertion got status unknown.
tests/misc/bug0196.c:10:[kernel] warning: signed overflow. assert r*tmp ≤ 2147483647;
                                   (tmp from n--)
[value] Recording results for fact
[value] Done for function fact
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value] Values at end of function fact:
  n ∈ {0}
  r ∈ [1..2147483647]
[value] Values at end of function main:
  
[from] Computing for function fact
[from] Done for function fact
[from] Computing for function main
[from] Done for function main
[from] ====== DEPENDENCIES COMPUTED ======
       These dependencies hold at termination for the executions that terminate:
[from] Function fact:
  \result FROM n
[from] Function main:
  \result FROM \nothing
[from] ====== END OF DEPENDENCIES ======
[inout] Out (internal) for function fact:
          n; r; tmp
[inout] Inputs for function fact:
          \nothing
[inout] Out (internal) for function main:
          tmp
[inout] Inputs for function main:
          \nothing
/* Generated by Frama-C */
int fact(int n)
{
  int r;
  r = 1;
  while (n > 0) {
    int tmp;
    /*@ assert n > 0; */ ;
    before:
      { /* sequence */
        tmp = n;
        n --;
        /*@ assert Value: signed_overflow: r*tmp ≤ 2147483647; */
        r *= tmp;
      }
    /*@ assert r ≡ \at(r*n,before); */ ;
  }
  while_0_break: ;
  return r;
}

int main(void)
{
  int tmp;
  tmp = fact(3);
  return tmp;
}


