/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 340 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 135 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 71 ms] (12) IRSwT (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] (14) IRSwT (15) TempFilterProof [SOUND, 52 ms] (16) IntTRS (17) RankingReductionPairProof [EQUIVALENT, 0 ms] (18) IntTRS (19) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (20) 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 PastaC9 { public static void main(String[] args) { Random.args = args; int x = Random.random(); int y = Random.random(); while (x > 0 && y > 0) { if (Random.random() < 42) { x--; y = Random.random(); } else { y--; } } } } 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 PastaC9 { public static void main(String[] args) { Random.args = args; int x = Random.random(); int y = Random.random(); while (x > 0 && y > 0) { if (Random.random() < 42) { x--; y = Random.random(); } else { y--; } } } } 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: PastaC9.main([Ljava/lang/String;)V: Graph of 319 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: PastaC9.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: f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89, i95) -> f517_0_main_LE(EOS(STATIC_517(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89, i95) :|: TRUE f517_0_main_LE(EOS(STATIC_517(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89, i95) -> f522_0_main_Load(EOS(STATIC_522(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89) :|: i95 > 0 f522_0_main_Load(EOS(STATIC_522(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89) -> f525_0_main_LE(EOS(STATIC_525(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i89, i89) :|: TRUE f525_0_main_LE(EOS(STATIC_525(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i96) -> f529_0_main_LE(EOS(STATIC_529(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i96) :|: TRUE f529_0_main_LE(EOS(STATIC_529(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i96) -> f536_0_main_InvokeMethod(EOS(STATIC_536(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) :|: i96 > 0 f536_0_main_InvokeMethod(EOS(STATIC_536(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) -> f538_0_random_FieldAccess(EOS(STATIC_538(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) :|: TRUE f538_0_random_FieldAccess(EOS(STATIC_538(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) -> f540_0_random_FieldAccess(EOS(STATIC_540(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) :|: TRUE f540_0_random_FieldAccess(EOS(STATIC_540(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) -> f545_0_random_ArrayAccess(EOS(STATIC_545(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) :|: TRUE f545_0_random_ArrayAccess(EOS(STATIC_545(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) -> f547_0_random_ArrayAccess(EOS(STATIC_547(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) :|: TRUE f547_0_random_ArrayAccess(EOS(STATIC_547(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(ARRAY(i4))) -> f550_0_random_Store(EOS(STATIC_550(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f550_0_random_Store(EOS(STATIC_550(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f556_0_random_FieldAccess(EOS(STATIC_556(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f556_0_random_FieldAccess(EOS(STATIC_556(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f559_0_random_ConstantStackPush(EOS(STATIC_559(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f559_0_random_ConstantStackPush(EOS(STATIC_559(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f566_0_random_IntArithmetic(EOS(STATIC_566(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f566_0_random_IntArithmetic(EOS(STATIC_566(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f571_0_random_FieldAccess(EOS(STATIC_571(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f571_0_random_FieldAccess(EOS(STATIC_571(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f574_0_random_Load(EOS(STATIC_574(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f574_0_random_Load(EOS(STATIC_574(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) -> f586_0_random_InvokeMethod(EOS(STATIC_586(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, o74) :|: TRUE f586_0_random_InvokeMethod(EOS(STATIC_586(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o82sub)) -> f591_0_random_InvokeMethod(EOS(STATIC_591(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o82sub)) :|: TRUE f591_0_random_InvokeMethod(EOS(STATIC_591(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) -> f593_0_random_InvokeMethod(EOS(STATIC_593(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) :|: TRUE f593_0_random_InvokeMethod(EOS(STATIC_593(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) -> f598_0_length_Load(EOS(STATIC_598(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) :|: TRUE f598_0_length_Load(EOS(STATIC_598(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) -> f615_0_length_FieldAccess(EOS(STATIC_615(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(o83sub)) :|: TRUE f615_0_length_FieldAccess(EOS(STATIC_615(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(java.lang.String(EOC, i133))) -> f626_0_length_FieldAccess(EOS(STATIC_626(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(java.lang.String(EOC, i133))) :|: i133 >= 0 f626_0_length_FieldAccess(EOS(STATIC_626(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, java.lang.Object(java.lang.String(EOC, i133))) -> f632_0_length_Return(EOS(STATIC_632(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) :|: TRUE f632_0_length_Return(EOS(STATIC_632(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) -> f637_0_random_Return(EOS(STATIC_637(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) :|: TRUE f637_0_random_Return(EOS(STATIC_637(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) -> f642_0_main_ConstantStackPush(EOS(STATIC_642(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) :|: TRUE f642_0_main_ConstantStackPush(EOS(STATIC_642(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133) -> f646_0_main_GE(EOS(STATIC_646(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i133, 42) :|: TRUE f646_0_main_GE(EOS(STATIC_646(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i140, matching1) -> f656_0_main_GE(EOS(STATIC_656(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i140, 42) :|: TRUE && matching1 = 42 f646_0_main_GE(EOS(STATIC_646(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i141, matching1) -> f657_0_main_GE(EOS(STATIC_657(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i141, 42) :|: TRUE && matching1 = 42 f656_0_main_GE(EOS(STATIC_656(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i140, matching1) -> f661_0_main_Inc(EOS(STATIC_661(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95) :|: i140 < 42 && matching1 = 42 f661_0_main_Inc(EOS(STATIC_661(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95) -> f676_0_main_InvokeMethod(EOS(STATIC_676(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95 + -1) :|: TRUE f676_0_main_InvokeMethod(EOS(STATIC_676(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146) -> f690_0_random_FieldAccess(EOS(STATIC_690(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146) :|: TRUE f690_0_random_FieldAccess(EOS(STATIC_690(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146) -> f747_0_random_FieldAccess(EOS(STATIC_747(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) :|: TRUE f747_0_random_FieldAccess(EOS(STATIC_747(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) -> f764_0_random_ArrayAccess(EOS(STATIC_764(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) :|: TRUE f764_0_random_ArrayAccess(EOS(STATIC_764(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) -> f775_0_random_ArrayAccess(EOS(STATIC_775(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) :|: TRUE f775_0_random_ArrayAccess(EOS(STATIC_775(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(ARRAY(i4))) -> f788_0_random_Store(EOS(STATIC_788(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f788_0_random_Store(EOS(STATIC_788(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f797_0_random_FieldAccess(EOS(STATIC_797(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f797_0_random_FieldAccess(EOS(STATIC_797(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f800_0_random_ConstantStackPush(EOS(STATIC_800(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f800_0_random_ConstantStackPush(EOS(STATIC_800(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f804_0_random_IntArithmetic(EOS(STATIC_804(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f804_0_random_IntArithmetic(EOS(STATIC_804(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f808_0_random_FieldAccess(EOS(STATIC_808(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f808_0_random_FieldAccess(EOS(STATIC_808(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f810_0_random_Load(EOS(STATIC_810(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f810_0_random_Load(EOS(STATIC_810(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) -> f814_0_random_InvokeMethod(EOS(STATIC_814(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, o109) :|: TRUE f814_0_random_InvokeMethod(EOS(STATIC_814(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o112sub)) -> f817_0_random_InvokeMethod(EOS(STATIC_817(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o112sub)) :|: TRUE f817_0_random_InvokeMethod(EOS(STATIC_817(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) -> f820_0_random_InvokeMethod(EOS(STATIC_820(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) :|: TRUE f820_0_random_InvokeMethod(EOS(STATIC_820(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) -> f867_0_length_Load(EOS(STATIC_867(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) :|: TRUE f867_0_length_Load(EOS(STATIC_867(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) -> f871_0_length_FieldAccess(EOS(STATIC_871(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(o113sub)) :|: TRUE f871_0_length_FieldAccess(EOS(STATIC_871(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(java.lang.String(EOC, i201))) -> f882_0_length_FieldAccess(EOS(STATIC_882(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(java.lang.String(EOC, i201))) :|: i201 >= 0 f882_0_length_FieldAccess(EOS(STATIC_882(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, java.lang.Object(java.lang.String(EOC, i201))) -> f888_0_length_Return(EOS(STATIC_888(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f888_0_length_Return(EOS(STATIC_888(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) -> f897_0_random_Return(EOS(STATIC_897(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f897_0_random_Return(EOS(STATIC_897(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) -> f900_0_main_Store(EOS(STATIC_900(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f900_0_main_Store(EOS(STATIC_900(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) -> f907_0_main_JMP(EOS(STATIC_907(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f907_0_main_JMP(EOS(STATIC_907(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) -> f930_0_main_Load(EOS(STATIC_930(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f930_0_main_Load(EOS(STATIC_930(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) -> f504_0_main_Load(EOS(STATIC_504(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i146, i201) :|: TRUE f504_0_main_Load(EOS(STATIC_504(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i88, i89) -> f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i88, i89, i88) :|: TRUE f657_0_main_GE(EOS(STATIC_657(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96, i141, matching1) -> f664_0_main_Inc(EOS(STATIC_664(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) :|: i141 >= 42 && matching1 = 42 f664_0_main_Inc(EOS(STATIC_664(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96) -> f678_0_main_JMP(EOS(STATIC_678(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i96 + -1) :|: TRUE f678_0_main_JMP(EOS(STATIC_678(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i147) -> f722_0_main_Load(EOS(STATIC_722(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i147) :|: TRUE f722_0_main_Load(EOS(STATIC_722(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i147) -> f504_0_main_Load(EOS(STATIC_504(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i95, i147) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i95:0, i89:0, i95:0) -> f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i95:0, i89:0 - 1, i95:0) :|: i133:0 > 41 && i89:0 > 0 && i95:0 > 0 f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i95:0, i89:0, i95:0) -> f513_0_main_LE(EOS(STATIC_513(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i95:0 - 1, i201:0, i95:0 - 1) :|: i95:0 > 0 && i89:0 > 0 && i133:0 > -1 && i201:0 > -1 && i133:0 < 42 Filtered duplicate arguments: f513_0_main_LE(x1, x2, x3, x4, x5) -> f513_0_main_LE(x1, x2, x4, x5) Filtered unneeded arguments: f513_0_main_LE(x1, x2, x3, x4) -> f513_0_main_LE(x3, x4) Finished conversion. Obtained 2 rules.P rules: f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(i89:0 - 1, i95:0) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > 41 f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(i201:0, i95:0 - 1) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > -1 && i133:0 < 42 && i201:0 > -1 ---------------------------------------- (8) Obligation: Rules: f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(i89:0 - 1, i95:0) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > 41 f513_0_main_LE(x, x1) -> f513_0_main_LE(x2, x1 - 1) :|: x > 0 && x1 > 0 && x3 > -1 && x3 < 42 && x2 > -1 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(arith, i95:0) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > 41 && arith = i89:0 - 1 f513_0_main_LE(x4, x5) -> f513_0_main_LE(x6, x7) :|: x4 > 0 && x5 > 0 && x8 > -1 && x8 < 42 && x6 > -1 && x7 = x5 - 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(arith, i95:0) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > 41 && arith = i89:0 - 1 (2) f513_0_main_LE(x4, x5) -> f513_0_main_LE(x6, x7) :|: x4 > 0 && x5 > 0 && x8 > -1 && x8 < 42 && x6 > -1 && x7 = x5 - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (12) Obligation: Termination digraph: Nodes: (1) f513_0_main_LE(i89:0, i95:0) -> f513_0_main_LE(arith, i95:0) :|: i89:0 > 0 && i95:0 > 0 && i133:0 > 41 && arith = i89:0 - 1 (2) f513_0_main_LE(x4, x5) -> f513_0_main_LE(x6, x7) :|: x4 > 0 && x5 > 0 && x8 > -1 && x8 < 42 && x6 > -1 && x7 = x5 - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (13) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (14) Obligation: Rules: f513_0_main_LE(x4:0, x5:0) -> f513_0_main_LE(x6:0, x5:0 - 1) :|: x8:0 < 42 && x6:0 > -1 && x8:0 > -1 && x5:0 > 0 && x4:0 > 0 f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(i89:0:0 - 1, i95:0:0) :|: i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41 ---------------------------------------- (15) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f513_0_main_LE(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (16) Obligation: Rules: f513_0_main_LE(x4:0, x5:0) -> f513_0_main_LE(x6:0, c) :|: c = x5:0 - 1 && (x8:0 < 42 && x6:0 > -1 && x8:0 > -1 && x5:0 > 0 && x4:0 > 0) f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(c1, i95:0:0) :|: c1 = i89:0:0 - 1 && (i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41) ---------------------------------------- (17) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f513_0_main_LE ] = f513_0_main_LE_2 The following rules are decreasing: f513_0_main_LE(x4:0, x5:0) -> f513_0_main_LE(x6:0, c) :|: c = x5:0 - 1 && (x8:0 < 42 && x6:0 > -1 && x8:0 > -1 && x5:0 > 0 && x4:0 > 0) The following rules are bounded: f513_0_main_LE(x4:0, x5:0) -> f513_0_main_LE(x6:0, c) :|: c = x5:0 - 1 && (x8:0 < 42 && x6:0 > -1 && x8:0 > -1 && x5:0 > 0 && x4:0 > 0) f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(c1, i95:0:0) :|: c1 = i89:0:0 - 1 && (i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41) ---------------------------------------- (18) Obligation: Rules: f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(c1, i95:0:0) :|: c1 = i89:0:0 - 1 && (i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41) ---------------------------------------- (19) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f513_0_main_LE(x, x1)] = x The following rules are decreasing: f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(c1, i95:0:0) :|: c1 = i89:0:0 - 1 && (i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41) The following rules are bounded: f513_0_main_LE(i89:0:0, i95:0:0) -> f513_0_main_LE(c1, i95:0:0) :|: c1 = i89:0:0 - 1 && (i89:0:0 > 0 && i95:0:0 > 0 && i133:0:0 > 41) ---------------------------------------- (20) YES