17.00/6.70 YES 17.23/6.71 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 17.23/6.71 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 17.23/6.71 17.23/6.71 17.23/6.71 termination of the given Bare JBC problem could be proven: 17.23/6.71 17.23/6.71 (0) Bare JBC problem 17.23/6.71 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 17.23/6.71 (2) JBC problem 17.23/6.71 (3) JBCToGraph [EQUIVALENT, 850 ms] 17.23/6.71 (4) JBCTerminationGraph 17.23/6.71 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 17.23/6.71 (6) JBCTerminationSCC 17.23/6.71 (7) SCCToIRSProof [SOUND, 231 ms] 17.23/6.71 (8) IRSwT 17.23/6.71 (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 17.23/6.71 (10) IRSwT 17.23/6.71 (11) IRSwTTerminationDigraphProof [EQUIVALENT, 49 ms] 17.23/6.71 (12) AND 17.23/6.71 (13) IRSwT 17.23/6.71 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 17.23/6.71 (15) IRSwT 17.23/6.71 (16) TempFilterProof [SOUND, 19 ms] 17.23/6.71 (17) IntTRS 17.23/6.71 (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 17.23/6.71 (19) YES 17.23/6.71 (20) IRSwT 17.23/6.71 (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] 17.23/6.71 (22) IRSwT 17.23/6.71 (23) IRSwTChainingProof [EQUIVALENT, 0 ms] 17.23/6.71 (24) IRSwT 17.23/6.71 (25) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] 17.23/6.71 (26) IRSwT 17.23/6.71 (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] 17.23/6.71 (28) IRSwT 17.23/6.71 (29) TempFilterProof [SOUND, 13 ms] 17.23/6.71 (30) IntTRS 17.23/6.71 (31) RankingReductionPairProof [EQUIVALENT, 0 ms] 17.23/6.71 (32) YES 17.23/6.71 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (0) 17.23/6.71 Obligation: 17.23/6.71 need to prove termination of the following program: 17.23/6.71 public class Et4 { 17.23/6.71 public static void main(String[] args) { 17.23/6.71 Random.args = args; 17.23/6.71 int a = Random.random(); 17.23/6.71 int b = Random.random(); 17.23/6.71 int c = Random.random(); 17.23/6.71 while ( (b - c >= 1) && (a == c)) { 17.23/6.71 int r = Random.random(); 17.23/6.71 b = 10; 17.23/6.71 c = c + 1 + r; 17.23/6.71 a = c; 17.23/6.71 } 17.23/6.71 } 17.23/6.71 } 17.23/6.71 17.23/6.71 17.23/6.71 public class Random { 17.23/6.71 static String[] args; 17.23/6.71 static int index = 0; 17.23/6.71 17.23/6.71 public static int random() { 17.23/6.71 if (index >= args.length) 17.23/6.71 return 0; 17.23/6.71 17.23/6.71 String string = args[index]; 17.23/6.71 index++; 17.23/6.71 return string.length(); 17.23/6.71 } 17.23/6.71 } 17.23/6.71 17.23/6.71 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (1) BareJBCToJBCProof (EQUIVALENT) 17.23/6.71 initialized classpath 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (2) 17.23/6.71 Obligation: 17.23/6.71 need to prove termination of the following program: 17.23/6.71 public class Et4 { 17.23/6.71 public static void main(String[] args) { 17.23/6.71 Random.args = args; 17.23/6.71 int a = Random.random(); 17.23/6.71 int b = Random.random(); 17.23/6.71 int c = Random.random(); 17.23/6.71 while ( (b - c >= 1) && (a == c)) { 17.23/6.71 int r = Random.random(); 17.23/6.71 b = 10; 17.23/6.71 c = c + 1 + r; 17.23/6.71 a = c; 17.23/6.71 } 17.23/6.71 } 17.23/6.71 } 17.23/6.71 17.23/6.71 17.23/6.71 public class Random { 17.23/6.71 static String[] args; 17.23/6.71 static int index = 0; 17.23/6.71 17.23/6.71 public static int random() { 17.23/6.71 if (index >= args.length) 17.23/6.71 return 0; 17.23/6.71 17.23/6.71 String string = args[index]; 17.23/6.71 index++; 17.23/6.71 return string.length(); 17.23/6.71 } 17.23/6.71 } 17.23/6.71 17.23/6.71 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (3) JBCToGraph (EQUIVALENT) 17.23/6.71 Constructed TerminationGraph. 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (4) 17.23/6.71 Obligation: 17.23/6.71 Termination Graph based on JBC Program: 17.23/6.71 Et4.main([Ljava/lang/String;)V: Graph of 467 nodes with 1 SCC. 17.23/6.71 17.23/6.71 17.23/6.71 17.23/6.71 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (5) TerminationGraphToSCCProof (SOUND) 17.23/6.71 Splitted TerminationGraph to 1 SCCs. 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (6) 17.23/6.71 Obligation: 17.23/6.71 SCC of termination graph based on JBC Program. 17.23/6.71 SCC contains nodes from the following methods: Et4.main([Ljava/lang/String;)V 17.23/6.71 SCC calls the following helper methods: 17.23/6.71 Performed SCC analyses: 17.23/6.71 *Used field analysis yielded the following read fields: 17.23/6.71 *java.lang.String: [count] 17.23/6.71 *Marker field analysis yielded the following relations that could be markers: 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (7) SCCToIRSProof (SOUND) 17.23/6.71 Transformed FIGraph SCCs to intTRSs. Log: 17.23/6.71 Generated rules. Obtained 64 IRulesP rules: 17.23/6.71 f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1505) -> f2968_0_main_IntArithmetic(EOS(STATIC_2968(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1505, i1504) :|: TRUE 17.23/6.71 f2968_0_main_IntArithmetic(EOS(STATIC_2968(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1505, i1504) -> f2978_0_main_ConstantStackPush(EOS(STATIC_2978(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1505 - i1504) :|: i1504 >= 0 17.23/6.71 f2978_0_main_ConstantStackPush(EOS(STATIC_2978(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1599) -> f2997_0_main_LT(EOS(STATIC_2997(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1599, 1) :|: TRUE 17.23/6.71 f2997_0_main_LT(EOS(STATIC_2997(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1654, matching1) -> f3000_0_main_LT(EOS(STATIC_3000(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1654, 1) :|: TRUE && matching1 = 1 17.23/6.71 f3000_0_main_LT(EOS(STATIC_3000(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1654, matching1) -> f3013_0_main_Load(EOS(STATIC_3013(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504) :|: i1654 >= 1 && matching1 = 1 17.23/6.71 f3013_0_main_Load(EOS(STATIC_3013(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504) -> f3020_0_main_Load(EOS(STATIC_3020(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504) :|: TRUE 17.23/6.71 f3020_0_main_Load(EOS(STATIC_3020(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504) -> f3038_0_main_NE(EOS(STATIC_3038(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1504) :|: TRUE 17.23/6.71 f3038_0_main_NE(EOS(STATIC_3038(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1504) -> f3050_0_main_InvokeMethod(EOS(STATIC_3050(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) :|: TRUE 17.23/6.71 f3050_0_main_InvokeMethod(EOS(STATIC_3050(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) -> f3061_0_random_FieldAccess(EOS(STATIC_3061(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) :|: TRUE 17.23/6.71 f3061_0_random_FieldAccess(EOS(STATIC_3061(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) -> f3068_0_random_FieldAccess(EOS(STATIC_3068(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503) :|: TRUE 17.23/6.71 f3068_0_random_FieldAccess(EOS(STATIC_3068(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503) -> f3070_0_random_ArrayLength(EOS(STATIC_3070(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, java.lang.Object(ARRAY(i1502))) :|: TRUE 17.23/6.71 f3070_0_random_ArrayLength(EOS(STATIC_3070(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, java.lang.Object(ARRAY(i1502))) -> f3082_0_random_LT(EOS(STATIC_3082(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) :|: i1502 >= 0 17.23/6.71 f3082_0_random_LT(EOS(STATIC_3082(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) -> f3089_0_random_LT(EOS(STATIC_3089(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) :|: i1503 < i1502 17.23/6.71 f3082_0_random_LT(EOS(STATIC_3082(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) -> f3090_0_random_LT(EOS(STATIC_3090(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) :|: i1503 >= i1502 17.23/6.71 f3089_0_random_LT(EOS(STATIC_3089(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) -> f3098_0_random_FieldAccess(EOS(STATIC_3098(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) :|: i1503 < i1502 17.23/6.71 f3098_0_random_FieldAccess(EOS(STATIC_3098(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) -> f3103_0_random_FieldAccess(EOS(STATIC_3103(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502))) :|: TRUE 17.23/6.71 f3103_0_random_FieldAccess(EOS(STATIC_3103(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502))) -> f3110_0_random_ArrayAccess(EOS(STATIC_3110(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1503) :|: TRUE 17.23/6.71 f3110_0_random_ArrayAccess(EOS(STATIC_3110(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1807) -> f3117_0_random_ArrayAccess(EOS(STATIC_3117(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1807) :|: TRUE 17.23/6.71 f3117_0_random_ArrayAccess(EOS(STATIC_3117(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1807) -> f3121_0_random_ArrayAccess(EOS(STATIC_3121(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1807) :|: TRUE 17.23/6.71 f3121_0_random_ArrayAccess(EOS(STATIC_3121(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(ARRAY(i1502)), i1807) -> f3125_0_random_Store(EOS(STATIC_3125(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233) :|: TRUE 17.23/6.71 f3125_0_random_Store(EOS(STATIC_3125(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233) -> f3140_0_random_FieldAccess(EOS(STATIC_3140(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233) :|: TRUE 17.23/6.71 f3140_0_random_FieldAccess(EOS(STATIC_3140(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233) -> f3150_0_random_ConstantStackPush(EOS(STATIC_3150(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1807) :|: TRUE 17.23/6.71 f3150_0_random_ConstantStackPush(EOS(STATIC_3150(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1807) -> f3212_0_random_IntArithmetic(EOS(STATIC_3212(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1807, 1) :|: TRUE 17.23/6.71 f3212_0_random_IntArithmetic(EOS(STATIC_3212(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1807, matching1) -> f3219_0_random_FieldAccess(EOS(STATIC_3219(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1807 + 1) :|: i1807 >= 0 && matching1 = 1 17.23/6.71 f3219_0_random_FieldAccess(EOS(STATIC_3219(java.lang.Object(ARRAY(i1502)), i1807)), java.lang.Object(ARRAY(i1502)), i1504, o233, i1858) -> f3228_0_random_Load(EOS(STATIC_3228(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, o233) :|: TRUE 17.23/6.71 f3228_0_random_Load(EOS(STATIC_3228(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, o233) -> f3238_0_random_InvokeMethod(EOS(STATIC_3238(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, o233) :|: TRUE 17.23/6.71 f3238_0_random_InvokeMethod(EOS(STATIC_3238(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o270sub)) -> f3253_0_random_InvokeMethod(EOS(STATIC_3253(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o270sub)) :|: TRUE 17.23/6.71 f3253_0_random_InvokeMethod(EOS(STATIC_3253(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) -> f3259_0_random_InvokeMethod(EOS(STATIC_3259(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) :|: TRUE 17.23/6.71 f3259_0_random_InvokeMethod(EOS(STATIC_3259(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) -> f3270_0_length_Load(EOS(STATIC_3270(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) :|: TRUE 17.23/6.71 f3270_0_length_Load(EOS(STATIC_3270(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) -> f3278_0_length_FieldAccess(EOS(STATIC_3278(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(o271sub)) :|: TRUE 17.23/6.71 f3278_0_length_FieldAccess(EOS(STATIC_3278(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(java.lang.String(EOC, i1972))) -> f3281_0_length_FieldAccess(EOS(STATIC_3281(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(java.lang.String(EOC, i1972))) :|: i1972 >= 0 17.23/6.71 f3281_0_length_FieldAccess(EOS(STATIC_3281(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, java.lang.Object(java.lang.String(EOC, i1972))) -> f3284_0_length_Return(EOS(STATIC_3284(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) :|: TRUE 17.23/6.71 f3284_0_length_Return(EOS(STATIC_3284(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) -> f3287_0_random_Return(EOS(STATIC_3287(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) :|: TRUE 17.23/6.71 f3287_0_random_Return(EOS(STATIC_3287(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) -> f3299_0_main_Store(EOS(STATIC_3299(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) :|: TRUE 17.23/6.71 f3299_0_main_Store(EOS(STATIC_3299(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) -> f3310_0_main_ConstantStackPush(EOS(STATIC_3310(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) :|: TRUE 17.23/6.71 f3310_0_main_ConstantStackPush(EOS(STATIC_3310(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972) -> f3333_0_main_Store(EOS(STATIC_3333(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972, 10) :|: TRUE 17.23/6.71 f3333_0_main_Store(EOS(STATIC_3333(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i1504, i1972, matching1) -> f3348_0_main_Load(EOS(STATIC_3348(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i1504, i1972) :|: TRUE && matching1 = 10 17.23/6.71 f3348_0_main_Load(EOS(STATIC_3348(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i1504, i1972) -> f3354_0_main_ConstantStackPush(EOS(STATIC_3354(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i1972, i1504) :|: TRUE && matching1 = 10 17.23/6.71 f3354_0_main_ConstantStackPush(EOS(STATIC_3354(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i1972, i1504) -> f3358_0_main_IntArithmetic(EOS(STATIC_3358(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i1972, i1504, 1) :|: TRUE && matching1 = 10 17.23/6.71 f3358_0_main_IntArithmetic(EOS(STATIC_3358(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i1972, i1504, matching2) -> f3362_0_main_Load(EOS(STATIC_3362(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i1972, i1504 + 1) :|: i1504 >= 0 && matching1 = 10 && matching2 = 1 17.23/6.71 f3362_0_main_Load(EOS(STATIC_3362(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i1972, i2207) -> f3366_0_main_IntArithmetic(EOS(STATIC_3366(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i2207, i1972) :|: TRUE && matching1 = 10 17.23/6.71 f3366_0_main_IntArithmetic(EOS(STATIC_3366(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i2207, i1972) -> f3370_0_main_Store(EOS(STATIC_3370(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i2207 + i1972) :|: i2207 > 0 && i1972 >= 0 && matching1 = 10 17.23/6.71 f3370_0_main_Store(EOS(STATIC_3370(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i2271) -> f3374_0_main_Load(EOS(STATIC_3374(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i2271) :|: TRUE && matching1 = 10 17.23/6.71 f3374_0_main_Load(EOS(STATIC_3374(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i2271) -> f3378_0_main_Store(EOS(STATIC_3378(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), 10, i2271, i2271) :|: TRUE && matching1 = 10 17.23/6.71 f3378_0_main_Store(EOS(STATIC_3378(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), matching1, i2271, i2271) -> f3382_0_main_JMP(EOS(STATIC_3382(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i2271, 10, i2271) :|: TRUE && matching1 = 10 17.23/6.71 f3382_0_main_JMP(EOS(STATIC_3382(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i2271, matching1, i2271) -> f3391_0_main_Load(EOS(STATIC_3391(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i2271, 10, i2271) :|: TRUE && matching1 = 10 17.23/6.71 f3391_0_main_Load(EOS(STATIC_3391(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i2271, matching1, i2271) -> f2898_0_main_Load(EOS(STATIC_2898(java.lang.Object(ARRAY(i1502)), i1858)), java.lang.Object(ARRAY(i1502)), i2271, 10, i2271) :|: TRUE && matching1 = 10 17.23/6.71 f2898_0_main_Load(EOS(STATIC_2898(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1505, i1504) -> f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1504, i1505) :|: TRUE 17.23/6.71 f3090_0_random_LT(EOS(STATIC_3090(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, i1503, i1502) -> f3099_0_random_ConstantStackPush(EOS(STATIC_3099(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) :|: i1503 >= i1502 17.23/6.71 f3099_0_random_ConstantStackPush(EOS(STATIC_3099(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504) -> f3104_0_random_Return(EOS(STATIC_3104(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, 0) :|: TRUE 17.23/6.71 f3104_0_random_Return(EOS(STATIC_3104(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, matching1) -> f3113_0_main_Store(EOS(STATIC_3113(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, 0) :|: TRUE && matching1 = 0 17.23/6.71 f3113_0_main_Store(EOS(STATIC_3113(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, matching1) -> f3119_0_main_ConstantStackPush(EOS(STATIC_3119(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, 0) :|: TRUE && matching1 = 0 17.23/6.71 f3119_0_main_ConstantStackPush(EOS(STATIC_3119(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, matching1) -> f3123_0_main_Store(EOS(STATIC_3123(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, 0, 10) :|: TRUE && matching1 = 0 17.23/6.71 f3123_0_main_Store(EOS(STATIC_3123(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1504, matching1, matching2) -> f3130_0_main_Load(EOS(STATIC_3130(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, i1504, 0) :|: TRUE && matching1 = 0 && matching2 = 10 17.23/6.71 f3130_0_main_Load(EOS(STATIC_3130(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, i1504, matching2) -> f3143_0_main_ConstantStackPush(EOS(STATIC_3143(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, 0, i1504) :|: TRUE && matching1 = 10 && matching2 = 0 17.23/6.71 f3143_0_main_ConstantStackPush(EOS(STATIC_3143(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, matching2, i1504) -> f3207_0_main_IntArithmetic(EOS(STATIC_3207(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, 0, i1504, 1) :|: TRUE && matching1 = 10 && matching2 = 0 17.23/6.71 f3207_0_main_IntArithmetic(EOS(STATIC_3207(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, matching2, i1504, matching3) -> f3214_0_main_Load(EOS(STATIC_3214(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, 0, i1504 + 1) :|: i1504 >= 0 && matching1 = 10 && matching2 = 0 && matching3 = 1 17.23/6.71 f3214_0_main_Load(EOS(STATIC_3214(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, matching2, i1851) -> f3222_0_main_IntArithmetic(EOS(STATIC_3222(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, i1851, 0) :|: TRUE && matching1 = 10 && matching2 = 0 17.23/6.71 f3222_0_main_IntArithmetic(EOS(STATIC_3222(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, i1851, matching2) -> f3230_0_main_Store(EOS(STATIC_3230(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, i1851 + 0) :|: i1851 > 0 && matching1 = 10 && matching2 = 0 17.23/6.71 f3230_0_main_Store(EOS(STATIC_3230(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, i1851) -> f3243_0_main_Load(EOS(STATIC_3243(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, i1851) :|: TRUE && matching1 = 10 17.23/6.71 f3243_0_main_Load(EOS(STATIC_3243(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, i1851) -> f3255_0_main_Store(EOS(STATIC_3255(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), 10, i1851, i1851) :|: TRUE && matching1 = 10 17.23/6.71 f3255_0_main_Store(EOS(STATIC_3255(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), matching1, i1851, i1851) -> f3269_0_main_JMP(EOS(STATIC_3269(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1851, 10, i1851) :|: TRUE && matching1 = 10 17.23/6.71 f3269_0_main_JMP(EOS(STATIC_3269(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1851, matching1, i1851) -> f3274_0_main_Load(EOS(STATIC_3274(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1851, 10, i1851) :|: TRUE && matching1 = 10 17.23/6.71 f3274_0_main_Load(EOS(STATIC_3274(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1851, matching1, i1851) -> f2898_0_main_Load(EOS(STATIC_2898(java.lang.Object(ARRAY(i1502)), i1503)), java.lang.Object(ARRAY(i1502)), i1851, 10, i1851) :|: TRUE && matching1 = 10 17.23/6.71 Combined rules. Obtained 2 IRulesP rules: 17.23/6.71 f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502:0)), i1503:0)), java.lang.Object(ARRAY(i1502:0)), i1504:0, i1504:0, i1505:0) -> f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502:0)), i1503:0 + 1)), java.lang.Object(ARRAY(i1502:0)), i1504:0 + 1 + i1972:0, i1504:0 + 1 + i1972:0, 10) :|: i1504:0 > -1 && i1505:0 - i1504:0 >= 1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1503:0 > -1 && i1972:0 > -1 17.23/6.71 f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502:0)), i1503:0)), java.lang.Object(ARRAY(i1502:0)), i1504:0, i1504:0, i1505:0) -> f2957_0_main_Load(EOS(STATIC_2957(java.lang.Object(ARRAY(i1502:0)), i1503:0)), java.lang.Object(ARRAY(i1502:0)), i1504:0 + 1, i1504:0 + 1, 10) :|: i1504:0 > -1 && i1505:0 - i1504:0 >= 1 && i1502:0 > -1 && i1503:0 >= i1502:0 17.23/6.71 Filtered duplicate arguments: 17.23/6.71 f2957_0_main_Load(x1, x2, x3, x4, x5) -> f2957_0_main_Load(x1, x2, x4, x5) 17.23/6.71 Finished conversion. Obtained 2 rules.P rules: 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0 + 1 + i1972:0, 10, i1502:0, i1503:0 + 1, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1972:0 > -1 && i1503:0 > -1 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0 + 1, 10, i1502:0, i1503:0, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1503:0 >= i1502:0 && i1502:0 > -1 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (8) 17.23/6.71 Obligation: 17.23/6.71 Rules: 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0 + 1 + i1972:0, 10, i1502:0, i1503:0 + 1, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1972:0 > -1 && i1503:0 > -1 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 1, 10, x, x3, x) :|: x2 - x1 >= 1 && x1 > -1 && x3 >= x && x > -1 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (9) IRSFormatTransformerProof (EQUIVALENT) 17.23/6.71 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (10) 17.23/6.71 Obligation: 17.23/6.71 Rules: 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), arith, 10, i1502:0, arith1, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1972:0 > -1 && i1503:0 > -1 && arith = i1504:0 + 1 + i1972:0 && arith1 = i1503:0 + 1 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (11) IRSwTTerminationDigraphProof (EQUIVALENT) 17.23/6.71 Constructed termination digraph! 17.23/6.71 Nodes: 17.23/6.71 (1) f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), arith, 10, i1502:0, arith1, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1972:0 > -1 && i1503:0 > -1 && arith = i1504:0 + 1 + i1972:0 && arith1 = i1503:0 + 1 17.23/6.71 (2) f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 17.23/6.71 17.23/6.71 Arcs: 17.23/6.71 (1) -> (1), (2) 17.23/6.71 (2) -> (2) 17.23/6.71 17.23/6.71 This digraph is fully evaluated! 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (12) 17.23/6.71 Complex Obligation (AND) 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (13) 17.23/6.71 Obligation: 17.23/6.71 17.23/6.71 Termination digraph: 17.23/6.71 Nodes: 17.23/6.71 (1) f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), i1504:0, i1505:0, i1502:0, i1503:0, i1502:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0)), arith, 10, i1502:0, arith1, i1502:0) :|: i1505:0 - i1504:0 >= 1 && i1504:0 > -1 && i1502:0 > -1 && i1503:0 < i1502:0 && i1972:0 > -1 && i1503:0 > -1 && arith = i1504:0 + 1 + i1972:0 && arith1 = i1503:0 + 1 17.23/6.71 17.23/6.71 Arcs: 17.23/6.71 (1) -> (1) 17.23/6.71 17.23/6.71 This digraph is fully evaluated! 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (14) IntTRSCompressionProof (EQUIVALENT) 17.23/6.71 Compressed rules. 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (15) 17.23/6.71 Obligation: 17.23/6.71 Rules: 17.23/6.71 f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0:0)), i1504:0:0, i1505:0:0, i1502:0:0, i1503:0:0, i1502:0:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(i1502:0:0)), i1504:0:0 + 1 + i1972:0:0, 10, i1502:0:0, i1503:0:0 + 1, i1502:0:0) :|: i1972:0:0 > -1 && i1503:0:0 > -1 && i1503:0:0 < i1502:0:0 && i1502:0:0 > -1 && i1504:0:0 > -1 && i1505:0:0 - i1504:0:0 >= 1 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (16) TempFilterProof (SOUND) 17.23/6.71 Used the following sort dictionary for filtering: 17.23/6.71 f2957_0_main_Load(VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER) 17.23/6.71 java.lang.Object(VARIABLE) 17.23/6.71 ARRAY(INTEGER) 17.23/6.71 Replaced non-predefined constructor symbols by 0. 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (17) 17.23/6.71 Obligation: 17.23/6.71 Rules: 17.23/6.71 f2957_0_main_Load(c, i1504:0:0, i1505:0:0, i1502:0:0, i1503:0:0, i1502:0:0) -> f2957_0_main_Load(c1, c2, c3, i1502:0:0, c4, i1502:0:0) :|: c4 = i1503:0:0 + 1 && (c3 = 10 && (c2 = i1504:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1503:0:0 > -1 && i1503:0:0 < i1502:0:0 && i1502:0:0 > -1 && i1504:0:0 > -1 && i1505:0:0 - i1504:0:0 >= 1) 17.23/6.71 17.23/6.71 ---------------------------------------- 17.23/6.71 17.23/6.71 (18) PolynomialOrderProcessor (EQUIVALENT) 17.23/6.71 Found the following polynomial interpretation: 17.23/6.71 [f2957_0_main_Load(x, x1, x2, x3, x4, x5)] = c*x - x4 + x5 17.23/6.71 17.23/6.71 The following rules are decreasing: 17.23/6.71 f2957_0_main_Load(c, i1504:0:0, i1505:0:0, i1502:0:0, i1503:0:0, i1502:0:0) -> f2957_0_main_Load(c1, c2, c3, i1502:0:0, c4, i1502:0:0) :|: c4 = i1503:0:0 + 1 && (c3 = 10 && (c2 = i1504:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1503:0:0 > -1 && i1503:0:0 < i1502:0:0 && i1502:0:0 > -1 && i1504:0:0 > -1 && i1505:0:0 - i1504:0:0 >= 1) 17.23/6.71 The following rules are bounded: 17.23/6.71 f2957_0_main_Load(c, i1504:0:0, i1505:0:0, i1502:0:0, i1503:0:0, i1502:0:0) -> f2957_0_main_Load(c1, c2, c3, i1502:0:0, c4, i1502:0:0) :|: c4 = i1503:0:0 + 1 && (c3 = 10 && (c2 = i1504:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1503:0:0 > -1 && i1503:0:0 < i1502:0:0 && i1502:0:0 > -1 && i1504:0:0 > -1 && i1505:0:0 - i1504:0:0 >= 1) 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (19) 17.23/6.72 YES 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (20) 17.23/6.72 Obligation: 17.23/6.72 17.23/6.72 Termination digraph: 17.23/6.72 Nodes: 17.23/6.72 (1) f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2957_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 17.23/6.72 17.23/6.72 Arcs: 17.23/6.72 (1) -> (1) 17.23/6.72 17.23/6.72 This digraph is fully evaluated! 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (21) IntTRSCompressionProof (EQUIVALENT) 17.23/6.72 Compressed rules. 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (22) 17.23/6.72 Obligation: 17.23/6.72 Rules: 17.23/6.72 f2957_0_main_Load(java.lang.Object(ARRAY(x4:0)), x5:0, x6:0, x4:0, x7:0, x4:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(x4:0)), x5:0 + 1, 10, x4:0, x7:0, x4:0) :|: x7:0 >= x4:0 && x4:0 > -1 && x5:0 > -1 && x6:0 - x5:0 >= 1 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (23) IRSwTChainingProof (EQUIVALENT) 17.23/6.72 Chaining! 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (24) 17.23/6.72 Obligation: 17.23/6.72 Rules: 17.23/6.72 f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (25) IRSwTTerminationDigraphProof (EQUIVALENT) 17.23/6.72 Constructed termination digraph! 17.23/6.72 Nodes: 17.23/6.72 (1) f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 17.23/6.72 17.23/6.72 Arcs: 17.23/6.72 (1) -> (1) 17.23/6.72 17.23/6.72 This digraph is fully evaluated! 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (26) 17.23/6.72 Obligation: 17.23/6.72 17.23/6.72 Termination digraph: 17.23/6.72 Nodes: 17.23/6.72 (1) f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2957_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 17.23/6.72 17.23/6.72 Arcs: 17.23/6.72 (1) -> (1) 17.23/6.72 17.23/6.72 This digraph is fully evaluated! 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (27) IntTRSCompressionProof (EQUIVALENT) 17.23/6.72 Compressed rules. 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (28) 17.23/6.72 Obligation: 17.23/6.72 Rules: 17.23/6.72 f2957_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x2:0, x:0, x3:0, x:0) -> f2957_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0 + 2, 10, x:0, x3:0, x:0) :|: x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (29) TempFilterProof (SOUND) 17.23/6.72 Used the following sort dictionary for filtering: 17.23/6.72 f2957_0_main_Load(VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER) 17.23/6.72 java.lang.Object(VARIABLE) 17.23/6.72 ARRAY(INTEGER) 17.23/6.72 Replaced non-predefined constructor symbols by 0. 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (30) 17.23/6.72 Obligation: 17.23/6.72 Rules: 17.23/6.72 f2957_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2957_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (31) RankingReductionPairProof (EQUIVALENT) 17.23/6.72 Interpretation: 17.23/6.72 [ f2957_0_main_Load ] = -1/2*f2957_0_main_Load_2 17.23/6.72 17.23/6.72 The following rules are decreasing: 17.23/6.72 f2957_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2957_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) 17.23/6.72 17.23/6.72 The following rules are bounded: 17.23/6.72 f2957_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2957_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) 17.23/6.72 17.23/6.72 17.23/6.72 ---------------------------------------- 17.23/6.72 17.23/6.72 (32) 17.23/6.72 YES 17.23/6.76 EOF