/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 360 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 158 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 36 ms] (12) IRSwT (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] (14) IRSwT (15) TempFilterProof [SOUND, 41 ms] (16) IntTRS (17) RankingReductionPairProof [EQUIVALENT, 22 ms] (18) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: /** * Example taken from "A Term Rewriting Approach to the Automated Termination * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) * and converted to Java. */ public class PastaC10 { public static void main(String[] args) { Random.args = args; int i = Random.random(); int j = Random.random(); while (i - j >= 1) { i = i - Random.random(); int r = Random.random() + 1; j = j + r; } } } public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: /** * Example taken from "A Term Rewriting Approach to the Automated Termination * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) * and converted to Java. */ public class PastaC10 { public static void main(String[] args) { Random.args = args; int i = Random.random(); int j = Random.random(); while (i - j >= 1) { i = i - Random.random(); int r = Random.random() + 1; j = j + r; } } } public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: PastaC10.main([Ljava/lang/String;)V: Graph of 318 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 1 SCCs. ---------------------------------------- (6) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: PastaC10.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 56 IRulesP rules: f825_0_main_Load(EOS(STATIC_825(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i144) -> f827_0_main_IntArithmetic(EOS(STATIC_827(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i144, i145) :|: TRUE f827_0_main_IntArithmetic(EOS(STATIC_827(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i144, i145) -> f828_0_main_ConstantStackPush(EOS(STATIC_828(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i144 - i145) :|: i145 >= 0 f828_0_main_ConstantStackPush(EOS(STATIC_828(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i156) -> f829_0_main_LT(EOS(STATIC_829(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i156, 1) :|: TRUE f829_0_main_LT(EOS(STATIC_829(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i158, matching1) -> f838_0_main_LT(EOS(STATIC_838(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i158, 1) :|: TRUE && matching1 = 1 f838_0_main_LT(EOS(STATIC_838(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i158, matching1) -> f855_0_main_Load(EOS(STATIC_855(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145) :|: i158 >= 1 && matching1 = 1 f855_0_main_Load(EOS(STATIC_855(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145) -> f860_0_main_InvokeMethod(EOS(STATIC_860(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144) :|: TRUE f860_0_main_InvokeMethod(EOS(STATIC_860(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144) -> f861_0_random_FieldAccess(EOS(STATIC_861(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144) :|: TRUE f861_0_random_FieldAccess(EOS(STATIC_861(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144) -> f865_0_random_FieldAccess(EOS(STATIC_865(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) :|: TRUE f865_0_random_FieldAccess(EOS(STATIC_865(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) -> f871_0_random_ArrayAccess(EOS(STATIC_871(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) :|: TRUE f871_0_random_ArrayAccess(EOS(STATIC_871(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) -> f873_0_random_ArrayAccess(EOS(STATIC_873(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) :|: TRUE f873_0_random_ArrayAccess(EOS(STATIC_873(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(ARRAY(i4))) -> f877_0_random_Store(EOS(STATIC_877(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f877_0_random_Store(EOS(STATIC_877(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f883_0_random_FieldAccess(EOS(STATIC_883(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f883_0_random_FieldAccess(EOS(STATIC_883(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f886_0_random_ConstantStackPush(EOS(STATIC_886(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f886_0_random_ConstantStackPush(EOS(STATIC_886(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f893_0_random_IntArithmetic(EOS(STATIC_893(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f893_0_random_IntArithmetic(EOS(STATIC_893(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f899_0_random_FieldAccess(EOS(STATIC_899(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f899_0_random_FieldAccess(EOS(STATIC_899(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f901_0_random_Load(EOS(STATIC_901(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f901_0_random_Load(EOS(STATIC_901(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) -> f912_0_random_InvokeMethod(EOS(STATIC_912(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, o127) :|: TRUE f912_0_random_InvokeMethod(EOS(STATIC_912(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o139sub)) -> f917_0_random_InvokeMethod(EOS(STATIC_917(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o139sub)) :|: TRUE f917_0_random_InvokeMethod(EOS(STATIC_917(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) -> f921_0_random_InvokeMethod(EOS(STATIC_921(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) :|: TRUE f921_0_random_InvokeMethod(EOS(STATIC_921(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) -> f926_0_length_Load(EOS(STATIC_926(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) :|: TRUE f926_0_length_Load(EOS(STATIC_926(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) -> f938_0_length_FieldAccess(EOS(STATIC_938(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(o140sub)) :|: TRUE f938_0_length_FieldAccess(EOS(STATIC_938(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(java.lang.String(EOC, i190))) -> f946_0_length_FieldAccess(EOS(STATIC_946(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(java.lang.String(EOC, i190))) :|: i190 >= 0 f946_0_length_FieldAccess(EOS(STATIC_946(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, java.lang.Object(java.lang.String(EOC, i190))) -> f951_0_length_Return(EOS(STATIC_951(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) :|: TRUE f951_0_length_Return(EOS(STATIC_951(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) -> f960_0_random_Return(EOS(STATIC_960(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) :|: TRUE f960_0_random_Return(EOS(STATIC_960(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) -> f967_0_main_IntArithmetic(EOS(STATIC_967(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) :|: TRUE f967_0_main_IntArithmetic(EOS(STATIC_967(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144, i190) -> f969_0_main_Store(EOS(STATIC_969(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i144 - i190) :|: i190 >= 0 f969_0_main_Store(EOS(STATIC_969(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i145, i195) -> f977_0_main_InvokeMethod(EOS(STATIC_977(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145) :|: TRUE f977_0_main_InvokeMethod(EOS(STATIC_977(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145) -> f980_0_random_FieldAccess(EOS(STATIC_980(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145) :|: TRUE f980_0_random_FieldAccess(EOS(STATIC_980(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145) -> f994_0_random_FieldAccess(EOS(STATIC_994(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) :|: TRUE f994_0_random_FieldAccess(EOS(STATIC_994(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) -> f1011_0_random_ArrayAccess(EOS(STATIC_1011(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) :|: TRUE f1011_0_random_ArrayAccess(EOS(STATIC_1011(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) -> f1019_0_random_ArrayAccess(EOS(STATIC_1019(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) :|: TRUE f1019_0_random_ArrayAccess(EOS(STATIC_1019(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(ARRAY(i4))) -> f1031_0_random_Store(EOS(STATIC_1031(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1031_0_random_Store(EOS(STATIC_1031(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1061_0_random_FieldAccess(EOS(STATIC_1061(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1061_0_random_FieldAccess(EOS(STATIC_1061(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1068_0_random_ConstantStackPush(EOS(STATIC_1068(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1068_0_random_ConstantStackPush(EOS(STATIC_1068(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1088_0_random_IntArithmetic(EOS(STATIC_1088(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1088_0_random_IntArithmetic(EOS(STATIC_1088(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1102_0_random_FieldAccess(EOS(STATIC_1102(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1102_0_random_FieldAccess(EOS(STATIC_1102(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1112_0_random_Load(EOS(STATIC_1112(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1112_0_random_Load(EOS(STATIC_1112(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) -> f1131_0_random_InvokeMethod(EOS(STATIC_1131(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, o159) :|: TRUE f1131_0_random_InvokeMethod(EOS(STATIC_1131(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o175sub)) -> f1138_0_random_InvokeMethod(EOS(STATIC_1138(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o175sub)) :|: TRUE f1138_0_random_InvokeMethod(EOS(STATIC_1138(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) -> f1142_0_random_InvokeMethod(EOS(STATIC_1142(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) :|: TRUE f1142_0_random_InvokeMethod(EOS(STATIC_1142(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) -> f1155_0_length_Load(EOS(STATIC_1155(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) :|: TRUE f1155_0_length_Load(EOS(STATIC_1155(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) -> f1174_0_length_FieldAccess(EOS(STATIC_1174(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(o176sub)) :|: TRUE f1174_0_length_FieldAccess(EOS(STATIC_1174(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(java.lang.String(EOC, i249))) -> f1180_0_length_FieldAccess(EOS(STATIC_1180(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(java.lang.String(EOC, i249))) :|: i249 >= 0 f1180_0_length_FieldAccess(EOS(STATIC_1180(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, java.lang.Object(java.lang.String(EOC, i249))) -> f1184_0_length_Return(EOS(STATIC_1184(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) :|: TRUE f1184_0_length_Return(EOS(STATIC_1184(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) -> f1189_0_random_Return(EOS(STATIC_1189(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) :|: TRUE f1189_0_random_Return(EOS(STATIC_1189(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) -> f1192_0_main_ConstantStackPush(EOS(STATIC_1192(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) :|: TRUE f1192_0_main_ConstantStackPush(EOS(STATIC_1192(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249) -> f1194_0_main_IntArithmetic(EOS(STATIC_1194(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249, 1) :|: TRUE f1194_0_main_IntArithmetic(EOS(STATIC_1194(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249, matching1) -> f1206_0_main_Store(EOS(STATIC_1206(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i249 + 1) :|: i249 >= 0 && matching1 = 1 f1206_0_main_Store(EOS(STATIC_1206(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i253) -> f1215_0_main_Load(EOS(STATIC_1215(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i253) :|: TRUE f1215_0_main_Load(EOS(STATIC_1215(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i253) -> f1226_0_main_Load(EOS(STATIC_1226(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i253, i145) :|: TRUE f1226_0_main_Load(EOS(STATIC_1226(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i253, i145) -> f1235_0_main_IntArithmetic(EOS(STATIC_1235(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i253) :|: TRUE f1235_0_main_IntArithmetic(EOS(STATIC_1235(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145, i253) -> f1249_0_main_Store(EOS(STATIC_1249(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i145 + i253) :|: i145 >= 0 && i253 > 0 f1249_0_main_Store(EOS(STATIC_1249(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) -> f1262_0_main_JMP(EOS(STATIC_1262(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) :|: TRUE f1262_0_main_JMP(EOS(STATIC_1262(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) -> f1311_0_main_Load(EOS(STATIC_1311(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) :|: TRUE f1311_0_main_Load(EOS(STATIC_1311(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) -> f810_0_main_Load(EOS(STATIC_810(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i195, i260) :|: TRUE f810_0_main_Load(EOS(STATIC_810(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145) -> f825_0_main_Load(EOS(STATIC_825(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i144, i145, i144) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f825_0_main_Load(EOS(STATIC_825(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i144:0, i145:0, i144:0) -> f825_0_main_Load(EOS(STATIC_825(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i144:0 - i190:0, i145:0 + (i249:0 + 1), i144:0 - i190:0) :|: i145:0 > -1 && i144:0 - i145:0 >= 1 && i190:0 > -1 && i249:0 > -1 Filtered duplicate arguments: f825_0_main_Load(x1, x2, x3, x4, x5) -> f825_0_main_Load(x1, x2, x4, x5) Filtered unneeded arguments: f825_0_main_Load(x1, x2, x3, x4) -> f825_0_main_Load(x3, x4) Finished conversion. Obtained 1 rules.P rules: f825_0_main_Load(i145:0, i144:0) -> f825_0_main_Load(i145:0 + (i249:0 + 1), i144:0 - i190:0) :|: i144:0 - i145:0 >= 1 && i145:0 > -1 && i249:0 > -1 && i190:0 > -1 ---------------------------------------- (8) Obligation: Rules: f825_0_main_Load(i145:0, i144:0) -> f825_0_main_Load(i145:0 + (i249:0 + 1), i144:0 - i190:0) :|: i144:0 - i145:0 >= 1 && i145:0 > -1 && i249:0 > -1 && i190:0 > -1 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f825_0_main_Load(i145:0, i144:0) -> f825_0_main_Load(arith, arith1) :|: i144:0 - i145:0 >= 1 && i145:0 > -1 && i249:0 > -1 && i190:0 > -1 && arith = i145:0 + (i249:0 + 1) && arith1 = i144:0 - i190:0 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f825_0_main_Load(i145:0, i144:0) -> f825_0_main_Load(arith, arith1) :|: i144:0 - i145:0 >= 1 && i145:0 > -1 && i249:0 > -1 && i190:0 > -1 && arith = i145:0 + (i249:0 + 1) && arith1 = i144:0 - i190:0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (12) Obligation: Termination digraph: Nodes: (1) f825_0_main_Load(i145:0, i144:0) -> f825_0_main_Load(arith, arith1) :|: i144:0 - i145:0 >= 1 && i145:0 > -1 && i249:0 > -1 && i190:0 > -1 && arith = i145:0 + (i249:0 + 1) && arith1 = i144:0 - i190:0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (14) Obligation: Rules: f825_0_main_Load(i145:0:0, i144:0:0) -> f825_0_main_Load(i145:0:0 + (i249:0:0 + 1), i144:0:0 - i190:0:0) :|: i249:0:0 > -1 && i190:0:0 > -1 && i145:0:0 > -1 && i144:0:0 - i145:0:0 >= 1 ---------------------------------------- (15) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f825_0_main_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (16) Obligation: Rules: f825_0_main_Load(i145:0:0, i144:0:0) -> f825_0_main_Load(c, c1) :|: c1 = i144:0:0 - i190:0:0 && c = i145:0:0 + (i249:0:0 + 1) && (i249:0:0 > -1 && i190:0:0 > -1 && i145:0:0 > -1 && i144:0:0 - i145:0:0 >= 1) ---------------------------------------- (17) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f825_0_main_Load ] = -1*f825_0_main_Load_1 + f825_0_main_Load_2 The following rules are decreasing: f825_0_main_Load(i145:0:0, i144:0:0) -> f825_0_main_Load(c, c1) :|: c1 = i144:0:0 - i190:0:0 && c = i145:0:0 + (i249:0:0 + 1) && (i249:0:0 > -1 && i190:0:0 > -1 && i145:0:0 > -1 && i144:0:0 - i145:0:0 >= 1) The following rules are bounded: f825_0_main_Load(i145:0:0, i144:0:0) -> f825_0_main_Load(c, c1) :|: c1 = i144:0:0 - i190:0:0 && c = i145:0:0 + (i249:0:0 + 1) && (i249:0:0 > -1 && i190:0:0 > -1 && i145:0:0 > -1 && i144:0:0 - i145:0:0 >= 1) ---------------------------------------- (18) YES