/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: 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, 786 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 40 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 214 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 35 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 48 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 40 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) FilterProof [EQUIVALENT, 0 ms] (30) IntTRS (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 111 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 91 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 99 ms] (45) IntTRS (46) PolynomialOrderProcessor [EQUIVALENT, 17 ms] (47) IntTRS (48) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (49) IntTRS (50) RankingReductionPairProof [EQUIVALENT, 12 ms] (51) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Power { public static void main(String args[]) { for (int i = 0; i < args.length; i++) { even(power(args.length, args[i].length())); odd( power(args.length, args[i].length())); } // power(args.length, args.length); } public static int power(int a, int n) { if (n <= 0) return 1; else if (n == 1) return a; else { int r = power(a * a, n/2); if (n % 2 == 0) return r; else return a * r; } } public static boolean even(int n) { if (n <= 0) return true; else if (n == 1) return false; else return odd(n - 1); } public static boolean odd(int n) { if (n <= 0) return false; else if (n == 1) return true; else return even(n - 1); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Power { public static void main(String args[]) { for (int i = 0; i < args.length; i++) { even(power(args.length, args[i].length())); odd( power(args.length, args[i].length())); } // power(args.length, args.length); } public static int power(int a, int n) { if (n <= 0) return 1; else if (n == 1) return a; else { int r = power(a * a, n/2); if (n % 2 == 0) return r; else return a * r; } } public static boolean even(int n) { if (n <= 0) return true; else if (n == 1) return false; else return odd(n - 1); } public static boolean odd(int n) { if (n <= 0) return false; else if (n == 1) return true; else return even(n - 1); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Power.main([Ljava/lang/String;)V: Graph of 171 nodes with 1 SCC. Power.power(II)I: Graph of 44 nodes with 0 SCCs. Power.even(I)Z: Graph of 23 nodes with 0 SCCs. Power.odd(I)Z: Graph of 23 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Power.even(I)Z, Power.odd(I)Z SCC calls the following helper methods: Power.even(I)Z, Power.odd(I)Z Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 26 IRulesP rules: f214_0_even_GT(EOS(STATIC_214), i36, i36, i36) -> f234_0_even_Load(EOS(STATIC_234), i36, i36) :|: i36 > 0 f234_0_even_Load(EOS(STATIC_234), i36, i36) -> f756_0_even_ConstantStackPush(EOS(STATIC_756), i36, i36, i36) :|: TRUE f756_0_even_ConstantStackPush(EOS(STATIC_756), i36, i36, i36) -> f759_0_even_NE(EOS(STATIC_759), i36, i36, i36, 1) :|: TRUE f759_0_even_NE(EOS(STATIC_759), i153, i153, i153, matching1) -> f767_0_even_NE(EOS(STATIC_767), i153, i153, i153, 1) :|: TRUE && matching1 = 1 f767_0_even_NE(EOS(STATIC_767), i153, i153, i153, matching1) -> f780_0_even_Load(EOS(STATIC_780), i153, i153) :|: i153 > 1 && matching1 = 1 f780_0_even_Load(EOS(STATIC_780), i153, i153) -> f786_0_even_ConstantStackPush(EOS(STATIC_786), i153, i153) :|: TRUE f786_0_even_ConstantStackPush(EOS(STATIC_786), i153, i153) -> f794_0_even_IntArithmetic(EOS(STATIC_794), i153, i153, 1) :|: TRUE f794_0_even_IntArithmetic(EOS(STATIC_794), i153, i153, matching1) -> f816_0_even_InvokeMethod(EOS(STATIC_816), i153, i153 - 1) :|: i153 > 0 && matching1 = 1 f816_0_even_InvokeMethod(EOS(STATIC_816), i153, i155) -> f821_0_odd_Load(EOS(STATIC_821), i155, i155) :|: i153 > 1 && i155 >= 1 && i155 < i153 f816_0_even_InvokeMethod(EOS(STATIC_816), i153, i155) -> f821_1_odd_Load(EOS(STATIC_821), i153, i155) :|: i153 > 1 && i155 >= 1 && i155 < i153 f821_0_odd_Load(EOS(STATIC_821), i155, i155) -> f830_0_odd_Load(EOS(STATIC_830), i155, i155) :|: TRUE f830_0_odd_Load(EOS(STATIC_830), i155, i155) -> f859_0_odd_Load(EOS(STATIC_859), i155, i155) :|: TRUE f859_0_odd_Load(EOS(STATIC_859), i155, i155) -> f876_0_odd_GT(EOS(STATIC_876), i155, i155, i155) :|: TRUE f876_0_odd_GT(EOS(STATIC_876), i155, i155, i155) -> f882_0_odd_Load(EOS(STATIC_882), i155, i155) :|: i155 > 0 f882_0_odd_Load(EOS(STATIC_882), i155, i155) -> f889_0_odd_ConstantStackPush(EOS(STATIC_889), i155, i155, i155) :|: TRUE f889_0_odd_ConstantStackPush(EOS(STATIC_889), i155, i155, i155) -> f891_0_odd_NE(EOS(STATIC_891), i155, i155, i155, 1) :|: TRUE f891_0_odd_NE(EOS(STATIC_891), i196, i196, i196, matching1) -> f897_0_odd_NE(EOS(STATIC_897), i196, i196, i196, 1) :|: TRUE && matching1 = 1 f897_0_odd_NE(EOS(STATIC_897), i196, i196, i196, matching1) -> f911_0_odd_Load(EOS(STATIC_911), i196, i196) :|: i196 > 1 && matching1 = 1 f911_0_odd_Load(EOS(STATIC_911), i196, i196) -> f999_0_odd_ConstantStackPush(EOS(STATIC_999), i196, i196) :|: TRUE f999_0_odd_ConstantStackPush(EOS(STATIC_999), i196, i196) -> f1006_0_odd_IntArithmetic(EOS(STATIC_1006), i196, i196, 1) :|: TRUE f1006_0_odd_IntArithmetic(EOS(STATIC_1006), i196, i196, matching1) -> f1015_0_odd_InvokeMethod(EOS(STATIC_1015), i196, i196 - 1) :|: i196 > 0 && matching1 = 1 f1015_0_odd_InvokeMethod(EOS(STATIC_1015), i196, i217) -> f1020_0_even_Load(EOS(STATIC_1020), i217, i217) :|: i196 > 1 && i217 >= 1 && i217 < i196 f1015_0_odd_InvokeMethod(EOS(STATIC_1015), i196, i217) -> f1020_1_even_Load(EOS(STATIC_1020), i196, i217) :|: i196 > 1 && i217 >= 1 && i217 < i196 f1020_0_even_Load(EOS(STATIC_1020), i217, i217) -> f1026_0_even_Load(EOS(STATIC_1026), i217, i217) :|: TRUE f1026_0_even_Load(EOS(STATIC_1026), i217, i217) -> f211_0_even_Load(EOS(STATIC_211), i217, i217) :|: TRUE f211_0_even_Load(EOS(STATIC_211), i36, i36) -> f214_0_even_GT(EOS(STATIC_214), i36, i36, i36) :|: TRUE Combined rules. Obtained 3 IRulesP rules: f214_0_even_GT(EOS(STATIC_214), i36:0, i36:0, i36:0) -> f214_0_even_GT(EOS(STATIC_214), i36:0 - 2, i36:0 - 2, i36:0 - 2) :|: i36:0 > 2 && i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 Removed following non-SCC rules: f214_0_even_GT(EOS(STATIC_214), i36:0, i36:0, i36:0) -> f1020_1_even_Load(EOS(STATIC_1020), i36:0 - 1, i36:0 - 2) :|: i36:0 > 2 && i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 f214_0_even_GT(EOS(STATIC_214), i36:0, i36:0, i36:0) -> f821_1_odd_Load(EOS(STATIC_821), i36:0, i36:0 - 1) :|: i36:0 > 1 && i36:0 - 1 < i36:0 Filtered constant ground arguments: f214_0_even_GT(x1, x2, x3, x4) -> f214_0_even_GT(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f214_0_even_GT(x1, x2, x3) -> f214_0_even_GT(x3) Finished conversion. Obtained 1 rules.P rules: f214_0_even_GT(i36:0) -> f214_0_even_GT(i36:0 - 2) :|: i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 && i36:0 > 2 ---------------------------------------- (9) Obligation: Rules: f214_0_even_GT(i36:0) -> f214_0_even_GT(i36:0 - 2) :|: i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 && i36:0 > 2 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f214_0_even_GT(i36:0) -> f214_0_even_GT(arith) :|: i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 && i36:0 > 2 && arith = i36:0 - 2 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f214_0_even_GT(i36:0) -> f214_0_even_GT(arith) :|: i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 && i36:0 > 2 && arith = i36:0 - 2 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f214_0_even_GT(i36:0) -> f214_0_even_GT(arith) :|: i36:0 - 2 < i36:0 - 1 && i36:0 - 1 < i36:0 && i36:0 > 2 && arith = i36:0 - 2 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f214_0_even_GT(i36:0:0) -> f214_0_even_GT(i36:0:0 - 2) :|: i36:0:0 - 2 < i36:0:0 - 1 && i36:0:0 - 1 < i36:0:0 && i36:0:0 > 2 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f214_0_even_GT(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f214_0_even_GT(i36:0:0) -> f214_0_even_GT(c) :|: c = i36:0:0 - 2 && (i36:0:0 - 2 < i36:0:0 - 1 && i36:0:0 - 1 < i36:0:0 && i36:0:0 > 2) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f214_0_even_GT(x)] = x The following rules are decreasing: f214_0_even_GT(i36:0:0) -> f214_0_even_GT(c) :|: c = i36:0:0 - 2 && (i36:0:0 - 2 < i36:0:0 - 1 && i36:0:0 - 1 < i36:0:0 && i36:0:0 > 2) The following rules are bounded: f214_0_even_GT(i36:0:0) -> f214_0_even_GT(c) :|: c = i36:0:0 - 2 && (i36:0:0 - 2 < i36:0:0 - 1 && i36:0:0 - 1 < i36:0:0 && i36:0:0 > 2) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Power.power(II)I SCC calls the following helper methods: Power.power(II)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f86_0_power_GT(EOS(STATIC_86), i17, i17, i17) -> f91_0_power_GT(EOS(STATIC_91), i17, i17, i17) :|: TRUE f91_0_power_GT(EOS(STATIC_91), i17, i17, i17) -> f94_0_power_Load(EOS(STATIC_94), i17, i17) :|: i17 > 0 f94_0_power_Load(EOS(STATIC_94), i17, i17) -> f97_0_power_ConstantStackPush(EOS(STATIC_97), i17, i17, i17) :|: TRUE f97_0_power_ConstantStackPush(EOS(STATIC_97), i17, i17, i17) -> f110_0_power_NE(EOS(STATIC_110), i17, i17, i17, 1) :|: TRUE f110_0_power_NE(EOS(STATIC_110), i24, i24, i24, matching1) -> f137_0_power_NE(EOS(STATIC_137), i24, i24, i24, 1) :|: TRUE && matching1 = 1 f137_0_power_NE(EOS(STATIC_137), i24, i24, i24, matching1) -> f143_0_power_Load(EOS(STATIC_143), i24, i24) :|: i24 > 1 && matching1 = 1 f143_0_power_Load(EOS(STATIC_143), i24, i24) -> f147_0_power_Load(EOS(STATIC_147), i24, i24) :|: TRUE f147_0_power_Load(EOS(STATIC_147), i24, i24) -> f151_0_power_IntArithmetic(EOS(STATIC_151), i24, i24) :|: TRUE f151_0_power_IntArithmetic(EOS(STATIC_151), i24, i24) -> f174_0_power_Load(EOS(STATIC_174), i24, i24) :|: TRUE f174_0_power_Load(EOS(STATIC_174), i24, i24) -> f180_0_power_ConstantStackPush(EOS(STATIC_180), i24, i24, i24) :|: TRUE f180_0_power_ConstantStackPush(EOS(STATIC_180), i24, i24, i24) -> f195_0_power_IntArithmetic(EOS(STATIC_195), i24, i24, i24, 2) :|: TRUE f195_0_power_IntArithmetic(EOS(STATIC_195), i24, i24, i24, matching1) -> f203_0_power_InvokeMethod(EOS(STATIC_203), i24, i24, i34) :|: i34 = i24 / 2 && i24 > 1 && i34 < i24 && matching1 = 2 f203_0_power_InvokeMethod(EOS(STATIC_203), i24, i24, i34) -> f206_0_power_Load(EOS(STATIC_206), i34, i34) :|: i3 >= 1 && i24 > 1 && i30 >= 1 && i34 >= 1 f203_0_power_InvokeMethod(EOS(STATIC_203), i24, i24, i34) -> f206_1_power_Load(EOS(STATIC_206), i24, i24, i34) :|: i3 >= 1 && i24 > 1 && i30 >= 1 && i34 >= 1 f206_0_power_Load(EOS(STATIC_206), i34, i34) -> f208_0_power_Load(EOS(STATIC_208), i34, i34) :|: TRUE f208_0_power_Load(EOS(STATIC_208), i34, i34) -> f84_0_power_Load(EOS(STATIC_84), i34, i34) :|: TRUE f84_0_power_Load(EOS(STATIC_84), i13, i13) -> f86_0_power_GT(EOS(STATIC_86), i13, i13, i13) :|: TRUE Combined rules. Obtained 3 IRulesP rules: f86_0_power_GT(EOS(STATIC_86), i17:0, i17:0, i17:0) -> f86_0_power_GT'(EOS(STATIC_86), i17:0, i17:0, i17:0) :|: i17:0 > 1 && i3:0 > 0 && i17:0 > div && div > 0 && i30:0 > 0 f86_0_power_GT'(EOS(STATIC_86), i17:0, i17:0, i17:0) -> f86_0_power_GT(EOS(STATIC_86), div, div, div) :|: i17:0 > 1 && i3:0 > 0 && i17:0 > div && i30:0 > 0 && div > 0 && i17:0 - 2 * div < 2 && i17:0 - 2 * div > -2 Removed following non-SCC rules: f86_0_power_GT'(EOS(STATIC_86), i17:0, i17:0, i17:0) -> f206_1_power_Load(EOS(STATIC_206), i17:0, i17:0, div) :|: i17:0 > 1 && i3:0 > 0 && i17:0 > div && i30:0 > 0 && div > 0 && i17:0 - 2 * div < 2 && i17:0 - 2 * div > -2 Filtered constant ground arguments: f86_0_power_GT(x1, x2, x3, x4) -> f86_0_power_GT(x2, x3, x4) f86_0_power_GT'(x1, x2, x3, x4) -> f86_0_power_GT'(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f86_0_power_GT(x1, x2, x3) -> f86_0_power_GT(x3) f86_0_power_GT'(x1, x2, x3) -> f86_0_power_GT'(x3) Finished conversion. Obtained 2 rules.P rules: f86_0_power_GT(i17:0) -> f86_0_power_GT'(i17:0) :|: i3:0 > 0 && i17:0 > 1 && i17:0 > div && i30:0 > 0 && div > 0 f86_0_power_GT'(i17:0) -> f86_0_power_GT(div) :|: i3:0 > 0 && i17:0 > 1 && i17:0 > div && i30:0 > 0 && div > 0 && i17:0 - 2 * div > -2 && i17:0 - 2 * div < 2 ---------------------------------------- (22) Obligation: Rules: f86_0_power_GT(x) -> f86_0_power_GT'(x) :|: x1 > 0 && x > 1 && x > x2 && x3 > 0 && x2 > 0 f86_0_power_GT'(x4) -> f86_0_power_GT(x5) :|: x6 > 0 && x4 > 1 && x4 > x5 && x7 > 0 && x5 > 0 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f86_0_power_GT(x) -> f86_0_power_GT'(x) :|: x1 > 0 && x > 1 && x > x2 && x3 > 0 && x2 > 0 f86_0_power_GT'(x4) -> f86_0_power_GT(x5) :|: x6 > 0 && x4 > 1 && x4 > x5 && x7 > 0 && x5 > 0 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f86_0_power_GT(x) -> f86_0_power_GT'(x) :|: x1 > 0 && x > 1 && x > x2 && x3 > 0 && x2 > 0 (2) f86_0_power_GT'(x4) -> f86_0_power_GT(x5) :|: x6 > 0 && x4 > 1 && x4 > x5 && x7 > 0 && x5 > 0 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f86_0_power_GT(x) -> f86_0_power_GT'(x) :|: x1 > 0 && x > 1 && x > x2 && x3 > 0 && x2 > 0 (2) f86_0_power_GT'(x4) -> f86_0_power_GT(x5) :|: x6 > 0 && x4 > 1 && x4 > x5 && x7 > 0 && x5 > 0 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f86_0_power_GT(x:0) -> f86_0_power_GT(x5:0) :|: x:0 - 2 * x5:0 < 2 && x2:0 > 0 && x3:0 > 0 && x:0 - 2 * x5:0 > -2 && x:0 > x2:0 && x5:0 > 0 && x1:0 > 0 && x7:0 > 0 && x:0 > x5:0 && x:0 > 1 && x6:0 > 0 ---------------------------------------- (29) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f86_0_power_GT(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f86_0_power_GT(x:0) -> f86_0_power_GT(x5:0) :|: x:0 - 2 * x5:0 < 2 && x2:0 > 0 && x3:0 > 0 && x:0 - 2 * x5:0 > -2 && x:0 > x2:0 && x5:0 > 0 && x1:0 > 0 && x7:0 > 0 && x:0 > x5:0 && x:0 > 1 && x6:0 > 0 ---------------------------------------- (31) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (32) Obligation: Rules: f86_0_power_GT(x:0:0) -> f86_0_power_GT(x5:0:0) :|: x:0:0 > 1 && x6:0:0 > 0 && x:0:0 > x5:0:0 && x7:0:0 > 0 && x1:0:0 > 0 && x5:0:0 > 0 && x:0:0 > x2:0:0 && x:0:0 - 2 * x5:0:0 > -2 && x3:0:0 > 0 && x2:0:0 > 0 && x:0:0 - 2 * x5:0:0 < 2 ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f86_0_power_GT ] = 2*f86_0_power_GT_1 The following rules are decreasing: f86_0_power_GT(x:0:0) -> f86_0_power_GT(x5:0:0) :|: x:0:0 > 1 && x6:0:0 > 0 && x:0:0 > x5:0:0 && x7:0:0 > 0 && x1:0:0 > 0 && x5:0:0 > 0 && x:0:0 > x2:0:0 && x:0:0 - 2 * x5:0:0 > -2 && x3:0:0 > 0 && x2:0:0 > 0 && x:0:0 - 2 * x5:0:0 < 2 The following rules are bounded: f86_0_power_GT(x:0:0) -> f86_0_power_GT(x5:0:0) :|: x:0:0 > 1 && x6:0:0 > 0 && x:0:0 > x5:0:0 && x7:0:0 > 0 && x1:0:0 > 0 && x5:0:0 > 0 && x:0:0 > x2:0:0 && x:0:0 - 2 * x5:0:0 > -2 && x3:0:0 > 0 && x2:0:0 > 0 && x:0:0 - 2 * x5:0:0 < 2 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Power.main([Ljava/lang/String;)V SCC calls the following helper methods: Power.power(II)I, Power.even(I)Z, Power.odd(I)Z 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: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 87 IRulesP rules: f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(o374sub), java.lang.Object(o374sub), i957, i957) -> f4251_0_main_ArrayLength(EOS(STATIC_4251), java.lang.Object(o374sub), java.lang.Object(o374sub), i957, i957, java.lang.Object(o374sub)) :|: TRUE f4251_0_main_ArrayLength(EOS(STATIC_4251), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, java.lang.Object(ARRAY(i960))) -> f4254_0_main_ArrayLength(EOS(STATIC_4254), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, java.lang.Object(ARRAY(i960))) :|: i960 >= 0 f4254_0_main_ArrayLength(EOS(STATIC_4254), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, java.lang.Object(ARRAY(i960))) -> f4256_0_main_GE(EOS(STATIC_4256), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, i960) :|: i960 >= 0 f4256_0_main_GE(EOS(STATIC_4256), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, i960) -> f4271_0_main_GE(EOS(STATIC_4271), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, i960) :|: i957 < i960 f4271_0_main_GE(EOS(STATIC_4271), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i957, i960) -> f4279_0_main_Load(EOS(STATIC_4279), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957) :|: i957 < i960 f4279_0_main_Load(EOS(STATIC_4279), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957) -> f4283_0_main_ArrayLength(EOS(STATIC_4283), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, java.lang.Object(ARRAY(i960))) :|: TRUE f4283_0_main_ArrayLength(EOS(STATIC_4283), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, java.lang.Object(ARRAY(i960))) -> f4285_0_main_Load(EOS(STATIC_4285), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960) :|: i960 >= 0 f4285_0_main_Load(EOS(STATIC_4285), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960) -> f4287_0_main_Load(EOS(STATIC_4287), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960))) :|: TRUE f4287_0_main_Load(EOS(STATIC_4287), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960))) -> f4290_0_main_ArrayAccess(EOS(STATIC_4290), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960)), i957) :|: TRUE f4290_0_main_ArrayAccess(EOS(STATIC_4290), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960)), i957) -> f4291_0_main_ArrayAccess(EOS(STATIC_4291), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960)), i957) :|: TRUE f4291_0_main_ArrayAccess(EOS(STATIC_4291), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(ARRAY(i960)), i957) -> f4293_0_main_InvokeMethod(EOS(STATIC_4293), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, o377) :|: i957 < i960 f4293_0_main_InvokeMethod(EOS(STATIC_4293), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o379sub)) -> f4299_0_main_InvokeMethod(EOS(STATIC_4299), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o379sub)) :|: TRUE f4299_0_main_InvokeMethod(EOS(STATIC_4299), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) -> f4303_0_main_InvokeMethod(EOS(STATIC_4303), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) :|: TRUE f4303_0_main_InvokeMethod(EOS(STATIC_4303), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) -> f4310_0_length_Load(EOS(STATIC_4310), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) :|: TRUE f4310_0_length_Load(EOS(STATIC_4310), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) -> f4313_0_length_FieldAccess(EOS(STATIC_4313), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(o380sub)) :|: TRUE f4313_0_length_FieldAccess(EOS(STATIC_4313), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(java.lang.String(EOC, i968))) -> f4319_0_length_FieldAccess(EOS(STATIC_4319), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(java.lang.String(EOC, i968))) :|: i968 >= 0 f4319_0_length_FieldAccess(EOS(STATIC_4319), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, java.lang.Object(java.lang.String(EOC, i968))) -> f4325_0_length_Return(EOS(STATIC_4325), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) :|: TRUE f4325_0_length_Return(EOS(STATIC_4325), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) -> f4327_0_main_InvokeMethod(EOS(STATIC_4327), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) :|: TRUE f4327_0_main_InvokeMethod(EOS(STATIC_4327), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) -> f4330_0_power_Load(EOS(STATIC_4330), i960, i968, i960, i968) :|: i960 >= 1 && i957 < i960 f4327_0_main_InvokeMethod(EOS(STATIC_4327), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) -> f4330_1_power_Load(EOS(STATIC_4330), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i960, i968) :|: i960 >= 1 && i957 < i960 f4330_0_power_Load(EOS(STATIC_4330), i960, i968, i960, i968) -> f5112_0_power_Load(EOS(STATIC_5112), i960, i968, i960, i968) :|: TRUE f4379_0_power_Return(EOS(STATIC_4379), java.lang.Object(ARRAY(i977)), java.lang.Object(ARRAY(i977)), i957, matching1) -> f4389_0_main_InvokeMethod(EOS(STATIC_4389), java.lang.Object(ARRAY(i977)), java.lang.Object(ARRAY(i977)), i957, 1) :|: TRUE && matching1 = 1 f4389_0_main_InvokeMethod(EOS(STATIC_4389), java.lang.Object(ARRAY(i977)), java.lang.Object(ARRAY(i977)), i957, matching1) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i977)), java.lang.Object(ARRAY(i977)), i957, 1) :|: TRUE && matching1 = 1 f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4458_0_even_Load(EOS(STATIC_4458), i984, i984) :|: i984 >= 1 && i986 >= 1 && i986 > i957 f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4458_1_even_Load(EOS(STATIC_4458), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) :|: i984 >= 1 && i986 >= 1 && i986 > i957 f4458_0_even_Load(EOS(STATIC_4458), i984, i984) -> f5140_0_even_Load(EOS(STATIC_5140), i984, i984) :|: TRUE f4517_0_even_Return(EOS(STATIC_4517), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, matching1) -> f4543_0_main_StackPop(EOS(STATIC_4543), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, 0) :|: TRUE && matching1 = 0 f4543_0_main_StackPop(EOS(STATIC_4543), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, matching1) -> f4570_0_main_StackPop(EOS(STATIC_4570), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, 0) :|: TRUE && matching1 = 0 f4570_0_main_StackPop(EOS(STATIC_4570), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1023) -> f4578_0_main_Load(EOS(STATIC_4578), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957) :|: TRUE f4578_0_main_Load(EOS(STATIC_4578), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957) -> f4581_0_main_ArrayLength(EOS(STATIC_4581), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, java.lang.Object(ARRAY(i986))) :|: TRUE f4581_0_main_ArrayLength(EOS(STATIC_4581), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, java.lang.Object(ARRAY(i986))) -> f4585_0_main_Load(EOS(STATIC_4585), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986) :|: i986 >= 0 f4585_0_main_Load(EOS(STATIC_4585), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986) -> f4592_0_main_Load(EOS(STATIC_4592), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986))) :|: TRUE f4592_0_main_Load(EOS(STATIC_4592), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986))) -> f4596_0_main_ArrayAccess(EOS(STATIC_4596), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986)), i957) :|: TRUE f4596_0_main_ArrayAccess(EOS(STATIC_4596), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986)), i957) -> f4600_0_main_ArrayAccess(EOS(STATIC_4600), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986)), i957) :|: TRUE f4600_0_main_ArrayAccess(EOS(STATIC_4600), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(ARRAY(i986)), i957) -> f4604_0_main_InvokeMethod(EOS(STATIC_4604), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, o394) :|: i957 < i986 f4604_0_main_InvokeMethod(EOS(STATIC_4604), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o396sub)) -> f4611_0_main_InvokeMethod(EOS(STATIC_4611), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o396sub)) :|: TRUE f4611_0_main_InvokeMethod(EOS(STATIC_4611), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) -> f4615_0_main_InvokeMethod(EOS(STATIC_4615), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) :|: TRUE f4615_0_main_InvokeMethod(EOS(STATIC_4615), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) -> f4624_0_length_Load(EOS(STATIC_4624), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) :|: TRUE f4624_0_length_Load(EOS(STATIC_4624), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) -> f4627_0_length_FieldAccess(EOS(STATIC_4627), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(o397sub)) :|: TRUE f4627_0_length_FieldAccess(EOS(STATIC_4627), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(java.lang.String(EOC, i1037))) -> f4630_0_length_FieldAccess(EOS(STATIC_4630), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(java.lang.String(EOC, i1037))) :|: i1037 >= 0 f4630_0_length_FieldAccess(EOS(STATIC_4630), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, java.lang.Object(java.lang.String(EOC, i1037))) -> f4632_0_length_Return(EOS(STATIC_4632), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) :|: TRUE f4632_0_length_Return(EOS(STATIC_4632), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) -> f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) :|: TRUE f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) -> f4637_0_power_Load(EOS(STATIC_4637), i986, i1037, i986, i1037) :|: i986 >= 1 && i986 > i957 f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) -> f4637_1_power_Load(EOS(STATIC_4637), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i986, i1037) :|: i986 >= 1 && i986 > i957 f4637_0_power_Load(EOS(STATIC_4637), i986, i1037, i986, i1037) -> f5192_0_power_Load(EOS(STATIC_5192), i986, i1037, i986, i1037) :|: TRUE f4727_0_power_Return(EOS(STATIC_4727), java.lang.Object(ARRAY(i1046)), java.lang.Object(ARRAY(i1046)), i957, matching1) -> f4734_0_main_InvokeMethod(EOS(STATIC_4734), java.lang.Object(ARRAY(i1046)), java.lang.Object(ARRAY(i1046)), i957, 1) :|: TRUE && matching1 = 1 f4734_0_main_InvokeMethod(EOS(STATIC_4734), java.lang.Object(ARRAY(i1046)), java.lang.Object(ARRAY(i1046)), i957, matching1) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1046)), java.lang.Object(ARRAY(i1046)), i957, 1) :|: TRUE && matching1 = 1 f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) -> f4753_0_odd_Load(EOS(STATIC_4753), i1052, i1052) :|: i1052 >= 1 && i1056 >= 1 && i1056 > i957 f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) -> f4753_1_odd_Load(EOS(STATIC_4753), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) :|: i1052 >= 1 && i1056 >= 1 && i1056 > i957 f4753_0_odd_Load(EOS(STATIC_4753), i1052, i1052) -> f5220_0_odd_Load(EOS(STATIC_5220), i1052, i1052) :|: TRUE f4814_0_odd_Return(EOS(STATIC_4814), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, matching1) -> f4840_0_main_StackPop(EOS(STATIC_4840), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, 1) :|: TRUE && matching1 = 1 f4840_0_main_StackPop(EOS(STATIC_4840), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, matching1) -> f4841_0_main_StackPop(EOS(STATIC_4841), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, 1) :|: TRUE && matching1 = 1 f4841_0_main_StackPop(EOS(STATIC_4841), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1102) -> f4844_0_main_Inc(EOS(STATIC_4844), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957) :|: TRUE f4844_0_main_Inc(EOS(STATIC_4844), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957) -> f4847_0_main_JMP(EOS(STATIC_4847), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957 + 1) :|: TRUE f4847_0_main_JMP(EOS(STATIC_4847), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i1106) -> f4850_0_main_Load(EOS(STATIC_4850), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i1106) :|: TRUE f4850_0_main_Load(EOS(STATIC_4850), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i1106) -> f4244_0_main_Load(EOS(STATIC_4244), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i1106) :|: TRUE f4244_0_main_Load(EOS(STATIC_4244), java.lang.Object(o374sub), java.lang.Object(o374sub), i957) -> f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(o374sub), java.lang.Object(o374sub), i957, i957) :|: TRUE f4815_0_odd_Return(EOS(STATIC_4815), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, matching1) -> f4837_0_odd_Return(EOS(STATIC_4837), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, 0) :|: TRUE && matching1 = 0 f4837_0_odd_Return(EOS(STATIC_4837), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1102) -> f4841_0_main_StackPop(EOS(STATIC_4841), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1102) :|: TRUE f4836_0_odd_Return(EOS(STATIC_4836), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1097) -> f4837_0_odd_Return(EOS(STATIC_4837), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1097) :|: TRUE f4728_0_power_Return(EOS(STATIC_4728), java.lang.Object(ARRAY(i1049)), java.lang.Object(ARRAY(i1049)), i957, i1049) -> f4738_0_main_InvokeMethod(EOS(STATIC_4738), java.lang.Object(ARRAY(i1049)), java.lang.Object(ARRAY(i1049)), i957, i1049) :|: TRUE f4738_0_main_InvokeMethod(EOS(STATIC_4738), java.lang.Object(ARRAY(i1049)), java.lang.Object(ARRAY(i1049)), i957, i1049) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1049)), java.lang.Object(ARRAY(i1049)), i957, i1049) :|: TRUE f4729_0_power_Return(EOS(STATIC_4729), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) :|: TRUE f4730_0_power_Return(EOS(STATIC_4730), java.lang.Object(ARRAY(i1073)), java.lang.Object(ARRAY(i1073)), i957, i1069) -> f4747_0_main_InvokeMethod(EOS(STATIC_4747), java.lang.Object(ARRAY(i1073)), java.lang.Object(ARRAY(i1073)), i957, i1069) :|: TRUE f4747_0_main_InvokeMethod(EOS(STATIC_4747), java.lang.Object(ARRAY(i1073)), java.lang.Object(ARRAY(i1073)), i957, i1069) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1073)), java.lang.Object(ARRAY(i1073)), i957, i1069) :|: TRUE f4518_0_even_Return(EOS(STATIC_4518), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, matching1) -> f4536_0_even_Return(EOS(STATIC_4536), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, 1) :|: TRUE && matching1 = 1 f4536_0_even_Return(EOS(STATIC_4536), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1023) -> f4570_0_main_StackPop(EOS(STATIC_4570), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1023) :|: TRUE f4535_0_even_Return(EOS(STATIC_4535), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1019) -> f4536_0_even_Return(EOS(STATIC_4536), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1019) :|: TRUE f4380_0_power_Return(EOS(STATIC_4380), java.lang.Object(ARRAY(i981)), java.lang.Object(ARRAY(i981)), i957, i981) -> f4393_0_main_InvokeMethod(EOS(STATIC_4393), java.lang.Object(ARRAY(i981)), java.lang.Object(ARRAY(i981)), i957, i981) :|: TRUE f4393_0_main_InvokeMethod(EOS(STATIC_4393), java.lang.Object(ARRAY(i981)), java.lang.Object(ARRAY(i981)), i957, i981) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i981)), java.lang.Object(ARRAY(i981)), i957, i981) :|: TRUE f4381_0_power_Return(EOS(STATIC_4381), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) :|: TRUE f4382_0_power_Return(EOS(STATIC_4382), java.lang.Object(ARRAY(i994)), java.lang.Object(ARRAY(i994)), i957, i991) -> f4451_0_main_InvokeMethod(EOS(STATIC_4451), java.lang.Object(ARRAY(i994)), java.lang.Object(ARRAY(i994)), i957, i991) :|: TRUE f4451_0_main_InvokeMethod(EOS(STATIC_4451), java.lang.Object(ARRAY(i994)), java.lang.Object(ARRAY(i994)), i957, i991) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i994)), java.lang.Object(ARRAY(i994)), i957, i991) :|: TRUE f4330_1_power_Load(EOS(STATIC_4330), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i977, i968) -> f4379_0_power_Return(EOS(STATIC_4379), java.lang.Object(ARRAY(i977)), java.lang.Object(ARRAY(i977)), i957, 1) :|: TRUE f4330_1_power_Load(EOS(STATIC_4330), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i981, i968) -> f4380_0_power_Return(EOS(STATIC_4380), java.lang.Object(ARRAY(i981)), java.lang.Object(ARRAY(i981)), i957, i981) :|: TRUE f4330_1_power_Load(EOS(STATIC_4330), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i986, i968) -> f4381_0_power_Return(EOS(STATIC_4381), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) :|: TRUE f4330_1_power_Load(EOS(STATIC_4330), java.lang.Object(ARRAY(i960)), java.lang.Object(ARRAY(i960)), i957, i994, i968) -> f4382_0_power_Return(EOS(STATIC_4382), java.lang.Object(ARRAY(i994)), java.lang.Object(ARRAY(i994)), i957, i991) :|: TRUE f4458_1_even_Load(EOS(STATIC_4458), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4517_0_even_Return(EOS(STATIC_4517), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, 0) :|: TRUE f4458_1_even_Load(EOS(STATIC_4458), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4518_0_even_Return(EOS(STATIC_4518), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, 1) :|: TRUE f4458_1_even_Load(EOS(STATIC_4458), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i984) -> f4535_0_even_Return(EOS(STATIC_4535), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1019) :|: TRUE f4637_1_power_Load(EOS(STATIC_4637), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1046, i1037) -> f4727_0_power_Return(EOS(STATIC_4727), java.lang.Object(ARRAY(i1046)), java.lang.Object(ARRAY(i1046)), i957, 1) :|: TRUE f4637_1_power_Load(EOS(STATIC_4637), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1049, i1037) -> f4728_0_power_Return(EOS(STATIC_4728), java.lang.Object(ARRAY(i1049)), java.lang.Object(ARRAY(i1049)), i957, i1049) :|: TRUE f4637_1_power_Load(EOS(STATIC_4637), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1056, i1037) -> f4729_0_power_Return(EOS(STATIC_4729), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) :|: TRUE f4637_1_power_Load(EOS(STATIC_4637), java.lang.Object(ARRAY(i986)), java.lang.Object(ARRAY(i986)), i957, i1073, i1037) -> f4730_0_power_Return(EOS(STATIC_4730), java.lang.Object(ARRAY(i1073)), java.lang.Object(ARRAY(i1073)), i957, i1069) :|: TRUE f4753_1_odd_Load(EOS(STATIC_4753), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, matching1) -> f4814_0_odd_Return(EOS(STATIC_4814), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, 1) :|: TRUE && matching1 = 1 f4753_1_odd_Load(EOS(STATIC_4753), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) -> f4815_0_odd_Return(EOS(STATIC_4815), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, 0) :|: TRUE f4753_1_odd_Load(EOS(STATIC_4753), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1052) -> f4836_0_odd_Return(EOS(STATIC_4836), java.lang.Object(ARRAY(i1056)), java.lang.Object(ARRAY(i1056)), i957, i1097) :|: TRUE Combined rules. Obtained 13 IRulesP rules: f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056:0)), java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0) -> f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i1056:0)), java.lang.Object(ARRAY(i1056:0)), i957:0 + 1, i957:0 + 1) :|: i1056:0 > 0 && i957:0 < i1056:0 && i1052:0 > 0 f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i957:0) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i984:0) :|: i960:0 > 0 && i960:0 > i957:0 && i968:0 > -1 f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i1037:0) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0) :|: i986:0 > 0 && i986:0 > i957:0 f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i957:0) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i960:0) :|: i960:0 > 0 && i960:0 > i957:0 && i968:0 > -1 f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i1037:0) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, 1) :|: i986:0 > 0 && i986:0 > i957:0 f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i957:0) -> f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, 1) :|: i960:0 > 0 && i960:0 > i957:0 && i968:0 > -1 f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i984:0) -> f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i1037:0) :|: i986:0 > 0 && i986:0 > i957:0 && i1037:0 > -1 && i984:0 > 0 f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i1037:0) -> f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i1052:0) :|: i986:0 > 0 && i986:0 > i957:0 f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056:0)), java.lang.Object(ARRAY(i1056:0)), i957:0, 1) -> f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i1056:0)), java.lang.Object(ARRAY(i1056:0)), i957:0 + 1, i957:0 + 1) :|: i957:0 < i1056:0 && i1056:0 > 0 Removed following non-SCC rules: f4634_0_main_InvokeMethod(EOS(STATIC_4634), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i1037:0) -> f5192_0_power_Load(EOS(STATIC_5192), i986:0, i1037:0, i986:0, i1037:0) :|: i986:0 > 0 && i986:0 > i957:0 f4438_0_main_InvokeMethod(EOS(STATIC_4438), java.lang.Object(ARRAY(i986:0)), java.lang.Object(ARRAY(i986:0)), i957:0, i984:0) -> f5140_0_even_Load(EOS(STATIC_5140), i984:0, i984:0) :|: i986:0 > 0 && i986:0 > i957:0 && i984:0 > 0 f4746_0_main_InvokeMethod(EOS(STATIC_4746), java.lang.Object(ARRAY(i1056:0)), java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0) -> f5220_0_odd_Load(EOS(STATIC_5220), i1052:0, i1052:0) :|: i1056:0 > 0 && i957:0 < i1056:0 && i1052:0 > 0 f4250_0_main_Load(EOS(STATIC_4250), java.lang.Object(ARRAY(i960:0)), java.lang.Object(ARRAY(i960:0)), i957:0, i957:0) -> f5112_0_power_Load(EOS(STATIC_5112), i960:0, i968:0, i960:0, i968:0) :|: i960:0 > 0 && i960:0 > i957:0 && i968:0 > -1 Filtered constant ground arguments: f4746_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f4746_0_main_InvokeMethod(x2, x3, x4, x5) f4250_0_main_Load(x1, x2, x3, x4, x5) -> f4250_0_main_Load(x2, x3, x4, x5) f4438_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f4438_0_main_InvokeMethod(x2, x3, x4, x5) f4634_0_main_InvokeMethod(x1, x2, x3, x4, x5, x6) -> f4634_0_main_InvokeMethod(x2, x3, x4, x5, x6) Filtered duplicate arguments: f4746_0_main_InvokeMethod(x1, x2, x3, x4) -> f4746_0_main_InvokeMethod(x2, x3, x4) f4250_0_main_Load(x1, x2, x3, x4) -> f4250_0_main_Load(x2, x4) f4438_0_main_InvokeMethod(x1, x2, x3, x4) -> f4438_0_main_InvokeMethod(x2, x3, x4) f4634_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f4634_0_main_InvokeMethod(x2, x3, x4, x5) Filtered unneeded arguments: f4634_0_main_InvokeMethod(x1, x2, x3, x4) -> f4634_0_main_InvokeMethod(x1, x2, x3) Finished conversion. Obtained 9 rules.P rules: f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), i957:0 + 1, i1056:0) :|: i957:0 < i1056:0 && i1052:0 > 0 && i1056:0 > 0 f4250_0_main_Load(java.lang.Object(ARRAY(i960:0)), i957:0, i960:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(i960:0)), i957:0, i984:0, i960:0) :|: i960:0 > i957:0 && i968:0 > -1 && i960:0 > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i986:0) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i986:0) :|: i986:0 > 0 && i986:0 > i957:0 f4250_0_main_Load(java.lang.Object(ARRAY(i960:0)), i957:0, i960:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(i960:0)), i957:0, i960:0, i960:0) :|: i960:0 > i957:0 && i968:0 > -1 && i960:0 > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i986:0) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, 1, i986:0) :|: i986:0 > 0 && i986:0 > i957:0 f4250_0_main_Load(java.lang.Object(ARRAY(i960:0)), i957:0, i960:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(i960:0)), i957:0, 1, i960:0) :|: i960:0 > i957:0 && i968:0 > -1 && i960:0 > 0 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i984:0, i986:0) -> f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i986:0) :|: i986:0 > i957:0 && i986:0 > 0 && i984:0 > 0 && i1037:0 > -1 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i986:0, i986:0) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i986:0)), i957:0, i1052:0, i986:0) :|: i986:0 > 0 && i986:0 > i957:0 f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, cons_1, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), i957:0 + 1, i1056:0) :|: i957:0 < i1056:0 && i1056:0 > 0 && cons_1 = 1 ---------------------------------------- (37) Obligation: Rules: f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), i957:0 + 1, i1056:0) :|: i957:0 < i1056:0 && i1052:0 > 0 && i1056:0 > 0 f4250_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x2, x) :|: x > x1 && x3 > -1 && x > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) :|: x4 > 0 && x4 > x5 f4250_0_main_Load(java.lang.Object(ARRAY(x6)), x7, x6) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x6)), x7, x6, x6) :|: x6 > x7 && x8 > -1 && x6 > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, x9, x9) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, 1, x9) :|: x9 > 0 && x9 > x10 f4250_0_main_Load(java.lang.Object(ARRAY(x11)), x12, x11) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x11)), x12, 1, x11) :|: x11 > x12 && x13 > -1 && x11 > 0 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x16, x14) -> f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x14, x14) :|: x14 > x15 && x14 > 0 && x16 > 0 && x17 > -1 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x18, x18) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x20, x18) :|: x18 > 0 && x18 > x19 f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x21)), x22, x23, x21) -> f4250_0_main_Load(java.lang.Object(ARRAY(x21)), x22 + 1, x21) :|: x22 < x21 && x21 > 0 && x23 = 1 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), arith, i1056:0) :|: i957:0 < i1056:0 && i1052:0 > 0 && i1056:0 > 0 && arith = i957:0 + 1 f4250_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x2, x) :|: x > x1 && x3 > -1 && x > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) :|: x4 > 0 && x4 > x5 f4250_0_main_Load(java.lang.Object(ARRAY(x6)), x7, x6) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x6)), x7, x6, x6) :|: x6 > x7 && x8 > -1 && x6 > 0 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, x9, x9) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, 1, x9) :|: x9 > 0 && x9 > x10 f4250_0_main_Load(java.lang.Object(ARRAY(x11)), x12, x11) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x11)), x12, 1, x11) :|: x11 > x12 && x13 > -1 && x11 > 0 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x16, x14) -> f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x14, x14) :|: x14 > x15 && x14 > 0 && x16 > 0 && x17 > -1 f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x18, x18) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x20, x18) :|: x18 > 0 && x18 > x19 f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x24)), x25, x26, x24) -> f4250_0_main_Load(java.lang.Object(ARRAY(x24)), x27, x24) :|: x25 < x24 && x24 > 0 && x26 = 1 && x27 = x25 + 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), arith, i1056:0) :|: i957:0 < i1056:0 && i1052:0 > 0 && i1056:0 > 0 && arith = i957:0 + 1 (2) f4250_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x2, x) :|: x > x1 && x3 > -1 && x > 0 (3) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) :|: x4 > 0 && x4 > x5 (4) f4250_0_main_Load(java.lang.Object(ARRAY(x6)), x7, x6) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x6)), x7, x6, x6) :|: x6 > x7 && x8 > -1 && x6 > 0 (5) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, x9, x9) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, 1, x9) :|: x9 > 0 && x9 > x10 (6) f4250_0_main_Load(java.lang.Object(ARRAY(x11)), x12, x11) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x11)), x12, 1, x11) :|: x11 > x12 && x13 > -1 && x11 > 0 (7) f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x16, x14) -> f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x14, x14) :|: x14 > x15 && x14 > 0 && x16 > 0 && x17 > -1 (8) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x18, x18) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x20, x18) :|: x18 > 0 && x18 > x19 (9) f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x24)), x25, x26, x24) -> f4250_0_main_Load(java.lang.Object(ARRAY(x24)), x27, x24) :|: x25 < x24 && x24 > 0 && x26 = 1 && x27 = x25 + 1 Arcs: (1) -> (2), (4), (6) (2) -> (7) (3) -> (1), (9) (4) -> (7) (5) -> (1), (9) (6) -> (7) (7) -> (3), (5), (8) (8) -> (1), (9) (9) -> (2), (4), (6) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0)), i957:0, i1052:0, i1056:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0)), arith, i1056:0) :|: i957:0 < i1056:0 && i1052:0 > 0 && i1056:0 > 0 && arith = i957:0 + 1 (2) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x4, x4) :|: x4 > 0 && x4 > x5 (3) f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x16, x14) -> f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x14)), x15, x14, x14) :|: x14 > x15 && x14 > 0 && x16 > 0 && x17 > -1 (4) f4250_0_main_Load(java.lang.Object(ARRAY(x11)), x12, x11) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x11)), x12, 1, x11) :|: x11 > x12 && x13 > -1 && x11 > 0 (5) f4250_0_main_Load(java.lang.Object(ARRAY(x6)), x7, x6) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x6)), x7, x6, x6) :|: x6 > x7 && x8 > -1 && x6 > 0 (6) f4250_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x2, x) :|: x > x1 && x3 > -1 && x > 0 (7) f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x24)), x25, x26, x24) -> f4250_0_main_Load(java.lang.Object(ARRAY(x24)), x27, x24) :|: x25 < x24 && x24 > 0 && x26 = 1 && x27 = x25 + 1 (8) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x18, x18) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x18)), x19, x20, x18) :|: x18 > 0 && x18 > x19 (9) f4634_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, x9, x9) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x9)), x10, 1, x9) :|: x9 > 0 && x9 > x10 Arcs: (1) -> (4), (5), (6) (2) -> (1), (7) (3) -> (2), (8), (9) (4) -> (3) (5) -> (3) (6) -> (3) (7) -> (4), (5), (6) (8) -> (1), (7) (9) -> (1), (7) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f4250_0_main_Load(java.lang.Object(ARRAY(x11:0)), x12:0, x11:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x11:0)), x12:0, 1, x11:0) :|: x12:0 < x11:0 && x13:0 > -1 && x11:0 > 0 f4250_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x:0)), x1:0, x2:0, x:0) :|: x:0 > x1:0 && x3:0 > -1 && x:0 > 0 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x14:0)), x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x14:0)), x15:0, 1, x14:0) :|: x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0 f4250_0_main_Load(java.lang.Object(ARRAY(x6:0)), x7:0, x6:0) -> f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x6:0)), x7:0, x6:0, x6:0) :|: x7:0 < x6:0 && x8:0 > -1 && x6:0 > 0 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x2, x) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x)), x1, x, x) :|: x3 > -1 && x2 > 0 && x > 0 && x1 < x f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x24:0)), x25:0, cons_1, x24:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(x24:0)), x25:0 + 1, x24:0) :|: x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1 f4438_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x6, x4) -> f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(x4)), x5, x7, x4) :|: x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4 f4746_0_main_InvokeMethod(java.lang.Object(ARRAY(i1056:0:0)), i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(java.lang.Object(ARRAY(i1056:0:0)), i957:0:0 + 1, i1056:0:0) :|: i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4250_0_main_Load(VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) f4438_0_main_InvokeMethod(VARIABLE, INTEGER, VARIABLE, INTEGER) f4746_0_main_InvokeMethod(VARIABLE, INTEGER, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f4250_0_main_Load(c, x12:0, x11:0) -> f4438_0_main_InvokeMethod(c1, x12:0, c2, x11:0) :|: c2 = 1 && (c1 = 0 && c = 0) && (x12:0 < x11:0 && x13:0 > -1 && x11:0 > 0) f4250_0_main_Load(c3, x1:0, x:0) -> f4438_0_main_InvokeMethod(c4, x1:0, x2:0, x:0) :|: c4 = 0 && c3 = 0 && (x:0 > x1:0 && x3:0 > -1 && x:0 > 0) f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4250_0_main_Load(c8, x7:0, x6:0) -> f4438_0_main_InvokeMethod(c9, x7:0, x6:0, x6:0) :|: c9 = 0 && c8 = 0 && (x7:0 < x6:0 && x8:0 > -1 && x6:0 > 0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4746_0_main_InvokeMethod(c12, x25:0, c13, x24:0) -> f4250_0_main_Load(c14, c15, x24:0) :|: c15 = x25:0 + 1 && (c14 = 0 && (c13 = 1 && c12 = 0)) && (x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) f4746_0_main_InvokeMethod(c18, i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(c19, c20, i1056:0:0) :|: c20 = i957:0:0 + 1 && (c19 = 0 && c18 = 0) && (i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0) ---------------------------------------- (46) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4250_0_main_Load(x, x1, x2)] = 1 + c*x - x1 + x2 [f4438_0_main_InvokeMethod(x3, x4, x5, x6)] = c3*x3 - x4 + x6 [f4746_0_main_InvokeMethod(x7, x8, x9, x10)] = x10 + c7*x7 - x8 The following rules are decreasing: f4250_0_main_Load(c, x12:0, x11:0) -> f4438_0_main_InvokeMethod(c1, x12:0, c2, x11:0) :|: c2 = 1 && (c1 = 0 && c = 0) && (x12:0 < x11:0 && x13:0 > -1 && x11:0 > 0) f4250_0_main_Load(c3, x1:0, x:0) -> f4438_0_main_InvokeMethod(c4, x1:0, x2:0, x:0) :|: c4 = 0 && c3 = 0 && (x:0 > x1:0 && x3:0 > -1 && x:0 > 0) f4250_0_main_Load(c8, x7:0, x6:0) -> f4438_0_main_InvokeMethod(c9, x7:0, x6:0, x6:0) :|: c9 = 0 && c8 = 0 && (x7:0 < x6:0 && x8:0 > -1 && x6:0 > 0) The following rules are bounded: f4250_0_main_Load(c, x12:0, x11:0) -> f4438_0_main_InvokeMethod(c1, x12:0, c2, x11:0) :|: c2 = 1 && (c1 = 0 && c = 0) && (x12:0 < x11:0 && x13:0 > -1 && x11:0 > 0) f4250_0_main_Load(c3, x1:0, x:0) -> f4438_0_main_InvokeMethod(c4, x1:0, x2:0, x:0) :|: c4 = 0 && c3 = 0 && (x:0 > x1:0 && x3:0 > -1 && x:0 > 0) f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4250_0_main_Load(c8, x7:0, x6:0) -> f4438_0_main_InvokeMethod(c9, x7:0, x6:0, x6:0) :|: c9 = 0 && c8 = 0 && (x7:0 < x6:0 && x8:0 > -1 && x6:0 > 0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4746_0_main_InvokeMethod(c12, x25:0, c13, x24:0) -> f4250_0_main_Load(c14, c15, x24:0) :|: c15 = x25:0 + 1 && (c14 = 0 && (c13 = 1 && c12 = 0)) && (x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) f4746_0_main_InvokeMethod(c18, i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(c19, c20, i1056:0:0) :|: c20 = i957:0:0 + 1 && (c19 = 0 && c18 = 0) && (i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0) ---------------------------------------- (47) Obligation: Rules: f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4746_0_main_InvokeMethod(c12, x25:0, c13, x24:0) -> f4250_0_main_Load(c14, c15, x24:0) :|: c15 = x25:0 + 1 && (c14 = 0 && (c13 = 1 && c12 = 0)) && (x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) f4746_0_main_InvokeMethod(c18, i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(c19, c20, i1056:0:0) :|: c20 = i957:0:0 + 1 && (c19 = 0 && c18 = 0) && (i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0) ---------------------------------------- (48) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4438_0_main_InvokeMethod(x, x1, x2, x3)] = 1 + c*x [f4746_0_main_InvokeMethod(x4, x5, x6, x7)] = 1 + c4*x4 [f4250_0_main_Load(x8, x9, x10)] = c8*x8 The following rules are decreasing: f4746_0_main_InvokeMethod(c12, x25:0, c13, x24:0) -> f4250_0_main_Load(c14, c15, x24:0) :|: c15 = x25:0 + 1 && (c14 = 0 && (c13 = 1 && c12 = 0)) && (x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1) f4746_0_main_InvokeMethod(c18, i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(c19, c20, i1056:0:0) :|: c20 = i957:0:0 + 1 && (c19 = 0 && c18 = 0) && (i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0) The following rules are bounded: f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4746_0_main_InvokeMethod(c12, x25:0, c13, x24:0) -> f4250_0_main_Load(c14, c15, x24:0) :|: c15 = x25:0 + 1 && (c14 = 0 && (c13 = 1 && c12 = 0)) && (x25:0 < x24:0 && x24:0 > 0 && cons_1 = 1) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) f4746_0_main_InvokeMethod(c18, i957:0:0, i1052:0:0, i1056:0:0) -> f4250_0_main_Load(c19, c20, i1056:0:0) :|: c20 = i957:0:0 + 1 && (c19 = 0 && c18 = 0) && (i957:0:0 < i1056:0:0 && i1052:0:0 > 0 && i1056:0:0 > 0) ---------------------------------------- (49) Obligation: Rules: f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) ---------------------------------------- (50) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4438_0_main_InvokeMethod ] = f4438_0_main_InvokeMethod_4 [ f4746_0_main_InvokeMethod ] = 0 The following rules are decreasing: f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) The following rules are bounded: f4438_0_main_InvokeMethod(c5, x15:0, x16:0, x14:0) -> f4746_0_main_InvokeMethod(c6, x15:0, c7, x14:0) :|: c7 = 1 && (c6 = 0 && c5 = 0) && (x17:0 > -1 && x16:0 > 0 && x14:0 > 0 && x15:0 < x14:0) f4438_0_main_InvokeMethod(c10, x1, x2, x) -> f4746_0_main_InvokeMethod(c11, x1, x, x) :|: c11 = 0 && c10 = 0 && (x3 > -1 && x2 > 0 && x > 0 && x1 < x) f4438_0_main_InvokeMethod(c16, x5, x6, x4) -> f4746_0_main_InvokeMethod(c17, x5, x7, x4) :|: c17 = 0 && c16 = 0 && (x8 > -1 && x6 > 0 && x4 > 0 && x5 < x4) ---------------------------------------- (51) YES