Символьные строки JPF не генерируют ожидаемый ПК [Java Path Finder]

Я пытаюсь запустить Jpf для символьных строк, но он не дает ожидаемого результата. Ниже приведена игрушечная программа, которую я пробую.

      import gov.nasa.jpf.symbc.Debug;
import static org.junit.Assert.*;

public class Toy {
public static void main(String args[]) {
    
    String s1,s2,s3;
    s1=Debug.makeSymbolicString("s1");
    s2=Debug.makeSymbolicString("s2");
    s3=Debug.makeSymbolicString("s3");
    
    checkEqual(s1,s2,s3);
}

static void checkEqual(String s1,String s2,String s3) {
    if(!s1.equals(s3)) 
        {
        if(!s2.equals(s3))  {
                
                System.out.println("s1.equals(s3)="+s1.equals(s3)+"\n");
                System.out.println("s2.equals(s3)="+s2.equals(s3)+"\n");
        }
    }
    System.out.println(Debug.getSolvedPC());
    }   
}

Файл .jpf выглядит следующим образом:

      target=Toy
classpath=${jpf-symbc}/build/examples
sourcepath=${jpf-symbc}/src/examples

symbolic.strings = true
symbolic.debug=true

Внутри вложенных условий if я печатаю значения сравнения строк, только когда строки s1, s2 не равны s3, только тогда должны быть напечатаны операторы печати. Я также распечатал ПК, используя symbolic.debug = true

Ниже приведен фрагмент вывода, в котором я сомневаюсь. Здесь вывод говорит, что s1, s2 равны и не равны s3 одновременно. Как это возможно? также в сообщении печати указано «s2.equals (s3) = true», тогда программа не должна входить в блок if.

      string analysis: SPC # = 4
(s2 equals s3) && (s1 equals s3) && (s2 notequals s3) && (s1 notequals s3)
NPC constraint # = 0
s2.equals(s3)=true

string analysis: SPC # = 4
(s2 equals s3) && (s1 equals s3) && (s2 notequals s3) && (s1 notequals s3) 
NPC constraint # = 0
constraint # = 0
## Warning: empty path condition
### PCs: total:9 sat:9 unsat:0

Код работает, когда я использую int вместо String. Было бы здорово, если бы вы могли мне помочь. Сообщите мне, если что-то не хватает в моей конфигурации jpf. заранее спасибо

0 ответов

Другие вопросы по тегам