4.76/2.22 NO 5.11/2.27 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 5.11/2.27 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.11/2.27 5.11/2.27 5.11/2.27 termination of the given Bare JBC problem could be disproven: 5.11/2.27 5.11/2.27 (0) Bare JBC problem 5.11/2.27 (1) BareJBCToJBCProof [EQUIVALENT, 95 ms] 5.11/2.27 (2) JBC problem 5.11/2.27 (3) JBCNonTerm [COMPLETE, 339 ms] 5.11/2.27 (4) NO 5.11/2.27 5.11/2.27 5.11/2.27 ---------------------------------------- 5.11/2.27 5.11/2.27 (0) 5.11/2.27 Obligation: 5.11/2.27 need to prove termination of the following program: 5.11/2.27 package simple.ex03; 5.11/2.27 5.11/2.27 public class Ex03 { 5.11/2.27 5.11/2.27 public static void loop(int i) { 5.11/2.27 while (i < 0) { 5.11/2.27 if (i != -5) { 5.11/2.27 i++; 5.11/2.27 } 5.11/2.27 } 5.11/2.27 } 5.11/2.27 } 5.11/2.27 5.11/2.27 5.11/2.27 package simple.ex03; 5.11/2.27 5.11/2.27 public class Main { 5.11/2.27 5.11/2.27 /** 5.11/2.27 * @param args 5.11/2.27 */ 5.11/2.27 public static void main(String[] args) { 5.11/2.27 int value = args[1].length(); 5.11/2.27 if (args[0].length() % 2 == 0) { 5.11/2.27 value = -value; 5.11/2.27 } 5.11/2.27 Ex03.loop(value); 5.11/2.27 } 5.11/2.27 5.11/2.27 } 5.11/2.27 5.11/2.27 5.11/2.27 5.11/2.27 ---------------------------------------- 5.11/2.27 5.11/2.27 (1) BareJBCToJBCProof (EQUIVALENT) 5.11/2.27 initialized classpath 5.11/2.27 ---------------------------------------- 5.11/2.27 5.11/2.27 (2) 5.11/2.27 Obligation: 5.11/2.27 need to prove termination of the following program: 5.11/2.27 package simple.ex03; 5.11/2.27 5.11/2.27 public class Ex03 { 5.11/2.27 5.11/2.27 public static void loop(int i) { 5.11/2.27 while (i < 0) { 5.11/2.27 if (i != -5) { 5.11/2.27 i++; 5.11/2.27 } 5.11/2.27 } 5.11/2.27 } 5.11/2.27 } 5.11/2.27 5.11/2.27 5.11/2.27 package simple.ex03; 5.11/2.27 5.11/2.27 public class Main { 5.11/2.27 5.11/2.27 /** 5.11/2.27 * @param args 5.11/2.27 */ 5.11/2.27 public static void main(String[] args) { 5.11/2.27 int value = args[1].length(); 5.11/2.27 if (args[0].length() % 2 == 0) { 5.11/2.27 value = -value; 5.11/2.27 } 5.11/2.27 Ex03.loop(value); 5.11/2.27 } 5.11/2.27 5.11/2.27 } 5.11/2.27 5.11/2.27 5.11/2.27 5.11/2.27 ---------------------------------------- 5.11/2.27 5.11/2.27 (3) JBCNonTerm (COMPLETE) 5.11/2.27 Constructed a run with a repetition. States 23 and 28 are repetitions (when considering only the interesting positions [lv_0_0]). 5.11/2.27 5.11/2.27 0: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 1: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 2: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 3: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 4: 5.11/2.27 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 5: 5.11/2.27 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 6: 5.11/2.27 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 7: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 8: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 9: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 10: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 a2([java.lang.String...]): {o33, o15} -->{java.lang.Object...} 5.11/2.27 o15!: String(count=5, hash=#, offset=[0,+inf), value=o16?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 o16:: [CHAR] -->{java.lang.Object...} 5.11/2.27 a2-><-o34 5.11/2.27 a2-><-o33 5.11/2.27 a2-><-o16 5.11/2.27 a2-><-o15 5.11/2.27 YES: (JL1) 5.11/2.27 11: 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 YES: (JL1) 5.11/2.27 12: 5.11/2.27 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 YES: (JL1) 5.11/2.27 13: 5.11/2.27 5.11/2.27 o33!: String(count=0, hash=#, offset=[0,+inf), value=o34?) -->{java.lang.Object...} 5.11/2.27 o34:: [CHAR] -->{java.lang.Object...} 5.11/2.27 YES: (JL1) 5.11/2.27 14: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 15: 5.11/2.27 YES: (JL1) 5.11/2.27 16: 5.11/2.27 YES: (JL1) 5.11/2.27 17: 5.11/2.27 YES: (JL1) 5.11/2.27 18: 5.11/2.27 YES: (JL1) 5.11/2.27 19: 5.11/2.27 YES: (JL1) 5.11/2.27 20: 5.11/2.27 YES: (JL1) 5.11/2.27 21: 5.11/2.27 YES: (JL1) 5.11/2.27 22: 5.11/2.27 YES: (JL1) 5.11/2.27 23: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 24: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 25: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 26: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 27: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 28: 5.11/2.27 5.11/2.27 YES: (JL1) 5.11/2.27 5.11/2.27 ---------------------------------------- 5.11/2.27 5.11/2.27 (4) 5.11/2.27 NO 5.11/2.28 EOF