-
Notifications
You must be signed in to change notification settings - Fork 84
Closed
Labels
Milestone
Description
Our CIL AST based loop unrolling duplicates nodes for the same program point (in the literal sense). Thus we end up generating witness invariants for each node but the same location, e.g. i == 0 and i == 15, which are contradictory:
- entry_type: location_invariant
metadata:
format_version: "0.1"
uuid: dcd2d1a7-ae43-46a4-9ac9-528fc3df8507
creation_time: 2023-10-30T08:34:16Z
producer:
name: Goblint
version: heads/pldi-bench-0-gec49852db
command_line: '''./goblint'' ''--conf'' ''conf/svcomp.json'' ''--enable'' ''witness.yaml.enabled'' ''--sets'' ''ana.specification'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/properties/unreach-call.prp'' ''--sets'' ''exp.architecture'' ''32bit'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i'''
task:
input_files:
- /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i
input_file_hashes:
/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i: 9c5d8dd6c87f471ee77fd3b765c8ecabfaf01dd976e127275ea7c589f724f472
data_model: ILP32
language: C
specification: CHECK( init(main()), LTL(G ! call(reach_error())) )
location:
file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i
file_hash: 9c5d8dd6c87f471ee77fd3b765c8ecabfaf01dd976e127275ea7c589f724f472
line: 29
column: 8
function: main
location_invariant:
string: i == 0
type: assertion
format: C
- entry_type: location_invariant
metadata:
format_version: "0.1"
uuid: 84342cda-192f-4411-a241-5436848150c9
creation_time: 2023-10-30T08:34:16Z
producer:
name: Goblint
version: heads/pldi-bench-0-gec49852db
command_line: '''./goblint'' ''--conf'' ''conf/svcomp.json'' ''--enable'' ''witness.yaml.enabled'' ''--sets'' ''ana.specification'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/properties/unreach-call.prp'' ''--sets'' ''exp.architecture'' ''32bit'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i'''
task:
input_files:
- /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i
input_file_hashes:
/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i: 9c5d8dd6c87f471ee77fd3b765c8ecabfaf01dd976e127275ea7c589f724f472
data_model: ILP32
language: C
specification: CHECK( init(main()), LTL(G ! call(reach_error())) )
location:
file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/loop-acceleration/array_3-1.i
file_hash: 9c5d8dd6c87f471ee77fd3b765c8ecabfaf01dd976e127275ea7c589f724f472
line: 29
column: 8
function: main
location_invariant:
string: i == 15
type: assertion
format: CAgain, path-sensitivity–based unrolling would automatically avoid this issue because witness invariants are disjunctions over all paths at a node.