Skip to content

Termination analysis: Wrong result #432

@pwnchaser

Description

@pwnchaser

Hi, I noticed that theta returns also spurious warnings even with the latest version 6.24.3:

int main() {
  int b = 0;
  int *unused = &b;
  if (b != 0) 
      while(1) 
        ;
}

Here theta prints

$ "/home/Theta/theta-start.sh" "test.c"  "--backend" "LIVENESS_CEGAR"  "--property" "termination.prp" 
Verifying input 'test.c' using arguments '--backend LIVENESS_CEGAR --property termination.prp'
LD_LIBRARY_PATH=/home/Theta/lib java -Xss120m -Xmx14210m -jar /home/Theta/theta.jar --backend LIVENESS_CEGAR --property termination.prp --input test.c --smt-home /home/Theta/solvers
ParsingResult Success
Arithmetic: []
ParsingResult Success
Iteration 1
| Checking abstraction...
| Checking abstraction done, result: (AbstractorResult Unsafe)
| Refining abstraction...
Refining abstraction done, result: (RefinerResult Unsafe)
! Precision did NOT change in this iteration
(SafetyResult Unsafe Trace length: 0)
(Property termination)
(SafetyResult Unsafe Trace length: 0)

Interestingly, the pointer initialization triggers this behavior.
Maybe you want to take this into account for the svcomp26 version.
Cheers :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions