/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, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 989 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 6 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 11 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 13 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 12 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 1 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 1 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 17 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 23 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 12 ms] (32) YES (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 81 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 17 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 18 ms] (43) IntTRS (44) RankingReductionPairProof [EQUIVALENT, 0 ms] (45) YES (46) JBCTerminationSCC (47) SCCToIRSProof [SOUND, 75 ms] (48) IRSwT (49) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (50) IRSwT (51) IRSwTTerminationDigraphProof [EQUIVALENT, 54 ms] (52) IRSwT (53) IntTRSCompressionProof [EQUIVALENT, 0 ms] (54) IRSwT (55) TempFilterProof [SOUND, 9 ms] (56) IntTRS (57) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (58) YES (59) JBCTerminationSCC (60) SCCToIRSProof [SOUND, 88 ms] (61) IRSwT (62) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (63) IRSwT (64) IRSwTTerminationDigraphProof [EQUIVALENT, 77 ms] (65) IRSwT (66) IntTRSCompressionProof [EQUIVALENT, 0 ms] (67) IRSwT (68) TempFilterProof [SOUND, 9 ms] (69) IntTRS (70) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (71) YES (72) JBCTerminationSCC (73) SCCToIRSProof [SOUND, 123 ms] (74) IRSwT (75) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (76) IRSwT (77) IRSwTTerminationDigraphProof [EQUIVALENT, 329 ms] (78) IRSwT (79) IntTRSCompressionProof [EQUIVALENT, 0 ms] (80) IRSwT (81) TempFilterProof [SOUND, 106 ms] (82) IntTRS (83) RankingReductionPairProof [EQUIVALENT, 36 ms] (84) IntTRS (85) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (86) IntTRS (87) RankingReductionPairProof [EQUIVALENT, 0 ms] (88) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class TaylorSeriesIte { public static int power(int a, int b) { int p = 1; for (int i = 1; i <= b; i++) p *= a; return p; } public static int fact(int n) { int p = 1; for (int i = 1; i <= n; i++) p *= i; return p; } public static int sin(int x, int n) { int s = x; for (int i = 3; i <= n; i += 2) s += power(-1, i/2) * power(x, i) / fact(i); return s; } public static int cos(int x, int n) { int s = 1; for (int i = 2; i <= n; i += 2) s += power(-1, i/2) * power(x, i) / fact(i); return s; } public static int exp(int x, int n) { int s = 0; for (int i = 0; i <= n; i++) s += power(x, i) / fact(i); return s; } public static void main(String args[]) { for (int i = 0; i < args.length; i++) if (i % 2 == 0) sin(args.length, i); else if (i % 3 == 0) cos(args.length, i); else if (i % 5 == 0) exp(args.length, i); else for (int j = 0; j < 100; j++); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class TaylorSeriesIte { public static int power(int a, int b) { int p = 1; for (int i = 1; i <= b; i++) p *= a; return p; } public static int fact(int n) { int p = 1; for (int i = 1; i <= n; i++) p *= i; return p; } public static int sin(int x, int n) { int s = x; for (int i = 3; i <= n; i += 2) s += power(-1, i/2) * power(x, i) / fact(i); return s; } public static int cos(int x, int n) { int s = 1; for (int i = 2; i <= n; i += 2) s += power(-1, i/2) * power(x, i) / fact(i); return s; } public static int exp(int x, int n) { int s = 0; for (int i = 0; i <= n; i++) s += power(x, i) / fact(i); return s; } public static void main(String args[]) { for (int i = 0; i < args.length; i++) if (i % 2 == 0) sin(args.length, i); else if (i % 3 == 0) cos(args.length, i); else if (i % 5 == 0) exp(args.length, i); else for (int j = 0; j < 100; j++); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: TaylorSeriesIte.main([Ljava/lang/String;)V: Graph of 82 nodes with 1 SCC. TaylorSeriesIte.sin(II)I: Graph of 42 nodes with 1 SCC. TaylorSeriesIte.cos(II)I: Graph of 42 nodes with 1 SCC. TaylorSeriesIte.exp(II)I: Graph of 35 nodes with 1 SCC. TaylorSeriesIte.power(II)I: Graph of 22 nodes with 1 SCC. TaylorSeriesIte.fact(I)I: Graph of 22 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 6 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.fact(I)I SCC calls the following helper methods: 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 11 IRulesP rules: f6328_0_fact_Load(EOS(STATIC_6328), i1040, i1042, i1042) -> f6332_0_fact_GT(EOS(STATIC_6332), i1040, i1042, i1042, i1040) :|: TRUE f6332_0_fact_GT(EOS(STATIC_6332), i1040, i1042, i1042, i1040) -> f6337_0_fact_GT(EOS(STATIC_6337), i1040, i1042, i1042, i1040) :|: i1042 <= i1040 f6337_0_fact_GT(EOS(STATIC_6337), i1040, i1042, i1042, i1040) -> f6342_0_fact_Load(EOS(STATIC_6342), i1040, i1042) :|: i1042 <= i1040 f6342_0_fact_Load(EOS(STATIC_6342), i1040, i1042) -> f6346_0_fact_Load(EOS(STATIC_6346), i1040, i1042) :|: TRUE f6346_0_fact_Load(EOS(STATIC_6346), i1040, i1042) -> f6348_0_fact_IntArithmetic(EOS(STATIC_6348), i1040, i1042, i1042) :|: TRUE f6348_0_fact_IntArithmetic(EOS(STATIC_6348), i1040, i1042, i1042) -> f6349_0_fact_Store(EOS(STATIC_6349), i1040, i1042) :|: i1042 >= 1 f6349_0_fact_Store(EOS(STATIC_6349), i1040, i1042) -> f6351_0_fact_Inc(EOS(STATIC_6351), i1040, i1042) :|: TRUE f6351_0_fact_Inc(EOS(STATIC_6351), i1040, i1042) -> f6354_0_fact_JMP(EOS(STATIC_6354), i1040, i1042 + 1) :|: TRUE f6354_0_fact_JMP(EOS(STATIC_6354), i1040, i1083) -> f6357_0_fact_Load(EOS(STATIC_6357), i1040, i1083) :|: TRUE f6357_0_fact_Load(EOS(STATIC_6357), i1040, i1083) -> f6324_0_fact_Load(EOS(STATIC_6324), i1040, i1083) :|: TRUE f6324_0_fact_Load(EOS(STATIC_6324), i1040, i1042) -> f6328_0_fact_Load(EOS(STATIC_6328), i1040, i1042, i1042) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f6328_0_fact_Load(EOS(STATIC_6328), i1040:0, i1042:0, i1042:0) -> f6328_0_fact_Load(EOS(STATIC_6328), i1040:0, i1042:0 + 1, i1042:0 + 1) :|: i1042:0 <= i1040:0 && i1042:0 > 0 Filtered constant ground arguments: f6328_0_fact_Load(x1, x2, x3, x4) -> f6328_0_fact_Load(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f6328_0_fact_Load(x1, x2, x3) -> f6328_0_fact_Load(x1, x3) Finished conversion. Obtained 1 rules.P rules: f6328_0_fact_Load(i1040:0, i1042:0) -> f6328_0_fact_Load(i1040:0, i1042:0 + 1) :|: i1042:0 <= i1040:0 && i1042:0 > 0 ---------------------------------------- (9) Obligation: Rules: f6328_0_fact_Load(i1040:0, i1042:0) -> f6328_0_fact_Load(i1040:0, i1042:0 + 1) :|: i1042:0 <= i1040:0 && i1042:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f6328_0_fact_Load(i1040:0, i1042:0) -> f6328_0_fact_Load(i1040:0, arith) :|: i1042:0 <= i1040:0 && i1042:0 > 0 && arith = i1042:0 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6328_0_fact_Load(i1040:0, i1042:0) -> f6328_0_fact_Load(i1040:0, arith) :|: i1042:0 <= i1040:0 && i1042:0 > 0 && arith = i1042:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f6328_0_fact_Load(i1040:0, i1042:0) -> f6328_0_fact_Load(i1040:0, arith) :|: i1042:0 <= i1040:0 && i1042:0 > 0 && arith = i1042:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f6328_0_fact_Load(i1040:0:0, i1042:0:0) -> f6328_0_fact_Load(i1040:0:0, i1042:0:0 + 1) :|: i1042:0:0 <= i1040:0:0 && i1042:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6328_0_fact_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f6328_0_fact_Load(i1040:0:0, i1042:0:0) -> f6328_0_fact_Load(i1040:0:0, c) :|: c = i1042:0:0 + 1 && (i1042:0:0 <= i1040:0:0 && i1042:0:0 > 0) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6328_0_fact_Load(x, x1)] = x - x1 The following rules are decreasing: f6328_0_fact_Load(i1040:0:0, i1042:0:0) -> f6328_0_fact_Load(i1040:0:0, c) :|: c = i1042:0:0 + 1 && (i1042:0:0 <= i1040:0:0 && i1042:0:0 > 0) The following rules are bounded: f6328_0_fact_Load(i1040:0:0, i1042:0:0) -> f6328_0_fact_Load(i1040:0:0, c) :|: c = i1042:0:0 + 1 && (i1042:0:0 <= i1040:0:0 && i1042:0:0 > 0) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.power(II)I SCC calls the following helper methods: 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 11 IRulesP rules: f6236_0_power_Load(EOS(STATIC_6236), i915, i917, i917) -> f6242_0_power_GT(EOS(STATIC_6242), i915, i917, i917, i915) :|: TRUE f6242_0_power_GT(EOS(STATIC_6242), i915, i917, i917, i915) -> f6250_0_power_GT(EOS(STATIC_6250), i915, i917, i917, i915) :|: i917 <= i915 f6250_0_power_GT(EOS(STATIC_6250), i915, i917, i917, i915) -> f6256_0_power_Load(EOS(STATIC_6256), i915, i917) :|: i917 <= i915 f6256_0_power_Load(EOS(STATIC_6256), i915, i917) -> f6262_0_power_Load(EOS(STATIC_6262), i915, i917) :|: TRUE f6262_0_power_Load(EOS(STATIC_6262), i915, i917) -> f6269_0_power_IntArithmetic(EOS(STATIC_6269), i915, i917) :|: TRUE f6269_0_power_IntArithmetic(EOS(STATIC_6269), i915, i917) -> f6276_0_power_Store(EOS(STATIC_6276), i915, i917) :|: TRUE f6276_0_power_Store(EOS(STATIC_6276), i915, i917) -> f6283_0_power_Inc(EOS(STATIC_6283), i915, i917) :|: TRUE f6283_0_power_Inc(EOS(STATIC_6283), i915, i917) -> f6290_0_power_JMP(EOS(STATIC_6290), i915, i917 + 1) :|: TRUE f6290_0_power_JMP(EOS(STATIC_6290), i915, i982) -> f6294_0_power_Load(EOS(STATIC_6294), i915, i982) :|: TRUE f6294_0_power_Load(EOS(STATIC_6294), i915, i982) -> f6231_0_power_Load(EOS(STATIC_6231), i915, i982) :|: TRUE f6231_0_power_Load(EOS(STATIC_6231), i915, i917) -> f6236_0_power_Load(EOS(STATIC_6236), i915, i917, i917) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f6236_0_power_Load(EOS(STATIC_6236), i915:0, i917:0, i917:0) -> f6236_0_power_Load(EOS(STATIC_6236), i915:0, i917:0 + 1, i917:0 + 1) :|: i917:0 <= i915:0 Filtered constant ground arguments: f6236_0_power_Load(x1, x2, x3, x4) -> f6236_0_power_Load(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f6236_0_power_Load(x1, x2, x3) -> f6236_0_power_Load(x1, x3) Finished conversion. Obtained 1 rules.P rules: f6236_0_power_Load(i915:0, i917:0) -> f6236_0_power_Load(i915:0, i917:0 + 1) :|: i917:0 <= i915:0 ---------------------------------------- (22) Obligation: Rules: f6236_0_power_Load(i915:0, i917:0) -> f6236_0_power_Load(i915:0, i917:0 + 1) :|: i917:0 <= i915:0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f6236_0_power_Load(i915:0, i917:0) -> f6236_0_power_Load(i915:0, arith) :|: i917:0 <= i915:0 && arith = i917:0 + 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6236_0_power_Load(i915:0, i917:0) -> f6236_0_power_Load(i915:0, arith) :|: i917:0 <= i915:0 && arith = i917:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f6236_0_power_Load(i915:0, i917:0) -> f6236_0_power_Load(i915:0, arith) :|: i917:0 <= i915:0 && arith = i917:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f6236_0_power_Load(i915:0:0, i917:0:0) -> f6236_0_power_Load(i915:0:0, i917:0:0 + 1) :|: i917:0:0 <= i915:0:0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6236_0_power_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f6236_0_power_Load(i915:0:0, i917:0:0) -> f6236_0_power_Load(i915:0:0, c) :|: c = i917:0:0 + 1 && i917:0:0 <= i915:0:0 ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6236_0_power_Load(x, x1)] = x - x1 The following rules are decreasing: f6236_0_power_Load(i915:0:0, i917:0:0) -> f6236_0_power_Load(i915:0:0, c) :|: c = i917:0:0 + 1 && i917:0:0 <= i915:0:0 The following rules are bounded: f6236_0_power_Load(i915:0:0, i917:0:0) -> f6236_0_power_Load(i915:0:0, c) :|: c = i917:0:0 + 1 && i917:0:0 <= i915:0:0 ---------------------------------------- (32) YES ---------------------------------------- (33) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.exp(II)I SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (34) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 26 IRulesP rules: f6088_0_exp_Load(EOS(STATIC_6088), i702, i67, i702, i67, i704, i704) -> f6089_0_exp_GT(EOS(STATIC_6089), i702, i67, i702, i67, i704, i704, i67) :|: TRUE f6089_0_exp_GT(EOS(STATIC_6089), i702, i67, i702, i67, i704, i704, i67) -> f6092_0_exp_GT(EOS(STATIC_6092), i702, i67, i702, i67, i704, i704, i67) :|: i704 <= i67 f6092_0_exp_GT(EOS(STATIC_6092), i702, i67, i702, i67, i704, i704, i67) -> f6095_0_exp_Load(EOS(STATIC_6095), i702, i67, i702, i67, i704) :|: i704 <= i67 f6095_0_exp_Load(EOS(STATIC_6095), i702, i67, i702, i67, i704) -> f6098_0_exp_Load(EOS(STATIC_6098), i702, i67, i702, i67, i704) :|: TRUE f6098_0_exp_Load(EOS(STATIC_6098), i702, i67, i702, i67, i704) -> f6101_0_exp_Load(EOS(STATIC_6101), i702, i67, i702, i67, i704, i702) :|: TRUE f6101_0_exp_Load(EOS(STATIC_6101), i702, i67, i702, i67, i704, i702) -> f6103_0_exp_InvokeMethod(EOS(STATIC_6103), i702, i67, i702, i67, i704, i702, i704) :|: TRUE f6103_0_exp_InvokeMethod(EOS(STATIC_6103), i702, i67, i702, i67, i704, i702, i704) -> f6106_0_power_ConstantStackPush(EOS(STATIC_6106), i702, i704, i702, i704) :|: i702 >= 1 && i67 < i702 && i704 <= i67 f6103_0_exp_InvokeMethod(EOS(STATIC_6103), i702, i67, i702, i67, i704, i702, i704) -> f6106_1_power_ConstantStackPush(EOS(STATIC_6106), i702, i67, i702, i67, i704, i702, i704) :|: i702 >= 1 && i67 < i702 && i704 <= i67 f6106_0_power_ConstantStackPush(EOS(STATIC_6106), i702, i704, i702, i704) -> f6511_0_power_ConstantStackPush(EOS(STATIC_6511), i702, i704, i702, i704) :|: TRUE f6282_0_power_Return(EOS(STATIC_6282), i966, i67, i966, i67, i968, i964) -> f6163_0_power_Return(EOS(STATIC_6163), i966, i67, i966, i67, i968, i964) :|: TRUE f6163_0_power_Return(EOS(STATIC_6163), i826, i67, i826, i67, i827, i825) -> f6168_0_exp_Load(EOS(STATIC_6168), i826, i67, i826, i67, i827, i825) :|: TRUE f6168_0_exp_Load(EOS(STATIC_6168), i826, i67, i826, i67, i827, i825) -> f6173_0_exp_InvokeMethod(EOS(STATIC_6173), i826, i67, i826, i67, i827, i825, i827) :|: TRUE f6173_0_exp_InvokeMethod(EOS(STATIC_6173), i826, i67, i826, i67, i827, i825, i827) -> f6179_0_fact_ConstantStackPush(EOS(STATIC_6179), i827, i827) :|: i826 >= 1 && i826 > i67 && i827 <= i67 f6173_0_exp_InvokeMethod(EOS(STATIC_6173), i826, i67, i826, i67, i827, i825, i827) -> f6179_1_fact_ConstantStackPush(EOS(STATIC_6179), i826, i67, i826, i67, i827, i825, i827) :|: i826 >= 1 && i826 > i67 && i827 <= i67 f6179_0_fact_ConstantStackPush(EOS(STATIC_6179), i827, i827) -> f6529_0_fact_ConstantStackPush(EOS(STATIC_6529), i827, i827) :|: TRUE f6350_0_fact_Return(EOS(STATIC_6350), i826, i67, i826, i67, i1055, i825, i1053) -> f6316_0_fact_Return(EOS(STATIC_6316), i826, i67, i826, i67, i1055, i825, i1053) :|: TRUE f6316_0_fact_Return(EOS(STATIC_6316), i826, i67, i826, i67, i1014, i825, i1013) -> f6318_0_exp_IntArithmetic(EOS(STATIC_6318), i826, i67, i826, i67, i1014, i825, i1013) :|: TRUE f6318_0_exp_IntArithmetic(EOS(STATIC_6318), i826, i67, i826, i67, i1014, i825, i1013) -> f6322_0_exp_IntArithmetic(EOS(STATIC_6322), i826, i67, i826, i67, i1014) :|: i1038 = i825 / i1013 && i1013 >= 1 f6322_0_exp_IntArithmetic(EOS(STATIC_6322), i826, i67, i826, i67, i1014) -> f6327_0_exp_Store(EOS(STATIC_6327), i826, i67, i826, i67, i1014) :|: TRUE f6327_0_exp_Store(EOS(STATIC_6327), i826, i67, i826, i67, i1014) -> f6331_0_exp_Inc(EOS(STATIC_6331), i826, i67, i826, i67, i1014) :|: TRUE f6331_0_exp_Inc(EOS(STATIC_6331), i826, i67, i826, i67, i1014) -> f6335_0_exp_JMP(EOS(STATIC_6335), i826, i67, i826, i67, i1014 + 1) :|: TRUE f6335_0_exp_JMP(EOS(STATIC_6335), i826, i67, i826, i67, i1048) -> f6340_0_exp_Load(EOS(STATIC_6340), i826, i67, i826, i67, i1048) :|: TRUE f6340_0_exp_Load(EOS(STATIC_6340), i826, i67, i826, i67, i1048) -> f6087_0_exp_Load(EOS(STATIC_6087), i826, i67, i826, i67, i1048) :|: TRUE f6087_0_exp_Load(EOS(STATIC_6087), i702, i67, i702, i67, i704) -> f6088_0_exp_Load(EOS(STATIC_6088), i702, i67, i702, i67, i704, i704) :|: TRUE f6106_1_power_ConstantStackPush(EOS(STATIC_6106), i966, i67, i966, i67, i968, i966, i968) -> f6282_0_power_Return(EOS(STATIC_6282), i966, i67, i966, i67, i968, i964) :|: TRUE f6179_1_fact_ConstantStackPush(EOS(STATIC_6179), i826, i67, i826, i67, i1055, i825, i1055) -> f6350_0_fact_Return(EOS(STATIC_6350), i826, i67, i826, i67, i1055, i825, i1053) :|: TRUE Combined rules. Obtained 4 IRulesP rules: f6350_0_fact_Return(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i1053:0 > 0 && i67:0 >= i1055:0 + 1 && i826:0 > i67:0 && i826:0 > 0 f6350_0_fact_Return'(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0 + 1, i964:0, i1053:1) :|: i1053:0 > 0 && i67:0 >= i1055:0 + 1 && i826:0 > i67:0 && i826:0 > 0 && i825:0 - i1053:0 * div < i1053:0 && i825:0 - i1053:0 * div + i1053:0 > 0 Removed following non-SCC rules: f6350_0_fact_Return'(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6511_0_power_ConstantStackPush(EOS(STATIC_6511), i826:0, i1055:0 + 1, i826:0, i1055:0 + 1) :|: i1053:0 > 0 && i67:0 >= i1055:0 + 1 && i826:0 > i67:0 && i826:0 > 0 && i825:0 - i1053:0 * div < i1053:0 && i825:0 - i1053:0 * div + i1053:0 > 0 f6350_0_fact_Return'(EOS(STATIC_6350), i826:0, i67:0, i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6529_0_fact_ConstantStackPush(EOS(STATIC_6529), i1055:0 + 1, i1055:0 + 1) :|: i1053:0 > 0 && i67:0 >= i1055:0 + 1 && i826:0 > i67:0 && i826:0 > 0 && i825:0 - i1053:0 * div < i1053:0 && i825:0 - i1053:0 * div + i1053:0 > 0 Filtered constant ground arguments: f6350_0_fact_Return(x1, x2, x3, x4, x5, x6, x7, x8) -> f6350_0_fact_Return(x2, x3, x4, x5, x6, x7, x8) f6350_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7, x8) -> f6350_0_fact_Return'(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Filtered duplicate arguments: f6350_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6350_0_fact_Return(x3, x4, x5, x6, x7) f6350_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6350_0_fact_Return'(x3, x4, x5, x6, x7) Finished conversion. Obtained 2 rules.P rules: f6350_0_fact_Return(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > 0 && i826:0 > i67:0 f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return(i826:0, i67:0, i1055:0 + 1, i964:0, i1053:1) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > i67:0 && i826:0 > 0 && i825:0 - i1053:0 * div + i1053:0 > 0 && i825:0 - i1053:0 * div < i1053:0 ---------------------------------------- (35) Obligation: Rules: f6350_0_fact_Return(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > 0 && i826:0 > i67:0 f6350_0_fact_Return'(x, x1, x2, x3, x4) -> f6350_0_fact_Return(x, x1, x2 + 1, x5, x6) :|: x1 >= x2 + 1 && x4 > 0 && x > x1 && x > 0 && x3 - x4 * x7 + x4 > 0 && x3 - x4 * x7 < x4 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f6350_0_fact_Return(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > 0 && i826:0 > i67:0 f6350_0_fact_Return'(x, x1, x2, x3, x4) -> f6350_0_fact_Return(x, x1, arith, x5, x6) :|: x1 >= x2 + 1 && x4 > 0 && x > x1 && x > 0 && x3 - x4 * x7 + x4 > 0 && x3 - x4 * x7 < x4 && arith = x2 + 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6350_0_fact_Return(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > 0 && i826:0 > i67:0 (2) f6350_0_fact_Return'(x, x1, x2, x3, x4) -> f6350_0_fact_Return(x, x1, arith, x5, x6) :|: x1 >= x2 + 1 && x4 > 0 && x > x1 && x > 0 && x3 - x4 * x7 + x4 > 0 && x3 - x4 * x7 < x4 && arith = x2 + 1 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f6350_0_fact_Return(i826:0, i67:0, i1055:0, i825:0, i1053:0) -> f6350_0_fact_Return'(i826:0, i67:0, i1055:0, i825:0, i1053:0) :|: i67:0 >= i1055:0 + 1 && i1053:0 > 0 && i826:0 > 0 && i826:0 > i67:0 (2) f6350_0_fact_Return'(x, x1, x2, x3, x4) -> f6350_0_fact_Return(x, x1, arith, x5, x6) :|: x1 >= x2 + 1 && x4 > 0 && x > x1 && x > 0 && x3 - x4 * x7 + x4 > 0 && x3 - x4 * x7 < x4 && arith = x2 + 1 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f6350_0_fact_Return(i826:0:0, i67:0:0, i1055:0:0, i825:0:0, i1053:0:0) -> f6350_0_fact_Return(i826:0:0, i67:0:0, i1055:0:0 + 1, x5:0, x6:0) :|: i825:0:0 - i1053:0:0 * x7:0 < i1053:0:0 && i825:0:0 - i1053:0:0 * x7:0 + i1053:0:0 > 0 && i826:0:0 > 0 && i826:0:0 > i67:0:0 && i1053:0:0 > 0 && i67:0:0 >= i1055:0:0 + 1 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6350_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f6350_0_fact_Return(i826:0:0, i67:0:0, i1055:0:0, i825:0:0, i1053:0:0) -> f6350_0_fact_Return(i826:0:0, i67:0:0, c, x5:0, x6:0) :|: c = i1055:0:0 + 1 && (i825:0:0 - i1053:0:0 * x7:0 < i1053:0:0 && i825:0:0 - i1053:0:0 * x7:0 + i1053:0:0 > 0 && i826:0:0 > 0 && i826:0:0 > i67:0:0 && i1053:0:0 > 0 && i67:0:0 >= i1055:0:0 + 1) ---------------------------------------- (44) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6350_0_fact_Return ] = -1*f6350_0_fact_Return_3 + f6350_0_fact_Return_2 The following rules are decreasing: f6350_0_fact_Return(i826:0:0, i67:0:0, i1055:0:0, i825:0:0, i1053:0:0) -> f6350_0_fact_Return(i826:0:0, i67:0:0, c, x5:0, x6:0) :|: c = i1055:0:0 + 1 && (i825:0:0 - i1053:0:0 * x7:0 < i1053:0:0 && i825:0:0 - i1053:0:0 * x7:0 + i1053:0:0 > 0 && i826:0:0 > 0 && i826:0:0 > i67:0:0 && i1053:0:0 > 0 && i67:0:0 >= i1055:0:0 + 1) The following rules are bounded: f6350_0_fact_Return(i826:0:0, i67:0:0, i1055:0:0, i825:0:0, i1053:0:0) -> f6350_0_fact_Return(i826:0:0, i67:0:0, c, x5:0, x6:0) :|: c = i1055:0:0 + 1 && (i825:0:0 - i1053:0:0 * x7:0 < i1053:0:0 && i825:0:0 - i1053:0:0 * x7:0 + i1053:0:0 > 0 && i826:0:0 > 0 && i826:0:0 > i67:0:0 && i1053:0:0 > 0 && i67:0:0 >= i1055:0:0 + 1) ---------------------------------------- (45) YES ---------------------------------------- (46) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.cos(II)I SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (47) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 34 IRulesP rules: f6383_0_cos_Load(EOS(STATIC_6383), i1126, i1127, i1126, i1127, i1129, i1129) -> f6385_0_cos_GT(EOS(STATIC_6385), i1126, i1127, i1126, i1127, i1129, i1129, i1127) :|: TRUE f6385_0_cos_GT(EOS(STATIC_6385), i1126, i1127, i1126, i1127, i1129, i1129, i1127) -> f6389_0_cos_GT(EOS(STATIC_6389), i1126, i1127, i1126, i1127, i1129, i1129, i1127) :|: i1129 <= i1127 f6389_0_cos_GT(EOS(STATIC_6389), i1126, i1127, i1126, i1127, i1129, i1129, i1127) -> f6393_0_cos_Load(EOS(STATIC_6393), i1126, i1127, i1126, i1127, i1129) :|: i1129 <= i1127 f6393_0_cos_Load(EOS(STATIC_6393), i1126, i1127, i1126, i1127, i1129) -> f6397_0_cos_ConstantStackPush(EOS(STATIC_6397), i1126, i1127, i1126, i1127, i1129) :|: TRUE f6397_0_cos_ConstantStackPush(EOS(STATIC_6397), i1126, i1127, i1126, i1127, i1129) -> f6401_0_cos_Load(EOS(STATIC_6401), i1126, i1127, i1126, i1127, i1129, -1) :|: TRUE f6401_0_cos_Load(EOS(STATIC_6401), i1126, i1127, i1126, i1127, i1129, matching1) -> f6403_0_cos_ConstantStackPush(EOS(STATIC_6403), i1126, i1127, i1126, i1127, i1129, -1, i1129) :|: TRUE && matching1 = -1 f6403_0_cos_ConstantStackPush(EOS(STATIC_6403), i1126, i1127, i1126, i1127, i1129, matching1, i1129) -> f6407_0_cos_IntArithmetic(EOS(STATIC_6407), i1126, i1127, i1126, i1127, i1129, -1, i1129, 2) :|: TRUE && matching1 = -1 f6407_0_cos_IntArithmetic(EOS(STATIC_6407), i1126, i1127, i1126, i1127, i1129, matching1, i1129, matching2) -> f6409_0_cos_InvokeMethod(EOS(STATIC_6409), i1126, i1127, i1126, i1127, i1129, -1, i1158) :|: i1158 = i1129 / 2 && i1129 > 1 && i1158 < i1129 && matching1 = -1 && matching2 = 2 f6409_0_cos_InvokeMethod(EOS(STATIC_6409), i1126, i1127, i1126, i1127, i1129, matching1, i1158) -> f6411_0_power_ConstantStackPush(EOS(STATIC_6411), -1, i1158, -1, i1158) :|: i1126 >= 1 && i1127 > 1 && i1158 >= 1 && i1129 > 1 && i1127 < i1126 && i1129 <= i1127 && matching1 = -1 f6409_0_cos_InvokeMethod(EOS(STATIC_6409), i1126, i1127, i1126, i1127, i1129, matching1, i1158) -> f6411_1_power_ConstantStackPush(EOS(STATIC_6411), i1126, i1127, i1126, i1127, i1129, -1, i1158) :|: i1126 >= 1 && i1127 > 1 && i1158 >= 1 && i1129 > 1 && i1127 < i1126 && i1129 <= i1127 && matching1 = -1 f6411_0_power_ConstantStackPush(EOS(STATIC_6411), matching1, i1158, matching2, i1158) -> f6663_0_power_ConstantStackPush(EOS(STATIC_6663), -1, i1158, -1, i1158) :|: TRUE && matching1 = -1 && matching2 = -1 f6415_0_power_Return(EOS(STATIC_6415), i1126, i1127, i1126, i1127, i1129, i1176) -> f6417_0_cos_Load(EOS(STATIC_6417), i1126, i1127, i1126, i1127, i1129, i1176) :|: TRUE f6417_0_cos_Load(EOS(STATIC_6417), i1126, i1127, i1126, i1127, i1129, i1176) -> f6419_0_cos_Load(EOS(STATIC_6419), i1126, i1127, i1126, i1127, i1129, i1176, i1126) :|: TRUE f6419_0_cos_Load(EOS(STATIC_6419), i1126, i1127, i1126, i1127, i1129, i1176, i1126) -> f6421_0_cos_InvokeMethod(EOS(STATIC_6421), i1126, i1127, i1126, i1127, i1129, i1176, i1126, i1129) :|: TRUE f6421_0_cos_InvokeMethod(EOS(STATIC_6421), i1126, i1127, i1126, i1127, i1129, i1176, i1126, i1129) -> f6423_0_power_ConstantStackPush(EOS(STATIC_6423), i1126, i1129, i1126, i1129) :|: i1126 >= 1 && i1127 > 1 && i1129 > 1 && i1127 < i1126 && i1129 <= i1127 f6421_0_cos_InvokeMethod(EOS(STATIC_6421), i1126, i1127, i1126, i1127, i1129, i1176, i1126, i1129) -> f6423_1_power_ConstantStackPush(EOS(STATIC_6423), i1126, i1127, i1126, i1127, i1129, i1176, i1126, i1129) :|: i1126 >= 1 && i1127 > 1 && i1129 > 1 && i1127 < i1126 && i1129 <= i1127 f6423_0_power_ConstantStackPush(EOS(STATIC_6423), i1126, i1129, i1126, i1129) -> f6681_0_power_ConstantStackPush(EOS(STATIC_6681), i1126, i1129, i1126, i1129) :|: TRUE f6427_0_power_Return(EOS(STATIC_6427), i1200, i1127, i1200, i1127, i1202, i1176, i1198) -> f6429_0_cos_IntArithmetic(EOS(STATIC_6429), i1200, i1127, i1200, i1127, i1202, i1176, i1198) :|: TRUE f6429_0_cos_IntArithmetic(EOS(STATIC_6429), i1200, i1127, i1200, i1127, i1202, i1176, i1198) -> f6431_0_cos_Load(EOS(STATIC_6431), i1200, i1127, i1200, i1127, i1202) :|: TRUE f6431_0_cos_Load(EOS(STATIC_6431), i1200, i1127, i1200, i1127, i1202) -> f6433_0_cos_InvokeMethod(EOS(STATIC_6433), i1200, i1127, i1200, i1127, i1202, i1202) :|: TRUE f6433_0_cos_InvokeMethod(EOS(STATIC_6433), i1200, i1127, i1200, i1127, i1202, i1202) -> f6435_0_fact_ConstantStackPush(EOS(STATIC_6435), i1202, i1202) :|: i1200 >= 1 && i1127 > 1 && i1202 > 1 && i1127 < i1200 && i1202 <= i1127 f6433_0_cos_InvokeMethod(EOS(STATIC_6433), i1200, i1127, i1200, i1127, i1202, i1202) -> f6435_1_fact_ConstantStackPush(EOS(STATIC_6435), i1200, i1127, i1200, i1127, i1202, i1202) :|: i1200 >= 1 && i1127 > 1 && i1202 > 1 && i1127 < i1200 && i1202 <= i1127 f6435_0_fact_ConstantStackPush(EOS(STATIC_6435), i1202, i1202) -> f6699_0_fact_ConstantStackPush(EOS(STATIC_6699), i1202, i1202) :|: TRUE f6439_0_fact_Return(EOS(STATIC_6439), i1200, i1127, i1200, i1127, i1218, i1216) -> f6441_0_cos_IntArithmetic(EOS(STATIC_6441), i1200, i1127, i1200, i1127, i1218, i1216) :|: TRUE f6441_0_cos_IntArithmetic(EOS(STATIC_6441), i1200, i1127, i1200, i1127, i1218, i1216) -> f6443_0_cos_IntArithmetic(EOS(STATIC_6443), i1200, i1127, i1200, i1127, i1218) :|: i1220 = i1204 / i1216 && i1216 >= 1 f6443_0_cos_IntArithmetic(EOS(STATIC_6443), i1200, i1127, i1200, i1127, i1218) -> f6445_0_cos_Store(EOS(STATIC_6445), i1200, i1127, i1200, i1127, i1218) :|: TRUE f6445_0_cos_Store(EOS(STATIC_6445), i1200, i1127, i1200, i1127, i1218) -> f6447_0_cos_Inc(EOS(STATIC_6447), i1200, i1127, i1200, i1127, i1218) :|: TRUE f6447_0_cos_Inc(EOS(STATIC_6447), i1200, i1127, i1200, i1127, i1218) -> f6449_0_cos_JMP(EOS(STATIC_6449), i1200, i1127, i1200, i1127, i1218 + 2) :|: TRUE f6449_0_cos_JMP(EOS(STATIC_6449), i1200, i1127, i1200, i1127, i1224) -> f6451_0_cos_Load(EOS(STATIC_6451), i1200, i1127, i1200, i1127, i1224) :|: TRUE f6451_0_cos_Load(EOS(STATIC_6451), i1200, i1127, i1200, i1127, i1224) -> f6381_0_cos_Load(EOS(STATIC_6381), i1200, i1127, i1200, i1127, i1224) :|: TRUE f6381_0_cos_Load(EOS(STATIC_6381), i1126, i1127, i1126, i1127, i1129) -> f6383_0_cos_Load(EOS(STATIC_6383), i1126, i1127, i1126, i1127, i1129, i1129) :|: TRUE f6411_1_power_ConstantStackPush(EOS(STATIC_6411), i1126, i1127, i1126, i1127, i1129, matching1, i1158) -> f6415_0_power_Return(EOS(STATIC_6415), i1126, i1127, i1126, i1127, i1129, i1176) :|: TRUE && matching1 = -1 f6423_1_power_ConstantStackPush(EOS(STATIC_6423), i1200, i1127, i1200, i1127, i1202, i1176, i1200, i1202) -> f6427_0_power_Return(EOS(STATIC_6427), i1200, i1127, i1200, i1127, i1202, i1176, i1198) :|: TRUE f6435_1_fact_ConstantStackPush(EOS(STATIC_6435), i1200, i1127, i1200, i1127, i1218, i1218) -> f6439_0_fact_Return(EOS(STATIC_6439), i1200, i1127, i1200, i1127, i1218, i1216) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f6439_0_fact_Return(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) -> f6439_0_fact_Return'(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) :|: i1218:0 + 2 <= i1127:0 && i1127:0 > 1 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 f6439_0_fact_Return'(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) -> f6439_0_fact_Return(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0 + 2, i1216:1) :|: i1218:0 + 2 <= i1127:0 && i1127:0 > 1 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 && i1204:0 - i1216:0 * div + i1216:0 > 0 && i1216:0 > i1204:0 - i1216:0 * div && i1218:0 + 2 - 2 * div1 < 2 && i1218:0 + 2 - 2 * div1 > -2 Removed following non-SCC rules: f6439_0_fact_Return'(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) -> f6699_0_fact_ConstantStackPush(EOS(STATIC_6699), i1218:0 + 2, i1218:0 + 2) :|: i1218:0 + 2 <= i1127:0 && i1127:0 > 1 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 && i1204:0 - i1216:0 * div + i1216:0 > 0 && i1216:0 > i1204:0 - i1216:0 * div && i1218:0 + 2 - 2 * div1 < 2 && i1218:0 + 2 - 2 * div1 > -2 f6439_0_fact_Return'(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) -> f6681_0_power_ConstantStackPush(EOS(STATIC_6681), i1200:0, i1218:0 + 2, i1200:0, i1218:0 + 2) :|: i1218:0 + 2 <= i1127:0 && i1127:0 > 1 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 && i1204:0 - i1216:0 * div + i1216:0 > 0 && i1216:0 > i1204:0 - i1216:0 * div && i1218:0 + 2 - 2 * div1 < 2 && i1218:0 + 2 - 2 * div1 > -2 f6439_0_fact_Return'(EOS(STATIC_6439), i1200:0, i1127:0, i1200:0, i1127:0, i1218:0, i1216:0) -> f6663_0_power_ConstantStackPush(EOS(STATIC_6663), -1, div1, -1, div1) :|: i1218:0 + 2 <= i1127:0 && i1127:0 > 1 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 && i1204:0 - i1216:0 * div + i1216:0 > 0 && i1216:0 > i1204:0 - i1216:0 * div && i1218:0 + 2 - 2 * div1 < 2 && i1218:0 + 2 - 2 * div1 > -2 Filtered constant ground arguments: f6439_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6439_0_fact_Return(x2, x3, x4, x5, x6, x7) f6439_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6439_0_fact_Return'(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f6439_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6439_0_fact_Return(x3, x4, x5, x6) f6439_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6439_0_fact_Return'(x3, x4, x5, x6) Finished conversion. Obtained 2 rules.P rules: f6439_0_fact_Return(i1200:0, i1127:0, i1218:0, i1216:0) -> f6439_0_fact_Return'(i1200:0, i1127:0, i1218:0, i1216:0) :|: i1127:0 > 1 && i1218:0 + 2 <= i1127:0 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1200:0 > i1127:0 && i1218:0 + 2 > div1 f6439_0_fact_Return'(i1200:0, i1127:0, i1218:0, i1216:0) -> f6439_0_fact_Return(i1200:0, i1127:0, i1218:0 + 2, i1216:1) :|: i1127:0 > 1 && i1218:0 + 2 <= i1127:0 && i1200:0 > 0 && i1216:0 > 0 && div1 > 0 && i1218:0 > -1 && i1218:0 + 2 > div1 && i1200:0 > i1127:0 && i1204:0 - i1216:0 * div + i1216:0 > 0 && i1216:0 > i1204:0 - i1216:0 * div && i1218:0 + 2 - 2 * div1 > -2 && i1218:0 + 2 - 2 * div1 < 2 ---------------------------------------- (48) Obligation: Rules: f6439_0_fact_Return(x, x1, x2, x3) -> f6439_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 f6439_0_fact_Return'(x5, x6, x7, x8) -> f6439_0_fact_Return(x5, x6, x7 + 2, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 ---------------------------------------- (49) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (50) Obligation: Rules: f6439_0_fact_Return(x, x1, x2, x3) -> f6439_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 f6439_0_fact_Return'(x5, x6, x7, x8) -> f6439_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 ---------------------------------------- (51) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6439_0_fact_Return(x, x1, x2, x3) -> f6439_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 (2) f6439_0_fact_Return'(x5, x6, x7, x8) -> f6439_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (52) Obligation: Termination digraph: Nodes: (1) f6439_0_fact_Return(x, x1, x2, x3) -> f6439_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 (2) f6439_0_fact_Return'(x5, x6, x7, x8) -> f6439_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (53) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (54) Obligation: Rules: f6439_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6439_0_fact_Return(x:0, x1:0, x2:0 + 2, x9:0) :|: x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1 ---------------------------------------- (55) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6439_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (56) Obligation: Rules: f6439_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6439_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) ---------------------------------------- (57) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6439_0_fact_Return(x, x1, x2, x3)] = -1 + x1 - x2 The following rules are decreasing: f6439_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6439_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) The following rules are bounded: f6439_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6439_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) ---------------------------------------- (58) YES ---------------------------------------- (59) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.sin(II)I SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (60) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 34 IRulesP rules: f6382_0_sin_Load(EOS(STATIC_6382), i1112, i1113, i1112, i1113, i1115, i1115) -> f6384_0_sin_GT(EOS(STATIC_6384), i1112, i1113, i1112, i1113, i1115, i1115, i1113) :|: TRUE f6384_0_sin_GT(EOS(STATIC_6384), i1112, i1113, i1112, i1113, i1115, i1115, i1113) -> f6387_0_sin_GT(EOS(STATIC_6387), i1112, i1113, i1112, i1113, i1115, i1115, i1113) :|: i1115 <= i1113 f6387_0_sin_GT(EOS(STATIC_6387), i1112, i1113, i1112, i1113, i1115, i1115, i1113) -> f6391_0_sin_Load(EOS(STATIC_6391), i1112, i1113, i1112, i1113, i1115) :|: i1115 <= i1113 f6391_0_sin_Load(EOS(STATIC_6391), i1112, i1113, i1112, i1113, i1115) -> f6395_0_sin_ConstantStackPush(EOS(STATIC_6395), i1112, i1113, i1112, i1113, i1115) :|: TRUE f6395_0_sin_ConstantStackPush(EOS(STATIC_6395), i1112, i1113, i1112, i1113, i1115) -> f6399_0_sin_Load(EOS(STATIC_6399), i1112, i1113, i1112, i1113, i1115, -1) :|: TRUE f6399_0_sin_Load(EOS(STATIC_6399), i1112, i1113, i1112, i1113, i1115, matching1) -> f6402_0_sin_ConstantStackPush(EOS(STATIC_6402), i1112, i1113, i1112, i1113, i1115, -1, i1115) :|: TRUE && matching1 = -1 f6402_0_sin_ConstantStackPush(EOS(STATIC_6402), i1112, i1113, i1112, i1113, i1115, matching1, i1115) -> f6405_0_sin_IntArithmetic(EOS(STATIC_6405), i1112, i1113, i1112, i1113, i1115, -1, i1115, 2) :|: TRUE && matching1 = -1 f6405_0_sin_IntArithmetic(EOS(STATIC_6405), i1112, i1113, i1112, i1113, i1115, matching1, i1115, matching2) -> f6408_0_sin_InvokeMethod(EOS(STATIC_6408), i1112, i1113, i1112, i1113, i1115, -1, i1157) :|: i1157 = i1115 / 2 && i1115 > 1 && i1157 < i1115 && matching1 = -1 && matching2 = 2 f6408_0_sin_InvokeMethod(EOS(STATIC_6408), i1112, i1113, i1112, i1113, i1115, matching1, i1157) -> f6410_0_power_ConstantStackPush(EOS(STATIC_6410), -1, i1157, -1, i1157) :|: i1112 >= 1 && i1113 > 1 && i1157 >= 1 && i1115 > 1 && i1113 < i1112 && i1115 <= i1113 && matching1 = -1 f6408_0_sin_InvokeMethod(EOS(STATIC_6408), i1112, i1113, i1112, i1113, i1115, matching1, i1157) -> f6410_1_power_ConstantStackPush(EOS(STATIC_6410), i1112, i1113, i1112, i1113, i1115, -1, i1157) :|: i1112 >= 1 && i1113 > 1 && i1157 >= 1 && i1115 > 1 && i1113 < i1112 && i1115 <= i1113 && matching1 = -1 f6410_0_power_ConstantStackPush(EOS(STATIC_6410), matching1, i1157, matching2, i1157) -> f6831_0_power_ConstantStackPush(EOS(STATIC_6831), -1, i1157, -1, i1157) :|: TRUE && matching1 = -1 && matching2 = -1 f6414_0_power_Return(EOS(STATIC_6414), i1112, i1113, i1112, i1113, i1115, i1166) -> f6416_0_sin_Load(EOS(STATIC_6416), i1112, i1113, i1112, i1113, i1115, i1166) :|: TRUE f6416_0_sin_Load(EOS(STATIC_6416), i1112, i1113, i1112, i1113, i1115, i1166) -> f6418_0_sin_Load(EOS(STATIC_6418), i1112, i1113, i1112, i1113, i1115, i1166, i1112) :|: TRUE f6418_0_sin_Load(EOS(STATIC_6418), i1112, i1113, i1112, i1113, i1115, i1166, i1112) -> f6420_0_sin_InvokeMethod(EOS(STATIC_6420), i1112, i1113, i1112, i1113, i1115, i1166, i1112, i1115) :|: TRUE f6420_0_sin_InvokeMethod(EOS(STATIC_6420), i1112, i1113, i1112, i1113, i1115, i1166, i1112, i1115) -> f6422_0_power_ConstantStackPush(EOS(STATIC_6422), i1112, i1115, i1112, i1115) :|: i1112 >= 1 && i1113 > 1 && i1115 > 1 && i1113 < i1112 && i1115 <= i1113 f6420_0_sin_InvokeMethod(EOS(STATIC_6420), i1112, i1113, i1112, i1113, i1115, i1166, i1112, i1115) -> f6422_1_power_ConstantStackPush(EOS(STATIC_6422), i1112, i1113, i1112, i1113, i1115, i1166, i1112, i1115) :|: i1112 >= 1 && i1113 > 1 && i1115 > 1 && i1113 < i1112 && i1115 <= i1113 f6422_0_power_ConstantStackPush(EOS(STATIC_6422), i1112, i1115, i1112, i1115) -> f6849_0_power_ConstantStackPush(EOS(STATIC_6849), i1112, i1115, i1112, i1115) :|: TRUE f6426_0_power_Return(EOS(STATIC_6426), i1188, i1113, i1188, i1113, i1190, i1166, i1186) -> f6428_0_sin_IntArithmetic(EOS(STATIC_6428), i1188, i1113, i1188, i1113, i1190, i1166, i1186) :|: TRUE f6428_0_sin_IntArithmetic(EOS(STATIC_6428), i1188, i1113, i1188, i1113, i1190, i1166, i1186) -> f6430_0_sin_Load(EOS(STATIC_6430), i1188, i1113, i1188, i1113, i1190) :|: TRUE f6430_0_sin_Load(EOS(STATIC_6430), i1188, i1113, i1188, i1113, i1190) -> f6432_0_sin_InvokeMethod(EOS(STATIC_6432), i1188, i1113, i1188, i1113, i1190, i1190) :|: TRUE f6432_0_sin_InvokeMethod(EOS(STATIC_6432), i1188, i1113, i1188, i1113, i1190, i1190) -> f6434_0_fact_ConstantStackPush(EOS(STATIC_6434), i1190, i1190) :|: i1188 >= 1 && i1113 > 1 && i1190 > 1 && i1113 < i1188 && i1190 <= i1113 f6432_0_sin_InvokeMethod(EOS(STATIC_6432), i1188, i1113, i1188, i1113, i1190, i1190) -> f6434_1_fact_ConstantStackPush(EOS(STATIC_6434), i1188, i1113, i1188, i1113, i1190, i1190) :|: i1188 >= 1 && i1113 > 1 && i1190 > 1 && i1113 < i1188 && i1190 <= i1113 f6434_0_fact_ConstantStackPush(EOS(STATIC_6434), i1190, i1190) -> f6867_0_fact_ConstantStackPush(EOS(STATIC_6867), i1190, i1190) :|: TRUE f6438_0_fact_Return(EOS(STATIC_6438), i1188, i1113, i1188, i1113, i1211, i1209) -> f6440_0_sin_IntArithmetic(EOS(STATIC_6440), i1188, i1113, i1188, i1113, i1211, i1209) :|: TRUE f6440_0_sin_IntArithmetic(EOS(STATIC_6440), i1188, i1113, i1188, i1113, i1211, i1209) -> f6442_0_sin_IntArithmetic(EOS(STATIC_6442), i1188, i1113, i1188, i1113, i1211) :|: i1219 = i1203 / i1209 && i1209 >= 1 f6442_0_sin_IntArithmetic(EOS(STATIC_6442), i1188, i1113, i1188, i1113, i1211) -> f6444_0_sin_Store(EOS(STATIC_6444), i1188, i1113, i1188, i1113, i1211) :|: TRUE f6444_0_sin_Store(EOS(STATIC_6444), i1188, i1113, i1188, i1113, i1211) -> f6446_0_sin_Inc(EOS(STATIC_6446), i1188, i1113, i1188, i1113, i1211) :|: TRUE f6446_0_sin_Inc(EOS(STATIC_6446), i1188, i1113, i1188, i1113, i1211) -> f6448_0_sin_JMP(EOS(STATIC_6448), i1188, i1113, i1188, i1113, i1211 + 2) :|: TRUE f6448_0_sin_JMP(EOS(STATIC_6448), i1188, i1113, i1188, i1113, i1223) -> f6450_0_sin_Load(EOS(STATIC_6450), i1188, i1113, i1188, i1113, i1223) :|: TRUE f6450_0_sin_Load(EOS(STATIC_6450), i1188, i1113, i1188, i1113, i1223) -> f6379_0_sin_Load(EOS(STATIC_6379), i1188, i1113, i1188, i1113, i1223) :|: TRUE f6379_0_sin_Load(EOS(STATIC_6379), i1112, i1113, i1112, i1113, i1115) -> f6382_0_sin_Load(EOS(STATIC_6382), i1112, i1113, i1112, i1113, i1115, i1115) :|: TRUE f6410_1_power_ConstantStackPush(EOS(STATIC_6410), i1112, i1113, i1112, i1113, i1115, matching1, i1157) -> f6414_0_power_Return(EOS(STATIC_6414), i1112, i1113, i1112, i1113, i1115, i1166) :|: TRUE && matching1 = -1 f6422_1_power_ConstantStackPush(EOS(STATIC_6422), i1188, i1113, i1188, i1113, i1190, i1166, i1188, i1190) -> f6426_0_power_Return(EOS(STATIC_6426), i1188, i1113, i1188, i1113, i1190, i1166, i1186) :|: TRUE f6434_1_fact_ConstantStackPush(EOS(STATIC_6434), i1188, i1113, i1188, i1113, i1211, i1211) -> f6438_0_fact_Return(EOS(STATIC_6438), i1188, i1113, i1188, i1113, i1211, i1209) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f6438_0_fact_Return(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) -> f6438_0_fact_Return'(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) :|: i1211:0 + 2 <= i1113:0 && i1113:0 > 1 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 f6438_0_fact_Return'(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) -> f6438_0_fact_Return(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0 + 2, i1209:1) :|: i1211:0 + 2 <= i1113:0 && i1113:0 > 1 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 && i1203:0 - i1209:0 * div + i1209:0 > 0 && i1209:0 > i1203:0 - i1209:0 * div && i1211:0 + 2 - 2 * div1 < 2 && i1211:0 + 2 - 2 * div1 > -2 Removed following non-SCC rules: f6438_0_fact_Return'(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) -> f6849_0_power_ConstantStackPush(EOS(STATIC_6849), i1188:0, i1211:0 + 2, i1188:0, i1211:0 + 2) :|: i1211:0 + 2 <= i1113:0 && i1113:0 > 1 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 && i1203:0 - i1209:0 * div + i1209:0 > 0 && i1209:0 > i1203:0 - i1209:0 * div && i1211:0 + 2 - 2 * div1 < 2 && i1211:0 + 2 - 2 * div1 > -2 f6438_0_fact_Return'(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) -> f6831_0_power_ConstantStackPush(EOS(STATIC_6831), -1, div1, -1, div1) :|: i1211:0 + 2 <= i1113:0 && i1113:0 > 1 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 && i1203:0 - i1209:0 * div + i1209:0 > 0 && i1209:0 > i1203:0 - i1209:0 * div && i1211:0 + 2 - 2 * div1 < 2 && i1211:0 + 2 - 2 * div1 > -2 f6438_0_fact_Return'(EOS(STATIC_6438), i1188:0, i1113:0, i1188:0, i1113:0, i1211:0, i1209:0) -> f6867_0_fact_ConstantStackPush(EOS(STATIC_6867), i1211:0 + 2, i1211:0 + 2) :|: i1211:0 + 2 <= i1113:0 && i1113:0 > 1 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 && i1203:0 - i1209:0 * div + i1209:0 > 0 && i1209:0 > i1203:0 - i1209:0 * div && i1211:0 + 2 - 2 * div1 < 2 && i1211:0 + 2 - 2 * div1 > -2 Filtered constant ground arguments: f6438_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6438_0_fact_Return(x2, x3, x4, x5, x6, x7) f6438_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6438_0_fact_Return'(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f6438_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6438_0_fact_Return(x3, x4, x5, x6) f6438_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6438_0_fact_Return'(x3, x4, x5, x6) Finished conversion. Obtained 2 rules.P rules: f6438_0_fact_Return(i1188:0, i1113:0, i1211:0, i1209:0) -> f6438_0_fact_Return'(i1188:0, i1113:0, i1211:0, i1209:0) :|: i1113:0 > 1 && i1211:0 + 2 <= i1113:0 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1188:0 > i1113:0 && i1211:0 + 2 > div1 f6438_0_fact_Return'(i1188:0, i1113:0, i1211:0, i1209:0) -> f6438_0_fact_Return(i1188:0, i1113:0, i1211:0 + 2, i1209:1) :|: i1113:0 > 1 && i1211:0 + 2 <= i1113:0 && i1188:0 > 0 && i1209:0 > 0 && div1 > 0 && i1211:0 > -1 && i1211:0 + 2 > div1 && i1188:0 > i1113:0 && i1203:0 - i1209:0 * div + i1209:0 > 0 && i1209:0 > i1203:0 - i1209:0 * div && i1211:0 + 2 - 2 * div1 > -2 && i1211:0 + 2 - 2 * div1 < 2 ---------------------------------------- (61) Obligation: Rules: f6438_0_fact_Return(x, x1, x2, x3) -> f6438_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 f6438_0_fact_Return'(x5, x6, x7, x8) -> f6438_0_fact_Return(x5, x6, x7 + 2, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 ---------------------------------------- (62) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (63) Obligation: Rules: f6438_0_fact_Return(x, x1, x2, x3) -> f6438_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 f6438_0_fact_Return'(x5, x6, x7, x8) -> f6438_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 ---------------------------------------- (64) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6438_0_fact_Return(x, x1, x2, x3) -> f6438_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 (2) f6438_0_fact_Return'(x5, x6, x7, x8) -> f6438_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (65) Obligation: Termination digraph: Nodes: (1) f6438_0_fact_Return(x, x1, x2, x3) -> f6438_0_fact_Return'(x, x1, x2, x3) :|: x1 > 1 && x2 + 2 <= x1 && x > 0 && x3 > 0 && x4 > 0 && x2 > -1 && x > x1 && x2 + 2 > x4 (2) f6438_0_fact_Return'(x5, x6, x7, x8) -> f6438_0_fact_Return(x5, x6, arith, x9) :|: x6 > 1 && x7 + 2 <= x6 && x5 > 0 && x8 > 0 && x10 > 0 && x7 > -1 && x7 + 2 > x10 && x5 > x6 && x11 - x8 * x12 + x8 > 0 && x8 > x11 - x8 * x12 && x7 + 2 - 2 * x10 > -2 && x7 + 2 - 2 * x10 < 2 && arith = x7 + 2 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (66) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (67) Obligation: Rules: f6438_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6438_0_fact_Return(x:0, x1:0, x2:0 + 2, x9:0) :|: x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1 ---------------------------------------- (68) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6438_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (69) Obligation: Rules: f6438_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6438_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) ---------------------------------------- (70) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6438_0_fact_Return(x, x1, x2, x3)] = -1 + x1 - x2 The following rules are decreasing: f6438_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6438_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) The following rules are bounded: f6438_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6438_0_fact_Return(x:0, x1:0, c, x9:0) :|: c = x2:0 + 2 && (x4:0 < x2:0 + 2 && x2:0 + 2 - 2 * x10:0 < 2 && x2:0 + 2 - 2 * x10:0 > -2 && x4:0 > 0 && x3:0 > x11:0 - x3:0 * x12:0 && x11:0 - x3:0 * x12:0 + x3:0 > 0 && x:0 > x1:0 && x2:0 + 2 > x10:0 && x2:0 > -1 && x10:0 > 0 && x3:0 > 0 && x:0 > 0 && x2:0 + 2 <= x1:0 && x1:0 > 1) ---------------------------------------- (71) YES ---------------------------------------- (72) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: TaylorSeriesIte.main([Ljava/lang/String;)V SCC calls the following helper methods: TaylorSeriesIte.exp(II)I, TaylorSeriesIte.cos(II)I, TaylorSeriesIte.sin(II)I, TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (73) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 81 IRulesP rules: f988_0_main_Load(EOS(STATIC_988), java.lang.Object(o12sub), java.lang.Object(o12sub), i91, i91) -> f1023_0_main_ArrayLength(EOS(STATIC_1023), java.lang.Object(o12sub), java.lang.Object(o12sub), i91, i91, java.lang.Object(o12sub)) :|: TRUE f1023_0_main_ArrayLength(EOS(STATIC_1023), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, java.lang.Object(ARRAY(i101))) -> f1031_0_main_ArrayLength(EOS(STATIC_1031), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, java.lang.Object(ARRAY(i101))) :|: i101 >= 0 f1031_0_main_ArrayLength(EOS(STATIC_1031), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, java.lang.Object(ARRAY(i101))) -> f1041_0_main_GE(EOS(STATIC_1041), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, i101) :|: i101 >= 0 f1041_0_main_GE(EOS(STATIC_1041), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, i101) -> f1054_0_main_GE(EOS(STATIC_1054), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, i101) :|: i91 < i101 f1054_0_main_GE(EOS(STATIC_1054), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, i101) -> f1109_0_main_Load(EOS(STATIC_1109), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: i91 < i101 f1109_0_main_Load(EOS(STATIC_1109), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f1464_0_main_ConstantStackPush(EOS(STATIC_1464), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) :|: TRUE f1464_0_main_ConstantStackPush(EOS(STATIC_1464), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) -> f1493_0_main_IntArithmetic(EOS(STATIC_1493), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, 2) :|: TRUE f1493_0_main_IntArithmetic(EOS(STATIC_1493), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, matching1) -> f1815_0_main_NE(EOS(STATIC_1815), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91 % 2) :|: TRUE && matching1 = 2 f1815_0_main_NE(EOS(STATIC_1815), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1824_0_main_NE(EOS(STATIC_1824), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 1) :|: TRUE && matching1 = 1 f1815_0_main_NE(EOS(STATIC_1815), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1825_0_main_NE(EOS(STATIC_1825), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE && matching1 = 0 f1824_0_main_NE(EOS(STATIC_1824), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1833_0_main_Load(EOS(STATIC_1833), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: 1 > 0 && matching1 = 1 f1833_0_main_Load(EOS(STATIC_1833), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f1844_0_main_ConstantStackPush(EOS(STATIC_1844), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) :|: TRUE f1844_0_main_ConstantStackPush(EOS(STATIC_1844), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) -> f1880_0_main_IntArithmetic(EOS(STATIC_1880), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, 3) :|: TRUE f1880_0_main_IntArithmetic(EOS(STATIC_1880), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, matching1) -> f1892_0_main_NE(EOS(STATIC_1892), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91 % 3) :|: TRUE && matching1 = 3 f1892_0_main_NE(EOS(STATIC_1892), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i165) -> f1899_0_main_NE(EOS(STATIC_1899), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i165) :|: TRUE f1892_0_main_NE(EOS(STATIC_1892), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1900_0_main_NE(EOS(STATIC_1900), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE && matching1 = 0 f1899_0_main_NE(EOS(STATIC_1899), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i165) -> f1963_0_main_Load(EOS(STATIC_1963), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: i165 > 0 f1963_0_main_Load(EOS(STATIC_1963), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f1980_0_main_ConstantStackPush(EOS(STATIC_1980), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) :|: TRUE f1980_0_main_ConstantStackPush(EOS(STATIC_1980), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91) -> f1996_0_main_IntArithmetic(EOS(STATIC_1996), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, 5) :|: TRUE f1996_0_main_IntArithmetic(EOS(STATIC_1996), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91, matching1) -> f2021_0_main_NE(EOS(STATIC_2021), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i91 % 5) :|: TRUE && matching1 = 5 f2021_0_main_NE(EOS(STATIC_2021), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i190) -> f2074_0_main_NE(EOS(STATIC_2074), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i190) :|: TRUE f2021_0_main_NE(EOS(STATIC_2021), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f2075_0_main_NE(EOS(STATIC_2075), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE && matching1 = 0 f2074_0_main_NE(EOS(STATIC_2074), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i190) -> f2397_0_main_ConstantStackPush(EOS(STATIC_2397), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: i190 > 0 f2397_0_main_ConstantStackPush(EOS(STATIC_2397), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f2801_0_main_Store(EOS(STATIC_2801), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE f2801_0_main_Store(EOS(STATIC_2801), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f3024_0_main_Load(EOS(STATIC_3024), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE && matching1 = 0 f3024_0_main_Load(EOS(STATIC_3024), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f3220_0_main_Load(EOS(STATIC_3220), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, 0) :|: TRUE && matching1 = 0 f3220_0_main_Load(EOS(STATIC_3220), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i250) -> f3446_0_main_Load(EOS(STATIC_3446), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i250) :|: TRUE f3446_0_main_Load(EOS(STATIC_3446), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i282) -> f3744_0_main_Load(EOS(STATIC_3744), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i282) :|: TRUE f3744_0_main_Load(EOS(STATIC_3744), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i320) -> f3868_0_main_ConstantStackPush(EOS(STATIC_3868), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i320, i320) :|: TRUE f3868_0_main_ConstantStackPush(EOS(STATIC_3868), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i320, i320) -> f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i320, i320, 100) :|: TRUE f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340, i340, matching1) -> f3931_0_main_GE(EOS(STATIC_3931), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340, i340, 100) :|: TRUE && matching1 = 100 f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i341, i341, matching1) -> f3932_0_main_GE(EOS(STATIC_3932), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i341, i341, 100) :|: TRUE && matching1 = 100 f3931_0_main_GE(EOS(STATIC_3931), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340, i340, matching1) -> f3936_0_main_Inc(EOS(STATIC_3936), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340) :|: i340 < 100 && matching1 = 100 f3936_0_main_Inc(EOS(STATIC_3936), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340) -> f4016_0_main_JMP(EOS(STATIC_4016), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i340 + 1) :|: TRUE f4016_0_main_JMP(EOS(STATIC_4016), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i377) -> f4454_0_main_Load(EOS(STATIC_4454), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i377) :|: TRUE f4454_0_main_Load(EOS(STATIC_4454), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i377) -> f3744_0_main_Load(EOS(STATIC_3744), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i377) :|: TRUE f3932_0_main_GE(EOS(STATIC_3932), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i341, i341, matching1) -> f3939_0_main_Inc(EOS(STATIC_3939), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: i341 >= 100 && matching1 = 100 f3939_0_main_Inc(EOS(STATIC_3939), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f3861_0_main_Inc(EOS(STATIC_3861), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: TRUE f3861_0_main_Inc(EOS(STATIC_3861), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i301) -> f3909_0_main_JMP(EOS(STATIC_3909), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i301 + 1) :|: TRUE f3909_0_main_JMP(EOS(STATIC_3909), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i333) -> f3930_0_main_Load(EOS(STATIC_3930), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i333) :|: TRUE f3930_0_main_Load(EOS(STATIC_3930), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i333) -> f976_0_main_Load(EOS(STATIC_976), java.lang.Object(ARRAY(i299)), java.lang.Object(ARRAY(i299)), i333) :|: TRUE f976_0_main_Load(EOS(STATIC_976), java.lang.Object(o12sub), java.lang.Object(o12sub), i91) -> f988_0_main_Load(EOS(STATIC_988), java.lang.Object(o12sub), java.lang.Object(o12sub), i91, i91) :|: TRUE f2075_0_main_NE(EOS(STATIC_2075), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f2398_0_main_Load(EOS(STATIC_2398), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: TRUE && matching1 = 0 f2398_0_main_Load(EOS(STATIC_2398), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f2829_0_main_ArrayLength(EOS(STATIC_2829), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) :|: TRUE f2829_0_main_ArrayLength(EOS(STATIC_2829), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) -> f3025_0_main_Load(EOS(STATIC_3025), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) :|: i101 >= 0 f3025_0_main_Load(EOS(STATIC_3025), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) -> f3035_0_main_InvokeMethod(EOS(STATIC_3035), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: TRUE f3035_0_main_InvokeMethod(EOS(STATIC_3035), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f3067_0_exp_ConstantStackPush(EOS(STATIC_3067), i101, i91, i101, i91) :|: i101 >= 1 && i91 < i101 f3035_0_main_InvokeMethod(EOS(STATIC_3035), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f3067_1_exp_ConstantStackPush(EOS(STATIC_3067), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: i101 >= 1 && i91 < i101 f3067_0_exp_ConstantStackPush(EOS(STATIC_3067), i101, i91, i101, i91) -> f7075_0_exp_ConstantStackPush(EOS(STATIC_7075), i101, i91, i101, i91) :|: TRUE f6105_0_exp_Return(EOS(STATIC_6105), java.lang.Object(ARRAY(i724)), java.lang.Object(ARRAY(i724)), i726, i722) -> f5524_0_exp_Return(EOS(STATIC_5524), java.lang.Object(ARRAY(i724)), java.lang.Object(ARRAY(i724)), i726, i722) :|: TRUE f5524_0_exp_Return(EOS(STATIC_5524), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568, i566) -> f5537_0_main_StackPop(EOS(STATIC_5537), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568, i566) :|: TRUE f5537_0_main_StackPop(EOS(STATIC_5537), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568, i566) -> f5665_0_main_JMP(EOS(STATIC_5665), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568) :|: TRUE f5665_0_main_JMP(EOS(STATIC_5665), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568) -> f5694_0_main_Inc(EOS(STATIC_5694), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568) :|: TRUE f5694_0_main_Inc(EOS(STATIC_5694), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568) -> f3861_0_main_Inc(EOS(STATIC_3861), java.lang.Object(ARRAY(i567)), java.lang.Object(ARRAY(i567)), i568) :|: TRUE f1900_0_main_NE(EOS(STATIC_1900), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1964_0_main_Load(EOS(STATIC_1964), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: TRUE && matching1 = 0 f1964_0_main_Load(EOS(STATIC_1964), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f1983_0_main_ArrayLength(EOS(STATIC_1983), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) :|: TRUE f1983_0_main_ArrayLength(EOS(STATIC_1983), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) -> f1999_0_main_Load(EOS(STATIC_1999), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) :|: i101 >= 0 f1999_0_main_Load(EOS(STATIC_1999), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) -> f2023_0_main_InvokeMethod(EOS(STATIC_2023), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: TRUE f2023_0_main_InvokeMethod(EOS(STATIC_2023), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f2077_0_cos_ConstantStackPush(EOS(STATIC_2077), i101, i91, i101, i91) :|: i101 >= 1 && i91 < i101 f2023_0_main_InvokeMethod(EOS(STATIC_2023), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f2077_1_cos_ConstantStackPush(EOS(STATIC_2077), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: i101 >= 1 && i91 < i101 f2077_0_cos_ConstantStackPush(EOS(STATIC_2077), i101, i91, i101, i91) -> f7105_0_cos_ConstantStackPush(EOS(STATIC_7105), i101, i91, i101, i91) :|: TRUE f6406_0_cos_Return(EOS(STATIC_6406), java.lang.Object(ARRAY(i1148)), java.lang.Object(ARRAY(i1148)), i1150) -> f5899_0_cos_Return(EOS(STATIC_5899), java.lang.Object(ARRAY(i1148)), java.lang.Object(ARRAY(i1148)), i1150) :|: TRUE f5899_0_cos_Return(EOS(STATIC_5899), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) -> f5913_0_main_StackPop(EOS(STATIC_5913), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) :|: TRUE f5913_0_main_StackPop(EOS(STATIC_5913), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) -> f5928_0_main_JMP(EOS(STATIC_5928), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) :|: TRUE f5928_0_main_JMP(EOS(STATIC_5928), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) -> f5975_0_main_Inc(EOS(STATIC_5975), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) :|: TRUE f5975_0_main_Inc(EOS(STATIC_5975), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) -> f3861_0_main_Inc(EOS(STATIC_3861), java.lang.Object(ARRAY(i649)), java.lang.Object(ARRAY(i649)), i650) :|: TRUE f1825_0_main_NE(EOS(STATIC_1825), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, matching1) -> f1837_0_main_Load(EOS(STATIC_1837), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) :|: TRUE && matching1 = 0 f1837_0_main_Load(EOS(STATIC_1837), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91) -> f1847_0_main_ArrayLength(EOS(STATIC_1847), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) :|: TRUE f1847_0_main_ArrayLength(EOS(STATIC_1847), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, java.lang.Object(ARRAY(i101))) -> f1882_0_main_Load(EOS(STATIC_1882), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) :|: i101 >= 0 f1882_0_main_Load(EOS(STATIC_1882), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101) -> f1893_0_main_InvokeMethod(EOS(STATIC_1893), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: TRUE f1893_0_main_InvokeMethod(EOS(STATIC_1893), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f1903_0_sin_Load(EOS(STATIC_1903), i101, i91, i101, i91) :|: i101 >= 1 && i91 < i101 f1893_0_main_InvokeMethod(EOS(STATIC_1893), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) -> f1903_1_sin_Load(EOS(STATIC_1903), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i91, i101, i91) :|: i101 >= 1 && i91 < i101 f1903_0_sin_Load(EOS(STATIC_1903), i101, i91, i101, i91) -> f7135_0_sin_Load(EOS(STATIC_7135), i101, i91, i101, i91) :|: TRUE f6404_0_sin_Return(EOS(STATIC_6404), java.lang.Object(ARRAY(i1141)), java.lang.Object(ARRAY(i1141)), i1143, i1139) -> f5870_0_sin_Return(EOS(STATIC_5870), java.lang.Object(ARRAY(i1141)), java.lang.Object(ARRAY(i1141)), i1143, i1139) :|: TRUE f5870_0_sin_Return(EOS(STATIC_5870), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645, i643) -> f5908_0_main_StackPop(EOS(STATIC_5908), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645, i643) :|: TRUE f5908_0_main_StackPop(EOS(STATIC_5908), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645, i643) -> f5924_0_main_JMP(EOS(STATIC_5924), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645) :|: TRUE f5924_0_main_JMP(EOS(STATIC_5924), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645) -> f5961_0_main_Inc(EOS(STATIC_5961), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645) :|: TRUE f5961_0_main_Inc(EOS(STATIC_5961), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645) -> f3861_0_main_Inc(EOS(STATIC_3861), java.lang.Object(ARRAY(i644)), java.lang.Object(ARRAY(i644)), i645) :|: TRUE f3067_1_exp_ConstantStackPush(EOS(STATIC_3067), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i726, i724, i726) -> f6105_0_exp_Return(EOS(STATIC_6105), java.lang.Object(ARRAY(i724)), java.lang.Object(ARRAY(i724)), i726, i722) :|: TRUE f2077_1_cos_ConstantStackPush(EOS(STATIC_2077), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1150, i1148, i1150) -> f6406_0_cos_Return(EOS(STATIC_6406), java.lang.Object(ARRAY(i1148)), java.lang.Object(ARRAY(i1148)), i1150) :|: TRUE f1903_1_sin_Load(EOS(STATIC_1903), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1143, i1141, i1143) -> f6404_0_sin_Return(EOS(STATIC_6404), java.lang.Object(ARRAY(i1141)), java.lang.Object(ARRAY(i1141)), i1143, i1139) :|: TRUE Combined rules. Obtained 13 IRulesP rules: f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i341:0, 100) -> f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i91:0 + 1) :|: i341:0 > 99 f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) :|: i101:0 > -1 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 5 * div2 > 0 && i91:0 - 3 * div1 > 0 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, 0, 0, 100) :|: i91:0 - 3 * div1 > 0 && i91:0 - 5 * div2 > 0 && i101:0 > -1 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 5 * div2 < 5 && i91:0 - 3 * div1 < 3 f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 0 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i91:0 + 1) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 0 && i91:0 - 2 * div < 2 && i91:0 - 2 * div > -2 f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i340:0, i340:0, 100) -> f3925_0_main_GE(EOS(STATIC_3925), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i340:0 + 1, i340:0 + 1, 100) :|: i340:0 < 100 f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 = 0 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i91:0 + 1) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 3 * div1 > -3 f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 > 0 && i91:0 - 5 * div2 = 0 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f988_0_main_Load(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i91:0 + 1) :|: i91:0 - 3 * div1 > 0 && i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 5 * div2 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 5 * div2 < 5 && i91:0 - 5 * div2 > -5 Removed following non-SCC rules: f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f7135_0_sin_Load(EOS(STATIC_7135), i101:0, i91:0, i101:0, i91:0) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 0 && i91:0 - 2 * div < 2 && i91:0 - 2 * div > -2 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f7105_0_cos_ConstantStackPush(EOS(STATIC_7105), i101:0, i91:0, i101:0, i91:0) :|: i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 3 * div1 > -3 f988_0_main_Load'(EOS(STATIC_988), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i91:0, i91:0) -> f7075_0_exp_ConstantStackPush(EOS(STATIC_7075), i101:0, i91:0, i101:0, i91:0) :|: i91:0 - 3 * div1 > 0 && i101:0 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 5 * div2 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 5 * div2 < 5 && i91:0 - 5 * div2 > -5 Filtered constant ground arguments: f3925_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f3925_0_main_GE(x2, x3, x4, x5, x6) f988_0_main_Load(x1, x2, x3, x4, x5) -> f988_0_main_Load(x2, x3, x4, x5) f988_0_main_Load'(x1, x2, x3, x4, x5) -> f988_0_main_Load'(x2, x3, x4, x5) Filtered duplicate arguments: f3925_0_main_GE(x1, x2, x3, x4, x5) -> f3925_0_main_GE(x2, x3, x5) f988_0_main_Load(x1, x2, x3, x4) -> f988_0_main_Load(x2, x4) f988_0_main_Load'(x1, x2, x3, x4) -> f988_0_main_Load'(x2, x4) Finished conversion. Obtained 10 rules.P rules: f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i101:0) :|: i341:0 > 99 f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) :|: i91:0 < i101:0 && i101:0 > -1 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 > 0 && i91:0 - 5 * div2 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, 0, i101:0) :|: i91:0 - 5 * div2 > 0 && i91:0 - 3 * div1 > 0 && i101:0 > -1 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 5 * div2 < 5 f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) :|: i91:0 < i101:0 && i91:0 - 2 * div = 0 && i101:0 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i101:0) :|: i91:0 < i101:0 && i101:0 > 0 && i91:0 - 2 * div = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i340:0, i101:0) -> f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i340:0 + 1, i101:0) :|: i340:0 < 100 f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) :|: i91:0 < i101:0 && i101:0 > 0 && i91:0 - 3 * div1 = 0 && i91:0 - 2 * div = 1 f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i101:0) :|: i91:0 < i101:0 && i101:0 > 0 && i91:0 - 2 * div = 1 && i91:0 - 3 * div1 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 > -3 && i91:0 - 3 * div1 < 3 f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) :|: i91:0 < i101:0 && i101:0 > 0 && i91:0 - 2 * div = 1 && i91:0 - 5 * div2 = 0 && i91:0 - 3 * div1 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i91:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i101:0) :|: i101:0 > 0 && i91:0 - 3 * div1 > 0 && i91:0 < i101:0 && i91:0 - 2 * div = 1 && i91:0 - 5 * div2 = 0 && i91:0 - 2 * div > -2 && i91:0 - 2 * div < 2 && i91:0 - 3 * div1 < 3 && i91:0 - 5 * div2 > -5 && i91:0 - 5 * div2 < 5 ---------------------------------------- (74) Obligation: Rules: f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), i91:0 + 1, i101:0) :|: i341:0 > 99 f988_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f988_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > -1 && x1 - 2 * x2 = 1 && x1 - 3 * x3 > 0 && x1 - 5 * x4 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x5)), x6, x5) -> f3925_0_main_GE(java.lang.Object(ARRAY(x5)), x6, 0, x5) :|: x6 - 5 * x7 > 0 && x6 - 3 * x8 > 0 && x5 > -1 && x6 < x5 && x6 - 2 * x9 = 1 && x6 - 2 * x9 > -2 && x6 - 2 * x9 < 2 && x6 - 3 * x8 < 3 && x6 - 5 * x7 < 5 f988_0_main_Load(java.lang.Object(ARRAY(x10)), x11, x10) -> f988_0_main_Load'(java.lang.Object(ARRAY(x10)), x11, x10) :|: x11 < x10 && x11 - 2 * x12 = 0 && x10 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x13)), x14, x13) -> f988_0_main_Load(java.lang.Object(ARRAY(x13)), x14 + 1, x13) :|: x14 < x13 && x13 > 0 && x14 - 2 * x15 = 0 && x14 - 2 * x15 > -2 && x14 - 2 * x15 < 2 f3925_0_main_GE(java.lang.Object(ARRAY(x16)), x17, x18, x16) -> f3925_0_main_GE(java.lang.Object(ARRAY(x16)), x17, x18 + 1, x16) :|: x18 < 100 f988_0_main_Load(java.lang.Object(ARRAY(x19)), x20, x19) -> f988_0_main_Load'(java.lang.Object(ARRAY(x19)), x20, x19) :|: x20 < x19 && x19 > 0 && x20 - 3 * x21 = 0 && x20 - 2 * x22 = 1 f988_0_main_Load'(java.lang.Object(ARRAY(x23)), x24, x23) -> f988_0_main_Load(java.lang.Object(ARRAY(x23)), x24 + 1, x23) :|: x24 < x23 && x23 > 0 && x24 - 2 * x25 = 1 && x24 - 3 * x26 = 0 && x24 - 2 * x25 > -2 && x24 - 2 * x25 < 2 && x24 - 3 * x26 > -3 && x24 - 3 * x26 < 3 f988_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f988_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x27 > 0 && x28 - 2 * x29 = 1 && x28 - 5 * x30 = 0 && x28 - 3 * x31 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x32)), x33, x32) -> f988_0_main_Load(java.lang.Object(ARRAY(x32)), x33 + 1, x32) :|: x32 > 0 && x33 - 3 * x34 > 0 && x33 < x32 && x33 - 2 * x35 = 1 && x33 - 5 * x36 = 0 && x33 - 2 * x35 > -2 && x33 - 2 * x35 < 2 && x33 - 3 * x34 < 3 && x33 - 5 * x36 > -5 && x33 - 5 * x36 < 5 ---------------------------------------- (75) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (76) Obligation: Rules: f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i341:0 > 99 && arith = i91:0 + 1 f988_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f988_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > -1 && x1 - 2 * x2 = 1 && x1 - 3 * x3 > 0 && x1 - 5 * x4 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x5)), x6, x5) -> f3925_0_main_GE(java.lang.Object(ARRAY(x5)), x6, 0, x5) :|: x6 - 5 * x7 > 0 && x6 - 3 * x8 > 0 && x5 > -1 && x6 < x5 && x6 - 2 * x9 = 1 && x6 - 2 * x9 > -2 && x6 - 2 * x9 < 2 && x6 - 3 * x8 < 3 && x6 - 5 * x7 < 5 f988_0_main_Load(java.lang.Object(ARRAY(x10)), x11, x10) -> f988_0_main_Load'(java.lang.Object(ARRAY(x10)), x11, x10) :|: x11 < x10 && x11 - 2 * x12 = 0 && x10 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f988_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x38 < x37 && x37 > 0 && x38 - 2 * x40 = 0 && x38 - 2 * x40 > -2 && x38 - 2 * x40 < 2 && x39 = x38 + 1 f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x43, x41) -> f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x44, x41) :|: x43 < 100 && x44 = x43 + 1 f988_0_main_Load(java.lang.Object(ARRAY(x19)), x20, x19) -> f988_0_main_Load'(java.lang.Object(ARRAY(x19)), x20, x19) :|: x20 < x19 && x19 > 0 && x20 - 3 * x21 = 0 && x20 - 2 * x22 = 1 f988_0_main_Load'(java.lang.Object(ARRAY(x45)), x46, x45) -> f988_0_main_Load(java.lang.Object(ARRAY(x45)), x47, x45) :|: x46 < x45 && x45 > 0 && x46 - 2 * x48 = 1 && x46 - 3 * x49 = 0 && x46 - 2 * x48 > -2 && x46 - 2 * x48 < 2 && x46 - 3 * x49 > -3 && x46 - 3 * x49 < 3 && x47 = x46 + 1 f988_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f988_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x27 > 0 && x28 - 2 * x29 = 1 && x28 - 5 * x30 = 0 && x28 - 3 * x31 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x50)), x51, x50) -> f988_0_main_Load(java.lang.Object(ARRAY(x50)), x52, x50) :|: x50 > 0 && x51 - 3 * x53 > 0 && x51 < x50 && x51 - 2 * x54 = 1 && x51 - 5 * x55 = 0 && x51 - 2 * x54 > -2 && x51 - 2 * x54 < 2 && x51 - 3 * x53 < 3 && x51 - 5 * x55 > -5 && x51 - 5 * x55 < 5 && x52 = x51 + 1 ---------------------------------------- (77) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i341:0 > 99 && arith = i91:0 + 1 (2) f988_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f988_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > -1 && x1 - 2 * x2 = 1 && x1 - 3 * x3 > 0 && x1 - 5 * x4 > 0 (3) f988_0_main_Load'(java.lang.Object(ARRAY(x5)), x6, x5) -> f3925_0_main_GE(java.lang.Object(ARRAY(x5)), x6, 0, x5) :|: x6 - 5 * x7 > 0 && x6 - 3 * x8 > 0 && x5 > -1 && x6 < x5 && x6 - 2 * x9 = 1 && x6 - 2 * x9 > -2 && x6 - 2 * x9 < 2 && x6 - 3 * x8 < 3 && x6 - 5 * x7 < 5 (4) f988_0_main_Load(java.lang.Object(ARRAY(x10)), x11, x10) -> f988_0_main_Load'(java.lang.Object(ARRAY(x10)), x11, x10) :|: x11 < x10 && x11 - 2 * x12 = 0 && x10 > 0 (5) f988_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f988_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x38 < x37 && x37 > 0 && x38 - 2 * x40 = 0 && x38 - 2 * x40 > -2 && x38 - 2 * x40 < 2 && x39 = x38 + 1 (6) f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x43, x41) -> f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x44, x41) :|: x43 < 100 && x44 = x43 + 1 (7) f988_0_main_Load(java.lang.Object(ARRAY(x19)), x20, x19) -> f988_0_main_Load'(java.lang.Object(ARRAY(x19)), x20, x19) :|: x20 < x19 && x19 > 0 && x20 - 3 * x21 = 0 && x20 - 2 * x22 = 1 (8) f988_0_main_Load'(java.lang.Object(ARRAY(x45)), x46, x45) -> f988_0_main_Load(java.lang.Object(ARRAY(x45)), x47, x45) :|: x46 < x45 && x45 > 0 && x46 - 2 * x48 = 1 && x46 - 3 * x49 = 0 && x46 - 2 * x48 > -2 && x46 - 2 * x48 < 2 && x46 - 3 * x49 > -3 && x46 - 3 * x49 < 3 && x47 = x46 + 1 (9) f988_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f988_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x27 > 0 && x28 - 2 * x29 = 1 && x28 - 5 * x30 = 0 && x28 - 3 * x31 > 0 (10) f988_0_main_Load'(java.lang.Object(ARRAY(x50)), x51, x50) -> f988_0_main_Load(java.lang.Object(ARRAY(x50)), x52, x50) :|: x50 > 0 && x51 - 3 * x53 > 0 && x51 < x50 && x51 - 2 * x54 = 1 && x51 - 5 * x55 = 0 && x51 - 2 * x54 > -2 && x51 - 2 * x54 < 2 && x51 - 3 * x53 < 3 && x51 - 5 * x55 > -5 && x51 - 5 * x55 < 5 && x52 = x51 + 1 Arcs: (1) -> (2), (4), (7), (9) (2) -> (3), (8), (10) (3) -> (6) (4) -> (5) (5) -> (2), (7), (9) (6) -> (1), (6) (7) -> (8) (8) -> (4) (9) -> (8), (10) (10) -> (4) This digraph is fully evaluated! ---------------------------------------- (78) Obligation: Termination digraph: Nodes: (1) f3925_0_main_GE(java.lang.Object(ARRAY(i101:0)), i91:0, i341:0, i101:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i341:0 > 99 && arith = i91:0 + 1 (2) f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x43, x41) -> f3925_0_main_GE(java.lang.Object(ARRAY(x41)), x42, x44, x41) :|: x43 < 100 && x44 = x43 + 1 (3) f988_0_main_Load'(java.lang.Object(ARRAY(x5)), x6, x5) -> f3925_0_main_GE(java.lang.Object(ARRAY(x5)), x6, 0, x5) :|: x6 - 5 * x7 > 0 && x6 - 3 * x8 > 0 && x5 > -1 && x6 < x5 && x6 - 2 * x9 = 1 && x6 - 2 * x9 > -2 && x6 - 2 * x9 < 2 && x6 - 3 * x8 < 3 && x6 - 5 * x7 < 5 (4) f988_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f988_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > -1 && x1 - 2 * x2 = 1 && x1 - 3 * x3 > 0 && x1 - 5 * x4 > 0 (5) f988_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f988_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x38 < x37 && x37 > 0 && x38 - 2 * x40 = 0 && x38 - 2 * x40 > -2 && x38 - 2 * x40 < 2 && x39 = x38 + 1 (6) f988_0_main_Load(java.lang.Object(ARRAY(x10)), x11, x10) -> f988_0_main_Load'(java.lang.Object(ARRAY(x10)), x11, x10) :|: x11 < x10 && x11 - 2 * x12 = 0 && x10 > 0 (7) f988_0_main_Load'(java.lang.Object(ARRAY(x50)), x51, x50) -> f988_0_main_Load(java.lang.Object(ARRAY(x50)), x52, x50) :|: x50 > 0 && x51 - 3 * x53 > 0 && x51 < x50 && x51 - 2 * x54 = 1 && x51 - 5 * x55 = 0 && x51 - 2 * x54 > -2 && x51 - 2 * x54 < 2 && x51 - 3 * x53 < 3 && x51 - 5 * x55 > -5 && x51 - 5 * x55 < 5 && x52 = x51 + 1 (8) f988_0_main_Load'(java.lang.Object(ARRAY(x45)), x46, x45) -> f988_0_main_Load(java.lang.Object(ARRAY(x45)), x47, x45) :|: x46 < x45 && x45 > 0 && x46 - 2 * x48 = 1 && x46 - 3 * x49 = 0 && x46 - 2 * x48 > -2 && x46 - 2 * x48 < 2 && x46 - 3 * x49 > -3 && x46 - 3 * x49 < 3 && x47 = x46 + 1 (9) f988_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f988_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x27 > 0 && x28 - 2 * x29 = 1 && x28 - 5 * x30 = 0 && x28 - 3 * x31 > 0 (10) f988_0_main_Load(java.lang.Object(ARRAY(x19)), x20, x19) -> f988_0_main_Load'(java.lang.Object(ARRAY(x19)), x20, x19) :|: x20 < x19 && x19 > 0 && x20 - 3 * x21 = 0 && x20 - 2 * x22 = 1 Arcs: (1) -> (4), (6), (9), (10) (2) -> (1), (2) (3) -> (2) (4) -> (3), (7), (8) (5) -> (4), (9), (10) (6) -> (5) (7) -> (6) (8) -> (6) (9) -> (7), (8) (10) -> (8) This digraph is fully evaluated! ---------------------------------------- (79) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (80) Obligation: Rules: f988_0_main_Load(java.lang.Object(ARRAY(x10:0)), x11:0, x10:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(x10:0)), x11:0, x10:0) :|: x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0 f988_0_main_Load(java.lang.Object(ARRAY(x19:0)), x20:0, x19:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(x19:0)), x20:0, x19:0) :|: x20:0 - 3 * x21:0 = 0 && x20:0 - 2 * x22:0 = 1 && x19:0 > 0 && x20:0 < x19:0 f988_0_main_Load'(java.lang.Object(ARRAY(x5:0)), x6:0, x5:0) -> f3925_0_main_GE(java.lang.Object(ARRAY(x5:0)), x6:0, 0, x5:0) :|: x6:0 - 3 * x8:0 < 3 && x6:0 - 5 * x7:0 < 5 && x6:0 - 2 * x9:0 < 2 && x6:0 - 2 * x9:0 > -2 && x6:0 - 2 * x9:0 = 1 && x6:0 < x5:0 && x5:0 > -1 && x6:0 - 3 * x8:0 > 0 && x6:0 - 5 * x7:0 > 0 f988_0_main_Load'(java.lang.Object(ARRAY(x37:0)), x38:0, x37:0) -> f988_0_main_Load(java.lang.Object(ARRAY(x37:0)), x38:0 + 1, x37:0) :|: x38:0 - 2 * x40:0 > -2 && x38:0 - 2 * x40:0 < 2 && x38:0 - 2 * x40:0 = 0 && x37:0 > 0 && x38:0 < x37:0 f3925_0_main_GE(java.lang.Object(ARRAY(x41:0)), x42:0, x43:0, x41:0) -> f3925_0_main_GE(java.lang.Object(ARRAY(x41:0)), x42:0, x43:0 + 1, x41:0) :|: x43:0 < 100 f988_0_main_Load(java.lang.Object(ARRAY(x27:0)), x28:0, x27:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(x27:0)), x28:0, x27:0) :|: x28:0 - 5 * x30:0 = 0 && x28:0 - 3 * x31:0 > 0 && x28:0 - 2 * x29:0 = 1 && x27:0 > 0 && x28:0 < x27:0 f3925_0_main_GE(java.lang.Object(ARRAY(i101:0:0)), i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(java.lang.Object(ARRAY(i101:0:0)), i91:0:0 + 1, i101:0:0) :|: i341:0:0 > 99 f988_0_main_Load'(java.lang.Object(ARRAY(x45:0)), x46:0, x45:0) -> f988_0_main_Load(java.lang.Object(ARRAY(x45:0)), x46:0 + 1, x45:0) :|: x46:0 - 3 * x49:0 > -3 && x46:0 - 3 * x49:0 < 3 && x46:0 - 2 * x48:0 < 2 && x46:0 - 2 * x48:0 > -2 && x46:0 - 3 * x49:0 = 0 && x46:0 - 2 * x48:0 = 1 && x45:0 > 0 && x46:0 < x45:0 f988_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x:0) -> f988_0_main_Load'(java.lang.Object(ARRAY(x:0)), x1:0, x:0) :|: x1:0 - 3 * x3:0 > 0 && x1:0 - 5 * x4:0 > 0 && x1:0 - 2 * x2:0 = 1 && x:0 > -1 && x:0 > x1:0 f988_0_main_Load'(java.lang.Object(ARRAY(x50:0)), x51:0, x50:0) -> f988_0_main_Load(java.lang.Object(ARRAY(x50:0)), x51:0 + 1, x50:0) :|: x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0 ---------------------------------------- (81) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f988_0_main_Load(VARIABLE, INTEGER, VARIABLE) java.lang.Object(VARIABLE) ARRAY(VARIABLE) f988_0_main_Load'(VARIABLE, INTEGER, INTEGER) f3925_0_main_GE(VARIABLE, VARIABLE, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (82) Obligation: Rules: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f988_0_main_Load(c2, x20:0, x19:0) -> f988_0_main_Load'(c3, x20:0, x19:0) :|: c3 = 0 && c2 = 0 && (x20:0 - 3 * x21:0 = 0 && x20:0 - 2 * x22:0 = 1 && x19:0 > 0 && x20:0 < x19:0) f988_0_main_Load'(c4, x6:0, x5:0) -> f3925_0_main_GE(c5, x6:0, c6, x5:0) :|: c6 = 0 && (c5 = 0 && c4 = 0) && (x6:0 - 3 * x8:0 < 3 && x6:0 - 5 * x7:0 < 5 && x6:0 - 2 * x9:0 < 2 && x6:0 - 2 * x9:0 > -2 && x6:0 - 2 * x9:0 = 1 && x6:0 < x5:0 && x5:0 > -1 && x6:0 - 3 * x8:0 > 0 && x6:0 - 5 * x7:0 > 0) f988_0_main_Load'(c7, x38:0, x37:0) -> f988_0_main_Load(c8, c9, x37:0) :|: c9 = x38:0 + 1 && (c8 = 0 && c7 = 0) && (x38:0 - 2 * x40:0 > -2 && x38:0 - 2 * x40:0 < 2 && x38:0 - 2 * x40:0 = 0 && x37:0 > 0 && x38:0 < x37:0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f988_0_main_Load(c13, x28:0, x27:0) -> f988_0_main_Load'(c14, x28:0, x27:0) :|: c14 = 0 && c13 = 0 && (x28:0 - 5 * x30:0 = 0 && x28:0 - 3 * x31:0 > 0 && x28:0 - 2 * x29:0 = 1 && x27:0 > 0 && x28:0 < x27:0) f3925_0_main_GE(c15, i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(c16, c17, i101:0:0) :|: c17 = i91:0:0 + 1 && (c16 = 0 && c15 = 0) && i341:0:0 > 99 f988_0_main_Load'(c18, x46:0, x45:0) -> f988_0_main_Load(c19, c20, x45:0) :|: c20 = x46:0 + 1 && (c19 = 0 && c18 = 0) && (x46:0 - 3 * x49:0 > -3 && x46:0 - 3 * x49:0 < 3 && x46:0 - 2 * x48:0 < 2 && x46:0 - 2 * x48:0 > -2 && x46:0 - 3 * x49:0 = 0 && x46:0 - 2 * x48:0 = 1 && x45:0 > 0 && x46:0 < x45:0) f988_0_main_Load(c21, x1:0, x:0) -> f988_0_main_Load'(c22, x1:0, x:0) :|: c22 = 0 && c21 = 0 && (x1:0 - 3 * x3:0 > 0 && x1:0 - 5 * x4:0 > 0 && x1:0 - 2 * x2:0 = 1 && x:0 > -1 && x:0 > x1:0) f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) ---------------------------------------- (83) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f988_0_main_Load ] = -3*f988_0_main_Load_2 + 3*f988_0_main_Load_3 + 2 [ f988_0_main_Load' ] = -3*f988_0_main_Load'_2 + 3*f988_0_main_Load'_3 + 1 [ f3925_0_main_GE ] = -3*f3925_0_main_GE_2 + 3*f3925_0_main_GE_4 The following rules are decreasing: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f988_0_main_Load(c2, x20:0, x19:0) -> f988_0_main_Load'(c3, x20:0, x19:0) :|: c3 = 0 && c2 = 0 && (x20:0 - 3 * x21:0 = 0 && x20:0 - 2 * x22:0 = 1 && x19:0 > 0 && x20:0 < x19:0) f988_0_main_Load'(c4, x6:0, x5:0) -> f3925_0_main_GE(c5, x6:0, c6, x5:0) :|: c6 = 0 && (c5 = 0 && c4 = 0) && (x6:0 - 3 * x8:0 < 3 && x6:0 - 5 * x7:0 < 5 && x6:0 - 2 * x9:0 < 2 && x6:0 - 2 * x9:0 > -2 && x6:0 - 2 * x9:0 = 1 && x6:0 < x5:0 && x5:0 > -1 && x6:0 - 3 * x8:0 > 0 && x6:0 - 5 * x7:0 > 0) f988_0_main_Load'(c7, x38:0, x37:0) -> f988_0_main_Load(c8, c9, x37:0) :|: c9 = x38:0 + 1 && (c8 = 0 && c7 = 0) && (x38:0 - 2 * x40:0 > -2 && x38:0 - 2 * x40:0 < 2 && x38:0 - 2 * x40:0 = 0 && x37:0 > 0 && x38:0 < x37:0) f988_0_main_Load(c13, x28:0, x27:0) -> f988_0_main_Load'(c14, x28:0, x27:0) :|: c14 = 0 && c13 = 0 && (x28:0 - 5 * x30:0 = 0 && x28:0 - 3 * x31:0 > 0 && x28:0 - 2 * x29:0 = 1 && x27:0 > 0 && x28:0 < x27:0) f3925_0_main_GE(c15, i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(c16, c17, i101:0:0) :|: c17 = i91:0:0 + 1 && (c16 = 0 && c15 = 0) && i341:0:0 > 99 f988_0_main_Load'(c18, x46:0, x45:0) -> f988_0_main_Load(c19, c20, x45:0) :|: c20 = x46:0 + 1 && (c19 = 0 && c18 = 0) && (x46:0 - 3 * x49:0 > -3 && x46:0 - 3 * x49:0 < 3 && x46:0 - 2 * x48:0 < 2 && x46:0 - 2 * x48:0 > -2 && x46:0 - 3 * x49:0 = 0 && x46:0 - 2 * x48:0 = 1 && x45:0 > 0 && x46:0 < x45:0) f988_0_main_Load(c21, x1:0, x:0) -> f988_0_main_Load'(c22, x1:0, x:0) :|: c22 = 0 && c21 = 0 && (x1:0 - 3 * x3:0 > 0 && x1:0 - 5 * x4:0 > 0 && x1:0 - 2 * x2:0 = 1 && x:0 > -1 && x:0 > x1:0) f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) The following rules are bounded: f988_0_main_Load(c2, x20:0, x19:0) -> f988_0_main_Load'(c3, x20:0, x19:0) :|: c3 = 0 && c2 = 0 && (x20:0 - 3 * x21:0 = 0 && x20:0 - 2 * x22:0 = 1 && x19:0 > 0 && x20:0 < x19:0) f988_0_main_Load'(c4, x6:0, x5:0) -> f3925_0_main_GE(c5, x6:0, c6, x5:0) :|: c6 = 0 && (c5 = 0 && c4 = 0) && (x6:0 - 3 * x8:0 < 3 && x6:0 - 5 * x7:0 < 5 && x6:0 - 2 * x9:0 < 2 && x6:0 - 2 * x9:0 > -2 && x6:0 - 2 * x9:0 = 1 && x6:0 < x5:0 && x5:0 > -1 && x6:0 - 3 * x8:0 > 0 && x6:0 - 5 * x7:0 > 0) f988_0_main_Load'(c7, x38:0, x37:0) -> f988_0_main_Load(c8, c9, x37:0) :|: c9 = x38:0 + 1 && (c8 = 0 && c7 = 0) && (x38:0 - 2 * x40:0 > -2 && x38:0 - 2 * x40:0 < 2 && x38:0 - 2 * x40:0 = 0 && x37:0 > 0 && x38:0 < x37:0) f988_0_main_Load(c13, x28:0, x27:0) -> f988_0_main_Load'(c14, x28:0, x27:0) :|: c14 = 0 && c13 = 0 && (x28:0 - 5 * x30:0 = 0 && x28:0 - 3 * x31:0 > 0 && x28:0 - 2 * x29:0 = 1 && x27:0 > 0 && x28:0 < x27:0) f988_0_main_Load'(c18, x46:0, x45:0) -> f988_0_main_Load(c19, c20, x45:0) :|: c20 = x46:0 + 1 && (c19 = 0 && c18 = 0) && (x46:0 - 3 * x49:0 > -3 && x46:0 - 3 * x49:0 < 3 && x46:0 - 2 * x48:0 < 2 && x46:0 - 2 * x48:0 > -2 && x46:0 - 3 * x49:0 = 0 && x46:0 - 2 * x48:0 = 1 && x45:0 > 0 && x46:0 < x45:0) f988_0_main_Load(c21, x1:0, x:0) -> f988_0_main_Load'(c22, x1:0, x:0) :|: c22 = 0 && c21 = 0 && (x1:0 - 3 * x3:0 > 0 && x1:0 - 5 * x4:0 > 0 && x1:0 - 2 * x2:0 = 1 && x:0 > -1 && x:0 > x1:0) ---------------------------------------- (84) Obligation: Rules: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f3925_0_main_GE(c15, i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(c16, c17, i101:0:0) :|: c17 = i91:0:0 + 1 && (c16 = 0 && c15 = 0) && i341:0:0 > 99 f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) ---------------------------------------- (85) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f988_0_main_Load(x, x1, x2)] = c*x [f988_0_main_Load'(x3, x4, x5)] = c3*x3 [f3925_0_main_GE(x6, x7, x8, x9)] = 1 + c6*x6 The following rules are decreasing: f3925_0_main_GE(c15, i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(c16, c17, i101:0:0) :|: c17 = i91:0:0 + 1 && (c16 = 0 && c15 = 0) && i341:0:0 > 99 The following rules are bounded: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f3925_0_main_GE(c15, i91:0:0, i341:0:0, i101:0:0) -> f988_0_main_Load(c16, c17, i101:0:0) :|: c17 = i91:0:0 + 1 && (c16 = 0 && c15 = 0) && i341:0:0 > 99 f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) ---------------------------------------- (86) Obligation: Rules: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) ---------------------------------------- (87) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f988_0_main_Load ] = -2*f988_0_main_Load_2 + 2*f988_0_main_Load_3 [ f988_0_main_Load' ] = -2*f988_0_main_Load'_2 + 2*f988_0_main_Load'_3 + -1 [ f3925_0_main_GE ] = -1*f3925_0_main_GE_3 The following rules are decreasing: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) The following rules are bounded: f988_0_main_Load(c, x11:0, x10:0) -> f988_0_main_Load'(c1, x11:0, x10:0) :|: c1 = 0 && c = 0 && (x11:0 < x10:0 && x11:0 - 2 * x12:0 = 0 && x10:0 > 0) f3925_0_main_GE(c10, x42:0, x43:0, x41:0) -> f3925_0_main_GE(c11, x42:0, c12, x41:0) :|: c12 = x43:0 + 1 && (c11 = 0 && c10 = 0) && x43:0 < 100 f988_0_main_Load'(c23, x51:0, x50:0) -> f988_0_main_Load(c24, c25, x50:0) :|: c25 = x51:0 + 1 && (c24 = 0 && c23 = 0) && (x51:0 - 5 * x55:0 > -5 && x51:0 - 5 * x55:0 < 5 && x51:0 - 3 * x53:0 < 3 && x51:0 - 2 * x54:0 < 2 && x51:0 - 2 * x54:0 > -2 && x51:0 - 5 * x55:0 = 0 && x51:0 - 2 * x54:0 = 1 && x51:0 < x50:0 && x51:0 - 3 * x53:0 > 0 && x50:0 > 0) ---------------------------------------- (88) YES