/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 959 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 13 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 41 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 21 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 28 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 18 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 49 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 10 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 19 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 8 ms] (32) YES (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 41 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 87 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 15 ms] (43) IntTRS (44) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (45) YES (46) JBCTerminationSCC (47) SCCToIRSProof [SOUND, 151 ms] (48) IRSwT (49) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (50) IRSwT (51) IRSwTTerminationDigraphProof [EQUIVALENT, 39 ms] (52) IRSwT (53) IntTRSCompressionProof [EQUIVALENT, 3 ms] (54) IRSwT (55) TempFilterProof [SOUND, 18 ms] (56) IntTRS (57) RankingReductionPairProof [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, 18 ms] (69) IntTRS (70) RankingReductionPairProof [EQUIVALENT, 0 ms] (71) YES (72) JBCTerminationSCC (73) SCCToIRSProof [SOUND, 145 ms] (74) IRSwT (75) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (76) IRSwT (77) IRSwTTerminationDigraphProof [EQUIVALENT, 316 ms] (78) IRSwT (79) IntTRSCompressionProof [EQUIVALENT, 0 ms] (80) IRSwT (81) TempFilterProof [SOUND, 97 ms] (82) IntTRS (83) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (84) IntTRS (85) PolynomialOrderProcessor [EQUIVALENT, 9 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: f6303_0_fact_Load(EOS(STATIC_6303), i1039, i1041, i1041) -> f6307_0_fact_GT(EOS(STATIC_6307), i1039, i1041, i1041, i1039) :|: TRUE f6307_0_fact_GT(EOS(STATIC_6307), i1039, i1041, i1041, i1039) -> f6312_0_fact_GT(EOS(STATIC_6312), i1039, i1041, i1041, i1039) :|: i1041 <= i1039 f6312_0_fact_GT(EOS(STATIC_6312), i1039, i1041, i1041, i1039) -> f6317_0_fact_Load(EOS(STATIC_6317), i1039, i1041) :|: i1041 <= i1039 f6317_0_fact_Load(EOS(STATIC_6317), i1039, i1041) -> f6321_0_fact_Load(EOS(STATIC_6321), i1039, i1041) :|: TRUE f6321_0_fact_Load(EOS(STATIC_6321), i1039, i1041) -> f6323_0_fact_IntArithmetic(EOS(STATIC_6323), i1039, i1041, i1041) :|: TRUE f6323_0_fact_IntArithmetic(EOS(STATIC_6323), i1039, i1041, i1041) -> f6324_0_fact_Store(EOS(STATIC_6324), i1039, i1041) :|: i1041 >= 1 f6324_0_fact_Store(EOS(STATIC_6324), i1039, i1041) -> f6326_0_fact_Inc(EOS(STATIC_6326), i1039, i1041) :|: TRUE f6326_0_fact_Inc(EOS(STATIC_6326), i1039, i1041) -> f6329_0_fact_JMP(EOS(STATIC_6329), i1039, i1041 + 1) :|: TRUE f6329_0_fact_JMP(EOS(STATIC_6329), i1039, i1082) -> f6332_0_fact_Load(EOS(STATIC_6332), i1039, i1082) :|: TRUE f6332_0_fact_Load(EOS(STATIC_6332), i1039, i1082) -> f6299_0_fact_Load(EOS(STATIC_6299), i1039, i1082) :|: TRUE f6299_0_fact_Load(EOS(STATIC_6299), i1039, i1041) -> f6303_0_fact_Load(EOS(STATIC_6303), i1039, i1041, i1041) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f6303_0_fact_Load(EOS(STATIC_6303), i1039:0, i1041:0, i1041:0) -> f6303_0_fact_Load(EOS(STATIC_6303), i1039:0, i1041:0 + 1, i1041:0 + 1) :|: i1041:0 <= i1039:0 && i1041:0 > 0 Filtered constant ground arguments: f6303_0_fact_Load(x1, x2, x3, x4) -> f6303_0_fact_Load(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f6303_0_fact_Load(x1, x2, x3) -> f6303_0_fact_Load(x1, x3) Finished conversion. Obtained 1 rules.P rules: f6303_0_fact_Load(i1039:0, i1041:0) -> f6303_0_fact_Load(i1039:0, i1041:0 + 1) :|: i1041:0 <= i1039:0 && i1041:0 > 0 ---------------------------------------- (9) Obligation: Rules: f6303_0_fact_Load(i1039:0, i1041:0) -> f6303_0_fact_Load(i1039:0, i1041:0 + 1) :|: i1041:0 <= i1039:0 && i1041:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f6303_0_fact_Load(i1039:0, i1041:0) -> f6303_0_fact_Load(i1039:0, arith) :|: i1041:0 <= i1039:0 && i1041:0 > 0 && arith = i1041:0 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6303_0_fact_Load(i1039:0, i1041:0) -> f6303_0_fact_Load(i1039:0, arith) :|: i1041:0 <= i1039:0 && i1041:0 > 0 && arith = i1041:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f6303_0_fact_Load(i1039:0, i1041:0) -> f6303_0_fact_Load(i1039:0, arith) :|: i1041:0 <= i1039:0 && i1041:0 > 0 && arith = i1041:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f6303_0_fact_Load(i1039:0:0, i1041:0:0) -> f6303_0_fact_Load(i1039:0:0, i1041:0:0 + 1) :|: i1041:0:0 <= i1039:0:0 && i1041:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6303_0_fact_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f6303_0_fact_Load(i1039:0:0, i1041:0:0) -> f6303_0_fact_Load(i1039:0:0, c) :|: c = i1041:0:0 + 1 && (i1041:0:0 <= i1039:0:0 && i1041:0:0 > 0) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6303_0_fact_Load ] = -1*f6303_0_fact_Load_2 + f6303_0_fact_Load_1 The following rules are decreasing: f6303_0_fact_Load(i1039:0:0, i1041:0:0) -> f6303_0_fact_Load(i1039:0:0, c) :|: c = i1041:0:0 + 1 && (i1041:0:0 <= i1039:0:0 && i1041:0:0 > 0) The following rules are bounded: f6303_0_fact_Load(i1039:0:0, i1041:0:0) -> f6303_0_fact_Load(i1039:0:0, c) :|: c = i1041:0:0 + 1 && (i1041:0:0 <= i1039:0:0 && i1041: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: f6211_0_power_Load(EOS(STATIC_6211), i914, i916, i916) -> f6217_0_power_GT(EOS(STATIC_6217), i914, i916, i916, i914) :|: TRUE f6217_0_power_GT(EOS(STATIC_6217), i914, i916, i916, i914) -> f6225_0_power_GT(EOS(STATIC_6225), i914, i916, i916, i914) :|: i916 <= i914 f6225_0_power_GT(EOS(STATIC_6225), i914, i916, i916, i914) -> f6231_0_power_Load(EOS(STATIC_6231), i914, i916) :|: i916 <= i914 f6231_0_power_Load(EOS(STATIC_6231), i914, i916) -> f6237_0_power_Load(EOS(STATIC_6237), i914, i916) :|: TRUE f6237_0_power_Load(EOS(STATIC_6237), i914, i916) -> f6244_0_power_IntArithmetic(EOS(STATIC_6244), i914, i916) :|: TRUE f6244_0_power_IntArithmetic(EOS(STATIC_6244), i914, i916) -> f6251_0_power_Store(EOS(STATIC_6251), i914, i916) :|: TRUE f6251_0_power_Store(EOS(STATIC_6251), i914, i916) -> f6258_0_power_Inc(EOS(STATIC_6258), i914, i916) :|: TRUE f6258_0_power_Inc(EOS(STATIC_6258), i914, i916) -> f6265_0_power_JMP(EOS(STATIC_6265), i914, i916 + 1) :|: TRUE f6265_0_power_JMP(EOS(STATIC_6265), i914, i981) -> f6269_0_power_Load(EOS(STATIC_6269), i914, i981) :|: TRUE f6269_0_power_Load(EOS(STATIC_6269), i914, i981) -> f6206_0_power_Load(EOS(STATIC_6206), i914, i981) :|: TRUE f6206_0_power_Load(EOS(STATIC_6206), i914, i916) -> f6211_0_power_Load(EOS(STATIC_6211), i914, i916, i916) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f6211_0_power_Load(EOS(STATIC_6211), i914:0, i916:0, i916:0) -> f6211_0_power_Load(EOS(STATIC_6211), i914:0, i916:0 + 1, i916:0 + 1) :|: i916:0 <= i914:0 Filtered constant ground arguments: f6211_0_power_Load(x1, x2, x3, x4) -> f6211_0_power_Load(x2, x3, x4) EOS(x1) -> EOS Filtered duplicate arguments: f6211_0_power_Load(x1, x2, x3) -> f6211_0_power_Load(x1, x3) Finished conversion. Obtained 1 rules.P rules: f6211_0_power_Load(i914:0, i916:0) -> f6211_0_power_Load(i914:0, i916:0 + 1) :|: i916:0 <= i914:0 ---------------------------------------- (22) Obligation: Rules: f6211_0_power_Load(i914:0, i916:0) -> f6211_0_power_Load(i914:0, i916:0 + 1) :|: i916:0 <= i914:0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f6211_0_power_Load(i914:0, i916:0) -> f6211_0_power_Load(i914:0, arith) :|: i916:0 <= i914:0 && arith = i916:0 + 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6211_0_power_Load(i914:0, i916:0) -> f6211_0_power_Load(i914:0, arith) :|: i916:0 <= i914:0 && arith = i916:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f6211_0_power_Load(i914:0, i916:0) -> f6211_0_power_Load(i914:0, arith) :|: i916:0 <= i914:0 && arith = i916:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f6211_0_power_Load(i914:0:0, i916:0:0) -> f6211_0_power_Load(i914:0:0, i916:0:0 + 1) :|: i916:0:0 <= i914:0:0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6211_0_power_Load(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f6211_0_power_Load(i914:0:0, i916:0:0) -> f6211_0_power_Load(i914:0:0, c) :|: c = i916:0:0 + 1 && i916:0:0 <= i914:0:0 ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6211_0_power_Load(x, x1)] = x - x1 The following rules are decreasing: f6211_0_power_Load(i914:0:0, i916:0:0) -> f6211_0_power_Load(i914:0:0, c) :|: c = i916:0:0 + 1 && i916:0:0 <= i914:0:0 The following rules are bounded: f6211_0_power_Load(i914:0:0, i916:0:0) -> f6211_0_power_Load(i914:0:0, c) :|: c = i916:0:0 + 1 && i916:0:0 <= i914: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: f5626_0_exp_Load(EOS(STATIC_5626), i678, i66, i678, i66, i680, i680) -> f5629_0_exp_GT(EOS(STATIC_5629), i678, i66, i678, i66, i680, i680, i66) :|: TRUE f5629_0_exp_GT(EOS(STATIC_5629), i678, i66, i678, i66, i680, i680, i66) -> f5653_0_exp_GT(EOS(STATIC_5653), i678, i66, i678, i66, i680, i680, i66) :|: i680 <= i66 f5653_0_exp_GT(EOS(STATIC_5653), i678, i66, i678, i66, i680, i680, i66) -> f5665_0_exp_Load(EOS(STATIC_5665), i678, i66, i678, i66, i680) :|: i680 <= i66 f5665_0_exp_Load(EOS(STATIC_5665), i678, i66, i678, i66, i680) -> f5672_0_exp_Load(EOS(STATIC_5672), i678, i66, i678, i66, i680) :|: TRUE f5672_0_exp_Load(EOS(STATIC_5672), i678, i66, i678, i66, i680) -> f5679_0_exp_Load(EOS(STATIC_5679), i678, i66, i678, i66, i680, i678) :|: TRUE f5679_0_exp_Load(EOS(STATIC_5679), i678, i66, i678, i66, i680, i678) -> f5698_0_exp_InvokeMethod(EOS(STATIC_5698), i678, i66, i678, i66, i680, i678, i680) :|: TRUE f5698_0_exp_InvokeMethod(EOS(STATIC_5698), i678, i66, i678, i66, i680, i678, i680) -> f5718_0_power_ConstantStackPush(EOS(STATIC_5718), i678, i680, i678, i680) :|: i678 >= 1 && i66 < i678 && i680 <= i66 f5698_0_exp_InvokeMethod(EOS(STATIC_5698), i678, i66, i678, i66, i680, i678, i680) -> f5718_1_power_ConstantStackPush(EOS(STATIC_5718), i678, i66, i678, i66, i680, i678, i680) :|: i678 >= 1 && i66 < i678 && i680 <= i66 f5718_0_power_ConstantStackPush(EOS(STATIC_5718), i678, i680, i678, i680) -> f6486_0_power_ConstantStackPush(EOS(STATIC_6486), i678, i680, i678, i680) :|: TRUE f6257_0_power_Return(EOS(STATIC_6257), i965, i66, i965, i66, i967, i963) -> f6138_0_power_Return(EOS(STATIC_6138), i965, i66, i965, i66, i967, i963) :|: TRUE f6138_0_power_Return(EOS(STATIC_6138), i825, i66, i825, i66, i826, i824) -> f6143_0_exp_Load(EOS(STATIC_6143), i825, i66, i825, i66, i826, i824) :|: TRUE f6143_0_exp_Load(EOS(STATIC_6143), i825, i66, i825, i66, i826, i824) -> f6148_0_exp_InvokeMethod(EOS(STATIC_6148), i825, i66, i825, i66, i826, i824, i826) :|: TRUE f6148_0_exp_InvokeMethod(EOS(STATIC_6148), i825, i66, i825, i66, i826, i824, i826) -> f6154_0_fact_ConstantStackPush(EOS(STATIC_6154), i826, i826) :|: i825 >= 1 && i825 > i66 && i826 <= i66 f6148_0_exp_InvokeMethod(EOS(STATIC_6148), i825, i66, i825, i66, i826, i824, i826) -> f6154_1_fact_ConstantStackPush(EOS(STATIC_6154), i825, i66, i825, i66, i826, i824, i826) :|: i825 >= 1 && i825 > i66 && i826 <= i66 f6154_0_fact_ConstantStackPush(EOS(STATIC_6154), i826, i826) -> f6504_0_fact_ConstantStackPush(EOS(STATIC_6504), i826, i826) :|: TRUE f6325_0_fact_Return(EOS(STATIC_6325), i825, i66, i825, i66, i1054, i824, i1052) -> f6291_0_fact_Return(EOS(STATIC_6291), i825, i66, i825, i66, i1054, i824, i1052) :|: TRUE f6291_0_fact_Return(EOS(STATIC_6291), i825, i66, i825, i66, i1013, i824, i1012) -> f6293_0_exp_IntArithmetic(EOS(STATIC_6293), i825, i66, i825, i66, i1013, i824, i1012) :|: TRUE f6293_0_exp_IntArithmetic(EOS(STATIC_6293), i825, i66, i825, i66, i1013, i824, i1012) -> f6297_0_exp_IntArithmetic(EOS(STATIC_6297), i825, i66, i825, i66, i1013) :|: i1037 = i824 / i1012 && i1012 >= 1 f6297_0_exp_IntArithmetic(EOS(STATIC_6297), i825, i66, i825, i66, i1013) -> f6302_0_exp_Store(EOS(STATIC_6302), i825, i66, i825, i66, i1013) :|: TRUE f6302_0_exp_Store(EOS(STATIC_6302), i825, i66, i825, i66, i1013) -> f6306_0_exp_Inc(EOS(STATIC_6306), i825, i66, i825, i66, i1013) :|: TRUE f6306_0_exp_Inc(EOS(STATIC_6306), i825, i66, i825, i66, i1013) -> f6310_0_exp_JMP(EOS(STATIC_6310), i825, i66, i825, i66, i1013 + 1) :|: TRUE f6310_0_exp_JMP(EOS(STATIC_6310), i825, i66, i825, i66, i1047) -> f6315_0_exp_Load(EOS(STATIC_6315), i825, i66, i825, i66, i1047) :|: TRUE f6315_0_exp_Load(EOS(STATIC_6315), i825, i66, i825, i66, i1047) -> f5622_0_exp_Load(EOS(STATIC_5622), i825, i66, i825, i66, i1047) :|: TRUE f5622_0_exp_Load(EOS(STATIC_5622), i678, i66, i678, i66, i680) -> f5626_0_exp_Load(EOS(STATIC_5626), i678, i66, i678, i66, i680, i680) :|: TRUE f5718_1_power_ConstantStackPush(EOS(STATIC_5718), i965, i66, i965, i66, i967, i965, i967) -> f6257_0_power_Return(EOS(STATIC_6257), i965, i66, i965, i66, i967, i963) :|: TRUE f6154_1_fact_ConstantStackPush(EOS(STATIC_6154), i825, i66, i825, i66, i1054, i824, i1054) -> f6325_0_fact_Return(EOS(STATIC_6325), i825, i66, i825, i66, i1054, i824, i1052) :|: TRUE Combined rules. Obtained 4 IRulesP rules: f6325_0_fact_Return(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i1052:0 > 0 && i66:0 >= i1054:0 + 1 && i825:0 > i66:0 && i825:0 > 0 f6325_0_fact_Return'(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0 + 1, i963:0, i1052:1) :|: i1052:0 > 0 && i66:0 >= i1054:0 + 1 && i825:0 > i66:0 && i825:0 > 0 && i824:0 - i1052:0 * div < i1052:0 && i824:0 - i1052:0 * div + i1052:0 > 0 Removed following non-SCC rules: f6325_0_fact_Return'(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6486_0_power_ConstantStackPush(EOS(STATIC_6486), i825:0, i1054:0 + 1, i825:0, i1054:0 + 1) :|: i1052:0 > 0 && i66:0 >= i1054:0 + 1 && i825:0 > i66:0 && i825:0 > 0 && i824:0 - i1052:0 * div < i1052:0 && i824:0 - i1052:0 * div + i1052:0 > 0 f6325_0_fact_Return'(EOS(STATIC_6325), i825:0, i66:0, i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6504_0_fact_ConstantStackPush(EOS(STATIC_6504), i1054:0 + 1, i1054:0 + 1) :|: i1052:0 > 0 && i66:0 >= i1054:0 + 1 && i825:0 > i66:0 && i825:0 > 0 && i824:0 - i1052:0 * div < i1052:0 && i824:0 - i1052:0 * div + i1052:0 > 0 Filtered constant ground arguments: f6325_0_fact_Return(x1, x2, x3, x4, x5, x6, x7, x8) -> f6325_0_fact_Return(x2, x3, x4, x5, x6, x7, x8) f6325_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7, x8) -> f6325_0_fact_Return'(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Filtered duplicate arguments: f6325_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6325_0_fact_Return(x3, x4, x5, x6, x7) f6325_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6325_0_fact_Return'(x3, x4, x5, x6, x7) Finished conversion. Obtained 2 rules.P rules: f6325_0_fact_Return(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > 0 && i825:0 > i66:0 f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return(i825:0, i66:0, i1054:0 + 1, i963:0, i1052:1) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > i66:0 && i825:0 > 0 && i824:0 - i1052:0 * div + i1052:0 > 0 && i824:0 - i1052:0 * div < i1052:0 ---------------------------------------- (35) Obligation: Rules: f6325_0_fact_Return(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > 0 && i825:0 > i66:0 f6325_0_fact_Return'(x, x1, x2, x3, x4) -> f6325_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: f6325_0_fact_Return(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > 0 && i825:0 > i66:0 f6325_0_fact_Return'(x, x1, x2, x3, x4) -> f6325_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) f6325_0_fact_Return(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > 0 && i825:0 > i66:0 (2) f6325_0_fact_Return'(x, x1, x2, x3, x4) -> f6325_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) f6325_0_fact_Return(i825:0, i66:0, i1054:0, i824:0, i1052:0) -> f6325_0_fact_Return'(i825:0, i66:0, i1054:0, i824:0, i1052:0) :|: i66:0 >= i1054:0 + 1 && i1052:0 > 0 && i825:0 > 0 && i825:0 > i66:0 (2) f6325_0_fact_Return'(x, x1, x2, x3, x4) -> f6325_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: f6325_0_fact_Return(i825:0:0, i66:0:0, i1054:0:0, i824:0:0, i1052:0:0) -> f6325_0_fact_Return(i825:0:0, i66:0:0, i1054:0:0 + 1, x5:0, x6:0) :|: i824:0:0 - i1052:0:0 * x7:0 < i1052:0:0 && i824:0:0 - i1052:0:0 * x7:0 + i1052:0:0 > 0 && i825:0:0 > 0 && i825:0:0 > i66:0:0 && i1052:0:0 > 0 && i66:0:0 >= i1054:0:0 + 1 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6325_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f6325_0_fact_Return(i825:0:0, i66:0:0, i1054:0:0, i824:0:0, i1052:0:0) -> f6325_0_fact_Return(i825:0:0, i66:0:0, c, x5:0, x6:0) :|: c = i1054:0:0 + 1 && (i824:0:0 - i1052:0:0 * x7:0 < i1052:0:0 && i824:0:0 - i1052:0:0 * x7:0 + i1052:0:0 > 0 && i825:0:0 > 0 && i825:0:0 > i66:0:0 && i1052:0:0 > 0 && i66:0:0 >= i1054:0:0 + 1) ---------------------------------------- (44) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6325_0_fact_Return(x, x1, x2, x3, x4)] = x1 - x2 The following rules are decreasing: f6325_0_fact_Return(i825:0:0, i66:0:0, i1054:0:0, i824:0:0, i1052:0:0) -> f6325_0_fact_Return(i825:0:0, i66:0:0, c, x5:0, x6:0) :|: c = i1054:0:0 + 1 && (i824:0:0 - i1052:0:0 * x7:0 < i1052:0:0 && i824:0:0 - i1052:0:0 * x7:0 + i1052:0:0 > 0 && i825:0:0 > 0 && i825:0:0 > i66:0:0 && i1052:0:0 > 0 && i66:0:0 >= i1054:0:0 + 1) The following rules are bounded: f6325_0_fact_Return(i825:0:0, i66:0:0, i1054:0:0, i824:0:0, i1052:0:0) -> f6325_0_fact_Return(i825:0:0, i66:0:0, c, x5:0, x6:0) :|: c = i1054:0:0 + 1 && (i824:0:0 - i1052:0:0 * x7:0 < i1052:0:0 && i824:0:0 - i1052:0:0 * x7:0 + i1052:0:0 > 0 && i825:0:0 > 0 && i825:0:0 > i66:0:0 && i1052:0:0 > 0 && i66:0:0 >= i1054: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: f6358_0_cos_Load(EOS(STATIC_6358), i1125, i1126, i1125, i1126, i1128, i1128) -> f6360_0_cos_GT(EOS(STATIC_6360), i1125, i1126, i1125, i1126, i1128, i1128, i1126) :|: TRUE f6360_0_cos_GT(EOS(STATIC_6360), i1125, i1126, i1125, i1126, i1128, i1128, i1126) -> f6364_0_cos_GT(EOS(STATIC_6364), i1125, i1126, i1125, i1126, i1128, i1128, i1126) :|: i1128 <= i1126 f6364_0_cos_GT(EOS(STATIC_6364), i1125, i1126, i1125, i1126, i1128, i1128, i1126) -> f6368_0_cos_Load(EOS(STATIC_6368), i1125, i1126, i1125, i1126, i1128) :|: i1128 <= i1126 f6368_0_cos_Load(EOS(STATIC_6368), i1125, i1126, i1125, i1126, i1128) -> f6372_0_cos_ConstantStackPush(EOS(STATIC_6372), i1125, i1126, i1125, i1126, i1128) :|: TRUE f6372_0_cos_ConstantStackPush(EOS(STATIC_6372), i1125, i1126, i1125, i1126, i1128) -> f6376_0_cos_Load(EOS(STATIC_6376), i1125, i1126, i1125, i1126, i1128, -1) :|: TRUE f6376_0_cos_Load(EOS(STATIC_6376), i1125, i1126, i1125, i1126, i1128, matching1) -> f6378_0_cos_ConstantStackPush(EOS(STATIC_6378), i1125, i1126, i1125, i1126, i1128, -1, i1128) :|: TRUE && matching1 = -1 f6378_0_cos_ConstantStackPush(EOS(STATIC_6378), i1125, i1126, i1125, i1126, i1128, matching1, i1128) -> f6382_0_cos_IntArithmetic(EOS(STATIC_6382), i1125, i1126, i1125, i1126, i1128, -1, i1128, 2) :|: TRUE && matching1 = -1 f6382_0_cos_IntArithmetic(EOS(STATIC_6382), i1125, i1126, i1125, i1126, i1128, matching1, i1128, matching2) -> f6384_0_cos_InvokeMethod(EOS(STATIC_6384), i1125, i1126, i1125, i1126, i1128, -1, i1157) :|: i1157 = i1128 / 2 && i1128 > 1 && i1157 < i1128 && matching1 = -1 && matching2 = 2 f6384_0_cos_InvokeMethod(EOS(STATIC_6384), i1125, i1126, i1125, i1126, i1128, matching1, i1157) -> f6386_0_power_ConstantStackPush(EOS(STATIC_6386), -1, i1157, -1, i1157) :|: i1125 >= 1 && i1126 > 1 && i1157 >= 1 && i1128 > 1 && i1126 < i1125 && i1128 <= i1126 && matching1 = -1 f6384_0_cos_InvokeMethod(EOS(STATIC_6384), i1125, i1126, i1125, i1126, i1128, matching1, i1157) -> f6386_1_power_ConstantStackPush(EOS(STATIC_6386), i1125, i1126, i1125, i1126, i1128, -1, i1157) :|: i1125 >= 1 && i1126 > 1 && i1157 >= 1 && i1128 > 1 && i1126 < i1125 && i1128 <= i1126 && matching1 = -1 f6386_0_power_ConstantStackPush(EOS(STATIC_6386), matching1, i1157, matching2, i1157) -> f6638_0_power_ConstantStackPush(EOS(STATIC_6638), -1, i1157, -1, i1157) :|: TRUE && matching1 = -1 && matching2 = -1 f6390_0_power_Return(EOS(STATIC_6390), i1125, i1126, i1125, i1126, i1128, i1175) -> f6392_0_cos_Load(EOS(STATIC_6392), i1125, i1126, i1125, i1126, i1128, i1175) :|: TRUE f6392_0_cos_Load(EOS(STATIC_6392), i1125, i1126, i1125, i1126, i1128, i1175) -> f6394_0_cos_Load(EOS(STATIC_6394), i1125, i1126, i1125, i1126, i1128, i1175, i1125) :|: TRUE f6394_0_cos_Load(EOS(STATIC_6394), i1125, i1126, i1125, i1126, i1128, i1175, i1125) -> f6396_0_cos_InvokeMethod(EOS(STATIC_6396), i1125, i1126, i1125, i1126, i1128, i1175, i1125, i1128) :|: TRUE f6396_0_cos_InvokeMethod(EOS(STATIC_6396), i1125, i1126, i1125, i1126, i1128, i1175, i1125, i1128) -> f6398_0_power_ConstantStackPush(EOS(STATIC_6398), i1125, i1128, i1125, i1128) :|: i1125 >= 1 && i1126 > 1 && i1128 > 1 && i1126 < i1125 && i1128 <= i1126 f6396_0_cos_InvokeMethod(EOS(STATIC_6396), i1125, i1126, i1125, i1126, i1128, i1175, i1125, i1128) -> f6398_1_power_ConstantStackPush(EOS(STATIC_6398), i1125, i1126, i1125, i1126, i1128, i1175, i1125, i1128) :|: i1125 >= 1 && i1126 > 1 && i1128 > 1 && i1126 < i1125 && i1128 <= i1126 f6398_0_power_ConstantStackPush(EOS(STATIC_6398), i1125, i1128, i1125, i1128) -> f6656_0_power_ConstantStackPush(EOS(STATIC_6656), i1125, i1128, i1125, i1128) :|: TRUE f6402_0_power_Return(EOS(STATIC_6402), i1199, i1126, i1199, i1126, i1201, i1175, i1197) -> f6404_0_cos_IntArithmetic(EOS(STATIC_6404), i1199, i1126, i1199, i1126, i1201, i1175, i1197) :|: TRUE f6404_0_cos_IntArithmetic(EOS(STATIC_6404), i1199, i1126, i1199, i1126, i1201, i1175, i1197) -> f6406_0_cos_Load(EOS(STATIC_6406), i1199, i1126, i1199, i1126, i1201) :|: TRUE f6406_0_cos_Load(EOS(STATIC_6406), i1199, i1126, i1199, i1126, i1201) -> f6408_0_cos_InvokeMethod(EOS(STATIC_6408), i1199, i1126, i1199, i1126, i1201, i1201) :|: TRUE f6408_0_cos_InvokeMethod(EOS(STATIC_6408), i1199, i1126, i1199, i1126, i1201, i1201) -> f6410_0_fact_ConstantStackPush(EOS(STATIC_6410), i1201, i1201) :|: i1199 >= 1 && i1126 > 1 && i1201 > 1 && i1126 < i1199 && i1201 <= i1126 f6408_0_cos_InvokeMethod(EOS(STATIC_6408), i1199, i1126, i1199, i1126, i1201, i1201) -> f6410_1_fact_ConstantStackPush(EOS(STATIC_6410), i1199, i1126, i1199, i1126, i1201, i1201) :|: i1199 >= 1 && i1126 > 1 && i1201 > 1 && i1126 < i1199 && i1201 <= i1126 f6410_0_fact_ConstantStackPush(EOS(STATIC_6410), i1201, i1201) -> f6674_0_fact_ConstantStackPush(EOS(STATIC_6674), i1201, i1201) :|: TRUE f6414_0_fact_Return(EOS(STATIC_6414), i1199, i1126, i1199, i1126, i1217, i1215) -> f6416_0_cos_IntArithmetic(EOS(STATIC_6416), i1199, i1126, i1199, i1126, i1217, i1215) :|: TRUE f6416_0_cos_IntArithmetic(EOS(STATIC_6416), i1199, i1126, i1199, i1126, i1217, i1215) -> f6418_0_cos_IntArithmetic(EOS(STATIC_6418), i1199, i1126, i1199, i1126, i1217) :|: i1219 = i1203 / i1215 && i1215 >= 1 f6418_0_cos_IntArithmetic(EOS(STATIC_6418), i1199, i1126, i1199, i1126, i1217) -> f6420_0_cos_Store(EOS(STATIC_6420), i1199, i1126, i1199, i1126, i1217) :|: TRUE f6420_0_cos_Store(EOS(STATIC_6420), i1199, i1126, i1199, i1126, i1217) -> f6422_0_cos_Inc(EOS(STATIC_6422), i1199, i1126, i1199, i1126, i1217) :|: TRUE f6422_0_cos_Inc(EOS(STATIC_6422), i1199, i1126, i1199, i1126, i1217) -> f6424_0_cos_JMP(EOS(STATIC_6424), i1199, i1126, i1199, i1126, i1217 + 2) :|: TRUE f6424_0_cos_JMP(EOS(STATIC_6424), i1199, i1126, i1199, i1126, i1223) -> f6426_0_cos_Load(EOS(STATIC_6426), i1199, i1126, i1199, i1126, i1223) :|: TRUE f6426_0_cos_Load(EOS(STATIC_6426), i1199, i1126, i1199, i1126, i1223) -> f6356_0_cos_Load(EOS(STATIC_6356), i1199, i1126, i1199, i1126, i1223) :|: TRUE f6356_0_cos_Load(EOS(STATIC_6356), i1125, i1126, i1125, i1126, i1128) -> f6358_0_cos_Load(EOS(STATIC_6358), i1125, i1126, i1125, i1126, i1128, i1128) :|: TRUE f6386_1_power_ConstantStackPush(EOS(STATIC_6386), i1125, i1126, i1125, i1126, i1128, matching1, i1157) -> f6390_0_power_Return(EOS(STATIC_6390), i1125, i1126, i1125, i1126, i1128, i1175) :|: TRUE && matching1 = -1 f6398_1_power_ConstantStackPush(EOS(STATIC_6398), i1199, i1126, i1199, i1126, i1201, i1175, i1199, i1201) -> f6402_0_power_Return(EOS(STATIC_6402), i1199, i1126, i1199, i1126, i1201, i1175, i1197) :|: TRUE f6410_1_fact_ConstantStackPush(EOS(STATIC_6410), i1199, i1126, i1199, i1126, i1217, i1217) -> f6414_0_fact_Return(EOS(STATIC_6414), i1199, i1126, i1199, i1126, i1217, i1215) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f6414_0_fact_Return(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) -> f6414_0_fact_Return'(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) :|: i1217:0 + 2 <= i1126:0 && i1126:0 > 1 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 f6414_0_fact_Return'(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) -> f6414_0_fact_Return(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0 + 2, i1215:1) :|: i1217:0 + 2 <= i1126:0 && i1126:0 > 1 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 && i1203:0 - i1215:0 * div + i1215:0 > 0 && i1215:0 > i1203:0 - i1215:0 * div && i1217:0 + 2 - 2 * div1 < 2 && i1217:0 + 2 - 2 * div1 > -2 Removed following non-SCC rules: f6414_0_fact_Return'(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) -> f6656_0_power_ConstantStackPush(EOS(STATIC_6656), i1199:0, i1217:0 + 2, i1199:0, i1217:0 + 2) :|: i1217:0 + 2 <= i1126:0 && i1126:0 > 1 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 && i1203:0 - i1215:0 * div + i1215:0 > 0 && i1215:0 > i1203:0 - i1215:0 * div && i1217:0 + 2 - 2 * div1 < 2 && i1217:0 + 2 - 2 * div1 > -2 f6414_0_fact_Return'(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) -> f6674_0_fact_ConstantStackPush(EOS(STATIC_6674), i1217:0 + 2, i1217:0 + 2) :|: i1217:0 + 2 <= i1126:0 && i1126:0 > 1 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 && i1203:0 - i1215:0 * div + i1215:0 > 0 && i1215:0 > i1203:0 - i1215:0 * div && i1217:0 + 2 - 2 * div1 < 2 && i1217:0 + 2 - 2 * div1 > -2 f6414_0_fact_Return'(EOS(STATIC_6414), i1199:0, i1126:0, i1199:0, i1126:0, i1217:0, i1215:0) -> f6638_0_power_ConstantStackPush(EOS(STATIC_6638), -1, div1, -1, div1) :|: i1217:0 + 2 <= i1126:0 && i1126:0 > 1 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 && i1203:0 - i1215:0 * div + i1215:0 > 0 && i1215:0 > i1203:0 - i1215:0 * div && i1217:0 + 2 - 2 * div1 < 2 && i1217:0 + 2 - 2 * div1 > -2 Filtered constant ground arguments: f6414_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6414_0_fact_Return(x2, x3, x4, x5, x6, x7) f6414_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6414_0_fact_Return'(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f6414_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6414_0_fact_Return(x3, x4, x5, x6) f6414_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6414_0_fact_Return'(x3, x4, x5, x6) Finished conversion. Obtained 2 rules.P rules: f6414_0_fact_Return(i1199:0, i1126:0, i1217:0, i1215:0) -> f6414_0_fact_Return'(i1199:0, i1126:0, i1217:0, i1215:0) :|: i1126:0 > 1 && i1217:0 + 2 <= i1126:0 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1199:0 > i1126:0 && i1217:0 + 2 > div1 f6414_0_fact_Return'(i1199:0, i1126:0, i1217:0, i1215:0) -> f6414_0_fact_Return(i1199:0, i1126:0, i1217:0 + 2, i1215:1) :|: i1126:0 > 1 && i1217:0 + 2 <= i1126:0 && i1199:0 > 0 && i1215:0 > 0 && div1 > 0 && i1217:0 > -1 && i1217:0 + 2 > div1 && i1199:0 > i1126:0 && i1203:0 - i1215:0 * div + i1215:0 > 0 && i1215:0 > i1203:0 - i1215:0 * div && i1217:0 + 2 - 2 * div1 > -2 && i1217:0 + 2 - 2 * div1 < 2 ---------------------------------------- (48) Obligation: Rules: f6414_0_fact_Return(x, x1, x2, x3) -> f6414_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 f6414_0_fact_Return'(x5, x6, x7, x8) -> f6414_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: f6414_0_fact_Return(x, x1, x2, x3) -> f6414_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 f6414_0_fact_Return'(x5, x6, x7, x8) -> f6414_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) f6414_0_fact_Return(x, x1, x2, x3) -> f6414_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) f6414_0_fact_Return'(x5, x6, x7, x8) -> f6414_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) f6414_0_fact_Return(x, x1, x2, x3) -> f6414_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) f6414_0_fact_Return'(x5, x6, x7, x8) -> f6414_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: f6414_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6414_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: f6414_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (56) Obligation: Rules: f6414_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6414_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) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6414_0_fact_Return ] = -1/2*f6414_0_fact_Return_3 + 1/2*f6414_0_fact_Return_2 The following rules are decreasing: f6414_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6414_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: f6414_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6414_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: f6357_0_sin_Load(EOS(STATIC_6357), i1111, i1112, i1111, i1112, i1114, i1114) -> f6359_0_sin_GT(EOS(STATIC_6359), i1111, i1112, i1111, i1112, i1114, i1114, i1112) :|: TRUE f6359_0_sin_GT(EOS(STATIC_6359), i1111, i1112, i1111, i1112, i1114, i1114, i1112) -> f6362_0_sin_GT(EOS(STATIC_6362), i1111, i1112, i1111, i1112, i1114, i1114, i1112) :|: i1114 <= i1112 f6362_0_sin_GT(EOS(STATIC_6362), i1111, i1112, i1111, i1112, i1114, i1114, i1112) -> f6366_0_sin_Load(EOS(STATIC_6366), i1111, i1112, i1111, i1112, i1114) :|: i1114 <= i1112 f6366_0_sin_Load(EOS(STATIC_6366), i1111, i1112, i1111, i1112, i1114) -> f6370_0_sin_ConstantStackPush(EOS(STATIC_6370), i1111, i1112, i1111, i1112, i1114) :|: TRUE f6370_0_sin_ConstantStackPush(EOS(STATIC_6370), i1111, i1112, i1111, i1112, i1114) -> f6374_0_sin_Load(EOS(STATIC_6374), i1111, i1112, i1111, i1112, i1114, -1) :|: TRUE f6374_0_sin_Load(EOS(STATIC_6374), i1111, i1112, i1111, i1112, i1114, matching1) -> f6377_0_sin_ConstantStackPush(EOS(STATIC_6377), i1111, i1112, i1111, i1112, i1114, -1, i1114) :|: TRUE && matching1 = -1 f6377_0_sin_ConstantStackPush(EOS(STATIC_6377), i1111, i1112, i1111, i1112, i1114, matching1, i1114) -> f6380_0_sin_IntArithmetic(EOS(STATIC_6380), i1111, i1112, i1111, i1112, i1114, -1, i1114, 2) :|: TRUE && matching1 = -1 f6380_0_sin_IntArithmetic(EOS(STATIC_6380), i1111, i1112, i1111, i1112, i1114, matching1, i1114, matching2) -> f6383_0_sin_InvokeMethod(EOS(STATIC_6383), i1111, i1112, i1111, i1112, i1114, -1, i1156) :|: i1156 = i1114 / 2 && i1114 > 1 && i1156 < i1114 && matching1 = -1 && matching2 = 2 f6383_0_sin_InvokeMethod(EOS(STATIC_6383), i1111, i1112, i1111, i1112, i1114, matching1, i1156) -> f6385_0_power_ConstantStackPush(EOS(STATIC_6385), -1, i1156, -1, i1156) :|: i1111 >= 1 && i1112 > 1 && i1156 >= 1 && i1114 > 1 && i1112 < i1111 && i1114 <= i1112 && matching1 = -1 f6383_0_sin_InvokeMethod(EOS(STATIC_6383), i1111, i1112, i1111, i1112, i1114, matching1, i1156) -> f6385_1_power_ConstantStackPush(EOS(STATIC_6385), i1111, i1112, i1111, i1112, i1114, -1, i1156) :|: i1111 >= 1 && i1112 > 1 && i1156 >= 1 && i1114 > 1 && i1112 < i1111 && i1114 <= i1112 && matching1 = -1 f6385_0_power_ConstantStackPush(EOS(STATIC_6385), matching1, i1156, matching2, i1156) -> f6806_0_power_ConstantStackPush(EOS(STATIC_6806), -1, i1156, -1, i1156) :|: TRUE && matching1 = -1 && matching2 = -1 f6389_0_power_Return(EOS(STATIC_6389), i1111, i1112, i1111, i1112, i1114, i1165) -> f6391_0_sin_Load(EOS(STATIC_6391), i1111, i1112, i1111, i1112, i1114, i1165) :|: TRUE f6391_0_sin_Load(EOS(STATIC_6391), i1111, i1112, i1111, i1112, i1114, i1165) -> f6393_0_sin_Load(EOS(STATIC_6393), i1111, i1112, i1111, i1112, i1114, i1165, i1111) :|: TRUE f6393_0_sin_Load(EOS(STATIC_6393), i1111, i1112, i1111, i1112, i1114, i1165, i1111) -> f6395_0_sin_InvokeMethod(EOS(STATIC_6395), i1111, i1112, i1111, i1112, i1114, i1165, i1111, i1114) :|: TRUE f6395_0_sin_InvokeMethod(EOS(STATIC_6395), i1111, i1112, i1111, i1112, i1114, i1165, i1111, i1114) -> f6397_0_power_ConstantStackPush(EOS(STATIC_6397), i1111, i1114, i1111, i1114) :|: i1111 >= 1 && i1112 > 1 && i1114 > 1 && i1112 < i1111 && i1114 <= i1112 f6395_0_sin_InvokeMethod(EOS(STATIC_6395), i1111, i1112, i1111, i1112, i1114, i1165, i1111, i1114) -> f6397_1_power_ConstantStackPush(EOS(STATIC_6397), i1111, i1112, i1111, i1112, i1114, i1165, i1111, i1114) :|: i1111 >= 1 && i1112 > 1 && i1114 > 1 && i1112 < i1111 && i1114 <= i1112 f6397_0_power_ConstantStackPush(EOS(STATIC_6397), i1111, i1114, i1111, i1114) -> f6824_0_power_ConstantStackPush(EOS(STATIC_6824), i1111, i1114, i1111, i1114) :|: TRUE f6401_0_power_Return(EOS(STATIC_6401), i1187, i1112, i1187, i1112, i1189, i1165, i1185) -> f6403_0_sin_IntArithmetic(EOS(STATIC_6403), i1187, i1112, i1187, i1112, i1189, i1165, i1185) :|: TRUE f6403_0_sin_IntArithmetic(EOS(STATIC_6403), i1187, i1112, i1187, i1112, i1189, i1165, i1185) -> f6405_0_sin_Load(EOS(STATIC_6405), i1187, i1112, i1187, i1112, i1189) :|: TRUE f6405_0_sin_Load(EOS(STATIC_6405), i1187, i1112, i1187, i1112, i1189) -> f6407_0_sin_InvokeMethod(EOS(STATIC_6407), i1187, i1112, i1187, i1112, i1189, i1189) :|: TRUE f6407_0_sin_InvokeMethod(EOS(STATIC_6407), i1187, i1112, i1187, i1112, i1189, i1189) -> f6409_0_fact_ConstantStackPush(EOS(STATIC_6409), i1189, i1189) :|: i1187 >= 1 && i1112 > 1 && i1189 > 1 && i1112 < i1187 && i1189 <= i1112 f6407_0_sin_InvokeMethod(EOS(STATIC_6407), i1187, i1112, i1187, i1112, i1189, i1189) -> f6409_1_fact_ConstantStackPush(EOS(STATIC_6409), i1187, i1112, i1187, i1112, i1189, i1189) :|: i1187 >= 1 && i1112 > 1 && i1189 > 1 && i1112 < i1187 && i1189 <= i1112 f6409_0_fact_ConstantStackPush(EOS(STATIC_6409), i1189, i1189) -> f6842_0_fact_ConstantStackPush(EOS(STATIC_6842), i1189, i1189) :|: TRUE f6413_0_fact_Return(EOS(STATIC_6413), i1187, i1112, i1187, i1112, i1210, i1208) -> f6415_0_sin_IntArithmetic(EOS(STATIC_6415), i1187, i1112, i1187, i1112, i1210, i1208) :|: TRUE f6415_0_sin_IntArithmetic(EOS(STATIC_6415), i1187, i1112, i1187, i1112, i1210, i1208) -> f6417_0_sin_IntArithmetic(EOS(STATIC_6417), i1187, i1112, i1187, i1112, i1210) :|: i1218 = i1202 / i1208 && i1208 >= 1 f6417_0_sin_IntArithmetic(EOS(STATIC_6417), i1187, i1112, i1187, i1112, i1210) -> f6419_0_sin_Store(EOS(STATIC_6419), i1187, i1112, i1187, i1112, i1210) :|: TRUE f6419_0_sin_Store(EOS(STATIC_6419), i1187, i1112, i1187, i1112, i1210) -> f6421_0_sin_Inc(EOS(STATIC_6421), i1187, i1112, i1187, i1112, i1210) :|: TRUE f6421_0_sin_Inc(EOS(STATIC_6421), i1187, i1112, i1187, i1112, i1210) -> f6423_0_sin_JMP(EOS(STATIC_6423), i1187, i1112, i1187, i1112, i1210 + 2) :|: TRUE f6423_0_sin_JMP(EOS(STATIC_6423), i1187, i1112, i1187, i1112, i1222) -> f6425_0_sin_Load(EOS(STATIC_6425), i1187, i1112, i1187, i1112, i1222) :|: TRUE f6425_0_sin_Load(EOS(STATIC_6425), i1187, i1112, i1187, i1112, i1222) -> f6354_0_sin_Load(EOS(STATIC_6354), i1187, i1112, i1187, i1112, i1222) :|: TRUE f6354_0_sin_Load(EOS(STATIC_6354), i1111, i1112, i1111, i1112, i1114) -> f6357_0_sin_Load(EOS(STATIC_6357), i1111, i1112, i1111, i1112, i1114, i1114) :|: TRUE f6385_1_power_ConstantStackPush(EOS(STATIC_6385), i1111, i1112, i1111, i1112, i1114, matching1, i1156) -> f6389_0_power_Return(EOS(STATIC_6389), i1111, i1112, i1111, i1112, i1114, i1165) :|: TRUE && matching1 = -1 f6397_1_power_ConstantStackPush(EOS(STATIC_6397), i1187, i1112, i1187, i1112, i1189, i1165, i1187, i1189) -> f6401_0_power_Return(EOS(STATIC_6401), i1187, i1112, i1187, i1112, i1189, i1165, i1185) :|: TRUE f6409_1_fact_ConstantStackPush(EOS(STATIC_6409), i1187, i1112, i1187, i1112, i1210, i1210) -> f6413_0_fact_Return(EOS(STATIC_6413), i1187, i1112, i1187, i1112, i1210, i1208) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f6413_0_fact_Return(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) -> f6413_0_fact_Return'(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) :|: i1210:0 + 2 <= i1112:0 && i1112:0 > 1 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 f6413_0_fact_Return'(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) -> f6413_0_fact_Return(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0 + 2, i1208:1) :|: i1210:0 + 2 <= i1112:0 && i1112:0 > 1 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 && i1202:0 - i1208:0 * div + i1208:0 > 0 && i1208:0 > i1202:0 - i1208:0 * div && i1210:0 + 2 - 2 * div1 < 2 && i1210:0 + 2 - 2 * div1 > -2 Removed following non-SCC rules: f6413_0_fact_Return'(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) -> f6806_0_power_ConstantStackPush(EOS(STATIC_6806), -1, div1, -1, div1) :|: i1210:0 + 2 <= i1112:0 && i1112:0 > 1 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 && i1202:0 - i1208:0 * div + i1208:0 > 0 && i1208:0 > i1202:0 - i1208:0 * div && i1210:0 + 2 - 2 * div1 < 2 && i1210:0 + 2 - 2 * div1 > -2 f6413_0_fact_Return'(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) -> f6842_0_fact_ConstantStackPush(EOS(STATIC_6842), i1210:0 + 2, i1210:0 + 2) :|: i1210:0 + 2 <= i1112:0 && i1112:0 > 1 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 && i1202:0 - i1208:0 * div + i1208:0 > 0 && i1208:0 > i1202:0 - i1208:0 * div && i1210:0 + 2 - 2 * div1 < 2 && i1210:0 + 2 - 2 * div1 > -2 f6413_0_fact_Return'(EOS(STATIC_6413), i1187:0, i1112:0, i1187:0, i1112:0, i1210:0, i1208:0) -> f6824_0_power_ConstantStackPush(EOS(STATIC_6824), i1187:0, i1210:0 + 2, i1187:0, i1210:0 + 2) :|: i1210:0 + 2 <= i1112:0 && i1112:0 > 1 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 && i1202:0 - i1208:0 * div + i1208:0 > 0 && i1208:0 > i1202:0 - i1208:0 * div && i1210:0 + 2 - 2 * div1 < 2 && i1210:0 + 2 - 2 * div1 > -2 Filtered constant ground arguments: f6413_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6413_0_fact_Return(x2, x3, x4, x5, x6, x7) f6413_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6413_0_fact_Return'(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f6413_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6413_0_fact_Return(x3, x4, x5, x6) f6413_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6413_0_fact_Return'(x3, x4, x5, x6) Finished conversion. Obtained 2 rules.P rules: f6413_0_fact_Return(i1187:0, i1112:0, i1210:0, i1208:0) -> f6413_0_fact_Return'(i1187:0, i1112:0, i1210:0, i1208:0) :|: i1112:0 > 1 && i1210:0 + 2 <= i1112:0 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1187:0 > i1112:0 && i1210:0 + 2 > div1 f6413_0_fact_Return'(i1187:0, i1112:0, i1210:0, i1208:0) -> f6413_0_fact_Return(i1187:0, i1112:0, i1210:0 + 2, i1208:1) :|: i1112:0 > 1 && i1210:0 + 2 <= i1112:0 && i1187:0 > 0 && i1208:0 > 0 && div1 > 0 && i1210:0 > -1 && i1210:0 + 2 > div1 && i1187:0 > i1112:0 && i1202:0 - i1208:0 * div + i1208:0 > 0 && i1208:0 > i1202:0 - i1208:0 * div && i1210:0 + 2 - 2 * div1 > -2 && i1210:0 + 2 - 2 * div1 < 2 ---------------------------------------- (61) Obligation: Rules: f6413_0_fact_Return(x, x1, x2, x3) -> f6413_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 f6413_0_fact_Return'(x5, x6, x7, x8) -> f6413_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: f6413_0_fact_Return(x, x1, x2, x3) -> f6413_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 f6413_0_fact_Return'(x5, x6, x7, x8) -> f6413_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) f6413_0_fact_Return(x, x1, x2, x3) -> f6413_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) f6413_0_fact_Return'(x5, x6, x7, x8) -> f6413_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) f6413_0_fact_Return(x, x1, x2, x3) -> f6413_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) f6413_0_fact_Return'(x5, x6, x7, x8) -> f6413_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: f6413_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6413_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: f6413_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (69) Obligation: Rules: f6413_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6413_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) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6413_0_fact_Return ] = -1/2*f6413_0_fact_Return_3 + 1/2*f6413_0_fact_Return_2 The following rules are decreasing: f6413_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6413_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: f6413_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6413_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: f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(o12sub), java.lang.Object(o12sub), i93, i93) -> f1036_0_main_ArrayLength(EOS(STATIC_1036), java.lang.Object(o12sub), java.lang.Object(o12sub), i93, i93, java.lang.Object(o12sub)) :|: TRUE f1036_0_main_ArrayLength(EOS(STATIC_1036), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, java.lang.Object(ARRAY(i101))) -> f1043_0_main_ArrayLength(EOS(STATIC_1043), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, java.lang.Object(ARRAY(i101))) :|: i101 >= 0 f1043_0_main_ArrayLength(EOS(STATIC_1043), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, java.lang.Object(ARRAY(i101))) -> f1050_0_main_GE(EOS(STATIC_1050), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, i101) :|: i101 >= 0 f1050_0_main_GE(EOS(STATIC_1050), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, i101) -> f1068_0_main_GE(EOS(STATIC_1068), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, i101) :|: i93 < i101 f1068_0_main_GE(EOS(STATIC_1068), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, i101) -> f1127_0_main_Load(EOS(STATIC_1127), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: i93 < i101 f1127_0_main_Load(EOS(STATIC_1127), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f1471_0_main_ConstantStackPush(EOS(STATIC_1471), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) :|: TRUE f1471_0_main_ConstantStackPush(EOS(STATIC_1471), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) -> f1499_0_main_IntArithmetic(EOS(STATIC_1499), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, 2) :|: TRUE f1499_0_main_IntArithmetic(EOS(STATIC_1499), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, matching1) -> f1958_0_main_NE(EOS(STATIC_1958), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93 % 2) :|: TRUE && matching1 = 2 f1958_0_main_NE(EOS(STATIC_1958), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f1963_0_main_NE(EOS(STATIC_1963), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 1) :|: TRUE && matching1 = 1 f1958_0_main_NE(EOS(STATIC_1958), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f1964_0_main_NE(EOS(STATIC_1964), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE && matching1 = 0 f1963_0_main_NE(EOS(STATIC_1963), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f1968_0_main_Load(EOS(STATIC_1968), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: 1 > 0 && matching1 = 1 f1968_0_main_Load(EOS(STATIC_1968), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f1974_0_main_ConstantStackPush(EOS(STATIC_1974), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) :|: TRUE f1974_0_main_ConstantStackPush(EOS(STATIC_1974), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) -> f2008_0_main_IntArithmetic(EOS(STATIC_2008), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, 3) :|: TRUE f2008_0_main_IntArithmetic(EOS(STATIC_2008), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, matching1) -> f2014_0_main_NE(EOS(STATIC_2014), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93 % 3) :|: TRUE && matching1 = 3 f2014_0_main_NE(EOS(STATIC_2014), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i170) -> f2020_0_main_NE(EOS(STATIC_2020), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i170) :|: TRUE f2014_0_main_NE(EOS(STATIC_2014), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f2021_0_main_NE(EOS(STATIC_2021), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE && matching1 = 0 f2020_0_main_NE(EOS(STATIC_2020), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i170) -> f2038_0_main_Load(EOS(STATIC_2038), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: i170 > 0 f2038_0_main_Load(EOS(STATIC_2038), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f2050_0_main_ConstantStackPush(EOS(STATIC_2050), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) :|: TRUE f2050_0_main_ConstantStackPush(EOS(STATIC_2050), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93) -> f2061_0_main_IntArithmetic(EOS(STATIC_2061), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, 5) :|: TRUE f2061_0_main_IntArithmetic(EOS(STATIC_2061), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93, matching1) -> f2079_0_main_NE(EOS(STATIC_2079), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i93 % 5) :|: TRUE && matching1 = 5 f2079_0_main_NE(EOS(STATIC_2079), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i190) -> f2130_0_main_NE(EOS(STATIC_2130), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i190) :|: TRUE f2079_0_main_NE(EOS(STATIC_2079), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f2132_0_main_NE(EOS(STATIC_2132), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE && matching1 = 0 f2130_0_main_NE(EOS(STATIC_2130), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i190) -> f2407_0_main_ConstantStackPush(EOS(STATIC_2407), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: i190 > 0 f2407_0_main_ConstantStackPush(EOS(STATIC_2407), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f2851_0_main_Store(EOS(STATIC_2851), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE f2851_0_main_Store(EOS(STATIC_2851), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f3655_0_main_Load(EOS(STATIC_3655), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE && matching1 = 0 f3655_0_main_Load(EOS(STATIC_3655), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f3902_0_main_Load(EOS(STATIC_3902), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, 0) :|: TRUE && matching1 = 0 f3902_0_main_Load(EOS(STATIC_3902), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i284) -> f4094_0_main_Load(EOS(STATIC_4094), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i284) :|: TRUE f4094_0_main_Load(EOS(STATIC_4094), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i319) -> f4197_0_main_Load(EOS(STATIC_4197), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i319) :|: TRUE f4197_0_main_Load(EOS(STATIC_4197), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i343) -> f4214_0_main_ConstantStackPush(EOS(STATIC_4214), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i343, i343) :|: TRUE f4214_0_main_ConstantStackPush(EOS(STATIC_4214), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i343, i343) -> f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i343, i343, 100) :|: TRUE f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358, i358, matching1) -> f4261_0_main_GE(EOS(STATIC_4261), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358, i358, 100) :|: TRUE && matching1 = 100 f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i359, i359, matching1) -> f4262_0_main_GE(EOS(STATIC_4262), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i359, i359, 100) :|: TRUE && matching1 = 100 f4261_0_main_GE(EOS(STATIC_4261), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358, i358, matching1) -> f4282_0_main_Inc(EOS(STATIC_4282), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358) :|: i358 < 100 && matching1 = 100 f4282_0_main_Inc(EOS(STATIC_4282), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358) -> f4359_0_main_JMP(EOS(STATIC_4359), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i358 + 1) :|: TRUE f4359_0_main_JMP(EOS(STATIC_4359), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i394) -> f4586_0_main_Load(EOS(STATIC_4586), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i394) :|: TRUE f4586_0_main_Load(EOS(STATIC_4586), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i394) -> f4197_0_main_Load(EOS(STATIC_4197), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i394) :|: TRUE f4262_0_main_GE(EOS(STATIC_4262), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i359, i359, matching1) -> f4305_0_main_Inc(EOS(STATIC_4305), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: i359 >= 100 && matching1 = 100 f4305_0_main_Inc(EOS(STATIC_4305), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f4207_0_main_Inc(EOS(STATIC_4207), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: TRUE f4207_0_main_Inc(EOS(STATIC_4207), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i330) -> f4229_0_main_JMP(EOS(STATIC_4229), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i330 + 1) :|: TRUE f4229_0_main_JMP(EOS(STATIC_4229), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i351) -> f4253_0_main_Load(EOS(STATIC_4253), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i351) :|: TRUE f4253_0_main_Load(EOS(STATIC_4253), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i351) -> f996_0_main_Load(EOS(STATIC_996), java.lang.Object(ARRAY(i328)), java.lang.Object(ARRAY(i328)), i351) :|: TRUE f996_0_main_Load(EOS(STATIC_996), java.lang.Object(o12sub), java.lang.Object(o12sub), i93) -> f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(o12sub), java.lang.Object(o12sub), i93, i93) :|: TRUE f2132_0_main_NE(EOS(STATIC_2132), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f2409_0_main_Load(EOS(STATIC_2409), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: TRUE && matching1 = 0 f2409_0_main_Load(EOS(STATIC_2409), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f2852_0_main_ArrayLength(EOS(STATIC_2852), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) :|: TRUE f2852_0_main_ArrayLength(EOS(STATIC_2852), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) -> f3658_0_main_Load(EOS(STATIC_3658), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) :|: i101 >= 0 f3658_0_main_Load(EOS(STATIC_3658), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) -> f3668_0_main_InvokeMethod(EOS(STATIC_3668), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: TRUE f3668_0_main_InvokeMethod(EOS(STATIC_3668), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f3727_0_exp_ConstantStackPush(EOS(STATIC_3727), i101, i93, i101, i93) :|: i101 >= 1 && i93 < i101 f3668_0_main_InvokeMethod(EOS(STATIC_3668), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f3727_1_exp_ConstantStackPush(EOS(STATIC_3727), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: i101 >= 1 && i93 < i101 f3727_0_exp_ConstantStackPush(EOS(STATIC_3727), i101, i93, i101, i93) -> f7050_0_exp_ConstantStackPush(EOS(STATIC_7050), i101, i93, i101, i93) :|: TRUE f5714_0_exp_Return(EOS(STATIC_5714), java.lang.Object(ARRAY(i702)), java.lang.Object(ARRAY(i702)), i704, i700) -> f5204_0_exp_Return(EOS(STATIC_5204), java.lang.Object(ARRAY(i702)), java.lang.Object(ARRAY(i702)), i704, i700) :|: TRUE f5204_0_exp_Return(EOS(STATIC_5204), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555, i553) -> f5209_0_main_StackPop(EOS(STATIC_5209), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555, i553) :|: TRUE f5209_0_main_StackPop(EOS(STATIC_5209), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555, i553) -> f5280_0_main_JMP(EOS(STATIC_5280), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555) :|: TRUE f5280_0_main_JMP(EOS(STATIC_5280), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555) -> f5285_0_main_Inc(EOS(STATIC_5285), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555) :|: TRUE f5285_0_main_Inc(EOS(STATIC_5285), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555) -> f4207_0_main_Inc(EOS(STATIC_4207), java.lang.Object(ARRAY(i554)), java.lang.Object(ARRAY(i554)), i555) :|: TRUE f2021_0_main_NE(EOS(STATIC_2021), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f2042_0_main_Load(EOS(STATIC_2042), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: TRUE && matching1 = 0 f2042_0_main_Load(EOS(STATIC_2042), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f2051_0_main_ArrayLength(EOS(STATIC_2051), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) :|: TRUE f2051_0_main_ArrayLength(EOS(STATIC_2051), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) -> f2062_0_main_Load(EOS(STATIC_2062), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) :|: i101 >= 0 f2062_0_main_Load(EOS(STATIC_2062), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) -> f2081_0_main_InvokeMethod(EOS(STATIC_2081), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: TRUE f2081_0_main_InvokeMethod(EOS(STATIC_2081), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f2133_0_cos_ConstantStackPush(EOS(STATIC_2133), i101, i93, i101, i93) :|: i101 >= 1 && i93 < i101 f2081_0_main_InvokeMethod(EOS(STATIC_2081), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f2133_1_cos_ConstantStackPush(EOS(STATIC_2133), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: i101 >= 1 && i93 < i101 f2133_0_cos_ConstantStackPush(EOS(STATIC_2133), i101, i93, i101, i93) -> f7080_0_cos_ConstantStackPush(EOS(STATIC_7080), i101, i93, i101, i93) :|: TRUE f6381_0_cos_Return(EOS(STATIC_6381), java.lang.Object(ARRAY(i1147)), java.lang.Object(ARRAY(i1147)), i1149) -> f5399_0_cos_Return(EOS(STATIC_5399), java.lang.Object(ARRAY(i1147)), java.lang.Object(ARRAY(i1147)), i1149) :|: TRUE f5399_0_cos_Return(EOS(STATIC_5399), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) -> f5404_0_main_StackPop(EOS(STATIC_5404), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) :|: TRUE f5404_0_main_StackPop(EOS(STATIC_5404), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) -> f5415_0_main_JMP(EOS(STATIC_5415), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) :|: TRUE f5415_0_main_JMP(EOS(STATIC_5415), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) -> f5463_0_main_Inc(EOS(STATIC_5463), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) :|: TRUE f5463_0_main_Inc(EOS(STATIC_5463), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) -> f4207_0_main_Inc(EOS(STATIC_4207), java.lang.Object(ARRAY(i625)), java.lang.Object(ARRAY(i625)), i626) :|: TRUE f1964_0_main_NE(EOS(STATIC_1964), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, matching1) -> f1969_0_main_Load(EOS(STATIC_1969), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) :|: TRUE && matching1 = 0 f1969_0_main_Load(EOS(STATIC_1969), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93) -> f1977_0_main_ArrayLength(EOS(STATIC_1977), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) :|: TRUE f1977_0_main_ArrayLength(EOS(STATIC_1977), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, java.lang.Object(ARRAY(i101))) -> f2009_0_main_Load(EOS(STATIC_2009), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) :|: i101 >= 0 f2009_0_main_Load(EOS(STATIC_2009), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101) -> f2015_0_main_InvokeMethod(EOS(STATIC_2015), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: TRUE f2015_0_main_InvokeMethod(EOS(STATIC_2015), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f2022_0_sin_Load(EOS(STATIC_2022), i101, i93, i101, i93) :|: i101 >= 1 && i93 < i101 f2015_0_main_InvokeMethod(EOS(STATIC_2015), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) -> f2022_1_sin_Load(EOS(STATIC_2022), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i93, i101, i93) :|: i101 >= 1 && i93 < i101 f2022_0_sin_Load(EOS(STATIC_2022), i101, i93, i101, i93) -> f7110_0_sin_Load(EOS(STATIC_7110), i101, i93, i101, i93) :|: TRUE f6379_0_sin_Return(EOS(STATIC_6379), java.lang.Object(ARRAY(i1140)), java.lang.Object(ARRAY(i1140)), i1142, i1138) -> f5396_0_sin_Return(EOS(STATIC_5396), java.lang.Object(ARRAY(i1140)), java.lang.Object(ARRAY(i1140)), i1142, i1138) :|: TRUE f5396_0_sin_Return(EOS(STATIC_5396), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623, i621) -> f5402_0_main_StackPop(EOS(STATIC_5402), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623, i621) :|: TRUE f5402_0_main_StackPop(EOS(STATIC_5402), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623, i621) -> f5412_0_main_JMP(EOS(STATIC_5412), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623) :|: TRUE f5412_0_main_JMP(EOS(STATIC_5412), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623) -> f5450_0_main_Inc(EOS(STATIC_5450), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623) :|: TRUE f5450_0_main_Inc(EOS(STATIC_5450), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623) -> f4207_0_main_Inc(EOS(STATIC_4207), java.lang.Object(ARRAY(i622)), java.lang.Object(ARRAY(i622)), i623) :|: TRUE f3727_1_exp_ConstantStackPush(EOS(STATIC_3727), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i704, i702, i704) -> f5714_0_exp_Return(EOS(STATIC_5714), java.lang.Object(ARRAY(i702)), java.lang.Object(ARRAY(i702)), i704, i700) :|: TRUE f2133_1_cos_ConstantStackPush(EOS(STATIC_2133), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1149, i1147, i1149) -> f6381_0_cos_Return(EOS(STATIC_6381), java.lang.Object(ARRAY(i1147)), java.lang.Object(ARRAY(i1147)), i1149) :|: TRUE f2022_1_sin_Load(EOS(STATIC_2022), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1142, i1140, i1142) -> f6379_0_sin_Return(EOS(STATIC_6379), java.lang.Object(ARRAY(i1140)), java.lang.Object(ARRAY(i1140)), i1142, i1138) :|: TRUE Combined rules. Obtained 13 IRulesP rules: f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 = 0 f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i359:0, 100) -> f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i93:0 + 1) :|: i359:0 > 99 f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) :|: i101:0 > -1 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 5 * div2 > 0 && i93:0 - 3 * div1 > 0 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, 0, 0, 100) :|: i93:0 - 3 * div1 > 0 && i93:0 - 5 * div2 > 0 && i101:0 > -1 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 5 * div2 < 5 && i93:0 - 3 * div1 < 3 f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 > 0 && i93:0 - 5 * div2 = 0 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i93:0 + 1) :|: i93:0 - 3 * div1 > 0 && i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 5 * div2 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 5 * div2 < 5 && i93:0 - 5 * div2 > -5 f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i358:0, i358:0, 100) -> f4239_0_main_GE(EOS(STATIC_4239), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i358:0 + 1, i358:0 + 1, 100) :|: i358:0 < 100 f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 0 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i93:0 + 1) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 3 * div1 > -3 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f1002_0_main_Load(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i93:0 + 1) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 0 && i93:0 - 2 * div < 2 && i93:0 - 2 * div > -2 Removed following non-SCC rules: f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f7080_0_cos_ConstantStackPush(EOS(STATIC_7080), i101:0, i93:0, i101:0, i93:0) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 3 * div1 > -3 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f7050_0_exp_ConstantStackPush(EOS(STATIC_7050), i101:0, i93:0, i101:0, i93:0) :|: i93:0 - 3 * div1 > 0 && i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 5 * div2 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 5 * div2 < 5 && i93:0 - 5 * div2 > -5 f1002_0_main_Load'(EOS(STATIC_1002), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i93:0, i93:0) -> f7110_0_sin_Load(EOS(STATIC_7110), i101:0, i93:0, i101:0, i93:0) :|: i101:0 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 0 && i93:0 - 2 * div < 2 && i93:0 - 2 * div > -2 Filtered constant ground arguments: f1002_0_main_Load(x1, x2, x3, x4, x5) -> f1002_0_main_Load(x2, x3, x4, x5) f1002_0_main_Load'(x1, x2, x3, x4, x5) -> f1002_0_main_Load'(x2, x3, x4, x5) f4239_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f4239_0_main_GE(x2, x3, x4, x5, x6) Filtered duplicate arguments: f1002_0_main_Load(x1, x2, x3, x4) -> f1002_0_main_Load(x2, x4) f1002_0_main_Load'(x1, x2, x3, x4) -> f1002_0_main_Load'(x2, x4) f4239_0_main_GE(x1, x2, x3, x4, x5) -> f4239_0_main_GE(x2, x3, x5) Finished conversion. Obtained 10 rules.P rules: f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) :|: i93:0 < i101:0 && i101:0 > 0 && i93:0 - 3 * div1 = 0 && i93:0 - 2 * div = 1 f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i101:0) :|: i359:0 > 99 f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) :|: i93:0 < i101:0 && i101:0 > -1 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 > 0 && i93:0 - 5 * div2 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, 0, i101:0) :|: i93:0 - 5 * div2 > 0 && i93:0 - 3 * div1 > 0 && i101:0 > -1 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 5 * div2 < 5 f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) :|: i93:0 < i101:0 && i101:0 > 0 && i93:0 - 2 * div = 1 && i93:0 - 5 * div2 = 0 && i93:0 - 3 * div1 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i101:0) :|: i101:0 > 0 && i93:0 - 3 * div1 > 0 && i93:0 < i101:0 && i93:0 - 2 * div = 1 && i93:0 - 5 * div2 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 < 3 && i93:0 - 5 * div2 > -5 && i93:0 - 5 * div2 < 5 f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i358:0, i101:0) -> f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i358:0 + 1, i101:0) :|: i358:0 < 100 f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) :|: i93:0 < i101:0 && i93:0 - 2 * div = 0 && i101:0 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i101:0) :|: i93:0 < i101:0 && i101:0 > 0 && i93:0 - 2 * div = 1 && i93:0 - 3 * div1 = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 && i93:0 - 3 * div1 > -3 && i93:0 - 3 * div1 < 3 f1002_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i93:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i101:0) :|: i93:0 < i101:0 && i101:0 > 0 && i93:0 - 2 * div = 0 && i93:0 - 2 * div > -2 && i93:0 - 2 * div < 2 ---------------------------------------- (74) Obligation: Rules: f1002_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > 0 && x1 - 3 * x2 = 0 && x1 - 2 * x3 = 1 f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), i93:0 + 1, i101:0) :|: i359:0 > 99 f1002_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x4) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x4)), x5, x4) :|: x5 < x4 && x4 > -1 && x5 - 2 * x6 = 1 && x5 - 3 * x7 > 0 && x5 - 5 * x8 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x9)), x10, x9) -> f4239_0_main_GE(java.lang.Object(ARRAY(x9)), x10, 0, x9) :|: x10 - 5 * x11 > 0 && x10 - 3 * x12 > 0 && x9 > -1 && x10 < x9 && x10 - 2 * x13 = 1 && x10 - 2 * x13 > -2 && x10 - 2 * x13 < 2 && x10 - 3 * x12 < 3 && x10 - 5 * x11 < 5 f1002_0_main_Load(java.lang.Object(ARRAY(x14)), x15, x14) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x14)), x15, x14) :|: x15 < x14 && x14 > 0 && x15 - 2 * x16 = 1 && x15 - 5 * x17 = 0 && x15 - 3 * x18 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x19)), x20, x19) -> f1002_0_main_Load(java.lang.Object(ARRAY(x19)), x20 + 1, x19) :|: x19 > 0 && x20 - 3 * x21 > 0 && x20 < x19 && x20 - 2 * x22 = 1 && x20 - 5 * x23 = 0 && x20 - 2 * x22 > -2 && x20 - 2 * x22 < 2 && x20 - 3 * x21 < 3 && x20 - 5 * x23 > -5 && x20 - 5 * x23 < 5 f4239_0_main_GE(java.lang.Object(ARRAY(x24)), x25, x26, x24) -> f4239_0_main_GE(java.lang.Object(ARRAY(x24)), x25, x26 + 1, x24) :|: x26 < 100 f1002_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x28 - 2 * x29 = 0 && x27 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x30)), x31, x30) -> f1002_0_main_Load(java.lang.Object(ARRAY(x30)), x31 + 1, x30) :|: x31 < x30 && x30 > 0 && x31 - 2 * x32 = 1 && x31 - 3 * x33 = 0 && x31 - 2 * x32 > -2 && x31 - 2 * x32 < 2 && x31 - 3 * x33 > -3 && x31 - 3 * x33 < 3 f1002_0_main_Load'(java.lang.Object(ARRAY(x34)), x35, x34) -> f1002_0_main_Load(java.lang.Object(ARRAY(x34)), x35 + 1, x34) :|: x35 < x34 && x34 > 0 && x35 - 2 * x36 = 0 && x35 - 2 * x36 > -2 && x35 - 2 * x36 < 2 ---------------------------------------- (75) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (76) Obligation: Rules: f1002_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > 0 && x1 - 3 * x2 = 0 && x1 - 2 * x3 = 1 f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i359:0 > 99 && arith = i93:0 + 1 f1002_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x4) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x4)), x5, x4) :|: x5 < x4 && x4 > -1 && x5 - 2 * x6 = 1 && x5 - 3 * x7 > 0 && x5 - 5 * x8 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x9)), x10, x9) -> f4239_0_main_GE(java.lang.Object(ARRAY(x9)), x10, 0, x9) :|: x10 - 5 * x11 > 0 && x10 - 3 * x12 > 0 && x9 > -1 && x10 < x9 && x10 - 2 * x13 = 1 && x10 - 2 * x13 > -2 && x10 - 2 * x13 < 2 && x10 - 3 * x12 < 3 && x10 - 5 * x11 < 5 f1002_0_main_Load(java.lang.Object(ARRAY(x14)), x15, x14) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x14)), x15, x14) :|: x15 < x14 && x14 > 0 && x15 - 2 * x16 = 1 && x15 - 5 * x17 = 0 && x15 - 3 * x18 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f1002_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x37 > 0 && x38 - 3 * x40 > 0 && x38 < x37 && x38 - 2 * x41 = 1 && x38 - 5 * x42 = 0 && x38 - 2 * x41 > -2 && x38 - 2 * x41 < 2 && x38 - 3 * x40 < 3 && x38 - 5 * x42 > -5 && x38 - 5 * x42 < 5 && x39 = x38 + 1 f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x45, x43) -> f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x46, x43) :|: x45 < 100 && x46 = x45 + 1 f1002_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x28 - 2 * x29 = 0 && x27 > 0 f1002_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1002_0_main_Load(java.lang.Object(ARRAY(x47)), x49, x47) :|: x48 < x47 && x47 > 0 && x48 - 2 * x50 = 1 && x48 - 3 * x51 = 0 && x48 - 2 * x50 > -2 && x48 - 2 * x50 < 2 && x48 - 3 * x51 > -3 && x48 - 3 * x51 < 3 && x49 = x48 + 1 f1002_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1002_0_main_Load(java.lang.Object(ARRAY(x52)), x54, x52) :|: x53 < x52 && x52 > 0 && x53 - 2 * x55 = 0 && x53 - 2 * x55 > -2 && x53 - 2 * x55 < 2 && x54 = x53 + 1 ---------------------------------------- (77) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1002_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > 0 && x1 - 3 * x2 = 0 && x1 - 2 * x3 = 1 (2) f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i359:0 > 99 && arith = i93:0 + 1 (3) f1002_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x4) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x4)), x5, x4) :|: x5 < x4 && x4 > -1 && x5 - 2 * x6 = 1 && x5 - 3 * x7 > 0 && x5 - 5 * x8 > 0 (4) f1002_0_main_Load'(java.lang.Object(ARRAY(x9)), x10, x9) -> f4239_0_main_GE(java.lang.Object(ARRAY(x9)), x10, 0, x9) :|: x10 - 5 * x11 > 0 && x10 - 3 * x12 > 0 && x9 > -1 && x10 < x9 && x10 - 2 * x13 = 1 && x10 - 2 * x13 > -2 && x10 - 2 * x13 < 2 && x10 - 3 * x12 < 3 && x10 - 5 * x11 < 5 (5) f1002_0_main_Load(java.lang.Object(ARRAY(x14)), x15, x14) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x14)), x15, x14) :|: x15 < x14 && x14 > 0 && x15 - 2 * x16 = 1 && x15 - 5 * x17 = 0 && x15 - 3 * x18 > 0 (6) f1002_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f1002_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x37 > 0 && x38 - 3 * x40 > 0 && x38 < x37 && x38 - 2 * x41 = 1 && x38 - 5 * x42 = 0 && x38 - 2 * x41 > -2 && x38 - 2 * x41 < 2 && x38 - 3 * x40 < 3 && x38 - 5 * x42 > -5 && x38 - 5 * x42 < 5 && x39 = x38 + 1 (7) f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x45, x43) -> f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x46, x43) :|: x45 < 100 && x46 = x45 + 1 (8) f1002_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x28 - 2 * x29 = 0 && x27 > 0 (9) f1002_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1002_0_main_Load(java.lang.Object(ARRAY(x47)), x49, x47) :|: x48 < x47 && x47 > 0 && x48 - 2 * x50 = 1 && x48 - 3 * x51 = 0 && x48 - 2 * x50 > -2 && x48 - 2 * x50 < 2 && x48 - 3 * x51 > -3 && x48 - 3 * x51 < 3 && x49 = x48 + 1 (10) f1002_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1002_0_main_Load(java.lang.Object(ARRAY(x52)), x54, x52) :|: x53 < x52 && x52 > 0 && x53 - 2 * x55 = 0 && x53 - 2 * x55 > -2 && x53 - 2 * x55 < 2 && x54 = x53 + 1 Arcs: (1) -> (9) (2) -> (1), (3), (5), (8) (3) -> (4), (6), (9) (4) -> (7) (5) -> (6), (9) (6) -> (8) (7) -> (2), (7) (8) -> (10) (9) -> (8) (10) -> (1), (3), (5) This digraph is fully evaluated! ---------------------------------------- (78) Obligation: Termination digraph: Nodes: (1) f1002_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x > 0 && x1 - 3 * x2 = 0 && x1 - 2 * x3 = 1 (2) f4239_0_main_GE(java.lang.Object(ARRAY(i101:0)), i93:0, i359:0, i101:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i359:0 > 99 && arith = i93:0 + 1 (3) f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x45, x43) -> f4239_0_main_GE(java.lang.Object(ARRAY(x43)), x44, x46, x43) :|: x45 < 100 && x46 = x45 + 1 (4) f1002_0_main_Load'(java.lang.Object(ARRAY(x9)), x10, x9) -> f4239_0_main_GE(java.lang.Object(ARRAY(x9)), x10, 0, x9) :|: x10 - 5 * x11 > 0 && x10 - 3 * x12 > 0 && x9 > -1 && x10 < x9 && x10 - 2 * x13 = 1 && x10 - 2 * x13 > -2 && x10 - 2 * x13 < 2 && x10 - 3 * x12 < 3 && x10 - 5 * x11 < 5 (5) f1002_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x4) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x4)), x5, x4) :|: x5 < x4 && x4 > -1 && x5 - 2 * x6 = 1 && x5 - 3 * x7 > 0 && x5 - 5 * x8 > 0 (6) f1002_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1002_0_main_Load(java.lang.Object(ARRAY(x52)), x54, x52) :|: x53 < x52 && x52 > 0 && x53 - 2 * x55 = 0 && x53 - 2 * x55 > -2 && x53 - 2 * x55 < 2 && x54 = x53 + 1 (7) f1002_0_main_Load(java.lang.Object(ARRAY(x27)), x28, x27) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x27)), x28, x27) :|: x28 < x27 && x28 - 2 * x29 = 0 && x27 > 0 (8) f1002_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1002_0_main_Load(java.lang.Object(ARRAY(x47)), x49, x47) :|: x48 < x47 && x47 > 0 && x48 - 2 * x50 = 1 && x48 - 3 * x51 = 0 && x48 - 2 * x50 > -2 && x48 - 2 * x50 < 2 && x48 - 3 * x51 > -3 && x48 - 3 * x51 < 3 && x49 = x48 + 1 (9) f1002_0_main_Load'(java.lang.Object(ARRAY(x37)), x38, x37) -> f1002_0_main_Load(java.lang.Object(ARRAY(x37)), x39, x37) :|: x37 > 0 && x38 - 3 * x40 > 0 && x38 < x37 && x38 - 2 * x41 = 1 && x38 - 5 * x42 = 0 && x38 - 2 * x41 > -2 && x38 - 2 * x41 < 2 && x38 - 3 * x40 < 3 && x38 - 5 * x42 > -5 && x38 - 5 * x42 < 5 && x39 = x38 + 1 (10) f1002_0_main_Load(java.lang.Object(ARRAY(x14)), x15, x14) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x14)), x15, x14) :|: x15 < x14 && x14 > 0 && x15 - 2 * x16 = 1 && x15 - 5 * x17 = 0 && x15 - 3 * x18 > 0 Arcs: (1) -> (8) (2) -> (1), (5), (7), (10) (3) -> (2), (3) (4) -> (3) (5) -> (4), (8), (9) (6) -> (1), (5), (10) (7) -> (6) (8) -> (7) (9) -> (7) (10) -> (8), (9) This digraph is fully evaluated! ---------------------------------------- (79) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (80) Obligation: Rules: f1002_0_main_Load'(java.lang.Object(ARRAY(x37:0)), x38:0, x37:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(x37:0)), x38:0 + 1, x37:0) :|: x38:0 - 5 * x42:0 > -5 && x38:0 - 5 * x42:0 < 5 && x38:0 - 3 * x40:0 < 3 && x38:0 - 2 * x41:0 < 2 && x38:0 - 2 * x41:0 > -2 && x38:0 - 5 * x42:0 = 0 && x38:0 - 2 * x41:0 = 1 && x38:0 < x37:0 && x38:0 - 3 * x40:0 > 0 && x37:0 > 0 f4239_0_main_GE(java.lang.Object(ARRAY(i101:0:0)), i93:0:0, i359:0:0, i101:0:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(i101:0:0)), i93:0:0 + 1, i101:0:0) :|: i359:0:0 > 99 f1002_0_main_Load(java.lang.Object(ARRAY(x4:0)), x5:0, x4:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x4:0)), x5:0, x4:0) :|: x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0 f1002_0_main_Load'(java.lang.Object(ARRAY(x52:0)), x53:0, x52:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(x52:0)), x53:0 + 1, x52:0) :|: x53:0 - 2 * x55:0 > -2 && x53:0 - 2 * x55:0 < 2 && x53:0 - 2 * x55:0 = 0 && x52:0 > 0 && x53:0 < x52:0 f1002_0_main_Load(java.lang.Object(ARRAY(x27:0)), x28:0, x27:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x27:0)), x28:0, x27:0) :|: x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0 f1002_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x:0)), x1:0, x:0) :|: x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0 f1002_0_main_Load'(java.lang.Object(ARRAY(x47:0)), x48:0, x47:0) -> f1002_0_main_Load(java.lang.Object(ARRAY(x47:0)), x48:0 + 1, x47:0) :|: x48:0 - 3 * x51:0 > -3 && x48:0 - 3 * x51:0 < 3 && x48:0 - 2 * x50:0 < 2 && x48:0 - 2 * x50:0 > -2 && x48:0 - 3 * x51:0 = 0 && x48:0 - 2 * x50:0 = 1 && x47:0 > 0 && x48:0 < x47:0 f1002_0_main_Load(java.lang.Object(ARRAY(x14:0)), x15:0, x14:0) -> f1002_0_main_Load'(java.lang.Object(ARRAY(x14:0)), x15:0, x14:0) :|: x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0 f1002_0_main_Load'(java.lang.Object(ARRAY(x9:0)), x10:0, x9:0) -> f4239_0_main_GE(java.lang.Object(ARRAY(x9:0)), x10:0, 0, x9:0) :|: x10:0 - 3 * x12:0 < 3 && x10:0 - 5 * x11:0 < 5 && x10:0 - 2 * x13:0 < 2 && x10:0 - 2 * x13:0 > -2 && x10:0 - 2 * x13:0 = 1 && x9:0 > x10:0 && x9:0 > -1 && x10:0 - 3 * x12:0 > 0 && x10:0 - 5 * x11:0 > 0 f4239_0_main_GE(java.lang.Object(ARRAY(x43:0)), x44:0, x45:0, x43:0) -> f4239_0_main_GE(java.lang.Object(ARRAY(x43:0)), x44:0, x45:0 + 1, x43:0) :|: x45:0 < 100 ---------------------------------------- (81) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1002_0_main_Load'(VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(VARIABLE) f1002_0_main_Load(VARIABLE, INTEGER, VARIABLE) f4239_0_main_GE(VARIABLE, VARIABLE, VARIABLE, VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (82) Obligation: Rules: f1002_0_main_Load'(c, x38:0, x37:0) -> f1002_0_main_Load(c1, c2, x37:0) :|: c2 = x38:0 + 1 && (c1 = 0 && c = 0) && (x38:0 - 5 * x42:0 > -5 && x38:0 - 5 * x42:0 < 5 && x38:0 - 3 * x40:0 < 3 && x38:0 - 2 * x41:0 < 2 && x38:0 - 2 * x41:0 > -2 && x38:0 - 5 * x42:0 = 0 && x38:0 - 2 * x41:0 = 1 && x38:0 < x37:0 && x38:0 - 3 * x40:0 > 0 && x37:0 > 0) f4239_0_main_GE(c3, i93:0:0, i359:0:0, i101:0:0) -> f1002_0_main_Load(c4, c5, i101:0:0) :|: c5 = i93:0:0 + 1 && (c4 = 0 && c3 = 0) && i359:0:0 > 99 f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load'(c8, x53:0, x52:0) -> f1002_0_main_Load(c9, c10, x52:0) :|: c10 = x53:0 + 1 && (c9 = 0 && c8 = 0) && (x53:0 - 2 * x55:0 > -2 && x53:0 - 2 * x55:0 < 2 && x53:0 - 2 * x55:0 = 0 && x52:0 > 0 && x53:0 < x52:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load'(c15, x48:0, x47:0) -> f1002_0_main_Load(c16, c17, x47:0) :|: c17 = x48:0 + 1 && (c16 = 0 && c15 = 0) && (x48:0 - 3 * x51:0 > -3 && x48:0 - 3 * x51:0 < 3 && x48:0 - 2 * x50:0 < 2 && x48:0 - 2 * x50:0 > -2 && x48:0 - 3 * x51:0 = 0 && x48:0 - 2 * x50:0 = 1 && x47:0 > 0 && x48:0 < x47:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f1002_0_main_Load'(c20, x10:0, x9:0) -> f4239_0_main_GE(c21, x10:0, c22, x9:0) :|: c22 = 0 && (c21 = 0 && c20 = 0) && (x10:0 - 3 * x12:0 < 3 && x10:0 - 5 * x11:0 < 5 && x10:0 - 2 * x13:0 < 2 && x10:0 - 2 * x13:0 > -2 && x10:0 - 2 * x13:0 = 1 && x9:0 > x10:0 && x9:0 > -1 && x10:0 - 3 * x12:0 > 0 && x10:0 - 5 * x11:0 > 0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 ---------------------------------------- (83) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1002_0_main_Load'(x, x1, x2)] = c*x - x1 + x2 [f1002_0_main_Load(x3, x4, x5)] = c3*x3 - x4 + x5 [f4239_0_main_GE(x6, x7, x8, x9)] = -1 + c6*x6 - x7 + x9 The following rules are decreasing: f1002_0_main_Load'(c, x38:0, x37:0) -> f1002_0_main_Load(c1, c2, x37:0) :|: c2 = x38:0 + 1 && (c1 = 0 && c = 0) && (x38:0 - 5 * x42:0 > -5 && x38:0 - 5 * x42:0 < 5 && x38:0 - 3 * x40:0 < 3 && x38:0 - 2 * x41:0 < 2 && x38:0 - 2 * x41:0 > -2 && x38:0 - 5 * x42:0 = 0 && x38:0 - 2 * x41:0 = 1 && x38:0 < x37:0 && x38:0 - 3 * x40:0 > 0 && x37:0 > 0) f1002_0_main_Load'(c8, x53:0, x52:0) -> f1002_0_main_Load(c9, c10, x52:0) :|: c10 = x53:0 + 1 && (c9 = 0 && c8 = 0) && (x53:0 - 2 * x55:0 > -2 && x53:0 - 2 * x55:0 < 2 && x53:0 - 2 * x55:0 = 0 && x52:0 > 0 && x53:0 < x52:0) f1002_0_main_Load'(c15, x48:0, x47:0) -> f1002_0_main_Load(c16, c17, x47:0) :|: c17 = x48:0 + 1 && (c16 = 0 && c15 = 0) && (x48:0 - 3 * x51:0 > -3 && x48:0 - 3 * x51:0 < 3 && x48:0 - 2 * x50:0 < 2 && x48:0 - 2 * x50:0 > -2 && x48:0 - 3 * x51:0 = 0 && x48:0 - 2 * x50:0 = 1 && x47:0 > 0 && x48:0 < x47:0) f1002_0_main_Load'(c20, x10:0, x9:0) -> f4239_0_main_GE(c21, x10:0, c22, x9:0) :|: c22 = 0 && (c21 = 0 && c20 = 0) && (x10:0 - 3 * x12:0 < 3 && x10:0 - 5 * x11:0 < 5 && x10:0 - 2 * x13:0 < 2 && x10:0 - 2 * x13:0 > -2 && x10:0 - 2 * x13:0 = 1 && x9:0 > x10:0 && x9:0 > -1 && x10:0 - 3 * x12:0 > 0 && x10:0 - 5 * x11:0 > 0) The following rules are bounded: f1002_0_main_Load'(c, x38:0, x37:0) -> f1002_0_main_Load(c1, c2, x37:0) :|: c2 = x38:0 + 1 && (c1 = 0 && c = 0) && (x38:0 - 5 * x42:0 > -5 && x38:0 - 5 * x42:0 < 5 && x38:0 - 3 * x40:0 < 3 && x38:0 - 2 * x41:0 < 2 && x38:0 - 2 * x41:0 > -2 && x38:0 - 5 * x42:0 = 0 && x38:0 - 2 * x41:0 = 1 && x38:0 < x37:0 && x38:0 - 3 * x40:0 > 0 && x37:0 > 0) f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load'(c8, x53:0, x52:0) -> f1002_0_main_Load(c9, c10, x52:0) :|: c10 = x53:0 + 1 && (c9 = 0 && c8 = 0) && (x53:0 - 2 * x55:0 > -2 && x53:0 - 2 * x55:0 < 2 && x53:0 - 2 * x55:0 = 0 && x52:0 > 0 && x53:0 < x52:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load'(c15, x48:0, x47:0) -> f1002_0_main_Load(c16, c17, x47:0) :|: c17 = x48:0 + 1 && (c16 = 0 && c15 = 0) && (x48:0 - 3 * x51:0 > -3 && x48:0 - 3 * x51:0 < 3 && x48:0 - 2 * x50:0 < 2 && x48:0 - 2 * x50:0 > -2 && x48:0 - 3 * x51:0 = 0 && x48:0 - 2 * x50:0 = 1 && x47:0 > 0 && x48:0 < x47:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f1002_0_main_Load'(c20, x10:0, x9:0) -> f4239_0_main_GE(c21, x10:0, c22, x9:0) :|: c22 = 0 && (c21 = 0 && c20 = 0) && (x10:0 - 3 * x12:0 < 3 && x10:0 - 5 * x11:0 < 5 && x10:0 - 2 * x13:0 < 2 && x10:0 - 2 * x13:0 > -2 && x10:0 - 2 * x13:0 = 1 && x9:0 > x10:0 && x9:0 > -1 && x10:0 - 3 * x12:0 > 0 && x10:0 - 5 * x11:0 > 0) ---------------------------------------- (84) Obligation: Rules: f4239_0_main_GE(c3, i93:0:0, i359:0:0, i101:0:0) -> f1002_0_main_Load(c4, c5, i101:0:0) :|: c5 = i93:0:0 + 1 && (c4 = 0 && c3 = 0) && i359:0:0 > 99 f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 ---------------------------------------- (85) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4239_0_main_GE(x, x1, x2, x3)] = 1 + c*x [f1002_0_main_Load(x4, x5, x6)] = c4*x4 [f1002_0_main_Load'(x7, x8, x9)] = c7*x7 The following rules are decreasing: f4239_0_main_GE(c3, i93:0:0, i359:0:0, i101:0:0) -> f1002_0_main_Load(c4, c5, i101:0:0) :|: c5 = i93:0:0 + 1 && (c4 = 0 && c3 = 0) && i359:0:0 > 99 The following rules are bounded: f4239_0_main_GE(c3, i93:0:0, i359:0:0, i101:0:0) -> f1002_0_main_Load(c4, c5, i101:0:0) :|: c5 = i93:0:0 + 1 && (c4 = 0 && c3 = 0) && i359:0:0 > 99 f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 ---------------------------------------- (86) Obligation: Rules: f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 ---------------------------------------- (87) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1002_0_main_Load ] = f1002_0_main_Load_3 + -1*f1002_0_main_Load_2 [ f1002_0_main_Load' ] = 0 [ f4239_0_main_GE ] = -1*f4239_0_main_GE_3 The following rules are decreasing: f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 The following rules are bounded: f1002_0_main_Load(c6, x5:0, x4:0) -> f1002_0_main_Load'(c7, x5:0, x4:0) :|: c7 = 0 && c6 = 0 && (x5:0 - 3 * x7:0 > 0 && x5:0 - 5 * x8:0 > 0 && x5:0 - 2 * x6:0 = 1 && x4:0 > -1 && x5:0 < x4:0) f1002_0_main_Load(c11, x28:0, x27:0) -> f1002_0_main_Load'(c12, x28:0, x27:0) :|: c12 = 0 && c11 = 0 && (x28:0 < x27:0 && x28:0 - 2 * x29:0 = 0 && x27:0 > 0) f1002_0_main_Load(c13, x1:0, x:0) -> f1002_0_main_Load'(c14, x1:0, x:0) :|: c14 = 0 && c13 = 0 && (x1:0 - 3 * x2:0 = 0 && x1:0 - 2 * x3:0 = 1 && x:0 > 0 && x:0 > x1:0) f1002_0_main_Load(c18, x15:0, x14:0) -> f1002_0_main_Load'(c19, x15:0, x14:0) :|: c19 = 0 && c18 = 0 && (x15:0 - 5 * x17:0 = 0 && x15:0 - 3 * x18:0 > 0 && x15:0 - 2 * x16:0 = 1 && x14:0 > 0 && x15:0 < x14:0) f4239_0_main_GE(c23, x44:0, x45:0, x43:0) -> f4239_0_main_GE(c24, x44:0, c25, x43:0) :|: c25 = x45:0 + 1 && (c24 = 0 && c23 = 0) && x45:0 < 100 ---------------------------------------- (88) YES