GOTO-PROGRAM:
[... some initialization is stripped away ... ]
// file simp2_bad.c line 35 function main
uri#str = { .is_zero=FALSE, .length=(unsigned int)11, .size=(unsigned int)11 };
// no location
SKIP
// no location
SKIP
// file simp2_bad.c line 38 function main
uri[4 + 1 + 1 + 2 + 1 + 2 - 1] = 0;
// file simp2_bad.c line 38 function main
uri#str.is_zero = TRUE;
// file simp2_bad.c line 38 function main
uri#str.length = (unsigned int)(4 + 1 + 1 + 2 + 1 + 2 - 1) < uri#str.length ? (unsigned int)(4 + 1 + 1 + 2 + 1 + 2 - 1) : uri#str.length;
// file simp2_bad.c line 39 function main
scheme = 4 + 2;
// file simp2_bad.c line 41 function main
c::simp2_bad::escape_absolute_uri::uri#str = &c::simp2_bad::main::1::uri#str;
// no location
SKIP
// no location
c::simp2_bad::escape_absolute_uri::uri = &c::simp2_bad::main::1::uri[0];
// no location
c::simp2_bad::escape_absolute_uri::scheme = c::simp2_bad::main::1::scheme;
// no location
SKIP
// no location
tmp$2 = scheme == 0;
// no location
IF scheme == 0 THEN GOTO 1
// file simp2_bad.c line 10 function escape_absolute_uri
LOCATION
// file ../stubs/stubs.c line 242 function strlen
s = uri;
// file ../stubs/stubs.c line 242 function strlen
s#str = uri#str;
// file ../stubs/stubs.c line 243 function strlen
i = 0;
// no location
SKIP
// no location
// Labels: VARIANT
i = NONDET(int);
// no location
SKIP
// file ../stubs/stubs.c line 246 function strlen
return_value_strlen$3 = (unsigned int)i;
// no location
LOCATION
// file simp2_bad.c line 9 function escape_absolute_uri
1: IF !(tmp$2 || return_value_strlen$3 < (unsigned int)scheme) THEN GOTO 2
// no location
// Labels: DISABLED_GOTO
ASSUME FALSE
// file simp2_bad.c line 14 function escape_absolute_uri
2: cp = scheme;
// file simp2_bad.c line 15 function escape_absolute_uri
c = 0;
// no location
SKIP
// file simp2_bad.c line 17 function escape_absolute_uri
token[0] = uri;
// file simp2_bad.c line 17 function escape_absolute_uri
NULL-object = uri#str;
// no location
SKIP
// no location
// Labels: PRECONDITION_CHECK
precondition_check$0 = (&uri#str)->length - POINTER_OFFSET(&uri[0]) < (&uri#str)->size - POINTER_OFFSET(&uri[0]);
// no location
// Labels: PRECONDITION_CHECK
precondition_check$1 = (&uri#str)->is_zero;
// no location
// Labels: VARIANT
token = NONDET(signed char * [3]);
// no location
// Labels: VARIANT
uri = NONDET(signed char [11]);
// no location
// Labels: VARIANT
c = NONDET(int);
// no location
// Labels: VARIANT
cp = NONDET(int);
// no location
IF !precondition_check$0 THEN GOTO 3
// no location
// Labels: INVARIANT
ASSUME (&uri#str)->length - POINTER_OFFSET(&uri[0]) < (&uri#str)->size - POINTER_OFFSET(&uri[0])
// no location
3: SKIP
// no location
IF !precondition_check$1 THEN GOTO 4
// no location
// Labels: INVARIANT
ASSUME (&uri#str)->is_zero
// no location
4: SKIP
// no location
SKIP
// no location
SKIP
// no location
SKIP
// file simp2_bad.c line 19 function escape_absolute_uri
// Labels: DISABLED_GOTO
ASSUME (int)(c::simp2_bad::main::1::uri[POINTER_OFFSET(c::simp2_bad::escape_absolute_uri::uri + cp)]) != 0 && c < 2 + 1
// no location
SKIP
// no location
SKIP
// file simp2_bad.c line 20 function escape_absolute_uri
// Labels: DISABLED_GOTO
ASSUME c::simp2_bad::main::1::uri[POINTER_OFFSET(c::simp2_bad::escape_absolute_uri::uri + cp)] == 63
// file simp2_bad.c line 21 function escape_absolute_uri
c = c + 1;
// no location
SKIP
// file simp2_bad.c line 24 function escape_absolute_uri
ASSERT c < 3 // array `token' upper bound
SYMEX TIME: 0.02
SLICER TIME: 0
EQUATION:
Thread 0 file /usr/include/stdio.h line 142
ASSIGNMENT (STATE)
stdin#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/stdio.h line 143
ASSIGNMENT (STATE)
stdout#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/stdio.h line 144
ASSIGNMENT (STATE)
stderr#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/bits/sys_errlist.h line 27
ASSIGNMENT (STATE)
sys_nerr#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/unistd.h line 474
ASSIGNMENT (STATE)
__environ#1 == NULL
Guard: TRUE
--------------
Thread 0 file line 12
ASSIGNMENT (STATE)
__CPROVER_alloc#1 == ARRAY_OF(FALSE)
Guard: TRUE
--------------
Thread 0 file line 13
ASSIGNMENT (STATE)
__CPROVER_alloc_size#1 == ARRAY_OF(0)
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 59
ASSIGNMENT (STATE)
optarg#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 59
ASSIGNMENT (STATE)
optarg#str#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 73
ASSIGNMENT (STATE)
optind#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 78
ASSIGNMENT (STATE)
opterr#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 82
ASSIGNMENT (STATE)
optopt#1 == 0
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 35 function main
ASSIGNMENT (STATE)
uri#str#1 == { .is_zero=FALSE, .length=11, .size=11 }
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 38 function main
ASSIGNMENT (STATE)
uri#1 == (uri#0 WITH [10:=0])
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 38 function main
ASSIGNMENT (STATE)
uri#str#2 == (uri#str#1 WITH [is_zero:=TRUE])
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 38 function main
ASSIGNMENT (STATE)
uri#str#3 == (uri#str#2 WITH [length:=uri#str#2.length > 10 ? 10 : uri#str#2.length])
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 39 function main
ASSIGNMENT (STATE)
scheme#1 == 6
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 41 function main
ASSIGNMENT (STATE)
uri#str#1 == &uri#str
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
uri#1 == &uri[0]
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
scheme#1 == 6
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
tmp$2#1 == FALSE
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 10 function escape_absolute_uri
LOCATION
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 242 function strlen
ASSIGNMENT (STATE)
s#1 == &uri[0]
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 242 function strlen
ASSIGNMENT (STATE)
s#str#1 == &uri#str
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 243 function strlen
ASSIGNMENT (STATE)
i#1 == 0
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
i#2 == nondet_symbol(symex::0)
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 246 function strlen
ASSIGNMENT (STATE)
return_value_strlen$3#1 == (unsigned int)i#2
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 9 function escape_absolute_uri
LOCATION
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (HIDDEN)
\guard#1 == return_value_strlen$3#1 < 6
Guard: TRUE
--------------
Thread 0
ASSUME
\guard#1 => FALSE
Guard: \guard#1
--------------
Thread 0 file simp2_bad.c line 14 function escape_absolute_uri
ASSIGNMENT (STATE)
cp#1 == 6
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 15 function escape_absolute_uri
ASSIGNMENT (STATE)
c#1 == 0
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 17 function escape_absolute_uri
ASSIGNMENT (STATE)
token#1 == (token#0 WITH [0:=&uri[0]])
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
precondition_check$0#1 == !(uri#str#3.length >= uri#str#3.size)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
precondition_check$1#1 == uri#str#3.is_zero
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
token#2 == nondet_symbol(symex::1)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
uri#2 == nondet_symbol(symex::2)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
c#2 == nondet_symbol(symex::3)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
cp#2 == nondet_symbol(symex::4)
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0
ASSUME
precondition_check$0#1 => uri#str#3.length - POINTER_OFFSET(&uri[0]) < uri#str#3.size - POINTER_OFFSET(&uri[0])
Guard: precondition_check$0#1
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0
ASSUME
precondition_check$1#1 => uri#str#3.is_zero
Guard: precondition_check$1#1
--------------
Thread 0 file simp2_bad.c line 19 function escape_absolute_uri
ASSUME
(int)(uri#2[POINTER_OFFSET(&uri[0] + cp#2)]) != 0 && c#2 < 2 + 1
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 20 function escape_absolute_uri
ASSUME
uri#2[POINTER_OFFSET(&uri[0] + cp#2)] == 63
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 21 function escape_absolute_uri
ASSIGNMENT (STATE)
c#3 == 1 + c#2
Guard: TRUE
--------------
Thread 0 file simp2_bad.c line 24 function escape_absolute_uri
ASSERT
c#3 < 3
array `token' upper bound
Guard: TRUE
--------------
RESULT:
Solving with MiniSAT
SOLVER TIME: 0.001
SAT - doesn't hold
State 1 file /usr/include/stdio.h line 142 thread 0
----------------------------------------------------
stdin=(assignment removed)
State 2 file /usr/include/stdio.h line 143 thread 0
----------------------------------------------------
stdout=(assignment removed)
State 3 file /usr/include/stdio.h line 144 thread 0
----------------------------------------------------
stderr=(assignment removed)
State 4 file /usr/include/bits/sys_errlist.h line 27 thread 0
----------------------------------------------------
sys_nerr=(assignment removed)
State 5 file /usr/include/unistd.h line 474 thread 0
----------------------------------------------------
__environ=(assignment removed)
State 6 file line 12 thread 0
----------------------------------------------------
__CPROVER_alloc=(assignment removed)
State 7 file line 13 thread 0
----------------------------------------------------
__CPROVER_alloc_size=(assignment removed)
State 8 file /usr/include/getopt.h line 59 thread 0
----------------------------------------------------
optarg=(assignment removed)
State 9 file /usr/include/getopt.h line 59 thread 0
----------------------------------------------------
optarg#str=(assignment removed)
State 10 file /usr/include/getopt.h line 73 thread 0
----------------------------------------------------
optind=(assignment removed)
State 11 file /usr/include/getopt.h line 78 thread 0
----------------------------------------------------
opterr=(assignment removed)
State 12 file /usr/include/getopt.h line 82 thread 0
----------------------------------------------------
optopt=(assignment removed)
State 14 file simp2_bad.c line 35 function main thread 0
----------------------------------------------------
simp2_bad::main::1::uri#str={ .is_zero=FALSE, .length=11, .size=11 }
State 15 file simp2_bad.c line 38 function main thread 0
----------------------------------------------------
simp2_bad::main::1::uri=(assignment removed)
State 16 file simp2_bad.c line 38 function main thread 0
----------------------------------------------------
simp2_bad::main::1::uri#str={ .is_zero=TRUE, .length=11, .size=11 }
State 17 file simp2_bad.c line 38 function main thread 0
----------------------------------------------------
simp2_bad::main::1::uri#str={ .is_zero=TRUE, .length=10, .size=11 }
State 18 file simp2_bad.c line 39 function main thread 0
----------------------------------------------------
simp2_bad::main::1::scheme=(assignment removed)
State 19 file simp2_bad.c line 41 function main thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::uri#str=(assignment removed)
State 20 thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::uri=(assignment removed)
State 21 thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::scheme=(assignment removed)
State 22 thread 0
----------------------------------------------------
c::escape_absolute_uri::$tmp::tmp$2=(assignment removed)
State 24 file ../stubs/stubs.c line 242 function strlen thread 0
----------------------------------------------------
stubs::strlen::s=(assignment removed)
State 25 file ../stubs/stubs.c line 242 function strlen thread 0
----------------------------------------------------
stubs::strlen::s#str=(assignment removed)
State 26 file ../stubs/stubs.c line 243 function strlen thread 0
----------------------------------------------------
stubs::strlen::1::i=(assignment removed)
State 27 thread 0
----------------------------------------------------
stubs::strlen::1::i=-2147483648 (10000000000000000000000000000000)
State 28 file ../stubs/stubs.c line 246 function strlen thread 0
----------------------------------------------------
c::escape_absolute_uri::$tmp::return_value_strlen$3=2147483648 (10000000000000000000000000000000)
State 31 file simp2_bad.c line 14 function escape_absolute_uri thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::cp=(assignment removed)
State 32 file simp2_bad.c line 15 function escape_absolute_uri thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::c=(assignment removed)
State 33 file simp2_bad.c line 17 function escape_absolute_uri thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::token=(assignment removed)
State 34 thread 0
----------------------------------------------------
precondition_check$0=TRUE
State 35 thread 0
----------------------------------------------------
precondition_check$1=TRUE
State 36 thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::token=(assignment removed)
State 37 thread 0
----------------------------------------------------
simp2_bad::main::1::uri={ 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62 }
State 38 thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::c=2 (00000000000000000000000000000010)
State 39 thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::cp=12 (00000000000000000000000000001100)
State 46 file simp2_bad.c line 21 function escape_absolute_uri thread 0
----------------------------------------------------
simp2_bad::escape_absolute_uri::1::c=3 (00000000000000000000000000000011)
Violated property:
file simp2_bad.c line 24 function escape_absolute_uri
array `token' upper bound
c < 3
GOTO-PROGRAM:
[... some initialization is stripped away ... ]
// file simp2_ok.c line 35 function main
uri#str = { .is_zero=FALSE, .length=(unsigned int)11, .size=(unsigned int)11 };
// no location
SKIP
// no location
SKIP
// file simp2_ok.c line 38 function main
uri[4 + 1 + 1 + 2 + 1 + 2 - 1] = 0;
// file simp2_ok.c line 38 function main
uri#str.is_zero = TRUE;
// file simp2_ok.c line 38 function main
uri#str.length = (unsigned int)(4 + 1 + 1 + 2 + 1 + 2 - 1) < uri#str.length ? (unsigned int)(4 + 1 + 1 + 2 + 1 + 2 - 1) : uri#str.length;
// file simp2_ok.c line 39 function main
scheme = 4 + 2;
// file simp2_ok.c line 41 function main
c::simp2_ok::escape_absolute_uri::uri#str = &c::simp2_ok::main::1::uri#str;
// no location
SKIP
// no location
c::simp2_ok::escape_absolute_uri::uri = &c::simp2_ok::main::1::uri[0];
// no location
c::simp2_ok::escape_absolute_uri::scheme = c::simp2_ok::main::1::scheme;
// no location
SKIP
// no location
tmp$2 = scheme == 0;
// no location
IF scheme == 0 THEN GOTO 1
// file simp2_ok.c line 10 function escape_absolute_uri
LOCATION
// file ../stubs/stubs.c line 242 function strlen
s = uri;
// file ../stubs/stubs.c line 242 function strlen
s#str = uri#str;
// file ../stubs/stubs.c line 243 function strlen
i = 0;
// no location
SKIP
// no location
// Labels: VARIANT
i = NONDET(int);
// no location
SKIP
// file ../stubs/stubs.c line 246 function strlen
return_value_strlen$3 = (unsigned int)i;
// no location
LOCATION
// file simp2_ok.c line 9 function escape_absolute_uri
1: IF !(tmp$2 || return_value_strlen$3 < (unsigned int)scheme) THEN GOTO 2
// no location
// Labels: DISABLED_GOTO
ASSUME FALSE
// file simp2_ok.c line 14 function escape_absolute_uri
2: cp = scheme;
// file simp2_ok.c line 15 function escape_absolute_uri
c = 0;
// no location
SKIP
// file simp2_ok.c line 17 function escape_absolute_uri
token[0] = uri;
// file simp2_ok.c line 17 function escape_absolute_uri
NULL-object = uri#str;
// no location
SKIP
// no location
// Labels: PRECONDITION_CHECK
precondition_check$0 = (&uri#str)->length - POINTER_OFFSET(&uri[0]) < (&uri#str)->size - POINTER_OFFSET(&uri[0]);
// no location
// Labels: PRECONDITION_CHECK
precondition_check$1 = (&uri#str)->is_zero;
// no location
// Labels: VARIANT
token = NONDET(signed char * [3]);
// no location
// Labels: VARIANT
uri = NONDET(signed char [11]);
// no location
// Labels: VARIANT
c = NONDET(int);
// no location
// Labels: VARIANT
cp = NONDET(int);
// no location
IF !precondition_check$0 THEN GOTO 3
// no location
// Labels: INVARIANT
ASSUME (&uri#str)->length - POINTER_OFFSET(&uri[0]) < (&uri#str)->size - POINTER_OFFSET(&uri[0])
// no location
3: SKIP
// no location
IF !precondition_check$1 THEN GOTO 4
// no location
// Labels: INVARIANT
ASSUME (&uri#str)->is_zero
// no location
4: SKIP
// no location
SKIP
// no location
SKIP
// no location
SKIP
// file simp2_ok.c line 19 function escape_absolute_uri
// Labels: DISABLED_GOTO
ASSUME (int)(c::simp2_ok::main::1::uri[POINTER_OFFSET(c::simp2_ok::escape_absolute_uri::uri + cp)]) != 0 && c < 2 + 1 - 1
// no location
SKIP
// no location
SKIP
// file simp2_ok.c line 20 function escape_absolute_uri
// Labels: DISABLED_GOTO
ASSUME c::simp2_ok::main::1::uri[POINTER_OFFSET(c::simp2_ok::escape_absolute_uri::uri + cp)] == 63
// file simp2_ok.c line 21 function escape_absolute_uri
c = c + 1;
// no location
SKIP
// file simp2_ok.c line 24 function escape_absolute_uri
ASSERT c < 3 // array `token' upper bound
SYMEX TIME: 0.024
SLICER TIME: 0
EQUATION:
Thread 0 file /usr/include/stdio.h line 142
ASSIGNMENT (STATE)
stdin#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/stdio.h line 143
ASSIGNMENT (STATE)
stdout#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/stdio.h line 144
ASSIGNMENT (STATE)
stderr#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/bits/sys_errlist.h line 27
ASSIGNMENT (STATE)
sys_nerr#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/unistd.h line 474
ASSIGNMENT (STATE)
__environ#1 == NULL
Guard: TRUE
--------------
Thread 0 file line 12
ASSIGNMENT (STATE)
__CPROVER_alloc#1 == ARRAY_OF(FALSE)
Guard: TRUE
--------------
Thread 0 file line 13
ASSIGNMENT (STATE)
__CPROVER_alloc_size#1 == ARRAY_OF(0)
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 59
ASSIGNMENT (STATE)
optarg#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 59
ASSIGNMENT (STATE)
optarg#str#1 == NULL
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 73
ASSIGNMENT (STATE)
optind#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 78
ASSIGNMENT (STATE)
opterr#1 == 0
Guard: TRUE
--------------
Thread 0 file /usr/include/getopt.h line 82
ASSIGNMENT (STATE)
optopt#1 == 0
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 35 function main
ASSIGNMENT (STATE)
uri#str#1 == { .is_zero=FALSE, .length=11, .size=11 }
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 38 function main
ASSIGNMENT (STATE)
uri#1 == (uri#0 WITH [10:=0])
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 38 function main
ASSIGNMENT (STATE)
uri#str#2 == (uri#str#1 WITH [is_zero:=TRUE])
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 38 function main
ASSIGNMENT (STATE)
uri#str#3 == (uri#str#2 WITH [length:=uri#str#2.length > 10 ? 10 : uri#str#2.length])
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 39 function main
ASSIGNMENT (STATE)
scheme#1 == 6
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 41 function main
ASSIGNMENT (STATE)
uri#str#1 == &uri#str
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
uri#1 == &uri[0]
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
scheme#1 == 6
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
tmp$2#1 == FALSE
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 10 function escape_absolute_uri
LOCATION
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 242 function strlen
ASSIGNMENT (STATE)
s#1 == &uri[0]
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 242 function strlen
ASSIGNMENT (STATE)
s#str#1 == &uri#str
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 243 function strlen
ASSIGNMENT (STATE)
i#1 == 0
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
i#2 == nondet_symbol(symex::0)
Guard: TRUE
--------------
Thread 0 file ../stubs/stubs.c line 246 function strlen
ASSIGNMENT (STATE)
return_value_strlen$3#1 == (unsigned int)i#2
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 9 function escape_absolute_uri
LOCATION
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (HIDDEN)
\guard#1 == return_value_strlen$3#1 < 6
Guard: TRUE
--------------
Thread 0
ASSUME
\guard#1 => FALSE
Guard: \guard#1
--------------
Thread 0 file simp2_ok.c line 14 function escape_absolute_uri
ASSIGNMENT (STATE)
cp#1 == 6
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 15 function escape_absolute_uri
ASSIGNMENT (STATE)
c#1 == 0
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 17 function escape_absolute_uri
ASSIGNMENT (STATE)
token#1 == (token#0 WITH [0:=&uri[0]])
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
precondition_check$0#1 == !(uri#str#3.length >= uri#str#3.size)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
precondition_check$1#1 == uri#str#3.is_zero
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
token#2 == nondet_symbol(symex::1)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
uri#2 == nondet_symbol(symex::2)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
c#2 == nondet_symbol(symex::3)
Guard: TRUE
--------------
Thread 0
ASSIGNMENT (STATE)
cp#2 == nondet_symbol(symex::4)
Guard: TRUE
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0
ASSUME
precondition_check$0#1 => uri#str#3.length - POINTER_OFFSET(&uri[0]) < uri#str#3.size - POINTER_OFFSET(&uri[0])
Guard: precondition_check$0#1
--------------
Thread 0
LOCATION
Guard: TRUE
--------------
Thread 0
ASSUME
precondition_check$1#1 => uri#str#3.is_zero
Guard: precondition_check$1#1
--------------
Thread 0 file simp2_ok.c line 19 function escape_absolute_uri
ASSUME
(int)(uri#2[POINTER_OFFSET(&uri[0] + cp#2)]) != 0 && c#2 < 2 + 1 - 1
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 20 function escape_absolute_uri
ASSUME
uri#2[POINTER_OFFSET(&uri[0] + cp#2)] == 63
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 21 function escape_absolute_uri
ASSIGNMENT (STATE)
c#3 == 1 + c#2
Guard: TRUE
--------------
Thread 0 file simp2_ok.c line 24 function escape_absolute_uri
ASSERT
c#3 < 3
array `token' upper bound
Guard: TRUE
--------------
RESULT:
Solving with MiniSAT
SOLVER TIME: 0.002
UNSAT - it holds!
ASSERTION IS TRUE