15.77/5.22 YES 15.99/5.24 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 15.99/5.24 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 15.99/5.24 15.99/5.24 15.99/5.24 termination of the given Bare JBC problem could be proven: 15.99/5.24 15.99/5.24 (0) Bare JBC problem 15.99/5.24 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 15.99/5.24 (2) JBC problem 15.99/5.24 (3) JBCToGraph [EQUIVALENT, 930 ms] 15.99/5.24 (4) JBCTerminationGraph 15.99/5.24 (5) TerminationGraphToSCCProof [SOUND, 12 ms] 15.99/5.24 (6) AND 15.99/5.24 (7) JBCTerminationSCC 15.99/5.24 (8) SCCToIRSProof [SOUND, 38 ms] 15.99/5.24 (9) IRSwT 15.99/5.24 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (11) IRSwT 15.99/5.24 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 17 ms] 15.99/5.24 (13) IRSwT 15.99/5.24 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (15) IRSwT 15.99/5.24 (16) TempFilterProof [SOUND, 10 ms] 15.99/5.24 (17) IntTRS 15.99/5.24 (18) RankingReductionPairProof [EQUIVALENT, 0 ms] 15.99/5.24 (19) YES 15.99/5.24 (20) JBCTerminationSCC 15.99/5.24 (21) SCCToIRSProof [SOUND, 75 ms] 15.99/5.24 (22) IRSwT 15.99/5.24 (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (24) IRSwT 15.99/5.24 (25) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] 15.99/5.24 (26) IRSwT 15.99/5.24 (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (28) IRSwT 15.99/5.24 (29) TempFilterProof [SOUND, 36 ms] 15.99/5.24 (30) IntTRS 15.99/5.24 (31) RankingReductionPairProof [EQUIVALENT, 24 ms] 15.99/5.24 (32) YES 15.99/5.24 (33) JBCTerminationSCC 15.99/5.24 (34) SCCToIRSProof [SOUND, 35 ms] 15.99/5.24 (35) IRSwT 15.99/5.24 (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (37) IRSwT 15.99/5.24 (38) IRSwTTerminationDigraphProof [EQUIVALENT, 27 ms] 15.99/5.24 (39) IRSwT 15.99/5.24 (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (41) IRSwT 15.99/5.24 (42) TempFilterProof [SOUND, 5 ms] 15.99/5.24 (43) IntTRS 15.99/5.24 (44) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 15.99/5.24 (45) YES 15.99/5.24 (46) JBCTerminationSCC 15.99/5.24 (47) SCCToIRSProof [SOUND, 103 ms] 15.99/5.24 (48) IRSwT 15.99/5.24 (49) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (50) IRSwT 15.99/5.24 (51) IRSwTTerminationDigraphProof [EQUIVALENT, 22 ms] 15.99/5.24 (52) IRSwT 15.99/5.24 (53) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (54) IRSwT 15.99/5.24 (55) TempFilterProof [SOUND, 7 ms] 15.99/5.24 (56) IntTRS 15.99/5.24 (57) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 15.99/5.24 (58) YES 15.99/5.24 (59) JBCTerminationSCC 15.99/5.24 (60) SCCToIRSProof [SOUND, 109 ms] 15.99/5.24 (61) IRSwT 15.99/5.24 (62) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (63) IRSwT 15.99/5.24 (64) IRSwTTerminationDigraphProof [EQUIVALENT, 49 ms] 15.99/5.24 (65) IRSwT 15.99/5.24 (66) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (67) IRSwT 15.99/5.24 (68) TempFilterProof [SOUND, 11 ms] 15.99/5.24 (69) IntTRS 15.99/5.24 (70) RankingReductionPairProof [EQUIVALENT, 0 ms] 15.99/5.24 (71) YES 15.99/5.24 (72) JBCTerminationSCC 15.99/5.24 (73) SCCToIRSProof [SOUND, 168 ms] 15.99/5.24 (74) IRSwT 15.99/5.24 (75) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 15.99/5.24 (76) IRSwT 15.99/5.24 (77) IRSwTTerminationDigraphProof [EQUIVALENT, 332 ms] 15.99/5.24 (78) IRSwT 15.99/5.24 (79) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.99/5.24 (80) IRSwT 15.99/5.24 (81) TempFilterProof [SOUND, 131 ms] 15.99/5.24 (82) IntTRS 15.99/5.24 (83) PolynomialOrderProcessor [EQUIVALENT, 22 ms] 15.99/5.24 (84) IntTRS 15.99/5.24 (85) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 15.99/5.24 (86) IntTRS 15.99/5.24 (87) RankingReductionPairProof [EQUIVALENT, 8 ms] 15.99/5.24 (88) IntTRS 15.99/5.24 (89) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 15.99/5.24 (90) YES 15.99/5.24 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (0) 15.99/5.24 Obligation: 15.99/5.24 need to prove termination of the following program: 15.99/5.24 public class TaylorSeriesIte { 15.99/5.24 15.99/5.24 public static int power(int a, int b) { 15.99/5.24 int p = 1; 15.99/5.24 for (int i = 1; i <= b; i++) p *= a; 15.99/5.24 return p; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int fact(int n) { 15.99/5.24 int p = 1; 15.99/5.24 for (int i = 1; i <= n; i++) p *= i; 15.99/5.24 return p; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int sin(int x, int n) { 15.99/5.24 int s = x; 15.99/5.24 for (int i = 3; i <= n; i += 2) 15.99/5.24 s += power(-1, i/2) * power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int cos(int x, int n) { 15.99/5.24 int s = 1; 15.99/5.24 for (int i = 2; i <= n; i += 2) 15.99/5.24 s += power(-1, i/2) * power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int exp(int x, int n) { 15.99/5.24 int s = 0; 15.99/5.24 for (int i = 0; i <= n; i++) 15.99/5.24 s += power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static void main(String args[]) { 15.99/5.24 for (int i = 0; i < args.length; i++) 15.99/5.24 if (i % 2 == 0) sin(args.length, i); 15.99/5.24 else if (i % 3 == 0) cos(args.length, i); 15.99/5.24 else if (i % 5 == 0) exp(args.length, i); 15.99/5.24 else for (int j = 0; j < 100; j++); 15.99/5.24 } 15.99/5.24 } 15.99/5.24 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (1) BareJBCToJBCProof (EQUIVALENT) 15.99/5.24 initialized classpath 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (2) 15.99/5.24 Obligation: 15.99/5.24 need to prove termination of the following program: 15.99/5.24 public class TaylorSeriesIte { 15.99/5.24 15.99/5.24 public static int power(int a, int b) { 15.99/5.24 int p = 1; 15.99/5.24 for (int i = 1; i <= b; i++) p *= a; 15.99/5.24 return p; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int fact(int n) { 15.99/5.24 int p = 1; 15.99/5.24 for (int i = 1; i <= n; i++) p *= i; 15.99/5.24 return p; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int sin(int x, int n) { 15.99/5.24 int s = x; 15.99/5.24 for (int i = 3; i <= n; i += 2) 15.99/5.24 s += power(-1, i/2) * power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int cos(int x, int n) { 15.99/5.24 int s = 1; 15.99/5.24 for (int i = 2; i <= n; i += 2) 15.99/5.24 s += power(-1, i/2) * power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static int exp(int x, int n) { 15.99/5.24 int s = 0; 15.99/5.24 for (int i = 0; i <= n; i++) 15.99/5.24 s += power(x, i) / fact(i); 15.99/5.24 return s; 15.99/5.24 } 15.99/5.24 15.99/5.24 public static void main(String args[]) { 15.99/5.24 for (int i = 0; i < args.length; i++) 15.99/5.24 if (i % 2 == 0) sin(args.length, i); 15.99/5.24 else if (i % 3 == 0) cos(args.length, i); 15.99/5.24 else if (i % 5 == 0) exp(args.length, i); 15.99/5.24 else for (int j = 0; j < 100; j++); 15.99/5.24 } 15.99/5.24 } 15.99/5.24 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (3) JBCToGraph (EQUIVALENT) 15.99/5.24 Constructed TerminationGraph. 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (4) 15.99/5.24 Obligation: 15.99/5.24 Termination Graph based on JBC Program: 15.99/5.24 TaylorSeriesIte.main([Ljava/lang/String;)V: Graph of 82 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 TaylorSeriesIte.sin(II)I: Graph of 42 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 TaylorSeriesIte.cos(II)I: Graph of 42 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 TaylorSeriesIte.exp(II)I: Graph of 35 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 TaylorSeriesIte.power(II)I: Graph of 22 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 TaylorSeriesIte.fact(I)I: Graph of 22 nodes with 1 SCC. 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (5) TerminationGraphToSCCProof (SOUND) 15.99/5.24 Splitted TerminationGraph to 6 SCCss. 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (6) 15.99/5.24 Complex Obligation (AND) 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (7) 15.99/5.24 Obligation: 15.99/5.24 SCC of termination graph based on JBC Program. 15.99/5.24 SCC contains nodes from the following methods: TaylorSeriesIte.fact(I)I 15.99/5.24 SCC calls the following helper methods: 15.99/5.24 Performed SCC analyses: 15.99/5.24 *Used field analysis yielded the following read fields: 15.99/5.24 15.99/5.24 *Marker field analysis yielded the following relations that could be markers: 15.99/5.24 15.99/5.24 ---------------------------------------- 15.99/5.24 15.99/5.24 (8) SCCToIRSProof (SOUND) 15.99/5.24 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.24 Generated rules. Obtained 11 IRulesP rules: 15.99/5.24 f6203_0_fact_Load(EOS(STATIC_6203), i1037, i1039, i1039) -> f6207_0_fact_GT(EOS(STATIC_6207), i1037, i1039, i1039, i1037) :|: TRUE 15.99/5.24 f6207_0_fact_GT(EOS(STATIC_6207), i1037, i1039, i1039, i1037) -> f6212_0_fact_GT(EOS(STATIC_6212), i1037, i1039, i1039, i1037) :|: i1039 <= i1037 15.99/5.25 f6212_0_fact_GT(EOS(STATIC_6212), i1037, i1039, i1039, i1037) -> f6217_0_fact_Load(EOS(STATIC_6217), i1037, i1039) :|: i1039 <= i1037 15.99/5.25 f6217_0_fact_Load(EOS(STATIC_6217), i1037, i1039) -> f6221_0_fact_Load(EOS(STATIC_6221), i1037, i1039) :|: TRUE 15.99/5.25 f6221_0_fact_Load(EOS(STATIC_6221), i1037, i1039) -> f6223_0_fact_IntArithmetic(EOS(STATIC_6223), i1037, i1039, i1039) :|: TRUE 15.99/5.25 f6223_0_fact_IntArithmetic(EOS(STATIC_6223), i1037, i1039, i1039) -> f6224_0_fact_Store(EOS(STATIC_6224), i1037, i1039) :|: i1039 >= 1 15.99/5.25 f6224_0_fact_Store(EOS(STATIC_6224), i1037, i1039) -> f6226_0_fact_Inc(EOS(STATIC_6226), i1037, i1039) :|: TRUE 15.99/5.25 f6226_0_fact_Inc(EOS(STATIC_6226), i1037, i1039) -> f6229_0_fact_JMP(EOS(STATIC_6229), i1037, i1039 + 1) :|: TRUE 15.99/5.25 f6229_0_fact_JMP(EOS(STATIC_6229), i1037, i1080) -> f6232_0_fact_Load(EOS(STATIC_6232), i1037, i1080) :|: TRUE 15.99/5.25 f6232_0_fact_Load(EOS(STATIC_6232), i1037, i1080) -> f6199_0_fact_Load(EOS(STATIC_6199), i1037, i1080) :|: TRUE 15.99/5.25 f6199_0_fact_Load(EOS(STATIC_6199), i1037, i1039) -> f6203_0_fact_Load(EOS(STATIC_6203), i1037, i1039, i1039) :|: TRUE 15.99/5.25 Combined rules. Obtained 1 IRulesP rules: 15.99/5.25 f6203_0_fact_Load(EOS(STATIC_6203), i1037:0, i1039:0, i1039:0) -> f6203_0_fact_Load(EOS(STATIC_6203), i1037:0, i1039:0 + 1, i1039:0 + 1) :|: i1039:0 <= i1037:0 && i1039:0 > 0 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f6203_0_fact_Load(x1, x2, x3, x4) -> f6203_0_fact_Load(x2, x3, x4) 15.99/5.25 EOS(x1) -> EOS 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f6203_0_fact_Load(x1, x2, x3) -> f6203_0_fact_Load(x1, x3) 15.99/5.25 Finished conversion. Obtained 1 rules.P rules: 15.99/5.25 f6203_0_fact_Load(i1037:0, i1039:0) -> f6203_0_fact_Load(i1037:0, i1039:0 + 1) :|: i1039:0 <= i1037:0 && i1039:0 > 0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (9) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6203_0_fact_Load(i1037:0, i1039:0) -> f6203_0_fact_Load(i1037:0, i1039:0 + 1) :|: i1039:0 <= i1037:0 && i1039:0 > 0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (10) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (11) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6203_0_fact_Load(i1037:0, i1039:0) -> f6203_0_fact_Load(i1037:0, arith) :|: i1039:0 <= i1037:0 && i1039:0 > 0 && arith = i1039:0 + 1 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f6203_0_fact_Load(i1037:0, i1039:0) -> f6203_0_fact_Load(i1037:0, arith) :|: i1039:0 <= i1037:0 && i1039:0 > 0 && arith = i1039:0 + 1 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (13) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f6203_0_fact_Load(i1037:0, i1039:0) -> f6203_0_fact_Load(i1037:0, arith) :|: i1039:0 <= i1037:0 && i1039:0 > 0 && arith = i1039:0 + 1 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (14) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (15) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6203_0_fact_Load(i1037:0:0, i1039:0:0) -> f6203_0_fact_Load(i1037:0:0, i1039:0:0 + 1) :|: i1039:0:0 <= i1037:0:0 && i1039:0:0 > 0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (16) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f6203_0_fact_Load(INTEGER, INTEGER) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (17) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6203_0_fact_Load(i1037:0:0, i1039:0:0) -> f6203_0_fact_Load(i1037:0:0, c) :|: c = i1039:0:0 + 1 && (i1039:0:0 <= i1037:0:0 && i1039:0:0 > 0) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (18) RankingReductionPairProof (EQUIVALENT) 15.99/5.25 Interpretation: 15.99/5.25 [ f6203_0_fact_Load ] = -1*f6203_0_fact_Load_2 + f6203_0_fact_Load_1 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f6203_0_fact_Load(i1037:0:0, i1039:0:0) -> f6203_0_fact_Load(i1037:0:0, c) :|: c = i1039:0:0 + 1 && (i1039:0:0 <= i1037:0:0 && i1039:0:0 > 0) 15.99/5.25 15.99/5.25 The following rules are bounded: 15.99/5.25 f6203_0_fact_Load(i1037:0:0, i1039:0:0) -> f6203_0_fact_Load(i1037:0:0, c) :|: c = i1039:0:0 + 1 && (i1039:0:0 <= i1037:0:0 && i1039:0:0 > 0) 15.99/5.25 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (19) 15.99/5.25 YES 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (20) 15.99/5.25 Obligation: 15.99/5.25 SCC of termination graph based on JBC Program. 15.99/5.25 SCC contains nodes from the following methods: TaylorSeriesIte.power(II)I 15.99/5.25 SCC calls the following helper methods: 15.99/5.25 Performed SCC analyses: 15.99/5.25 *Used field analysis yielded the following read fields: 15.99/5.25 15.99/5.25 *Marker field analysis yielded the following relations that could be markers: 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (21) SCCToIRSProof (SOUND) 15.99/5.25 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.25 Generated rules. Obtained 11 IRulesP rules: 15.99/5.25 f6111_0_power_Load(EOS(STATIC_6111), i912, i914, i914) -> f6117_0_power_GT(EOS(STATIC_6117), i912, i914, i914, i912) :|: TRUE 15.99/5.25 f6117_0_power_GT(EOS(STATIC_6117), i912, i914, i914, i912) -> f6125_0_power_GT(EOS(STATIC_6125), i912, i914, i914, i912) :|: i914 <= i912 15.99/5.25 f6125_0_power_GT(EOS(STATIC_6125), i912, i914, i914, i912) -> f6131_0_power_Load(EOS(STATIC_6131), i912, i914) :|: i914 <= i912 15.99/5.25 f6131_0_power_Load(EOS(STATIC_6131), i912, i914) -> f6137_0_power_Load(EOS(STATIC_6137), i912, i914) :|: TRUE 15.99/5.25 f6137_0_power_Load(EOS(STATIC_6137), i912, i914) -> f6144_0_power_IntArithmetic(EOS(STATIC_6144), i912, i914) :|: TRUE 15.99/5.25 f6144_0_power_IntArithmetic(EOS(STATIC_6144), i912, i914) -> f6151_0_power_Store(EOS(STATIC_6151), i912, i914) :|: TRUE 15.99/5.25 f6151_0_power_Store(EOS(STATIC_6151), i912, i914) -> f6158_0_power_Inc(EOS(STATIC_6158), i912, i914) :|: TRUE 15.99/5.25 f6158_0_power_Inc(EOS(STATIC_6158), i912, i914) -> f6165_0_power_JMP(EOS(STATIC_6165), i912, i914 + 1) :|: TRUE 15.99/5.25 f6165_0_power_JMP(EOS(STATIC_6165), i912, i979) -> f6169_0_power_Load(EOS(STATIC_6169), i912, i979) :|: TRUE 15.99/5.25 f6169_0_power_Load(EOS(STATIC_6169), i912, i979) -> f6106_0_power_Load(EOS(STATIC_6106), i912, i979) :|: TRUE 15.99/5.25 f6106_0_power_Load(EOS(STATIC_6106), i912, i914) -> f6111_0_power_Load(EOS(STATIC_6111), i912, i914, i914) :|: TRUE 15.99/5.25 Combined rules. Obtained 1 IRulesP rules: 15.99/5.25 f6111_0_power_Load(EOS(STATIC_6111), i912:0, i914:0, i914:0) -> f6111_0_power_Load(EOS(STATIC_6111), i912:0, i914:0 + 1, i914:0 + 1) :|: i914:0 <= i912:0 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f6111_0_power_Load(x1, x2, x3, x4) -> f6111_0_power_Load(x2, x3, x4) 15.99/5.25 EOS(x1) -> EOS 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f6111_0_power_Load(x1, x2, x3) -> f6111_0_power_Load(x1, x3) 15.99/5.25 Finished conversion. Obtained 1 rules.P rules: 15.99/5.25 f6111_0_power_Load(i912:0, i914:0) -> f6111_0_power_Load(i912:0, i914:0 + 1) :|: i914:0 <= i912:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (22) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6111_0_power_Load(i912:0, i914:0) -> f6111_0_power_Load(i912:0, i914:0 + 1) :|: i914:0 <= i912:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (23) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (24) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6111_0_power_Load(i912:0, i914:0) -> f6111_0_power_Load(i912:0, arith) :|: i914:0 <= i912:0 && arith = i914:0 + 1 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (25) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f6111_0_power_Load(i912:0, i914:0) -> f6111_0_power_Load(i912:0, arith) :|: i914:0 <= i912:0 && arith = i914:0 + 1 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (26) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f6111_0_power_Load(i912:0, i914:0) -> f6111_0_power_Load(i912:0, arith) :|: i914:0 <= i912:0 && arith = i914:0 + 1 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (27) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (28) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6111_0_power_Load(i912:0:0, i914:0:0) -> f6111_0_power_Load(i912:0:0, i914:0:0 + 1) :|: i914:0:0 <= i912:0:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (29) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f6111_0_power_Load(INTEGER, INTEGER) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (30) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6111_0_power_Load(i912:0:0, i914:0:0) -> f6111_0_power_Load(i912:0:0, c) :|: c = i914:0:0 + 1 && i914:0:0 <= i912:0:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (31) RankingReductionPairProof (EQUIVALENT) 15.99/5.25 Interpretation: 15.99/5.25 [ f6111_0_power_Load ] = -1*f6111_0_power_Load_2 + f6111_0_power_Load_1 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f6111_0_power_Load(i912:0:0, i914:0:0) -> f6111_0_power_Load(i912:0:0, c) :|: c = i914:0:0 + 1 && i914:0:0 <= i912:0:0 15.99/5.25 15.99/5.25 The following rules are bounded: 15.99/5.25 f6111_0_power_Load(i912:0:0, i914:0:0) -> f6111_0_power_Load(i912:0:0, c) :|: c = i914:0:0 + 1 && i914:0:0 <= i912:0:0 15.99/5.25 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (32) 15.99/5.25 YES 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (33) 15.99/5.25 Obligation: 15.99/5.25 SCC of termination graph based on JBC Program. 15.99/5.25 SCC contains nodes from the following methods: TaylorSeriesIte.exp(II)I 15.99/5.25 SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I 15.99/5.25 Performed SCC analyses: 15.99/5.25 *Used field analysis yielded the following read fields: 15.99/5.25 15.99/5.25 *Marker field analysis yielded the following relations that could be markers: 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (34) SCCToIRSProof (SOUND) 15.99/5.25 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.25 Generated rules. Obtained 26 IRulesP rules: 15.99/5.25 f5963_0_exp_Load(EOS(STATIC_5963), i699, i68, i699, i68, i701, i701) -> f5964_0_exp_GT(EOS(STATIC_5964), i699, i68, i699, i68, i701, i701, i68) :|: TRUE 15.99/5.25 f5964_0_exp_GT(EOS(STATIC_5964), i699, i68, i699, i68, i701, i701, i68) -> f5967_0_exp_GT(EOS(STATIC_5967), i699, i68, i699, i68, i701, i701, i68) :|: i701 <= i68 15.99/5.25 f5967_0_exp_GT(EOS(STATIC_5967), i699, i68, i699, i68, i701, i701, i68) -> f5970_0_exp_Load(EOS(STATIC_5970), i699, i68, i699, i68, i701) :|: i701 <= i68 15.99/5.25 f5970_0_exp_Load(EOS(STATIC_5970), i699, i68, i699, i68, i701) -> f5973_0_exp_Load(EOS(STATIC_5973), i699, i68, i699, i68, i701) :|: TRUE 15.99/5.25 f5973_0_exp_Load(EOS(STATIC_5973), i699, i68, i699, i68, i701) -> f5976_0_exp_Load(EOS(STATIC_5976), i699, i68, i699, i68, i701, i699) :|: TRUE 15.99/5.25 f5976_0_exp_Load(EOS(STATIC_5976), i699, i68, i699, i68, i701, i699) -> f5978_0_exp_InvokeMethod(EOS(STATIC_5978), i699, i68, i699, i68, i701, i699, i701) :|: TRUE 15.99/5.25 f5978_0_exp_InvokeMethod(EOS(STATIC_5978), i699, i68, i699, i68, i701, i699, i701) -> f5981_0_power_ConstantStackPush(EOS(STATIC_5981), i699, i701, i699, i701) :|: i699 >= 1 && i68 < i699 && i701 <= i68 15.99/5.25 f5978_0_exp_InvokeMethod(EOS(STATIC_5978), i699, i68, i699, i68, i701, i699, i701) -> f5981_1_power_ConstantStackPush(EOS(STATIC_5981), i699, i68, i699, i68, i701, i699, i701) :|: i699 >= 1 && i68 < i699 && i701 <= i68 15.99/5.25 f5981_0_power_ConstantStackPush(EOS(STATIC_5981), i699, i701, i699, i701) -> f6386_0_power_ConstantStackPush(EOS(STATIC_6386), i699, i701, i699, i701) :|: TRUE 15.99/5.25 f6157_0_power_Return(EOS(STATIC_6157), i963, i68, i963, i68, i965, i961) -> f6038_0_power_Return(EOS(STATIC_6038), i963, i68, i963, i68, i965, i961) :|: TRUE 15.99/5.25 f6038_0_power_Return(EOS(STATIC_6038), i823, i68, i823, i68, i824, i822) -> f6043_0_exp_Load(EOS(STATIC_6043), i823, i68, i823, i68, i824, i822) :|: TRUE 15.99/5.25 f6043_0_exp_Load(EOS(STATIC_6043), i823, i68, i823, i68, i824, i822) -> f6048_0_exp_InvokeMethod(EOS(STATIC_6048), i823, i68, i823, i68, i824, i822, i824) :|: TRUE 15.99/5.25 f6048_0_exp_InvokeMethod(EOS(STATIC_6048), i823, i68, i823, i68, i824, i822, i824) -> f6054_0_fact_ConstantStackPush(EOS(STATIC_6054), i824, i824) :|: i823 >= 1 && i823 > i68 && i824 <= i68 15.99/5.25 f6048_0_exp_InvokeMethod(EOS(STATIC_6048), i823, i68, i823, i68, i824, i822, i824) -> f6054_1_fact_ConstantStackPush(EOS(STATIC_6054), i823, i68, i823, i68, i824, i822, i824) :|: i823 >= 1 && i823 > i68 && i824 <= i68 15.99/5.25 f6054_0_fact_ConstantStackPush(EOS(STATIC_6054), i824, i824) -> f6404_0_fact_ConstantStackPush(EOS(STATIC_6404), i824, i824) :|: TRUE 15.99/5.25 f6225_0_fact_Return(EOS(STATIC_6225), i823, i68, i823, i68, i1052, i822, i1050) -> f6191_0_fact_Return(EOS(STATIC_6191), i823, i68, i823, i68, i1052, i822, i1050) :|: TRUE 15.99/5.25 f6191_0_fact_Return(EOS(STATIC_6191), i823, i68, i823, i68, i1011, i822, i1010) -> f6193_0_exp_IntArithmetic(EOS(STATIC_6193), i823, i68, i823, i68, i1011, i822, i1010) :|: TRUE 15.99/5.25 f6193_0_exp_IntArithmetic(EOS(STATIC_6193), i823, i68, i823, i68, i1011, i822, i1010) -> f6197_0_exp_IntArithmetic(EOS(STATIC_6197), i823, i68, i823, i68, i1011) :|: i1035 = i822 / i1010 && i1010 >= 1 15.99/5.25 f6197_0_exp_IntArithmetic(EOS(STATIC_6197), i823, i68, i823, i68, i1011) -> f6202_0_exp_Store(EOS(STATIC_6202), i823, i68, i823, i68, i1011) :|: TRUE 15.99/5.25 f6202_0_exp_Store(EOS(STATIC_6202), i823, i68, i823, i68, i1011) -> f6206_0_exp_Inc(EOS(STATIC_6206), i823, i68, i823, i68, i1011) :|: TRUE 15.99/5.25 f6206_0_exp_Inc(EOS(STATIC_6206), i823, i68, i823, i68, i1011) -> f6210_0_exp_JMP(EOS(STATIC_6210), i823, i68, i823, i68, i1011 + 1) :|: TRUE 15.99/5.25 f6210_0_exp_JMP(EOS(STATIC_6210), i823, i68, i823, i68, i1045) -> f6215_0_exp_Load(EOS(STATIC_6215), i823, i68, i823, i68, i1045) :|: TRUE 15.99/5.25 f6215_0_exp_Load(EOS(STATIC_6215), i823, i68, i823, i68, i1045) -> f5962_0_exp_Load(EOS(STATIC_5962), i823, i68, i823, i68, i1045) :|: TRUE 15.99/5.25 f5962_0_exp_Load(EOS(STATIC_5962), i699, i68, i699, i68, i701) -> f5963_0_exp_Load(EOS(STATIC_5963), i699, i68, i699, i68, i701, i701) :|: TRUE 15.99/5.25 f5981_1_power_ConstantStackPush(EOS(STATIC_5981), i963, i68, i963, i68, i965, i963, i965) -> f6157_0_power_Return(EOS(STATIC_6157), i963, i68, i963, i68, i965, i961) :|: TRUE 15.99/5.25 f6054_1_fact_ConstantStackPush(EOS(STATIC_6054), i823, i68, i823, i68, i1052, i822, i1052) -> f6225_0_fact_Return(EOS(STATIC_6225), i823, i68, i823, i68, i1052, i822, i1050) :|: TRUE 15.99/5.25 Combined rules. Obtained 4 IRulesP rules: 15.99/5.25 f6225_0_fact_Return(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i1050:0 > 0 && i68:0 >= i1052:0 + 1 && i823:0 > i68:0 && i823:0 > 0 15.99/5.25 f6225_0_fact_Return'(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0 + 1, i961:0, i1050:1) :|: i1050:0 > 0 && i68:0 >= i1052:0 + 1 && i823:0 > i68:0 && i823:0 > 0 && i822:0 - i1050:0 * div < i1050:0 && i822:0 - i1050:0 * div + i1050:0 > 0 15.99/5.25 Removed following non-SCC rules: 15.99/5.25 f6225_0_fact_Return'(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6386_0_power_ConstantStackPush(EOS(STATIC_6386), i823:0, i1052:0 + 1, i823:0, i1052:0 + 1) :|: i1050:0 > 0 && i68:0 >= i1052:0 + 1 && i823:0 > i68:0 && i823:0 > 0 && i822:0 - i1050:0 * div < i1050:0 && i822:0 - i1050:0 * div + i1050:0 > 0 15.99/5.25 f6225_0_fact_Return'(EOS(STATIC_6225), i823:0, i68:0, i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6404_0_fact_ConstantStackPush(EOS(STATIC_6404), i1052:0 + 1, i1052:0 + 1) :|: i1050:0 > 0 && i68:0 >= i1052:0 + 1 && i823:0 > i68:0 && i823:0 > 0 && i822:0 - i1050:0 * div < i1050:0 && i822:0 - i1050:0 * div + i1050:0 > 0 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f6225_0_fact_Return(x1, x2, x3, x4, x5, x6, x7, x8) -> f6225_0_fact_Return(x2, x3, x4, x5, x6, x7, x8) 15.99/5.25 f6225_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7, x8) -> f6225_0_fact_Return'(x2, x3, x4, x5, x6, x7, x8) 15.99/5.25 EOS(x1) -> EOS 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f6225_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6225_0_fact_Return(x3, x4, x5, x6, x7) 15.99/5.25 f6225_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6225_0_fact_Return'(x3, x4, x5, x6, x7) 15.99/5.25 Finished conversion. Obtained 2 rules.P rules: 15.99/5.25 f6225_0_fact_Return(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > 0 && i823:0 > i68:0 15.99/5.25 f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return(i823:0, i68:0, i1052:0 + 1, i961:0, i1050:1) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > i68:0 && i823:0 > 0 && i822:0 - i1050:0 * div + i1050:0 > 0 && i822:0 - i1050:0 * div < i1050:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (35) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6225_0_fact_Return(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > 0 && i823:0 > i68:0 15.99/5.25 f6225_0_fact_Return'(x, x1, x2, x3, x4) -> f6225_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (36) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (37) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6225_0_fact_Return(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > 0 && i823:0 > i68:0 15.99/5.25 f6225_0_fact_Return'(x, x1, x2, x3, x4) -> f6225_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (38) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f6225_0_fact_Return(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > 0 && i823:0 > i68:0 15.99/5.25 (2) f6225_0_fact_Return'(x, x1, x2, x3, x4) -> f6225_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (39) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f6225_0_fact_Return(i823:0, i68:0, i1052:0, i822:0, i1050:0) -> f6225_0_fact_Return'(i823:0, i68:0, i1052:0, i822:0, i1050:0) :|: i68:0 >= i1052:0 + 1 && i1050:0 > 0 && i823:0 > 0 && i823:0 > i68:0 15.99/5.25 (2) f6225_0_fact_Return'(x, x1, x2, x3, x4) -> f6225_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (40) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (41) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6225_0_fact_Return(i823:0:0, i68:0:0, i1052:0:0, i822:0:0, i1050:0:0) -> f6225_0_fact_Return(i823:0:0, i68:0:0, i1052:0:0 + 1, x5:0, x6:0) :|: i822:0:0 - i1050:0:0 * x7:0 < i1050:0:0 && i822:0:0 - i1050:0:0 * x7:0 + i1050:0:0 > 0 && i823:0:0 > 0 && i823:0:0 > i68:0:0 && i1050:0:0 > 0 && i68:0:0 >= i1052:0:0 + 1 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (42) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f6225_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE, VARIABLE) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (43) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6225_0_fact_Return(i823:0:0, i68:0:0, i1052:0:0, i822:0:0, i1050:0:0) -> f6225_0_fact_Return(i823:0:0, i68:0:0, c, x5:0, x6:0) :|: c = i1052:0:0 + 1 && (i822:0:0 - i1050:0:0 * x7:0 < i1050:0:0 && i822:0:0 - i1050:0:0 * x7:0 + i1050:0:0 > 0 && i823:0:0 > 0 && i823:0:0 > i68:0:0 && i1050:0:0 > 0 && i68:0:0 >= i1052:0:0 + 1) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (44) PolynomialOrderProcessor (EQUIVALENT) 15.99/5.25 Found the following polynomial interpretation: 15.99/5.25 [f6225_0_fact_Return(x, x1, x2, x3, x4)] = x1 - x2 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f6225_0_fact_Return(i823:0:0, i68:0:0, i1052:0:0, i822:0:0, i1050:0:0) -> f6225_0_fact_Return(i823:0:0, i68:0:0, c, x5:0, x6:0) :|: c = i1052:0:0 + 1 && (i822:0:0 - i1050:0:0 * x7:0 < i1050:0:0 && i822:0:0 - i1050:0:0 * x7:0 + i1050:0:0 > 0 && i823:0:0 > 0 && i823:0:0 > i68:0:0 && i1050:0:0 > 0 && i68:0:0 >= i1052:0:0 + 1) 15.99/5.25 The following rules are bounded: 15.99/5.25 f6225_0_fact_Return(i823:0:0, i68:0:0, i1052:0:0, i822:0:0, i1050:0:0) -> f6225_0_fact_Return(i823:0:0, i68:0:0, c, x5:0, x6:0) :|: c = i1052:0:0 + 1 && (i822:0:0 - i1050:0:0 * x7:0 < i1050:0:0 && i822:0:0 - i1050:0:0 * x7:0 + i1050:0:0 > 0 && i823:0:0 > 0 && i823:0:0 > i68:0:0 && i1050:0:0 > 0 && i68:0:0 >= i1052:0:0 + 1) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (45) 15.99/5.25 YES 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (46) 15.99/5.25 Obligation: 15.99/5.25 SCC of termination graph based on JBC Program. 15.99/5.25 SCC contains nodes from the following methods: TaylorSeriesIte.cos(II)I 15.99/5.25 SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I 15.99/5.25 Performed SCC analyses: 15.99/5.25 *Used field analysis yielded the following read fields: 15.99/5.25 15.99/5.25 *Marker field analysis yielded the following relations that could be markers: 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (47) SCCToIRSProof (SOUND) 15.99/5.25 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.25 Generated rules. Obtained 34 IRulesP rules: 15.99/5.25 f6258_0_cos_Load(EOS(STATIC_6258), i1123, i1124, i1123, i1124, i1126, i1126) -> f6260_0_cos_GT(EOS(STATIC_6260), i1123, i1124, i1123, i1124, i1126, i1126, i1124) :|: TRUE 15.99/5.25 f6260_0_cos_GT(EOS(STATIC_6260), i1123, i1124, i1123, i1124, i1126, i1126, i1124) -> f6264_0_cos_GT(EOS(STATIC_6264), i1123, i1124, i1123, i1124, i1126, i1126, i1124) :|: i1126 <= i1124 15.99/5.25 f6264_0_cos_GT(EOS(STATIC_6264), i1123, i1124, i1123, i1124, i1126, i1126, i1124) -> f6268_0_cos_Load(EOS(STATIC_6268), i1123, i1124, i1123, i1124, i1126) :|: i1126 <= i1124 15.99/5.25 f6268_0_cos_Load(EOS(STATIC_6268), i1123, i1124, i1123, i1124, i1126) -> f6272_0_cos_ConstantStackPush(EOS(STATIC_6272), i1123, i1124, i1123, i1124, i1126) :|: TRUE 15.99/5.25 f6272_0_cos_ConstantStackPush(EOS(STATIC_6272), i1123, i1124, i1123, i1124, i1126) -> f6276_0_cos_Load(EOS(STATIC_6276), i1123, i1124, i1123, i1124, i1126, -1) :|: TRUE 15.99/5.25 f6276_0_cos_Load(EOS(STATIC_6276), i1123, i1124, i1123, i1124, i1126, matching1) -> f6278_0_cos_ConstantStackPush(EOS(STATIC_6278), i1123, i1124, i1123, i1124, i1126, -1, i1126) :|: TRUE && matching1 = -1 15.99/5.25 f6278_0_cos_ConstantStackPush(EOS(STATIC_6278), i1123, i1124, i1123, i1124, i1126, matching1, i1126) -> f6282_0_cos_IntArithmetic(EOS(STATIC_6282), i1123, i1124, i1123, i1124, i1126, -1, i1126, 2) :|: TRUE && matching1 = -1 15.99/5.25 f6282_0_cos_IntArithmetic(EOS(STATIC_6282), i1123, i1124, i1123, i1124, i1126, matching1, i1126, matching2) -> f6284_0_cos_InvokeMethod(EOS(STATIC_6284), i1123, i1124, i1123, i1124, i1126, -1, i1155) :|: i1155 = i1126 / 2 && i1126 > 1 && i1155 < i1126 && matching1 = -1 && matching2 = 2 15.99/5.25 f6284_0_cos_InvokeMethod(EOS(STATIC_6284), i1123, i1124, i1123, i1124, i1126, matching1, i1155) -> f6286_0_power_ConstantStackPush(EOS(STATIC_6286), -1, i1155, -1, i1155) :|: i1123 >= 1 && i1124 > 1 && i1155 >= 1 && i1126 > 1 && i1124 < i1123 && i1126 <= i1124 && matching1 = -1 15.99/5.25 f6284_0_cos_InvokeMethod(EOS(STATIC_6284), i1123, i1124, i1123, i1124, i1126, matching1, i1155) -> f6286_1_power_ConstantStackPush(EOS(STATIC_6286), i1123, i1124, i1123, i1124, i1126, -1, i1155) :|: i1123 >= 1 && i1124 > 1 && i1155 >= 1 && i1126 > 1 && i1124 < i1123 && i1126 <= i1124 && matching1 = -1 15.99/5.25 f6286_0_power_ConstantStackPush(EOS(STATIC_6286), matching1, i1155, matching2, i1155) -> f6538_0_power_ConstantStackPush(EOS(STATIC_6538), -1, i1155, -1, i1155) :|: TRUE && matching1 = -1 && matching2 = -1 15.99/5.25 f6290_0_power_Return(EOS(STATIC_6290), i1123, i1124, i1123, i1124, i1126, i1173) -> f6292_0_cos_Load(EOS(STATIC_6292), i1123, i1124, i1123, i1124, i1126, i1173) :|: TRUE 15.99/5.25 f6292_0_cos_Load(EOS(STATIC_6292), i1123, i1124, i1123, i1124, i1126, i1173) -> f6294_0_cos_Load(EOS(STATIC_6294), i1123, i1124, i1123, i1124, i1126, i1173, i1123) :|: TRUE 15.99/5.25 f6294_0_cos_Load(EOS(STATIC_6294), i1123, i1124, i1123, i1124, i1126, i1173, i1123) -> f6296_0_cos_InvokeMethod(EOS(STATIC_6296), i1123, i1124, i1123, i1124, i1126, i1173, i1123, i1126) :|: TRUE 15.99/5.25 f6296_0_cos_InvokeMethod(EOS(STATIC_6296), i1123, i1124, i1123, i1124, i1126, i1173, i1123, i1126) -> f6298_0_power_ConstantStackPush(EOS(STATIC_6298), i1123, i1126, i1123, i1126) :|: i1123 >= 1 && i1124 > 1 && i1126 > 1 && i1124 < i1123 && i1126 <= i1124 15.99/5.25 f6296_0_cos_InvokeMethod(EOS(STATIC_6296), i1123, i1124, i1123, i1124, i1126, i1173, i1123, i1126) -> f6298_1_power_ConstantStackPush(EOS(STATIC_6298), i1123, i1124, i1123, i1124, i1126, i1173, i1123, i1126) :|: i1123 >= 1 && i1124 > 1 && i1126 > 1 && i1124 < i1123 && i1126 <= i1124 15.99/5.25 f6298_0_power_ConstantStackPush(EOS(STATIC_6298), i1123, i1126, i1123, i1126) -> f6556_0_power_ConstantStackPush(EOS(STATIC_6556), i1123, i1126, i1123, i1126) :|: TRUE 15.99/5.25 f6302_0_power_Return(EOS(STATIC_6302), i1197, i1124, i1197, i1124, i1199, i1173, i1195) -> f6304_0_cos_IntArithmetic(EOS(STATIC_6304), i1197, i1124, i1197, i1124, i1199, i1173, i1195) :|: TRUE 15.99/5.25 f6304_0_cos_IntArithmetic(EOS(STATIC_6304), i1197, i1124, i1197, i1124, i1199, i1173, i1195) -> f6306_0_cos_Load(EOS(STATIC_6306), i1197, i1124, i1197, i1124, i1199) :|: TRUE 15.99/5.25 f6306_0_cos_Load(EOS(STATIC_6306), i1197, i1124, i1197, i1124, i1199) -> f6308_0_cos_InvokeMethod(EOS(STATIC_6308), i1197, i1124, i1197, i1124, i1199, i1199) :|: TRUE 15.99/5.25 f6308_0_cos_InvokeMethod(EOS(STATIC_6308), i1197, i1124, i1197, i1124, i1199, i1199) -> f6310_0_fact_ConstantStackPush(EOS(STATIC_6310), i1199, i1199) :|: i1197 >= 1 && i1124 > 1 && i1199 > 1 && i1124 < i1197 && i1199 <= i1124 15.99/5.25 f6308_0_cos_InvokeMethod(EOS(STATIC_6308), i1197, i1124, i1197, i1124, i1199, i1199) -> f6310_1_fact_ConstantStackPush(EOS(STATIC_6310), i1197, i1124, i1197, i1124, i1199, i1199) :|: i1197 >= 1 && i1124 > 1 && i1199 > 1 && i1124 < i1197 && i1199 <= i1124 15.99/5.25 f6310_0_fact_ConstantStackPush(EOS(STATIC_6310), i1199, i1199) -> f6574_0_fact_ConstantStackPush(EOS(STATIC_6574), i1199, i1199) :|: TRUE 15.99/5.25 f6314_0_fact_Return(EOS(STATIC_6314), i1197, i1124, i1197, i1124, i1215, i1213) -> f6316_0_cos_IntArithmetic(EOS(STATIC_6316), i1197, i1124, i1197, i1124, i1215, i1213) :|: TRUE 15.99/5.25 f6316_0_cos_IntArithmetic(EOS(STATIC_6316), i1197, i1124, i1197, i1124, i1215, i1213) -> f6318_0_cos_IntArithmetic(EOS(STATIC_6318), i1197, i1124, i1197, i1124, i1215) :|: i1217 = i1201 / i1213 && i1213 >= 1 15.99/5.25 f6318_0_cos_IntArithmetic(EOS(STATIC_6318), i1197, i1124, i1197, i1124, i1215) -> f6320_0_cos_Store(EOS(STATIC_6320), i1197, i1124, i1197, i1124, i1215) :|: TRUE 15.99/5.25 f6320_0_cos_Store(EOS(STATIC_6320), i1197, i1124, i1197, i1124, i1215) -> f6322_0_cos_Inc(EOS(STATIC_6322), i1197, i1124, i1197, i1124, i1215) :|: TRUE 15.99/5.25 f6322_0_cos_Inc(EOS(STATIC_6322), i1197, i1124, i1197, i1124, i1215) -> f6324_0_cos_JMP(EOS(STATIC_6324), i1197, i1124, i1197, i1124, i1215 + 2) :|: TRUE 15.99/5.25 f6324_0_cos_JMP(EOS(STATIC_6324), i1197, i1124, i1197, i1124, i1221) -> f6326_0_cos_Load(EOS(STATIC_6326), i1197, i1124, i1197, i1124, i1221) :|: TRUE 15.99/5.25 f6326_0_cos_Load(EOS(STATIC_6326), i1197, i1124, i1197, i1124, i1221) -> f6256_0_cos_Load(EOS(STATIC_6256), i1197, i1124, i1197, i1124, i1221) :|: TRUE 15.99/5.25 f6256_0_cos_Load(EOS(STATIC_6256), i1123, i1124, i1123, i1124, i1126) -> f6258_0_cos_Load(EOS(STATIC_6258), i1123, i1124, i1123, i1124, i1126, i1126) :|: TRUE 15.99/5.25 f6286_1_power_ConstantStackPush(EOS(STATIC_6286), i1123, i1124, i1123, i1124, i1126, matching1, i1155) -> f6290_0_power_Return(EOS(STATIC_6290), i1123, i1124, i1123, i1124, i1126, i1173) :|: TRUE && matching1 = -1 15.99/5.25 f6298_1_power_ConstantStackPush(EOS(STATIC_6298), i1197, i1124, i1197, i1124, i1199, i1173, i1197, i1199) -> f6302_0_power_Return(EOS(STATIC_6302), i1197, i1124, i1197, i1124, i1199, i1173, i1195) :|: TRUE 15.99/5.25 f6310_1_fact_ConstantStackPush(EOS(STATIC_6310), i1197, i1124, i1197, i1124, i1215, i1215) -> f6314_0_fact_Return(EOS(STATIC_6314), i1197, i1124, i1197, i1124, i1215, i1213) :|: TRUE 15.99/5.25 Combined rules. Obtained 5 IRulesP rules: 15.99/5.25 f6314_0_fact_Return(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) -> f6314_0_fact_Return'(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) :|: i1215:0 + 2 <= i1124:0 && i1124:0 > 1 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 15.99/5.25 f6314_0_fact_Return'(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) -> f6314_0_fact_Return(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0 + 2, i1213:1) :|: i1215:0 + 2 <= i1124:0 && i1124:0 > 1 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 && i1201:0 - i1213:0 * div + i1213:0 > 0 && i1213:0 > i1201:0 - i1213:0 * div && i1215:0 + 2 - 2 * div1 < 2 && i1215:0 + 2 - 2 * div1 > -2 15.99/5.25 Removed following non-SCC rules: 15.99/5.25 f6314_0_fact_Return'(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) -> f6556_0_power_ConstantStackPush(EOS(STATIC_6556), i1197:0, i1215:0 + 2, i1197:0, i1215:0 + 2) :|: i1215:0 + 2 <= i1124:0 && i1124:0 > 1 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 && i1201:0 - i1213:0 * div + i1213:0 > 0 && i1213:0 > i1201:0 - i1213:0 * div && i1215:0 + 2 - 2 * div1 < 2 && i1215:0 + 2 - 2 * div1 > -2 15.99/5.25 f6314_0_fact_Return'(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) -> f6538_0_power_ConstantStackPush(EOS(STATIC_6538), -1, div1, -1, div1) :|: i1215:0 + 2 <= i1124:0 && i1124:0 > 1 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 && i1201:0 - i1213:0 * div + i1213:0 > 0 && i1213:0 > i1201:0 - i1213:0 * div && i1215:0 + 2 - 2 * div1 < 2 && i1215:0 + 2 - 2 * div1 > -2 15.99/5.25 f6314_0_fact_Return'(EOS(STATIC_6314), i1197:0, i1124:0, i1197:0, i1124:0, i1215:0, i1213:0) -> f6574_0_fact_ConstantStackPush(EOS(STATIC_6574), i1215:0 + 2, i1215:0 + 2) :|: i1215:0 + 2 <= i1124:0 && i1124:0 > 1 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 && i1201:0 - i1213:0 * div + i1213:0 > 0 && i1213:0 > i1201:0 - i1213:0 * div && i1215:0 + 2 - 2 * div1 < 2 && i1215:0 + 2 - 2 * div1 > -2 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f6314_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6314_0_fact_Return(x2, x3, x4, x5, x6, x7) 15.99/5.25 f6314_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6314_0_fact_Return'(x2, x3, x4, x5, x6, x7) 15.99/5.25 EOS(x1) -> EOS 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f6314_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6314_0_fact_Return(x3, x4, x5, x6) 15.99/5.25 f6314_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6314_0_fact_Return'(x3, x4, x5, x6) 15.99/5.25 Finished conversion. Obtained 2 rules.P rules: 15.99/5.25 f6314_0_fact_Return(i1197:0, i1124:0, i1215:0, i1213:0) -> f6314_0_fact_Return'(i1197:0, i1124:0, i1215:0, i1213:0) :|: i1124:0 > 1 && i1215:0 + 2 <= i1124:0 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1197:0 > i1124:0 && i1215:0 + 2 > div1 15.99/5.25 f6314_0_fact_Return'(i1197:0, i1124:0, i1215:0, i1213:0) -> f6314_0_fact_Return(i1197:0, i1124:0, i1215:0 + 2, i1213:1) :|: i1124:0 > 1 && i1215:0 + 2 <= i1124:0 && i1197:0 > 0 && i1213:0 > 0 && div1 > 0 && i1215:0 > -1 && i1215:0 + 2 > div1 && i1197:0 > i1124:0 && i1201:0 - i1213:0 * div + i1213:0 > 0 && i1213:0 > i1201:0 - i1213:0 * div && i1215:0 + 2 - 2 * div1 > -2 && i1215:0 + 2 - 2 * div1 < 2 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (48) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6314_0_fact_Return(x, x1, x2, x3) -> f6314_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 15.99/5.25 f6314_0_fact_Return'(x5, x6, x7, x8) -> f6314_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (49) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (50) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6314_0_fact_Return(x, x1, x2, x3) -> f6314_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 15.99/5.25 f6314_0_fact_Return'(x5, x6, x7, x8) -> f6314_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (51) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f6314_0_fact_Return(x, x1, x2, x3) -> f6314_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 15.99/5.25 (2) f6314_0_fact_Return'(x5, x6, x7, x8) -> f6314_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (52) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f6314_0_fact_Return(x, x1, x2, x3) -> f6314_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 15.99/5.25 (2) f6314_0_fact_Return'(x5, x6, x7, x8) -> f6314_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (53) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (54) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6314_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6314_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (55) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f6314_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (56) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6314_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6314_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) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (57) PolynomialOrderProcessor (EQUIVALENT) 15.99/5.25 Found the following polynomial interpretation: 15.99/5.25 [f6314_0_fact_Return(x, x1, x2, x3)] = -1 + x1 - x2 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f6314_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6314_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) 15.99/5.25 The following rules are bounded: 15.99/5.25 f6314_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6314_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) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (58) 15.99/5.25 YES 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (59) 15.99/5.25 Obligation: 15.99/5.25 SCC of termination graph based on JBC Program. 15.99/5.25 SCC contains nodes from the following methods: TaylorSeriesIte.sin(II)I 15.99/5.25 SCC calls the following helper methods: TaylorSeriesIte.power(II)I, TaylorSeriesIte.fact(I)I 15.99/5.25 Performed SCC analyses: 15.99/5.25 *Used field analysis yielded the following read fields: 15.99/5.25 15.99/5.25 *Marker field analysis yielded the following relations that could be markers: 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (60) SCCToIRSProof (SOUND) 15.99/5.25 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.25 Generated rules. Obtained 34 IRulesP rules: 15.99/5.25 f6257_0_sin_Load(EOS(STATIC_6257), i1109, i1110, i1109, i1110, i1112, i1112) -> f6259_0_sin_GT(EOS(STATIC_6259), i1109, i1110, i1109, i1110, i1112, i1112, i1110) :|: TRUE 15.99/5.25 f6259_0_sin_GT(EOS(STATIC_6259), i1109, i1110, i1109, i1110, i1112, i1112, i1110) -> f6262_0_sin_GT(EOS(STATIC_6262), i1109, i1110, i1109, i1110, i1112, i1112, i1110) :|: i1112 <= i1110 15.99/5.25 f6262_0_sin_GT(EOS(STATIC_6262), i1109, i1110, i1109, i1110, i1112, i1112, i1110) -> f6266_0_sin_Load(EOS(STATIC_6266), i1109, i1110, i1109, i1110, i1112) :|: i1112 <= i1110 15.99/5.25 f6266_0_sin_Load(EOS(STATIC_6266), i1109, i1110, i1109, i1110, i1112) -> f6270_0_sin_ConstantStackPush(EOS(STATIC_6270), i1109, i1110, i1109, i1110, i1112) :|: TRUE 15.99/5.25 f6270_0_sin_ConstantStackPush(EOS(STATIC_6270), i1109, i1110, i1109, i1110, i1112) -> f6274_0_sin_Load(EOS(STATIC_6274), i1109, i1110, i1109, i1110, i1112, -1) :|: TRUE 15.99/5.25 f6274_0_sin_Load(EOS(STATIC_6274), i1109, i1110, i1109, i1110, i1112, matching1) -> f6277_0_sin_ConstantStackPush(EOS(STATIC_6277), i1109, i1110, i1109, i1110, i1112, -1, i1112) :|: TRUE && matching1 = -1 15.99/5.25 f6277_0_sin_ConstantStackPush(EOS(STATIC_6277), i1109, i1110, i1109, i1110, i1112, matching1, i1112) -> f6280_0_sin_IntArithmetic(EOS(STATIC_6280), i1109, i1110, i1109, i1110, i1112, -1, i1112, 2) :|: TRUE && matching1 = -1 15.99/5.25 f6280_0_sin_IntArithmetic(EOS(STATIC_6280), i1109, i1110, i1109, i1110, i1112, matching1, i1112, matching2) -> f6283_0_sin_InvokeMethod(EOS(STATIC_6283), i1109, i1110, i1109, i1110, i1112, -1, i1154) :|: i1154 = i1112 / 2 && i1112 > 1 && i1154 < i1112 && matching1 = -1 && matching2 = 2 15.99/5.25 f6283_0_sin_InvokeMethod(EOS(STATIC_6283), i1109, i1110, i1109, i1110, i1112, matching1, i1154) -> f6285_0_power_ConstantStackPush(EOS(STATIC_6285), -1, i1154, -1, i1154) :|: i1109 >= 1 && i1110 > 1 && i1154 >= 1 && i1112 > 1 && i1110 < i1109 && i1112 <= i1110 && matching1 = -1 15.99/5.25 f6283_0_sin_InvokeMethod(EOS(STATIC_6283), i1109, i1110, i1109, i1110, i1112, matching1, i1154) -> f6285_1_power_ConstantStackPush(EOS(STATIC_6285), i1109, i1110, i1109, i1110, i1112, -1, i1154) :|: i1109 >= 1 && i1110 > 1 && i1154 >= 1 && i1112 > 1 && i1110 < i1109 && i1112 <= i1110 && matching1 = -1 15.99/5.25 f6285_0_power_ConstantStackPush(EOS(STATIC_6285), matching1, i1154, matching2, i1154) -> f6706_0_power_ConstantStackPush(EOS(STATIC_6706), -1, i1154, -1, i1154) :|: TRUE && matching1 = -1 && matching2 = -1 15.99/5.25 f6289_0_power_Return(EOS(STATIC_6289), i1109, i1110, i1109, i1110, i1112, i1163) -> f6291_0_sin_Load(EOS(STATIC_6291), i1109, i1110, i1109, i1110, i1112, i1163) :|: TRUE 15.99/5.25 f6291_0_sin_Load(EOS(STATIC_6291), i1109, i1110, i1109, i1110, i1112, i1163) -> f6293_0_sin_Load(EOS(STATIC_6293), i1109, i1110, i1109, i1110, i1112, i1163, i1109) :|: TRUE 15.99/5.25 f6293_0_sin_Load(EOS(STATIC_6293), i1109, i1110, i1109, i1110, i1112, i1163, i1109) -> f6295_0_sin_InvokeMethod(EOS(STATIC_6295), i1109, i1110, i1109, i1110, i1112, i1163, i1109, i1112) :|: TRUE 15.99/5.25 f6295_0_sin_InvokeMethod(EOS(STATIC_6295), i1109, i1110, i1109, i1110, i1112, i1163, i1109, i1112) -> f6297_0_power_ConstantStackPush(EOS(STATIC_6297), i1109, i1112, i1109, i1112) :|: i1109 >= 1 && i1110 > 1 && i1112 > 1 && i1110 < i1109 && i1112 <= i1110 15.99/5.25 f6295_0_sin_InvokeMethod(EOS(STATIC_6295), i1109, i1110, i1109, i1110, i1112, i1163, i1109, i1112) -> f6297_1_power_ConstantStackPush(EOS(STATIC_6297), i1109, i1110, i1109, i1110, i1112, i1163, i1109, i1112) :|: i1109 >= 1 && i1110 > 1 && i1112 > 1 && i1110 < i1109 && i1112 <= i1110 15.99/5.25 f6297_0_power_ConstantStackPush(EOS(STATIC_6297), i1109, i1112, i1109, i1112) -> f6724_0_power_ConstantStackPush(EOS(STATIC_6724), i1109, i1112, i1109, i1112) :|: TRUE 15.99/5.25 f6301_0_power_Return(EOS(STATIC_6301), i1185, i1110, i1185, i1110, i1187, i1163, i1183) -> f6303_0_sin_IntArithmetic(EOS(STATIC_6303), i1185, i1110, i1185, i1110, i1187, i1163, i1183) :|: TRUE 15.99/5.25 f6303_0_sin_IntArithmetic(EOS(STATIC_6303), i1185, i1110, i1185, i1110, i1187, i1163, i1183) -> f6305_0_sin_Load(EOS(STATIC_6305), i1185, i1110, i1185, i1110, i1187) :|: TRUE 15.99/5.25 f6305_0_sin_Load(EOS(STATIC_6305), i1185, i1110, i1185, i1110, i1187) -> f6307_0_sin_InvokeMethod(EOS(STATIC_6307), i1185, i1110, i1185, i1110, i1187, i1187) :|: TRUE 15.99/5.25 f6307_0_sin_InvokeMethod(EOS(STATIC_6307), i1185, i1110, i1185, i1110, i1187, i1187) -> f6309_0_fact_ConstantStackPush(EOS(STATIC_6309), i1187, i1187) :|: i1185 >= 1 && i1110 > 1 && i1187 > 1 && i1110 < i1185 && i1187 <= i1110 15.99/5.25 f6307_0_sin_InvokeMethod(EOS(STATIC_6307), i1185, i1110, i1185, i1110, i1187, i1187) -> f6309_1_fact_ConstantStackPush(EOS(STATIC_6309), i1185, i1110, i1185, i1110, i1187, i1187) :|: i1185 >= 1 && i1110 > 1 && i1187 > 1 && i1110 < i1185 && i1187 <= i1110 15.99/5.25 f6309_0_fact_ConstantStackPush(EOS(STATIC_6309), i1187, i1187) -> f6742_0_fact_ConstantStackPush(EOS(STATIC_6742), i1187, i1187) :|: TRUE 15.99/5.25 f6313_0_fact_Return(EOS(STATIC_6313), i1185, i1110, i1185, i1110, i1208, i1206) -> f6315_0_sin_IntArithmetic(EOS(STATIC_6315), i1185, i1110, i1185, i1110, i1208, i1206) :|: TRUE 15.99/5.25 f6315_0_sin_IntArithmetic(EOS(STATIC_6315), i1185, i1110, i1185, i1110, i1208, i1206) -> f6317_0_sin_IntArithmetic(EOS(STATIC_6317), i1185, i1110, i1185, i1110, i1208) :|: i1216 = i1200 / i1206 && i1206 >= 1 15.99/5.25 f6317_0_sin_IntArithmetic(EOS(STATIC_6317), i1185, i1110, i1185, i1110, i1208) -> f6319_0_sin_Store(EOS(STATIC_6319), i1185, i1110, i1185, i1110, i1208) :|: TRUE 15.99/5.25 f6319_0_sin_Store(EOS(STATIC_6319), i1185, i1110, i1185, i1110, i1208) -> f6321_0_sin_Inc(EOS(STATIC_6321), i1185, i1110, i1185, i1110, i1208) :|: TRUE 15.99/5.25 f6321_0_sin_Inc(EOS(STATIC_6321), i1185, i1110, i1185, i1110, i1208) -> f6323_0_sin_JMP(EOS(STATIC_6323), i1185, i1110, i1185, i1110, i1208 + 2) :|: TRUE 15.99/5.25 f6323_0_sin_JMP(EOS(STATIC_6323), i1185, i1110, i1185, i1110, i1220) -> f6325_0_sin_Load(EOS(STATIC_6325), i1185, i1110, i1185, i1110, i1220) :|: TRUE 15.99/5.25 f6325_0_sin_Load(EOS(STATIC_6325), i1185, i1110, i1185, i1110, i1220) -> f6254_0_sin_Load(EOS(STATIC_6254), i1185, i1110, i1185, i1110, i1220) :|: TRUE 15.99/5.25 f6254_0_sin_Load(EOS(STATIC_6254), i1109, i1110, i1109, i1110, i1112) -> f6257_0_sin_Load(EOS(STATIC_6257), i1109, i1110, i1109, i1110, i1112, i1112) :|: TRUE 15.99/5.25 f6285_1_power_ConstantStackPush(EOS(STATIC_6285), i1109, i1110, i1109, i1110, i1112, matching1, i1154) -> f6289_0_power_Return(EOS(STATIC_6289), i1109, i1110, i1109, i1110, i1112, i1163) :|: TRUE && matching1 = -1 15.99/5.25 f6297_1_power_ConstantStackPush(EOS(STATIC_6297), i1185, i1110, i1185, i1110, i1187, i1163, i1185, i1187) -> f6301_0_power_Return(EOS(STATIC_6301), i1185, i1110, i1185, i1110, i1187, i1163, i1183) :|: TRUE 15.99/5.25 f6309_1_fact_ConstantStackPush(EOS(STATIC_6309), i1185, i1110, i1185, i1110, i1208, i1208) -> f6313_0_fact_Return(EOS(STATIC_6313), i1185, i1110, i1185, i1110, i1208, i1206) :|: TRUE 15.99/5.25 Combined rules. Obtained 5 IRulesP rules: 15.99/5.25 f6313_0_fact_Return(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) -> f6313_0_fact_Return'(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) :|: i1208:0 + 2 <= i1110:0 && i1110:0 > 1 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 15.99/5.25 f6313_0_fact_Return'(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) -> f6313_0_fact_Return(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0 + 2, i1206:1) :|: i1208:0 + 2 <= i1110:0 && i1110:0 > 1 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 && i1200:0 - i1206:0 * div + i1206:0 > 0 && i1206:0 > i1200:0 - i1206:0 * div && i1208:0 + 2 - 2 * div1 < 2 && i1208:0 + 2 - 2 * div1 > -2 15.99/5.25 Removed following non-SCC rules: 15.99/5.25 f6313_0_fact_Return'(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) -> f6724_0_power_ConstantStackPush(EOS(STATIC_6724), i1185:0, i1208:0 + 2, i1185:0, i1208:0 + 2) :|: i1208:0 + 2 <= i1110:0 && i1110:0 > 1 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 && i1200:0 - i1206:0 * div + i1206:0 > 0 && i1206:0 > i1200:0 - i1206:0 * div && i1208:0 + 2 - 2 * div1 < 2 && i1208:0 + 2 - 2 * div1 > -2 15.99/5.25 f6313_0_fact_Return'(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) -> f6742_0_fact_ConstantStackPush(EOS(STATIC_6742), i1208:0 + 2, i1208:0 + 2) :|: i1208:0 + 2 <= i1110:0 && i1110:0 > 1 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 && i1200:0 - i1206:0 * div + i1206:0 > 0 && i1206:0 > i1200:0 - i1206:0 * div && i1208:0 + 2 - 2 * div1 < 2 && i1208:0 + 2 - 2 * div1 > -2 15.99/5.25 f6313_0_fact_Return'(EOS(STATIC_6313), i1185:0, i1110:0, i1185:0, i1110:0, i1208:0, i1206:0) -> f6706_0_power_ConstantStackPush(EOS(STATIC_6706), -1, div1, -1, div1) :|: i1208:0 + 2 <= i1110:0 && i1110:0 > 1 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 && i1200:0 - i1206:0 * div + i1206:0 > 0 && i1206:0 > i1200:0 - i1206:0 * div && i1208:0 + 2 - 2 * div1 < 2 && i1208:0 + 2 - 2 * div1 > -2 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f6313_0_fact_Return(x1, x2, x3, x4, x5, x6, x7) -> f6313_0_fact_Return(x2, x3, x4, x5, x6, x7) 15.99/5.25 f6313_0_fact_Return'(x1, x2, x3, x4, x5, x6, x7) -> f6313_0_fact_Return'(x2, x3, x4, x5, x6, x7) 15.99/5.25 EOS(x1) -> EOS 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f6313_0_fact_Return(x1, x2, x3, x4, x5, x6) -> f6313_0_fact_Return(x3, x4, x5, x6) 15.99/5.25 f6313_0_fact_Return'(x1, x2, x3, x4, x5, x6) -> f6313_0_fact_Return'(x3, x4, x5, x6) 15.99/5.25 Finished conversion. Obtained 2 rules.P rules: 15.99/5.25 f6313_0_fact_Return(i1185:0, i1110:0, i1208:0, i1206:0) -> f6313_0_fact_Return'(i1185:0, i1110:0, i1208:0, i1206:0) :|: i1110:0 > 1 && i1208:0 + 2 <= i1110:0 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1185:0 > i1110:0 && i1208:0 + 2 > div1 15.99/5.25 f6313_0_fact_Return'(i1185:0, i1110:0, i1208:0, i1206:0) -> f6313_0_fact_Return(i1185:0, i1110:0, i1208:0 + 2, i1206:1) :|: i1110:0 > 1 && i1208:0 + 2 <= i1110:0 && i1185:0 > 0 && i1206:0 > 0 && div1 > 0 && i1208:0 > -1 && i1208:0 + 2 > div1 && i1185:0 > i1110:0 && i1200:0 - i1206:0 * div + i1206:0 > 0 && i1206:0 > i1200:0 - i1206:0 * div && i1208:0 + 2 - 2 * div1 > -2 && i1208:0 + 2 - 2 * div1 < 2 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (61) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6313_0_fact_Return(x, x1, x2, x3) -> f6313_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 15.99/5.25 f6313_0_fact_Return'(x5, x6, x7, x8) -> f6313_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (62) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (63) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6313_0_fact_Return(x, x1, x2, x3) -> f6313_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 15.99/5.25 f6313_0_fact_Return'(x5, x6, x7, x8) -> f6313_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (64) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f6313_0_fact_Return(x, x1, x2, x3) -> f6313_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 15.99/5.25 (2) f6313_0_fact_Return'(x5, x6, x7, x8) -> f6313_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (65) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f6313_0_fact_Return(x, x1, x2, x3) -> f6313_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 15.99/5.25 (2) f6313_0_fact_Return'(x5, x6, x7, x8) -> f6313_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2) 15.99/5.25 (2) -> (1) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (66) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (67) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6313_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6313_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (68) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f6313_0_fact_Return(INTEGER, INTEGER, INTEGER, VARIABLE) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (69) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f6313_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6313_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) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (70) RankingReductionPairProof (EQUIVALENT) 15.99/5.25 Interpretation: 15.99/5.25 [ f6313_0_fact_Return ] = -1/2*f6313_0_fact_Return_3 + 1/2*f6313_0_fact_Return_2 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f6313_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6313_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) 15.99/5.25 15.99/5.25 The following rules are bounded: 15.99/5.25 f6313_0_fact_Return(x:0, x1:0, x2:0, x3:0) -> f6313_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) 15.99/5.25 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (71) 15.99/5.25 YES 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (72) 15.99/5.25 Obligation: 15.99/5.25 SCC of termination graph based on JBC Program. 15.99/5.25 SCC contains nodes from the following methods: TaylorSeriesIte.main([Ljava/lang/String;)V 15.99/5.25 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 15.99/5.25 Performed SCC analyses: 15.99/5.25 *Used field analysis yielded the following read fields: 15.99/5.25 15.99/5.25 *Marker field analysis yielded the following relations that could be markers: 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (73) SCCToIRSProof (SOUND) 15.99/5.25 Transformed FIGraph SCCs to intTRSs. Log: 15.99/5.25 Generated rules. Obtained 81 IRulesP rules: 15.99/5.25 f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(o12sub), java.lang.Object(o12sub), i94, i94) -> f1056_0_main_ArrayLength(EOS(STATIC_1056), java.lang.Object(o12sub), java.lang.Object(o12sub), i94, i94, java.lang.Object(o12sub)) :|: TRUE 15.99/5.25 f1056_0_main_ArrayLength(EOS(STATIC_1056), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, java.lang.Object(ARRAY(i101))) -> f1062_0_main_ArrayLength(EOS(STATIC_1062), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, java.lang.Object(ARRAY(i101))) :|: i101 >= 0 15.99/5.25 f1062_0_main_ArrayLength(EOS(STATIC_1062), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, java.lang.Object(ARRAY(i101))) -> f1069_0_main_GE(EOS(STATIC_1069), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, i101) :|: i101 >= 0 15.99/5.25 f1069_0_main_GE(EOS(STATIC_1069), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, i101) -> f1086_0_main_GE(EOS(STATIC_1086), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, i101) :|: i94 < i101 15.99/5.25 f1086_0_main_GE(EOS(STATIC_1086), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, i101) -> f1196_0_main_Load(EOS(STATIC_1196), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: i94 < i101 15.99/5.25 f1196_0_main_Load(EOS(STATIC_1196), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f1712_0_main_ConstantStackPush(EOS(STATIC_1712), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) :|: TRUE 15.99/5.25 f1712_0_main_ConstantStackPush(EOS(STATIC_1712), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) -> f1732_0_main_IntArithmetic(EOS(STATIC_1732), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, 2) :|: TRUE 15.99/5.25 f1732_0_main_IntArithmetic(EOS(STATIC_1732), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, matching1) -> f2030_0_main_NE(EOS(STATIC_2030), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94 % 2) :|: TRUE && matching1 = 2 15.99/5.25 f2030_0_main_NE(EOS(STATIC_2030), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2088_0_main_NE(EOS(STATIC_2088), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 1) :|: TRUE && matching1 = 1 15.99/5.25 f2030_0_main_NE(EOS(STATIC_2030), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2089_0_main_NE(EOS(STATIC_2089), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE && matching1 = 0 15.99/5.25 f2088_0_main_NE(EOS(STATIC_2088), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2092_0_main_Load(EOS(STATIC_2092), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: 1 > 0 && matching1 = 1 15.99/5.25 f2092_0_main_Load(EOS(STATIC_2092), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f2096_0_main_ConstantStackPush(EOS(STATIC_2096), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) :|: TRUE 15.99/5.25 f2096_0_main_ConstantStackPush(EOS(STATIC_2096), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) -> f2099_0_main_IntArithmetic(EOS(STATIC_2099), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, 3) :|: TRUE 15.99/5.25 f2099_0_main_IntArithmetic(EOS(STATIC_2099), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, matching1) -> f2105_0_main_NE(EOS(STATIC_2105), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94 % 3) :|: TRUE && matching1 = 3 15.99/5.25 f2105_0_main_NE(EOS(STATIC_2105), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i170) -> f2111_0_main_NE(EOS(STATIC_2111), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i170) :|: TRUE 15.99/5.25 f2105_0_main_NE(EOS(STATIC_2105), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2112_0_main_NE(EOS(STATIC_2112), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE && matching1 = 0 15.99/5.25 f2111_0_main_NE(EOS(STATIC_2111), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i170) -> f2188_0_main_Load(EOS(STATIC_2188), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: i170 > 0 15.99/5.25 f2188_0_main_Load(EOS(STATIC_2188), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f2195_0_main_ConstantStackPush(EOS(STATIC_2195), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) :|: TRUE 15.99/5.25 f2195_0_main_ConstantStackPush(EOS(STATIC_2195), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94) -> f2201_0_main_IntArithmetic(EOS(STATIC_2201), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, 5) :|: TRUE 15.99/5.25 f2201_0_main_IntArithmetic(EOS(STATIC_2201), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94, matching1) -> f2247_0_main_NE(EOS(STATIC_2247), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i94 % 5) :|: TRUE && matching1 = 5 15.99/5.25 f2247_0_main_NE(EOS(STATIC_2247), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i190) -> f2321_0_main_NE(EOS(STATIC_2321), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i190) :|: TRUE 15.99/5.25 f2247_0_main_NE(EOS(STATIC_2247), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2322_0_main_NE(EOS(STATIC_2322), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE && matching1 = 0 15.99/5.25 f2321_0_main_NE(EOS(STATIC_2321), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i190) -> f2767_0_main_ConstantStackPush(EOS(STATIC_2767), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: i190 > 0 15.99/5.25 f2767_0_main_ConstantStackPush(EOS(STATIC_2767), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f3084_0_main_Store(EOS(STATIC_3084), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE 15.99/5.25 f3084_0_main_Store(EOS(STATIC_3084), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f3494_0_main_Load(EOS(STATIC_3494), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE && matching1 = 0 15.99/5.25 f3494_0_main_Load(EOS(STATIC_3494), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f3829_0_main_Load(EOS(STATIC_3829), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, 0) :|: TRUE && matching1 = 0 15.99/5.25 f3829_0_main_Load(EOS(STATIC_3829), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i277) -> f4217_0_main_Load(EOS(STATIC_4217), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i277) :|: TRUE 15.99/5.25 f4217_0_main_Load(EOS(STATIC_4217), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i319) -> f4462_0_main_Load(EOS(STATIC_4462), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i319) :|: TRUE 15.99/5.25 f4462_0_main_Load(EOS(STATIC_4462), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i347) -> f4517_0_main_ConstantStackPush(EOS(STATIC_4517), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i347, i347) :|: TRUE 15.99/5.25 f4517_0_main_ConstantStackPush(EOS(STATIC_4517), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i347, i347) -> f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i347, i347, 100) :|: TRUE 15.99/5.25 f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373, i373, matching1) -> f4604_0_main_GE(EOS(STATIC_4604), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373, i373, 100) :|: TRUE && matching1 = 100 15.99/5.25 f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i374, i374, matching1) -> f4605_0_main_GE(EOS(STATIC_4605), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i374, i374, 100) :|: TRUE && matching1 = 100 15.99/5.25 f4604_0_main_GE(EOS(STATIC_4604), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373, i373, matching1) -> f4609_0_main_Inc(EOS(STATIC_4609), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373) :|: i373 < 100 && matching1 = 100 15.99/5.25 f4609_0_main_Inc(EOS(STATIC_4609), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373) -> f4638_0_main_JMP(EOS(STATIC_4638), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i373 + 1) :|: TRUE 15.99/5.25 f4638_0_main_JMP(EOS(STATIC_4638), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i407) -> f4805_0_main_Load(EOS(STATIC_4805), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i407) :|: TRUE 15.99/5.25 f4805_0_main_Load(EOS(STATIC_4805), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i407) -> f4462_0_main_Load(EOS(STATIC_4462), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i407) :|: TRUE 15.99/5.25 f4605_0_main_GE(EOS(STATIC_4605), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i374, i374, matching1) -> f4610_0_main_Inc(EOS(STATIC_4610), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: i374 >= 100 && matching1 = 100 15.99/5.25 f4610_0_main_Inc(EOS(STATIC_4610), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f4512_0_main_Inc(EOS(STATIC_4512), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: TRUE 15.99/5.25 f4512_0_main_Inc(EOS(STATIC_4512), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i337) -> f4539_0_main_JMP(EOS(STATIC_4539), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i337 + 1) :|: TRUE 15.99/5.25 f4539_0_main_JMP(EOS(STATIC_4539), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i363) -> f4603_0_main_Load(EOS(STATIC_4603), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i363) :|: TRUE 15.99/5.25 f4603_0_main_Load(EOS(STATIC_4603), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i363) -> f1032_0_main_Load(EOS(STATIC_1032), java.lang.Object(ARRAY(i335)), java.lang.Object(ARRAY(i335)), i363) :|: TRUE 15.99/5.25 f1032_0_main_Load(EOS(STATIC_1032), java.lang.Object(o12sub), java.lang.Object(o12sub), i94) -> f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(o12sub), java.lang.Object(o12sub), i94, i94) :|: TRUE 15.99/5.25 f2322_0_main_NE(EOS(STATIC_2322), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2768_0_main_Load(EOS(STATIC_2768), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: TRUE && matching1 = 0 15.99/5.25 f2768_0_main_Load(EOS(STATIC_2768), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f3085_0_main_ArrayLength(EOS(STATIC_3085), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) :|: TRUE 15.99/5.25 f3085_0_main_ArrayLength(EOS(STATIC_3085), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) -> f3495_0_main_Load(EOS(STATIC_3495), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) :|: i101 >= 0 15.99/5.25 f3495_0_main_Load(EOS(STATIC_3495), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) -> f3506_0_main_InvokeMethod(EOS(STATIC_3506), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: TRUE 15.99/5.25 f3506_0_main_InvokeMethod(EOS(STATIC_3506), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f3557_0_exp_ConstantStackPush(EOS(STATIC_3557), i101, i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f3506_0_main_InvokeMethod(EOS(STATIC_3506), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f3557_1_exp_ConstantStackPush(EOS(STATIC_3557), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f3557_0_exp_ConstantStackPush(EOS(STATIC_3557), i101, i94, i101, i94) -> f6950_0_exp_ConstantStackPush(EOS(STATIC_6950), i101, i94, i101, i94) :|: TRUE 15.99/5.25 f5980_0_exp_Return(EOS(STATIC_5980), java.lang.Object(ARRAY(i721)), java.lang.Object(ARRAY(i721)), i723, i719) -> f5759_0_exp_Return(EOS(STATIC_5759), java.lang.Object(ARRAY(i721)), java.lang.Object(ARRAY(i721)), i723, i719) :|: TRUE 15.99/5.25 f5759_0_exp_Return(EOS(STATIC_5759), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580, i578) -> f5785_0_main_StackPop(EOS(STATIC_5785), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580, i578) :|: TRUE 15.99/5.25 f5785_0_main_StackPop(EOS(STATIC_5785), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580, i578) -> f5871_0_main_JMP(EOS(STATIC_5871), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580) :|: TRUE 15.99/5.25 f5871_0_main_JMP(EOS(STATIC_5871), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580) -> f5876_0_main_Inc(EOS(STATIC_5876), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580) :|: TRUE 15.99/5.25 f5876_0_main_Inc(EOS(STATIC_5876), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580) -> f4512_0_main_Inc(EOS(STATIC_4512), java.lang.Object(ARRAY(i579)), java.lang.Object(ARRAY(i579)), i580) :|: TRUE 15.99/5.25 f2112_0_main_NE(EOS(STATIC_2112), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2189_0_main_Load(EOS(STATIC_2189), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: TRUE && matching1 = 0 15.99/5.25 f2189_0_main_Load(EOS(STATIC_2189), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f2196_0_main_ArrayLength(EOS(STATIC_2196), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) :|: TRUE 15.99/5.25 f2196_0_main_ArrayLength(EOS(STATIC_2196), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) -> f2202_0_main_Load(EOS(STATIC_2202), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) :|: i101 >= 0 15.99/5.25 f2202_0_main_Load(EOS(STATIC_2202), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) -> f2248_0_main_InvokeMethod(EOS(STATIC_2248), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: TRUE 15.99/5.25 f2248_0_main_InvokeMethod(EOS(STATIC_2248), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f2323_0_cos_ConstantStackPush(EOS(STATIC_2323), i101, i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f2248_0_main_InvokeMethod(EOS(STATIC_2248), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f2323_1_cos_ConstantStackPush(EOS(STATIC_2323), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f2323_0_cos_ConstantStackPush(EOS(STATIC_2323), i101, i94, i101, i94) -> f6980_0_cos_ConstantStackPush(EOS(STATIC_6980), i101, i94, i101, i94) :|: TRUE 15.99/5.25 f6281_0_cos_Return(EOS(STATIC_6281), java.lang.Object(ARRAY(i1145)), java.lang.Object(ARRAY(i1145)), i1147) -> f5916_0_cos_Return(EOS(STATIC_5916), java.lang.Object(ARRAY(i1145)), java.lang.Object(ARRAY(i1145)), i1147) :|: TRUE 15.99/5.25 f5916_0_cos_Return(EOS(STATIC_5916), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) -> f5921_0_main_StackPop(EOS(STATIC_5921), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) :|: TRUE 15.99/5.25 f5921_0_main_StackPop(EOS(STATIC_5921), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) -> f5927_0_main_JMP(EOS(STATIC_5927), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) :|: TRUE 15.99/5.25 f5927_0_main_JMP(EOS(STATIC_5927), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) -> f5933_0_main_Inc(EOS(STATIC_5933), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) :|: TRUE 15.99/5.25 f5933_0_main_Inc(EOS(STATIC_5933), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) -> f4512_0_main_Inc(EOS(STATIC_4512), java.lang.Object(ARRAY(i654)), java.lang.Object(ARRAY(i654)), i655) :|: TRUE 15.99/5.25 f2089_0_main_NE(EOS(STATIC_2089), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, matching1) -> f2093_0_main_Load(EOS(STATIC_2093), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) :|: TRUE && matching1 = 0 15.99/5.25 f2093_0_main_Load(EOS(STATIC_2093), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94) -> f2097_0_main_ArrayLength(EOS(STATIC_2097), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) :|: TRUE 15.99/5.25 f2097_0_main_ArrayLength(EOS(STATIC_2097), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, java.lang.Object(ARRAY(i101))) -> f2100_0_main_Load(EOS(STATIC_2100), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) :|: i101 >= 0 15.99/5.25 f2100_0_main_Load(EOS(STATIC_2100), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101) -> f2106_0_main_InvokeMethod(EOS(STATIC_2106), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: TRUE 15.99/5.25 f2106_0_main_InvokeMethod(EOS(STATIC_2106), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f2118_0_sin_Load(EOS(STATIC_2118), i101, i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f2106_0_main_InvokeMethod(EOS(STATIC_2106), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) -> f2118_1_sin_Load(EOS(STATIC_2118), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i94, i101, i94) :|: i101 >= 1 && i94 < i101 15.99/5.25 f2118_0_sin_Load(EOS(STATIC_2118), i101, i94, i101, i94) -> f7010_0_sin_Load(EOS(STATIC_7010), i101, i94, i101, i94) :|: TRUE 15.99/5.25 f6279_0_sin_Return(EOS(STATIC_6279), java.lang.Object(ARRAY(i1138)), java.lang.Object(ARRAY(i1138)), i1140, i1136) -> f5913_0_sin_Return(EOS(STATIC_5913), java.lang.Object(ARRAY(i1138)), java.lang.Object(ARRAY(i1138)), i1140, i1136) :|: TRUE 15.99/5.25 f5913_0_sin_Return(EOS(STATIC_5913), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652, i650) -> f5919_0_main_StackPop(EOS(STATIC_5919), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652, i650) :|: TRUE 15.99/5.25 f5919_0_main_StackPop(EOS(STATIC_5919), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652, i650) -> f5925_0_main_JMP(EOS(STATIC_5925), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652) :|: TRUE 15.99/5.25 f5925_0_main_JMP(EOS(STATIC_5925), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652) -> f5931_0_main_Inc(EOS(STATIC_5931), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652) :|: TRUE 15.99/5.25 f5931_0_main_Inc(EOS(STATIC_5931), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652) -> f4512_0_main_Inc(EOS(STATIC_4512), java.lang.Object(ARRAY(i651)), java.lang.Object(ARRAY(i651)), i652) :|: TRUE 15.99/5.25 f3557_1_exp_ConstantStackPush(EOS(STATIC_3557), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i723, i721, i723) -> f5980_0_exp_Return(EOS(STATIC_5980), java.lang.Object(ARRAY(i721)), java.lang.Object(ARRAY(i721)), i723, i719) :|: TRUE 15.99/5.25 f2323_1_cos_ConstantStackPush(EOS(STATIC_2323), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1147, i1145, i1147) -> f6281_0_cos_Return(EOS(STATIC_6281), java.lang.Object(ARRAY(i1145)), java.lang.Object(ARRAY(i1145)), i1147) :|: TRUE 15.99/5.25 f2118_1_sin_Load(EOS(STATIC_2118), java.lang.Object(ARRAY(i101)), java.lang.Object(ARRAY(i101)), i1140, i1138, i1140) -> f6279_0_sin_Return(EOS(STATIC_6279), java.lang.Object(ARRAY(i1138)), java.lang.Object(ARRAY(i1138)), i1140, i1136) :|: TRUE 15.99/5.25 Combined rules. Obtained 13 IRulesP rules: 15.99/5.25 f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i374:0, 100) -> f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i94:0 + 1) :|: i374:0 > 99 15.99/5.25 f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 0 15.99/5.25 f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) :|: i101:0 > -1 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 5 * div2 > 0 && i94:0 - 3 * div1 > 0 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, 0, 0, 100) :|: i94:0 - 3 * div1 > 0 && i94:0 - 5 * div2 > 0 && i101:0 > -1 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 5 * div2 < 5 && i94:0 - 3 * div1 < 3 15.99/5.25 f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i373:0, i373:0, 100) -> f4557_0_main_GE(EOS(STATIC_4557), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i373:0 + 1, i373:0 + 1, 100) :|: i373:0 < 100 15.99/5.25 f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 > 0 && i94:0 - 5 * div2 = 0 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i94:0 + 1) :|: i94:0 - 3 * div1 > 0 && i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 5 * div2 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 5 * div2 < 5 && i94:0 - 5 * div2 > -5 15.99/5.25 f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 = 0 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i94:0 + 1) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 3 * div1 > -3 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f1035_0_main_Load(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i94:0 + 1) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 0 && i94:0 - 2 * div < 2 && i94:0 - 2 * div > -2 15.99/5.25 Removed following non-SCC rules: 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f7010_0_sin_Load(EOS(STATIC_7010), i101:0, i94:0, i101:0, i94:0) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 0 && i94:0 - 2 * div < 2 && i94:0 - 2 * div > -2 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f6950_0_exp_ConstantStackPush(EOS(STATIC_6950), i101:0, i94:0, i101:0, i94:0) :|: i94:0 - 3 * div1 > 0 && i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 5 * div2 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 5 * div2 < 5 && i94:0 - 5 * div2 > -5 15.99/5.25 f1035_0_main_Load'(EOS(STATIC_1035), java.lang.Object(ARRAY(i101:0)), java.lang.Object(ARRAY(i101:0)), i94:0, i94:0) -> f6980_0_cos_ConstantStackPush(EOS(STATIC_6980), i101:0, i94:0, i101:0, i94:0) :|: i101:0 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 3 * div1 > -3 15.99/5.25 Filtered constant ground arguments: 15.99/5.25 f4557_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f4557_0_main_GE(x2, x3, x4, x5, x6) 15.99/5.25 f1035_0_main_Load(x1, x2, x3, x4, x5) -> f1035_0_main_Load(x2, x3, x4, x5) 15.99/5.25 f1035_0_main_Load'(x1, x2, x3, x4, x5) -> f1035_0_main_Load'(x2, x3, x4, x5) 15.99/5.25 Filtered duplicate arguments: 15.99/5.25 f4557_0_main_GE(x1, x2, x3, x4, x5) -> f4557_0_main_GE(x2, x3, x5) 15.99/5.25 f1035_0_main_Load(x1, x2, x3, x4) -> f1035_0_main_Load(x2, x4) 15.99/5.25 f1035_0_main_Load'(x1, x2, x3, x4) -> f1035_0_main_Load'(x2, x4) 15.99/5.25 Finished conversion. Obtained 10 rules.P rules: 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i101:0) :|: i374:0 > 99 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) :|: i94:0 < i101:0 && i94:0 - 2 * div = 0 && i101:0 > 0 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) :|: i94:0 < i101:0 && i101:0 > -1 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 > 0 && i94:0 - 5 * div2 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, 0, i101:0) :|: i94:0 - 5 * div2 > 0 && i94:0 - 3 * div1 > 0 && i101:0 > -1 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 5 * div2 < 5 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i373:0, i101:0) -> f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i373:0 + 1, i101:0) :|: i373:0 < 100 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) :|: i94:0 < i101:0 && i101:0 > 0 && i94:0 - 2 * div = 1 && i94:0 - 5 * div2 = 0 && i94:0 - 3 * div1 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i101:0) :|: i101:0 > 0 && i94:0 - 3 * div1 > 0 && i94:0 < i101:0 && i94:0 - 2 * div = 1 && i94:0 - 5 * div2 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 < 3 && i94:0 - 5 * div2 > -5 && i94:0 - 5 * div2 < 5 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) :|: i94:0 < i101:0 && i101:0 > 0 && i94:0 - 3 * div1 = 0 && i94:0 - 2 * div = 1 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i101:0) :|: i94:0 < i101:0 && i101:0 > 0 && i94:0 - 2 * div = 1 && i94:0 - 3 * div1 = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 && i94:0 - 3 * div1 > -3 && i94:0 - 3 * div1 < 3 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(i101:0)), i94:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i101:0) :|: i94:0 < i101:0 && i101:0 > 0 && i94:0 - 2 * div = 0 && i94:0 - 2 * div > -2 && i94:0 - 2 * div < 2 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (74) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), i94:0 + 1, i101:0) :|: i374:0 > 99 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x1 - 2 * x2 = 0 && x > 0 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x3)), x4, x3) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x3)), x4, x3) :|: x4 < x3 && x3 > -1 && x4 - 2 * x5 = 1 && x4 - 3 * x6 > 0 && x4 - 5 * x7 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x8)), x9, x8) -> f4557_0_main_GE(java.lang.Object(ARRAY(x8)), x9, 0, x8) :|: x9 - 5 * x10 > 0 && x9 - 3 * x11 > 0 && x8 > -1 && x9 < x8 && x9 - 2 * x12 = 1 && x9 - 2 * x12 > -2 && x9 - 2 * x12 < 2 && x9 - 3 * x11 < 3 && x9 - 5 * x10 < 5 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(x13)), x14, x15, x13) -> f4557_0_main_GE(java.lang.Object(ARRAY(x13)), x14, x15 + 1, x13) :|: x15 < 100 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x16)), x17, x16) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x16)), x17, x16) :|: x17 < x16 && x16 > 0 && x17 - 2 * x18 = 1 && x17 - 5 * x19 = 0 && x17 - 3 * x20 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x21)), x22, x21) -> f1035_0_main_Load(java.lang.Object(ARRAY(x21)), x22 + 1, x21) :|: x21 > 0 && x22 - 3 * x23 > 0 && x22 < x21 && x22 - 2 * x24 = 1 && x22 - 5 * x25 = 0 && x22 - 2 * x24 > -2 && x22 - 2 * x24 < 2 && x22 - 3 * x23 < 3 && x22 - 5 * x25 > -5 && x22 - 5 * x25 < 5 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x26)), x27, x26) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x26)), x27, x26) :|: x27 < x26 && x26 > 0 && x27 - 3 * x28 = 0 && x27 - 2 * x29 = 1 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x30)), x31, x30) -> f1035_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 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x34)), x35, x34) -> f1035_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (75) IRSFormatTransformerProof (EQUIVALENT) 15.99/5.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (76) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i374:0 > 99 && arith = i94:0 + 1 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x1 - 2 * x2 = 0 && x > 0 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x3)), x4, x3) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x3)), x4, x3) :|: x4 < x3 && x3 > -1 && x4 - 2 * x5 = 1 && x4 - 3 * x6 > 0 && x4 - 5 * x7 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x8)), x9, x8) -> f4557_0_main_GE(java.lang.Object(ARRAY(x8)), x9, 0, x8) :|: x9 - 5 * x10 > 0 && x9 - 3 * x11 > 0 && x8 > -1 && x9 < x8 && x9 - 2 * x12 = 1 && x9 - 2 * x12 > -2 && x9 - 2 * x12 < 2 && x9 - 3 * x11 < 3 && x9 - 5 * x10 < 5 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x39, x37) -> f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x40, x37) :|: x39 < 100 && x40 = x39 + 1 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x16)), x17, x16) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x16)), x17, x16) :|: x17 < x16 && x16 > 0 && x17 - 2 * x18 = 1 && x17 - 5 * x19 = 0 && x17 - 3 * x20 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x41)), x42, x41) -> f1035_0_main_Load(java.lang.Object(ARRAY(x41)), x43, x41) :|: x41 > 0 && x42 - 3 * x44 > 0 && x42 < x41 && x42 - 2 * x45 = 1 && x42 - 5 * x46 = 0 && x42 - 2 * x45 > -2 && x42 - 2 * x45 < 2 && x42 - 3 * x44 < 3 && x42 - 5 * x46 > -5 && x42 - 5 * x46 < 5 && x43 = x42 + 1 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x26)), x27, x26) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x26)), x27, x26) :|: x27 < x26 && x26 > 0 && x27 - 3 * x28 = 0 && x27 - 2 * x29 = 1 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1035_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 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1035_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 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (77) IRSwTTerminationDigraphProof (EQUIVALENT) 15.99/5.25 Constructed termination digraph! 15.99/5.25 Nodes: 15.99/5.25 (1) f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i374:0 > 99 && arith = i94:0 + 1 15.99/5.25 (2) f1035_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x1 - 2 * x2 = 0 && x > 0 15.99/5.25 (3) f1035_0_main_Load(java.lang.Object(ARRAY(x3)), x4, x3) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x3)), x4, x3) :|: x4 < x3 && x3 > -1 && x4 - 2 * x5 = 1 && x4 - 3 * x6 > 0 && x4 - 5 * x7 > 0 15.99/5.25 (4) f1035_0_main_Load'(java.lang.Object(ARRAY(x8)), x9, x8) -> f4557_0_main_GE(java.lang.Object(ARRAY(x8)), x9, 0, x8) :|: x9 - 5 * x10 > 0 && x9 - 3 * x11 > 0 && x8 > -1 && x9 < x8 && x9 - 2 * x12 = 1 && x9 - 2 * x12 > -2 && x9 - 2 * x12 < 2 && x9 - 3 * x11 < 3 && x9 - 5 * x10 < 5 15.99/5.25 (5) f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x39, x37) -> f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x40, x37) :|: x39 < 100 && x40 = x39 + 1 15.99/5.25 (6) f1035_0_main_Load(java.lang.Object(ARRAY(x16)), x17, x16) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x16)), x17, x16) :|: x17 < x16 && x16 > 0 && x17 - 2 * x18 = 1 && x17 - 5 * x19 = 0 && x17 - 3 * x20 > 0 15.99/5.25 (7) f1035_0_main_Load'(java.lang.Object(ARRAY(x41)), x42, x41) -> f1035_0_main_Load(java.lang.Object(ARRAY(x41)), x43, x41) :|: x41 > 0 && x42 - 3 * x44 > 0 && x42 < x41 && x42 - 2 * x45 = 1 && x42 - 5 * x46 = 0 && x42 - 2 * x45 > -2 && x42 - 2 * x45 < 2 && x42 - 3 * x44 < 3 && x42 - 5 * x46 > -5 && x42 - 5 * x46 < 5 && x43 = x42 + 1 15.99/5.25 (8) f1035_0_main_Load(java.lang.Object(ARRAY(x26)), x27, x26) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x26)), x27, x26) :|: x27 < x26 && x26 > 0 && x27 - 3 * x28 = 0 && x27 - 2 * x29 = 1 15.99/5.25 (9) f1035_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1035_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 15.99/5.25 (10) f1035_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1035_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 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (2), (3), (6), (8) 15.99/5.25 (2) -> (10) 15.99/5.25 (3) -> (4), (7), (9) 15.99/5.25 (4) -> (5) 15.99/5.25 (5) -> (1), (5) 15.99/5.25 (6) -> (7), (9) 15.99/5.25 (7) -> (2) 15.99/5.25 (8) -> (9) 15.99/5.25 (9) -> (2) 15.99/5.25 (10) -> (3), (6), (8) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (78) 15.99/5.25 Obligation: 15.99/5.25 15.99/5.25 Termination digraph: 15.99/5.25 Nodes: 15.99/5.25 (1) f4557_0_main_GE(java.lang.Object(ARRAY(i101:0)), i94:0, i374:0, i101:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0)), arith, i101:0) :|: i374:0 > 99 && arith = i94:0 + 1 15.99/5.25 (2) f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x39, x37) -> f4557_0_main_GE(java.lang.Object(ARRAY(x37)), x38, x40, x37) :|: x39 < 100 && x40 = x39 + 1 15.99/5.25 (3) f1035_0_main_Load'(java.lang.Object(ARRAY(x8)), x9, x8) -> f4557_0_main_GE(java.lang.Object(ARRAY(x8)), x9, 0, x8) :|: x9 - 5 * x10 > 0 && x9 - 3 * x11 > 0 && x8 > -1 && x9 < x8 && x9 - 2 * x12 = 1 && x9 - 2 * x12 > -2 && x9 - 2 * x12 < 2 && x9 - 3 * x11 < 3 && x9 - 5 * x10 < 5 15.99/5.25 (4) f1035_0_main_Load(java.lang.Object(ARRAY(x3)), x4, x3) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x3)), x4, x3) :|: x4 < x3 && x3 > -1 && x4 - 2 * x5 = 1 && x4 - 3 * x6 > 0 && x4 - 5 * x7 > 0 15.99/5.25 (5) f1035_0_main_Load'(java.lang.Object(ARRAY(x52)), x53, x52) -> f1035_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 15.99/5.25 (6) f1035_0_main_Load(java.lang.Object(ARRAY(x)), x1, x) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x)), x1, x) :|: x1 < x && x1 - 2 * x2 = 0 && x > 0 15.99/5.25 (7) f1035_0_main_Load'(java.lang.Object(ARRAY(x47)), x48, x47) -> f1035_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 15.99/5.25 (8) f1035_0_main_Load(java.lang.Object(ARRAY(x26)), x27, x26) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x26)), x27, x26) :|: x27 < x26 && x26 > 0 && x27 - 3 * x28 = 0 && x27 - 2 * x29 = 1 15.99/5.25 (9) f1035_0_main_Load'(java.lang.Object(ARRAY(x41)), x42, x41) -> f1035_0_main_Load(java.lang.Object(ARRAY(x41)), x43, x41) :|: x41 > 0 && x42 - 3 * x44 > 0 && x42 < x41 && x42 - 2 * x45 = 1 && x42 - 5 * x46 = 0 && x42 - 2 * x45 > -2 && x42 - 2 * x45 < 2 && x42 - 3 * x44 < 3 && x42 - 5 * x46 > -5 && x42 - 5 * x46 < 5 && x43 = x42 + 1 15.99/5.25 (10) f1035_0_main_Load(java.lang.Object(ARRAY(x16)), x17, x16) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x16)), x17, x16) :|: x17 < x16 && x16 > 0 && x17 - 2 * x18 = 1 && x17 - 5 * x19 = 0 && x17 - 3 * x20 > 0 15.99/5.25 15.99/5.25 Arcs: 15.99/5.25 (1) -> (4), (6), (8), (10) 15.99/5.25 (2) -> (1), (2) 15.99/5.25 (3) -> (2) 15.99/5.25 (4) -> (3), (7), (9) 15.99/5.25 (5) -> (4), (8), (10) 15.99/5.25 (6) -> (5) 15.99/5.25 (7) -> (6) 15.99/5.25 (8) -> (7) 15.99/5.25 (9) -> (6) 15.99/5.25 (10) -> (7), (9) 15.99/5.25 15.99/5.25 This digraph is fully evaluated! 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (79) IntTRSCompressionProof (EQUIVALENT) 15.99/5.25 Compressed rules. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (80) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(i101:0:0)), i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(i101:0:0)), i94:0:0 + 1, i101:0:0) :|: i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x8:0)), x9:0, x8:0) -> f4557_0_main_GE(java.lang.Object(ARRAY(x8:0)), x9:0, 0, x8:0) :|: x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x41:0)), x42:0, x41:0) -> f1035_0_main_Load(java.lang.Object(ARRAY(x41:0)), x42:0 + 1, x41:0) :|: x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x16:0)), x17:0, x16:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x16:0)), x17:0, x16:0) :|: x17:0 - 5 * x19:0 = 0 && x17:0 - 3 * x20:0 > 0 && x17:0 - 2 * x18:0 = 1 && x16:0 > 0 && x17:0 < x16:0 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x52:0)), x53:0, x52:0) -> f1035_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 15.99/5.25 f1035_0_main_Load'(java.lang.Object(ARRAY(x47:0)), x48:0, x47:0) -> f1035_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 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x:0)), x1:0, x:0) :|: x:0 > x1:0 && x1:0 - 2 * x2:0 = 0 && x:0 > 0 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x3:0)), x4:0, x3:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x3:0)), x4:0, x3:0) :|: x4:0 - 3 * x6:0 > 0 && x4:0 - 5 * x7:0 > 0 && x4:0 - 2 * x5:0 = 1 && x3:0 > -1 && x4:0 < x3:0 15.99/5.25 f4557_0_main_GE(java.lang.Object(ARRAY(x37:0)), x38:0, x39:0, x37:0) -> f4557_0_main_GE(java.lang.Object(ARRAY(x37:0)), x38:0, x39:0 + 1, x37:0) :|: x39:0 < 100 15.99/5.25 f1035_0_main_Load(java.lang.Object(ARRAY(x26:0)), x27:0, x26:0) -> f1035_0_main_Load'(java.lang.Object(ARRAY(x26:0)), x27:0, x26:0) :|: x27:0 - 3 * x28:0 = 0 && x27:0 - 2 * x29:0 = 1 && x26:0 > 0 && x27:0 < x26:0 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (81) TempFilterProof (SOUND) 15.99/5.25 Used the following sort dictionary for filtering: 15.99/5.25 f4557_0_main_GE(VARIABLE, VARIABLE, VARIABLE, VARIABLE) 15.99/5.25 java.lang.Object(VARIABLE) 15.99/5.25 ARRAY(VARIABLE) 15.99/5.25 f1035_0_main_Load(VARIABLE, INTEGER, VARIABLE) 15.99/5.25 f1035_0_main_Load'(VARIABLE, INTEGER, INTEGER) 15.99/5.25 Replaced non-predefined constructor symbols by 0. 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (82) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(c, i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(c1, c2, i101:0:0) :|: c2 = i94:0:0 + 1 && (c1 = 0 && c = 0) && i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f1035_0_main_Load'(c6, x42:0, x41:0) -> f1035_0_main_Load(c7, c8, x41:0) :|: c8 = x42:0 + 1 && (c7 = 0 && c6 = 0) && (x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0) 15.99/5.25 f1035_0_main_Load(c9, x17:0, x16:0) -> f1035_0_main_Load'(c10, x17:0, x16:0) :|: c10 = 0 && c9 = 0 && (x17:0 - 5 * x19:0 = 0 && x17:0 - 3 * x20:0 > 0 && x17:0 - 2 * x18:0 = 1 && x16:0 > 0 && x17:0 < x16:0) 15.99/5.25 f1035_0_main_Load'(c11, x53:0, x52:0) -> f1035_0_main_Load(c12, c13, x52:0) :|: c13 = x53:0 + 1 && (c12 = 0 && c11 = 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) 15.99/5.25 f1035_0_main_Load'(c14, x48:0, x47:0) -> f1035_0_main_Load(c15, c16, x47:0) :|: c16 = x48:0 + 1 && (c15 = 0 && c14 = 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) 15.99/5.25 f1035_0_main_Load(c17, x1:0, x:0) -> f1035_0_main_Load'(c18, x1:0, x:0) :|: c18 = 0 && c17 = 0 && (x:0 > x1:0 && x1:0 - 2 * x2:0 = 0 && x:0 > 0) 15.99/5.25 f1035_0_main_Load(c19, x4:0, x3:0) -> f1035_0_main_Load'(c20, x4:0, x3:0) :|: c20 = 0 && c19 = 0 && (x4:0 - 3 * x6:0 > 0 && x4:0 - 5 * x7:0 > 0 && x4:0 - 2 * x5:0 = 1 && x3:0 > -1 && x4:0 < x3:0) 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 f1035_0_main_Load(c24, x27:0, x26:0) -> f1035_0_main_Load'(c25, x27:0, x26:0) :|: c25 = 0 && c24 = 0 && (x27:0 - 3 * x28:0 = 0 && x27:0 - 2 * x29:0 = 1 && x26:0 > 0 && x27:0 < x26:0) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (83) PolynomialOrderProcessor (EQUIVALENT) 15.99/5.25 Found the following polynomial interpretation: 15.99/5.25 [f4557_0_main_GE(x, x1, x2, x3)] = -1 + c*x - x1 + x3 15.99/5.25 [f1035_0_main_Load(x4, x5, x6)] = c4*x4 - x5 + x6 15.99/5.25 [f1035_0_main_Load'(x7, x8, x9)] = -1 + c7*x7 - x8 + x9 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f1035_0_main_Load(c9, x17:0, x16:0) -> f1035_0_main_Load'(c10, x17:0, x16:0) :|: c10 = 0 && c9 = 0 && (x17:0 - 5 * x19:0 = 0 && x17:0 - 3 * x20:0 > 0 && x17:0 - 2 * x18:0 = 1 && x16:0 > 0 && x17:0 < x16:0) 15.99/5.25 f1035_0_main_Load(c17, x1:0, x:0) -> f1035_0_main_Load'(c18, x1:0, x:0) :|: c18 = 0 && c17 = 0 && (x:0 > x1:0 && x1:0 - 2 * x2:0 = 0 && x:0 > 0) 15.99/5.25 f1035_0_main_Load(c19, x4:0, x3:0) -> f1035_0_main_Load'(c20, x4:0, x3:0) :|: c20 = 0 && c19 = 0 && (x4:0 - 3 * x6:0 > 0 && x4:0 - 5 * x7:0 > 0 && x4:0 - 2 * x5:0 = 1 && x3:0 > -1 && x4:0 < x3:0) 15.99/5.25 f1035_0_main_Load(c24, x27:0, x26:0) -> f1035_0_main_Load'(c25, x27:0, x26:0) :|: c25 = 0 && c24 = 0 && (x27:0 - 3 * x28:0 = 0 && x27:0 - 2 * x29:0 = 1 && x26:0 > 0 && x27:0 < x26:0) 15.99/5.25 The following rules are bounded: 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f1035_0_main_Load'(c6, x42:0, x41:0) -> f1035_0_main_Load(c7, c8, x41:0) :|: c8 = x42:0 + 1 && (c7 = 0 && c6 = 0) && (x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0) 15.99/5.25 f1035_0_main_Load(c9, x17:0, x16:0) -> f1035_0_main_Load'(c10, x17:0, x16:0) :|: c10 = 0 && c9 = 0 && (x17:0 - 5 * x19:0 = 0 && x17:0 - 3 * x20:0 > 0 && x17:0 - 2 * x18:0 = 1 && x16:0 > 0 && x17:0 < x16:0) 15.99/5.25 f1035_0_main_Load'(c11, x53:0, x52:0) -> f1035_0_main_Load(c12, c13, x52:0) :|: c13 = x53:0 + 1 && (c12 = 0 && c11 = 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) 15.99/5.25 f1035_0_main_Load'(c14, x48:0, x47:0) -> f1035_0_main_Load(c15, c16, x47:0) :|: c16 = x48:0 + 1 && (c15 = 0 && c14 = 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) 15.99/5.25 f1035_0_main_Load(c17, x1:0, x:0) -> f1035_0_main_Load'(c18, x1:0, x:0) :|: c18 = 0 && c17 = 0 && (x:0 > x1:0 && x1:0 - 2 * x2:0 = 0 && x:0 > 0) 15.99/5.25 f1035_0_main_Load(c19, x4:0, x3:0) -> f1035_0_main_Load'(c20, x4:0, x3:0) :|: c20 = 0 && c19 = 0 && (x4:0 - 3 * x6:0 > 0 && x4:0 - 5 * x7:0 > 0 && x4:0 - 2 * x5:0 = 1 && x3:0 > -1 && x4:0 < x3:0) 15.99/5.25 f1035_0_main_Load(c24, x27:0, x26:0) -> f1035_0_main_Load'(c25, x27:0, x26:0) :|: c25 = 0 && c24 = 0 && (x27:0 - 3 * x28:0 = 0 && x27:0 - 2 * x29:0 = 1 && x26:0 > 0 && x27:0 < x26:0) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (84) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(c, i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(c1, c2, i101:0:0) :|: c2 = i94:0:0 + 1 && (c1 = 0 && c = 0) && i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f1035_0_main_Load'(c6, x42:0, x41:0) -> f1035_0_main_Load(c7, c8, x41:0) :|: c8 = x42:0 + 1 && (c7 = 0 && c6 = 0) && (x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0) 15.99/5.25 f1035_0_main_Load'(c11, x53:0, x52:0) -> f1035_0_main_Load(c12, c13, x52:0) :|: c13 = x53:0 + 1 && (c12 = 0 && c11 = 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) 15.99/5.25 f1035_0_main_Load'(c14, x48:0, x47:0) -> f1035_0_main_Load(c15, c16, x47:0) :|: c16 = x48:0 + 1 && (c15 = 0 && c14 = 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) 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (85) PolynomialOrderProcessor (EQUIVALENT) 15.99/5.25 Found the following polynomial interpretation: 15.99/5.25 [f4557_0_main_GE(x, x1, x2, x3)] = 1 + c*x + x1 + x3 15.99/5.25 [f1035_0_main_Load(x4, x5, x6)] = c4*x4 + x5 + x6 15.99/5.25 [f1035_0_main_Load'(x7, x8, x9)] = c7*x7 + 3*x9 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f1035_0_main_Load'(c6, x42:0, x41:0) -> f1035_0_main_Load(c7, c8, x41:0) :|: c8 = x42:0 + 1 && (c7 = 0 && c6 = 0) && (x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0) 15.99/5.25 f1035_0_main_Load'(c11, x53:0, x52:0) -> f1035_0_main_Load(c12, c13, x52:0) :|: c13 = x53:0 + 1 && (c12 = 0 && c11 = 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) 15.99/5.25 f1035_0_main_Load'(c14, x48:0, x47:0) -> f1035_0_main_Load(c15, c16, x47:0) :|: c16 = x48:0 + 1 && (c15 = 0 && c14 = 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) 15.99/5.25 The following rules are bounded: 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f1035_0_main_Load'(c6, x42:0, x41:0) -> f1035_0_main_Load(c7, c8, x41:0) :|: c8 = x42:0 + 1 && (c7 = 0 && c6 = 0) && (x42:0 - 5 * x46:0 > -5 && x42:0 - 5 * x46:0 < 5 && x42:0 - 3 * x44:0 < 3 && x42:0 - 2 * x45:0 < 2 && x42:0 - 2 * x45:0 > -2 && x42:0 - 5 * x46:0 = 0 && x42:0 - 2 * x45:0 = 1 && x42:0 < x41:0 && x42:0 - 3 * x44:0 > 0 && x41:0 > 0) 15.99/5.25 f1035_0_main_Load'(c11, x53:0, x52:0) -> f1035_0_main_Load(c12, c13, x52:0) :|: c13 = x53:0 + 1 && (c12 = 0 && c11 = 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) 15.99/5.25 f1035_0_main_Load'(c14, x48:0, x47:0) -> f1035_0_main_Load(c15, c16, x47:0) :|: c16 = x48:0 + 1 && (c15 = 0 && c14 = 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) 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (86) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(c, i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(c1, c2, i101:0:0) :|: c2 = i94:0:0 + 1 && (c1 = 0 && c = 0) && i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (87) RankingReductionPairProof (EQUIVALENT) 15.99/5.25 Interpretation: 15.99/5.25 [ f4557_0_main_GE ] = 0 15.99/5.25 [ f1035_0_main_Load ] = -1 15.99/5.25 [ f1035_0_main_Load' ] = -1*f1035_0_main_Load'_2 + f1035_0_main_Load'_3 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f4557_0_main_GE(c, i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(c1, c2, i101:0:0) :|: c2 = i94:0:0 + 1 && (c1 = 0 && c = 0) && i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 15.99/5.25 The following rules are bounded: 15.99/5.25 f4557_0_main_GE(c, i94:0:0, i374:0:0, i101:0:0) -> f1035_0_main_Load(c1, c2, i101:0:0) :|: c2 = i94:0:0 + 1 && (c1 = 0 && c = 0) && i374:0:0 > 99 15.99/5.25 f1035_0_main_Load'(c3, x9:0, x8:0) -> f4557_0_main_GE(c4, x9:0, c5, x8:0) :|: c5 = 0 && (c4 = 0 && c3 = 0) && (x9:0 - 3 * x11:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 2 * x12:0 < 2 && x9:0 - 2 * x12:0 > -2 && x9:0 - 2 * x12:0 = 1 && x9:0 < x8:0 && x8:0 > -1 && x9:0 - 3 * x11:0 > 0 && x9:0 - 5 * x10:0 > 0) 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (88) 15.99/5.25 Obligation: 15.99/5.25 Rules: 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (89) PolynomialOrderProcessor (EQUIVALENT) 15.99/5.25 Found the following polynomial interpretation: 15.99/5.25 [f4557_0_main_GE(x, x1, x2, x3)] = 99 + c*x - x2 15.99/5.25 15.99/5.25 The following rules are decreasing: 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 The following rules are bounded: 15.99/5.25 f4557_0_main_GE(c21, x38:0, x39:0, x37:0) -> f4557_0_main_GE(c22, x38:0, c23, x37:0) :|: c23 = x39:0 + 1 && (c22 = 0 && c21 = 0) && x39:0 < 100 15.99/5.25 15.99/5.25 ---------------------------------------- 15.99/5.25 15.99/5.25 (90) 15.99/5.25 YES 16.14/5.34 EOF