/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 801 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 234 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 182 ms] (12) AND (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 35 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) IRSwT (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] (22) IRSwT (23) TempFilterProof [SOUND, 82 ms] (24) IntTRS (25) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (26) IntTRS (27) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (28) IntTRS (29) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (30) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class AProVEMathRecursive { public static void main(String[] args) { Random.args = args; int x = Random.random(); int y = Random.random(); power(x, y); } public static int power(int base, int exponent) { if (exponent <= 0) { return 1; } else if (exponent == 1) { return base; } else if (base == 2) { return base << (exponent-1); } else if (exponent % 2 == 1) { return base * power(base, exponent-1); } else { int halfPower = power(base, exponent/2); return halfPower * halfPower; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (args.length <= index) { return 0; } String string = args[index]; index++; if (string == null) { return 0; } return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class AProVEMathRecursive { public static void main(String[] args) { Random.args = args; int x = Random.random(); int y = Random.random(); power(x, y); } public static int power(int base, int exponent) { if (exponent <= 0) { return 1; } else if (exponent == 1) { return base; } else if (base == 2) { return base << (exponent-1); } else if (exponent % 2 == 1) { return base * power(base, exponent-1); } else { int halfPower = power(base, exponent/2); return halfPower * halfPower; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (args.length <= index) { return 0; } String string = args[index]; index++; if (string == null) { return 0; } return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: AProVEMathRecursive.main([Ljava/lang/String;)V: Graph of 211 nodes with 0 SCCs. AProVEMathRecursive.power(II)I: Graph of 125 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 1 SCCs. ---------------------------------------- (6) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: AProVEMathRecursive.power(II)I SCC calls the following helper methods: AProVEMathRecursive.power(II)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 63 IRulesP rules: f682_0_power_GT(EOS(STATIC_682), i120, i122, i120, i122, i122) -> f689_0_power_GT(EOS(STATIC_689), i120, i122, i120, i122, i122) :|: TRUE f689_0_power_GT(EOS(STATIC_689), i120, i122, i120, i122, i122) -> f692_0_power_Load(EOS(STATIC_692), i120, i122, i120, i122) :|: i122 > 0 f692_0_power_Load(EOS(STATIC_692), i120, i122, i120, i122) -> f695_0_power_ConstantStackPush(EOS(STATIC_695), i120, i122, i120, i122, i122) :|: TRUE f695_0_power_ConstantStackPush(EOS(STATIC_695), i120, i122, i120, i122, i122) -> f698_0_power_NE(EOS(STATIC_698), i120, i122, i120, i122, i122, 1) :|: TRUE f698_0_power_NE(EOS(STATIC_698), i120, i139, i120, i139, i139, matching1) -> f713_0_power_NE(EOS(STATIC_713), i120, i139, i120, i139, i139, 1) :|: TRUE && matching1 = 1 f713_0_power_NE(EOS(STATIC_713), i120, i139, i120, i139, i139, matching1) -> f719_0_power_Load(EOS(STATIC_719), i120, i139, i120, i139) :|: i139 > 1 && matching1 = 1 f719_0_power_Load(EOS(STATIC_719), i120, i139, i120, i139) -> f722_0_power_ConstantStackPush(EOS(STATIC_722), i120, i139, i120, i139, i120) :|: TRUE f722_0_power_ConstantStackPush(EOS(STATIC_722), i120, i139, i120, i139, i120) -> f725_0_power_NE(EOS(STATIC_725), i120, i139, i120, i139, i120, 2) :|: TRUE f725_0_power_NE(EOS(STATIC_725), i158, i139, i158, i139, i158, matching1) -> f727_0_power_NE(EOS(STATIC_727), i158, i139, i158, i139, i158, 2) :|: TRUE && matching1 = 2 f725_0_power_NE(EOS(STATIC_725), i159, i139, i159, i139, i159, matching1) -> f729_0_power_NE(EOS(STATIC_729), i159, i139, i159, i139, i159, 2) :|: TRUE && matching1 = 2 f727_0_power_NE(EOS(STATIC_727), i158, i139, i158, i139, i158, matching1) -> f733_0_power_Load(EOS(STATIC_733), i158, i139, i158, i139) :|: i158 < 2 && matching1 = 2 f733_0_power_Load(EOS(STATIC_733), i158, i139, i158, i139) -> f781_0_power_ConstantStackPush(EOS(STATIC_781), i158, i139, i158, i139, i139) :|: TRUE f781_0_power_ConstantStackPush(EOS(STATIC_781), i158, i139, i158, i139, i139) -> f789_0_power_IntArithmetic(EOS(STATIC_789), i158, i139, i158, i139, i139, 2) :|: TRUE f789_0_power_IntArithmetic(EOS(STATIC_789), i158, i139, i158, i139, i139, matching1) -> f799_0_power_ConstantStackPush(EOS(STATIC_799), i158, i139, i158, i139, i139 % 2) :|: TRUE && matching1 = 2 f799_0_power_ConstantStackPush(EOS(STATIC_799), i158, i139, i158, i139, i172) -> f806_0_power_NE(EOS(STATIC_806), i158, i139, i158, i139, i172, 1) :|: TRUE f806_0_power_NE(EOS(STATIC_806), i158, i139, i158, i139, matching1, matching2) -> f822_0_power_NE(EOS(STATIC_822), i158, i139, i158, i139, 0, 1) :|: i172 = 0 && matching1 = 0 && matching2 = 1 f806_0_power_NE(EOS(STATIC_806), i158, i139, i158, i139, matching1, matching2) -> f823_0_power_NE(EOS(STATIC_823), i158, i139, i158, i139, 1, 1) :|: i172 = 1 && matching1 = 1 && matching2 = 1 f822_0_power_NE(EOS(STATIC_822), i158, i139, i158, i139, matching1, matching2) -> f828_0_power_Load(EOS(STATIC_828), i158, i139, i158, i139) :|: TRUE && matching1 = 0 && matching2 = 1 f828_0_power_Load(EOS(STATIC_828), i158, i139, i158, i139) -> f838_0_power_Load(EOS(STATIC_838), i158, i139, i139, i158) :|: TRUE f838_0_power_Load(EOS(STATIC_838), i158, i139, i139, i158) -> f858_0_power_ConstantStackPush(EOS(STATIC_858), i158, i139, i158, i139) :|: TRUE f858_0_power_ConstantStackPush(EOS(STATIC_858), i158, i139, i158, i139) -> f874_0_power_IntArithmetic(EOS(STATIC_874), i158, i139, i158, i139, 2) :|: TRUE f874_0_power_IntArithmetic(EOS(STATIC_874), i158, i139, i158, i139, matching1) -> f899_0_power_InvokeMethod(EOS(STATIC_899), i158, i139, i158, i201) :|: i201 = i139 / 2 && i139 > 1 && i201 < i139 && matching1 = 2 f899_0_power_InvokeMethod(EOS(STATIC_899), i158, i139, i158, i201) -> f909_0_power_Load(EOS(STATIC_909), i158, i201, i158, i201) :|: i158 <= 1 && i139 > 1 && i201 >= 1 f899_0_power_InvokeMethod(EOS(STATIC_899), i158, i139, i158, i201) -> f909_1_power_Load(EOS(STATIC_909), i158, i139, i158, i201) :|: i158 <= 1 && i139 > 1 && i201 >= 1 f909_0_power_Load(EOS(STATIC_909), i158, i201, i158, i201) -> f914_0_power_Load(EOS(STATIC_914), i158, i201, i158, i201) :|: TRUE f914_0_power_Load(EOS(STATIC_914), i158, i201, i158, i201) -> f679_0_power_Load(EOS(STATIC_679), i158, i201, i158, i201) :|: TRUE f679_0_power_Load(EOS(STATIC_679), i120, i121, i120, i121) -> f682_0_power_GT(EOS(STATIC_682), i120, i121, i120, i121, i121) :|: TRUE f823_0_power_NE(EOS(STATIC_823), i158, i139, i158, i139, matching1, matching2) -> f833_0_power_Load(EOS(STATIC_833), i158, i139, i158, i139) :|: TRUE && matching1 = 1 && matching2 = 1 f833_0_power_Load(EOS(STATIC_833), i158, i139, i158, i139) -> f839_0_power_Load(EOS(STATIC_839), i158, i139, i158, i139, i158) :|: TRUE f839_0_power_Load(EOS(STATIC_839), i158, i139, i158, i139, i158) -> f861_0_power_Load(EOS(STATIC_861), i158, i139, i139, i158, i158) :|: TRUE f861_0_power_Load(EOS(STATIC_861), i158, i139, i139, i158, i158) -> f876_0_power_ConstantStackPush(EOS(STATIC_876), i158, i139, i158, i158, i139) :|: TRUE f876_0_power_ConstantStackPush(EOS(STATIC_876), i158, i139, i158, i158, i139) -> f901_0_power_IntArithmetic(EOS(STATIC_901), i158, i139, i158, i158, i139, 1) :|: TRUE f901_0_power_IntArithmetic(EOS(STATIC_901), i158, i139, i158, i158, i139, matching1) -> f910_0_power_InvokeMethod(EOS(STATIC_910), i158, i139, i158, i158, i139 - 1) :|: i139 > 0 && matching1 = 1 f910_0_power_InvokeMethod(EOS(STATIC_910), i158, i139, i158, i158, i204) -> f915_0_power_Load(EOS(STATIC_915), i158, i204, i158, i204) :|: i158 <= 1 && i139 > 1 && i204 >= 1 && i204 < i139 f910_0_power_InvokeMethod(EOS(STATIC_910), i158, i139, i158, i158, i204) -> f915_1_power_Load(EOS(STATIC_915), i158, i139, i158, i158, i204) :|: i158 <= 1 && i139 > 1 && i204 >= 1 && i204 < i139 f915_0_power_Load(EOS(STATIC_915), i158, i204, i158, i204) -> f920_0_power_Load(EOS(STATIC_920), i158, i204, i158, i204) :|: TRUE f920_0_power_Load(EOS(STATIC_920), i158, i204, i158, i204) -> f679_0_power_Load(EOS(STATIC_679), i158, i204, i158, i204) :|: TRUE f729_0_power_NE(EOS(STATIC_729), i159, i139, i159, i139, i159, matching1) -> f738_0_power_Load(EOS(STATIC_738), i159, i139, i159, i139) :|: i159 > 2 && matching1 = 2 f738_0_power_Load(EOS(STATIC_738), i159, i139, i159, i139) -> f786_0_power_ConstantStackPush(EOS(STATIC_786), i159, i139, i159, i139, i139) :|: TRUE f786_0_power_ConstantStackPush(EOS(STATIC_786), i159, i139, i159, i139, i139) -> f794_0_power_IntArithmetic(EOS(STATIC_794), i159, i139, i159, i139, i139, 2) :|: TRUE f794_0_power_IntArithmetic(EOS(STATIC_794), i159, i139, i159, i139, i139, matching1) -> f804_0_power_ConstantStackPush(EOS(STATIC_804), i159, i139, i159, i139, i139 % 2) :|: TRUE && matching1 = 2 f804_0_power_ConstantStackPush(EOS(STATIC_804), i159, i139, i159, i139, i174) -> f819_0_power_NE(EOS(STATIC_819), i159, i139, i159, i139, i174, 1) :|: TRUE f819_0_power_NE(EOS(STATIC_819), i159, i139, i159, i139, matching1, matching2) -> f826_0_power_NE(EOS(STATIC_826), i159, i139, i159, i139, 0, 1) :|: i174 = 0 && matching1 = 0 && matching2 = 1 f819_0_power_NE(EOS(STATIC_819), i159, i139, i159, i139, matching1, matching2) -> f827_0_power_NE(EOS(STATIC_827), i159, i139, i159, i139, 1, 1) :|: i174 = 1 && matching1 = 1 && matching2 = 1 f826_0_power_NE(EOS(STATIC_826), i159, i139, i159, i139, matching1, matching2) -> f835_0_power_Load(EOS(STATIC_835), i159, i139, i159, i139) :|: TRUE && matching1 = 0 && matching2 = 1 f835_0_power_Load(EOS(STATIC_835), i159, i139, i159, i139) -> f853_0_power_Load(EOS(STATIC_853), i159, i139, i139, i159) :|: TRUE f853_0_power_Load(EOS(STATIC_853), i159, i139, i139, i159) -> f868_0_power_ConstantStackPush(EOS(STATIC_868), i159, i139, i159, i139) :|: TRUE f868_0_power_ConstantStackPush(EOS(STATIC_868), i159, i139, i159, i139) -> f893_0_power_IntArithmetic(EOS(STATIC_893), i159, i139, i159, i139, 2) :|: TRUE f893_0_power_IntArithmetic(EOS(STATIC_893), i159, i139, i159, i139, matching1) -> f907_0_power_InvokeMethod(EOS(STATIC_907), i159, i139, i159, i203) :|: i203 = i139 / 2 && i139 > 1 && i203 < i139 && matching1 = 2 f907_0_power_InvokeMethod(EOS(STATIC_907), i159, i139, i159, i203) -> f912_0_power_Load(EOS(STATIC_912), i159, i203, i159, i203) :|: i159 > 1 && i139 > 1 && i203 >= 1 f907_0_power_InvokeMethod(EOS(STATIC_907), i159, i139, i159, i203) -> f912_1_power_Load(EOS(STATIC_912), i159, i139, i159, i203) :|: i159 > 1 && i139 > 1 && i203 >= 1 f912_0_power_Load(EOS(STATIC_912), i159, i203, i159, i203) -> f916_0_power_Load(EOS(STATIC_916), i159, i203, i159, i203) :|: TRUE f916_0_power_Load(EOS(STATIC_916), i159, i203, i159, i203) -> f679_0_power_Load(EOS(STATIC_679), i159, i203, i159, i203) :|: TRUE f827_0_power_NE(EOS(STATIC_827), i159, i139, i159, i139, matching1, matching2) -> f837_0_power_Load(EOS(STATIC_837), i159, i139, i159, i139) :|: TRUE && matching1 = 1 && matching2 = 1 f837_0_power_Load(EOS(STATIC_837), i159, i139, i159, i139) -> f856_0_power_Load(EOS(STATIC_856), i159, i139, i159, i139, i159) :|: TRUE f856_0_power_Load(EOS(STATIC_856), i159, i139, i159, i139, i159) -> f872_0_power_Load(EOS(STATIC_872), i159, i139, i139, i159, i159) :|: TRUE f872_0_power_Load(EOS(STATIC_872), i159, i139, i139, i159, i159) -> f896_0_power_ConstantStackPush(EOS(STATIC_896), i159, i139, i159, i159, i139) :|: TRUE f896_0_power_ConstantStackPush(EOS(STATIC_896), i159, i139, i159, i159, i139) -> f908_0_power_IntArithmetic(EOS(STATIC_908), i159, i139, i159, i159, i139, 1) :|: TRUE f908_0_power_IntArithmetic(EOS(STATIC_908), i159, i139, i159, i159, i139, matching1) -> f913_0_power_InvokeMethod(EOS(STATIC_913), i159, i139, i159, i159, i139 - 1) :|: i139 > 0 && matching1 = 1 f913_0_power_InvokeMethod(EOS(STATIC_913), i159, i139, i159, i159, i205) -> f918_0_power_Load(EOS(STATIC_918), i159, i205, i159, i205) :|: i159 > 1 && i139 > 1 && i205 >= 1 && i205 < i139 f913_0_power_InvokeMethod(EOS(STATIC_913), i159, i139, i159, i159, i205) -> f918_1_power_Load(EOS(STATIC_918), i159, i139, i159, i159, i205) :|: i159 > 1 && i139 > 1 && i205 >= 1 && i205 < i139 f918_0_power_Load(EOS(STATIC_918), i159, i205, i159, i205) -> f921_0_power_Load(EOS(STATIC_921), i159, i205, i159, i205) :|: TRUE f921_0_power_Load(EOS(STATIC_921), i159, i205, i159, i205) -> f679_0_power_Load(EOS(STATIC_679), i159, i205, i159, i205) :|: TRUE Combined rules. Obtained 12 IRulesP rules: f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0 - 1, i120:0, i122:0 - 1, i122:0 - 1) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div < 2 && i122:0 - 2 * div > -2 f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT(EOS(STATIC_682), i120:0, div1, i120:0, div1, div1) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 < 2 && i122:0 - 2 * div1 > -2 f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 1 < i122:0 && i122:0 - 2 * div = 1 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0 - 1, i120:0, i122:0 - 1, i122:0 - 1) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div < 2 && i122:0 - 2 * div > -2 f682_0_power_GT(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 2 * div = 0 && div1 > 0 && i122:0 > div1 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f682_0_power_GT(EOS(STATIC_682), i120:0, div1, i120:0, div1, div1) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 < 2 && i122:0 - 2 * div1 > -2 Removed following non-SCC rules: f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f909_1_power_Load(EOS(STATIC_909), i120:0, i122:0, i120:0, div1) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 < 2 && i122:0 - 2 * div1 > -2 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f918_1_power_Load(EOS(STATIC_918), i120:0, i122:0, i120:0, i120:0, i122:0 - 1) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div < 2 && i122:0 - 2 * div > -2 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f915_1_power_Load(EOS(STATIC_915), i120:0, i122:0, i120:0, i120:0, i122:0 - 1) :|: i122:0 > 1 && i120:0 < 2 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div < 2 && i122:0 - 2 * div > -2 f682_0_power_GT'(EOS(STATIC_682), i120:0, i122:0, i120:0, i122:0, i122:0) -> f912_1_power_Load(EOS(STATIC_912), i120:0, i122:0, i120:0, div1) :|: i122:0 > 1 && i120:0 > 2 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 < 2 && i122:0 - 2 * div1 > -2 Filtered constant ground arguments: f682_0_power_GT(x1, x2, x3, x4, x5, x6) -> f682_0_power_GT(x2, x3, x4, x5, x6) f682_0_power_GT'(x1, x2, x3, x4, x5, x6) -> f682_0_power_GT'(x2, x3, x4, x5, x6) EOS(x1) -> EOS Filtered duplicate arguments: f682_0_power_GT(x1, x2, x3, x4, x5) -> f682_0_power_GT(x3, x5) f682_0_power_GT'(x1, x2, x3, x4, x5) -> f682_0_power_GT'(x3, x5) Finished conversion. Obtained 8 rules.P rules: f682_0_power_GT(i120:0, i122:0) -> f682_0_power_GT'(i120:0, i122:0) :|: i120:0 < 2 && i122:0 > 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div = 1 f682_0_power_GT'(i120:0, i122:0) -> f682_0_power_GT(i120:0, i122:0 - 1) :|: i120:0 < 2 && i122:0 > 1 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 f682_0_power_GT(i120:0, i122:0) -> f682_0_power_GT'(i120:0, i122:0) :|: i120:0 < 2 && i122:0 > 1 && i122:0 - 2 * div = 0 && div1 > 0 && i122:0 > div1 f682_0_power_GT'(i120:0, i122:0) -> f682_0_power_GT(i120:0, div1) :|: i120:0 < 2 && i122:0 > 1 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 > -2 && i122:0 - 2 * div1 < 2 f682_0_power_GT(i120:0, i122:0) -> f682_0_power_GT'(i120:0, i122:0) :|: i120:0 > 2 && i122:0 > 1 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 f682_0_power_GT'(i120:0, i122:0) -> f682_0_power_GT(i120:0, i122:0 - 1) :|: i120:0 > 2 && i122:0 > 1 && i122:0 - 2 * div = 1 && i122:0 - 1 < i122:0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 f682_0_power_GT(i120:0, i122:0) -> f682_0_power_GT'(i120:0, i122:0) :|: i120:0 > 2 && i122:0 > 1 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 f682_0_power_GT'(i120:0, i122:0) -> f682_0_power_GT(i120:0, div1) :|: i120:0 > 2 && i122:0 > 1 && i122:0 - 2 * div = 0 && i122:0 > div1 && div1 > 0 && i122:0 - 2 * div > -2 && i122:0 - 2 * div < 2 && i122:0 - 2 * div1 > -2 && i122:0 - 2 * div1 < 2 ---------------------------------------- (8) Obligation: Rules: f682_0_power_GT(x, x1) -> f682_0_power_GT'(x, x1) :|: x < 2 && x1 > 1 && x1 - 1 < x1 && x1 - 2 * x2 = 1 f682_0_power_GT'(x3, x4) -> f682_0_power_GT(x3, x4 - 1) :|: x3 < 2 && x4 > 1 && x4 - 2 * x5 = 1 && x4 - 1 < x4 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 f682_0_power_GT(x6, x7) -> f682_0_power_GT'(x6, x7) :|: x6 < 2 && x7 > 1 && x7 - 2 * x8 = 0 && x9 > 0 && x7 > x9 f682_0_power_GT'(x10, x11) -> f682_0_power_GT(x10, x12) :|: x10 < 2 && x11 > 1 && x11 - 2 * x13 = 0 && x11 > x12 && x12 > 0 && x11 - 2 * x13 > -2 && x11 - 2 * x13 < 2 && x11 - 2 * x12 > -2 && x11 - 2 * x12 < 2 f682_0_power_GT(x14, x15) -> f682_0_power_GT'(x14, x15) :|: x14 > 2 && x15 > 1 && x15 - 2 * x16 = 1 && x15 - 1 < x15 f682_0_power_GT'(x17, x18) -> f682_0_power_GT(x17, x18 - 1) :|: x17 > 2 && x18 > 1 && x18 - 2 * x19 = 1 && x18 - 1 < x18 && x18 - 2 * x19 > -2 && x18 - 2 * x19 < 2 f682_0_power_GT(x20, x21) -> f682_0_power_GT'(x20, x21) :|: x20 > 2 && x21 > 1 && x21 - 2 * x22 = 0 && x21 > x23 && x23 > 0 f682_0_power_GT'(x24, x25) -> f682_0_power_GT(x24, x26) :|: x24 > 2 && x25 > 1 && x25 - 2 * x27 = 0 && x25 > x26 && x26 > 0 && x25 - 2 * x27 > -2 && x25 - 2 * x27 < 2 && x25 - 2 * x26 > -2 && x25 - 2 * x26 < 2 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f682_0_power_GT(x, x1) -> f682_0_power_GT'(x, x1) :|: x < 2 && x1 > 1 && x1 - 1 < x1 && x1 - 2 * x2 = 1 f682_0_power_GT'(x3, x4) -> f682_0_power_GT(x3, arith) :|: x3 < 2 && x4 > 1 && x4 - 2 * x5 = 1 && x4 - 1 < x4 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 && arith = x4 - 1 f682_0_power_GT(x6, x7) -> f682_0_power_GT'(x6, x7) :|: x6 < 2 && x7 > 1 && x7 - 2 * x8 = 0 && x9 > 0 && x7 > x9 f682_0_power_GT'(x10, x11) -> f682_0_power_GT(x10, x12) :|: x10 < 2 && x11 > 1 && x11 - 2 * x13 = 0 && x11 > x12 && x12 > 0 && x11 - 2 * x13 > -2 && x11 - 2 * x13 < 2 && x11 - 2 * x12 > -2 && x11 - 2 * x12 < 2 f682_0_power_GT(x14, x15) -> f682_0_power_GT'(x14, x15) :|: x14 > 2 && x15 > 1 && x15 - 2 * x16 = 1 && x15 - 1 < x15 f682_0_power_GT'(x28, x29) -> f682_0_power_GT(x28, x30) :|: x28 > 2 && x29 > 1 && x29 - 2 * x31 = 1 && x29 - 1 < x29 && x29 - 2 * x31 > -2 && x29 - 2 * x31 < 2 && x30 = x29 - 1 f682_0_power_GT(x20, x21) -> f682_0_power_GT'(x20, x21) :|: x20 > 2 && x21 > 1 && x21 - 2 * x22 = 0 && x21 > x23 && x23 > 0 f682_0_power_GT'(x24, x25) -> f682_0_power_GT(x24, x26) :|: x24 > 2 && x25 > 1 && x25 - 2 * x27 = 0 && x25 > x26 && x26 > 0 && x25 - 2 * x27 > -2 && x25 - 2 * x27 < 2 && x25 - 2 * x26 > -2 && x25 - 2 * x26 < 2 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f682_0_power_GT(x, x1) -> f682_0_power_GT'(x, x1) :|: x < 2 && x1 > 1 && x1 - 1 < x1 && x1 - 2 * x2 = 1 (2) f682_0_power_GT'(x3, x4) -> f682_0_power_GT(x3, arith) :|: x3 < 2 && x4 > 1 && x4 - 2 * x5 = 1 && x4 - 1 < x4 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 && arith = x4 - 1 (3) f682_0_power_GT(x6, x7) -> f682_0_power_GT'(x6, x7) :|: x6 < 2 && x7 > 1 && x7 - 2 * x8 = 0 && x9 > 0 && x7 > x9 (4) f682_0_power_GT'(x10, x11) -> f682_0_power_GT(x10, x12) :|: x10 < 2 && x11 > 1 && x11 - 2 * x13 = 0 && x11 > x12 && x12 > 0 && x11 - 2 * x13 > -2 && x11 - 2 * x13 < 2 && x11 - 2 * x12 > -2 && x11 - 2 * x12 < 2 (5) f682_0_power_GT(x14, x15) -> f682_0_power_GT'(x14, x15) :|: x14 > 2 && x15 > 1 && x15 - 2 * x16 = 1 && x15 - 1 < x15 (6) f682_0_power_GT'(x28, x29) -> f682_0_power_GT(x28, x30) :|: x28 > 2 && x29 > 1 && x29 - 2 * x31 = 1 && x29 - 1 < x29 && x29 - 2 * x31 > -2 && x29 - 2 * x31 < 2 && x30 = x29 - 1 (7) f682_0_power_GT(x20, x21) -> f682_0_power_GT'(x20, x21) :|: x20 > 2 && x21 > 1 && x21 - 2 * x22 = 0 && x21 > x23 && x23 > 0 (8) f682_0_power_GT'(x24, x25) -> f682_0_power_GT(x24, x26) :|: x24 > 2 && x25 > 1 && x25 - 2 * x27 = 0 && x25 > x26 && x26 > 0 && x25 - 2 * x27 > -2 && x25 - 2 * x27 < 2 && x25 - 2 * x26 > -2 && x25 - 2 * x26 < 2 Arcs: (1) -> (2) (2) -> (3) (3) -> (4) (4) -> (1), (3) (5) -> (6) (6) -> (7) (7) -> (8) (8) -> (5), (7) This digraph is fully evaluated! ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f682_0_power_GT(x14, x15) -> f682_0_power_GT'(x14, x15) :|: x14 > 2 && x15 > 1 && x15 - 2 * x16 = 1 && x15 - 1 < x15 (2) f682_0_power_GT'(x24, x25) -> f682_0_power_GT(x24, x26) :|: x24 > 2 && x25 > 1 && x25 - 2 * x27 = 0 && x25 > x26 && x26 > 0 && x25 - 2 * x27 > -2 && x25 - 2 * x27 < 2 && x25 - 2 * x26 > -2 && x25 - 2 * x26 < 2 (3) f682_0_power_GT(x20, x21) -> f682_0_power_GT'(x20, x21) :|: x20 > 2 && x21 > 1 && x21 - 2 * x22 = 0 && x21 > x23 && x23 > 0 (4) f682_0_power_GT'(x28, x29) -> f682_0_power_GT(x28, x30) :|: x28 > 2 && x29 > 1 && x29 - 2 * x31 = 1 && x29 - 1 < x29 && x29 - 2 * x31 > -2 && x29 - 2 * x31 < 2 && x30 = x29 - 1 Arcs: (1) -> (4) (2) -> (1), (3) (3) -> (2) (4) -> (3) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f682_0_power_GT(x14:0, x15:0) -> f682_0_power_GT'(x14:0, x15:0) :|: x15:0 - 2 * x16:0 = 1 && x15:0 - 1 < x15:0 && x15:0 > 1 && x14:0 > 2 f682_0_power_GT(x20:0, x21:0) -> f682_0_power_GT'(x20:0, x21:0) :|: x23:0 < x21:0 && x23:0 > 0 && x21:0 - 2 * x22:0 = 0 && x21:0 > 1 && x20:0 > 2 f682_0_power_GT'(x28:0, x29:0) -> f682_0_power_GT(x28:0, x29:0 - 1) :|: x29:0 - 2 * x31:0 > -2 && x29:0 - 2 * x31:0 < 2 && x29:0 - 1 < x29:0 && x29:0 - 2 * x31:0 = 1 && x29:0 > 1 && x28:0 > 2 f682_0_power_GT'(x24:0, x25:0) -> f682_0_power_GT(x24:0, x26:0) :|: x25:0 - 2 * x26:0 > -2 && x25:0 - 2 * x26:0 < 2 && x25:0 - 2 * x27:0 < 2 && x25:0 - 2 * x27:0 > -2 && x26:0 > 0 && x26:0 < x25:0 && x25:0 - 2 * x27:0 = 0 && x25:0 > 1 && x24:0 > 2 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f682_0_power_GT(INTEGER, INTEGER) f682_0_power_GT'(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f682_0_power_GT(x14:0, x15:0) -> f682_0_power_GT'(x14:0, x15:0) :|: x15:0 - 2 * x16:0 = 1 && x15:0 - 1 < x15:0 && x15:0 > 1 && x14:0 > 2 f682_0_power_GT(x20:0, x21:0) -> f682_0_power_GT'(x20:0, x21:0) :|: x23:0 < x21:0 && x23:0 > 0 && x21:0 - 2 * x22:0 = 0 && x21:0 > 1 && x20:0 > 2 f682_0_power_GT'(x28:0, x29:0) -> f682_0_power_GT(x28:0, c) :|: c = x29:0 - 1 && (x29:0 - 2 * x31:0 > -2 && x29:0 - 2 * x31:0 < 2 && x29:0 - 1 < x29:0 && x29:0 - 2 * x31:0 = 1 && x29:0 > 1 && x28:0 > 2) f682_0_power_GT'(x24:0, x25:0) -> f682_0_power_GT(x24:0, x26:0) :|: x25:0 - 2 * x26:0 > -2 && x25:0 - 2 * x26:0 < 2 && x25:0 - 2 * x27:0 < 2 && x25:0 - 2 * x27:0 > -2 && x26:0 > 0 && x26:0 < x25:0 && x25:0 - 2 * x27:0 = 0 && x25:0 > 1 && x24:0 > 2 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f682_0_power_GT ] = 2*f682_0_power_GT_2 + 1 [ f682_0_power_GT' ] = 2*f682_0_power_GT'_2 The following rules are decreasing: f682_0_power_GT(x14:0, x15:0) -> f682_0_power_GT'(x14:0, x15:0) :|: x15:0 - 2 * x16:0 = 1 && x15:0 - 1 < x15:0 && x15:0 > 1 && x14:0 > 2 f682_0_power_GT(x20:0, x21:0) -> f682_0_power_GT'(x20:0, x21:0) :|: x23:0 < x21:0 && x23:0 > 0 && x21:0 - 2 * x22:0 = 0 && x21:0 > 1 && x20:0 > 2 f682_0_power_GT'(x28:0, x29:0) -> f682_0_power_GT(x28:0, c) :|: c = x29:0 - 1 && (x29:0 - 2 * x31:0 > -2 && x29:0 - 2 * x31:0 < 2 && x29:0 - 1 < x29:0 && x29:0 - 2 * x31:0 = 1 && x29:0 > 1 && x28:0 > 2) f682_0_power_GT'(x24:0, x25:0) -> f682_0_power_GT(x24:0, x26:0) :|: x25:0 - 2 * x26:0 > -2 && x25:0 - 2 * x26:0 < 2 && x25:0 - 2 * x27:0 < 2 && x25:0 - 2 * x27:0 > -2 && x26:0 > 0 && x26:0 < x25:0 && x25:0 - 2 * x27:0 = 0 && x25:0 > 1 && x24:0 > 2 The following rules are bounded: f682_0_power_GT(x14:0, x15:0) -> f682_0_power_GT'(x14:0, x15:0) :|: x15:0 - 2 * x16:0 = 1 && x15:0 - 1 < x15:0 && x15:0 > 1 && x14:0 > 2 f682_0_power_GT(x20:0, x21:0) -> f682_0_power_GT'(x20:0, x21:0) :|: x23:0 < x21:0 && x23:0 > 0 && x21:0 - 2 * x22:0 = 0 && x21:0 > 1 && x20:0 > 2 f682_0_power_GT'(x28:0, x29:0) -> f682_0_power_GT(x28:0, c) :|: c = x29:0 - 1 && (x29:0 - 2 * x31:0 > -2 && x29:0 - 2 * x31:0 < 2 && x29:0 - 1 < x29:0 && x29:0 - 2 * x31:0 = 1 && x29:0 > 1 && x28:0 > 2) f682_0_power_GT'(x24:0, x25:0) -> f682_0_power_GT(x24:0, x26:0) :|: x25:0 - 2 * x26:0 > -2 && x25:0 - 2 * x26:0 < 2 && x25:0 - 2 * x27:0 < 2 && x25:0 - 2 * x27:0 > -2 && x26:0 > 0 && x26:0 < x25:0 && x25:0 - 2 * x27:0 = 0 && x25:0 > 1 && x24:0 > 2 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Termination digraph: Nodes: (1) f682_0_power_GT(x, x1) -> f682_0_power_GT'(x, x1) :|: x < 2 && x1 > 1 && x1 - 1 < x1 && x1 - 2 * x2 = 1 (2) f682_0_power_GT'(x10, x11) -> f682_0_power_GT(x10, x12) :|: x10 < 2 && x11 > 1 && x11 - 2 * x13 = 0 && x11 > x12 && x12 > 0 && x11 - 2 * x13 > -2 && x11 - 2 * x13 < 2 && x11 - 2 * x12 > -2 && x11 - 2 * x12 < 2 (3) f682_0_power_GT(x6, x7) -> f682_0_power_GT'(x6, x7) :|: x6 < 2 && x7 > 1 && x7 - 2 * x8 = 0 && x9 > 0 && x7 > x9 (4) f682_0_power_GT'(x3, x4) -> f682_0_power_GT(x3, arith) :|: x3 < 2 && x4 > 1 && x4 - 2 * x5 = 1 && x4 - 1 < x4 && x4 - 2 * x5 > -2 && x4 - 2 * x5 < 2 && arith = x4 - 1 Arcs: (1) -> (4) (2) -> (1), (3) (3) -> (2) (4) -> (3) This digraph is fully evaluated! ---------------------------------------- (21) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (22) Obligation: Rules: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT'(x3:0, x4:0) -> f682_0_power_GT(x3:0, x4:0 - 1) :|: x4:0 - 2 * x5:0 > -2 && x4:0 - 2 * x5:0 < 2 && x4:0 - 1 < x4:0 && x4:0 - 2 * x5:0 = 1 && x4:0 > 1 && x3:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (23) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f682_0_power_GT'(INTEGER, INTEGER) f682_0_power_GT(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (24) Obligation: Rules: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT'(x3:0, x4:0) -> f682_0_power_GT(x3:0, c) :|: c = x4:0 - 1 && (x4:0 - 2 * x5:0 > -2 && x4:0 - 2 * x5:0 < 2 && x4:0 - 1 < x4:0 && x4:0 - 2 * x5:0 = 1 && x4:0 > 1 && x3:0 < 2) f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (25) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f682_0_power_GT'(x, x1)] = x1 [f682_0_power_GT(x2, x3)] = x3 The following rules are decreasing: f682_0_power_GT'(x3:0, x4:0) -> f682_0_power_GT(x3:0, c) :|: c = x4:0 - 1 && (x4:0 - 2 * x5:0 > -2 && x4:0 - 2 * x5:0 < 2 && x4:0 - 1 < x4:0 && x4:0 - 2 * x5:0 = 1 && x4:0 > 1 && x3:0 < 2) The following rules are bounded: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT'(x3:0, x4:0) -> f682_0_power_GT(x3:0, c) :|: c = x4:0 - 1 && (x4:0 - 2 * x5:0 > -2 && x4:0 - 2 * x5:0 < 2 && x4:0 - 1 < x4:0 && x4:0 - 2 * x5:0 = 1 && x4:0 > 1 && x3:0 < 2) f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (26) Obligation: Rules: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (27) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f682_0_power_GT'(x, x1)] = 2 + x1 [f682_0_power_GT(x2, x3)] = 2*x3 The following rules are decreasing: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 The following rules are bounded: f682_0_power_GT'(x10:0, x11:0) -> f682_0_power_GT(x10:0, x12:0) :|: x11:0 - 2 * x12:0 > -2 && x11:0 - 2 * x12:0 < 2 && x11:0 - 2 * x13:0 < 2 && x11:0 - 2 * x13:0 > -2 && x12:0 > 0 && x12:0 < x11:0 && x11:0 - 2 * x13:0 = 0 && x11:0 > 1 && x10:0 < 2 f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (28) Obligation: Rules: f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (29) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f682_0_power_GT(x, x1)] = 1 [f682_0_power_GT'(x2, x3)] = 0 The following rules are decreasing: f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 The following rules are bounded: f682_0_power_GT(x6:0, x7:0) -> f682_0_power_GT'(x6:0, x7:0) :|: x9:0 > 0 && x9:0 < x7:0 && x7:0 - 2 * x8:0 = 0 && x7:0 > 1 && x6:0 < 2 f682_0_power_GT(x:0, x1:0) -> f682_0_power_GT'(x:0, x1:0) :|: x1:0 - 1 < x1:0 && x1:0 - 2 * x2:0 = 1 && x1:0 > 1 && x:0 < 2 ---------------------------------------- (30) YES