10.16/3.88 YES
10.16/3.88 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar
10.16/3.88 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty
10.16/3.88
10.16/3.88
10.16/3.88 termination of the given Bare JBC problem could be proven:
10.16/3.88
10.16/3.88 (0) Bare JBC problem
10.16/3.88 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms]
10.16/3.88 (2) JBC problem
10.16/3.88 (3) JBCToGraph [EQUIVALENT, 420 ms]
10.16/3.88 (4) JBCTerminationGraph
10.16/3.88 (5) TerminationGraphToSCCProof [SOUND, 2 ms]
10.16/3.88 (6) JBCTerminationSCC
10.16/3.88 (7) SCCToIRSProof [SOUND, 95 ms]
10.16/3.88 (8) IRSwT
10.16/3.88 (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms]
10.16/3.88 (10) IRSwT
10.16/3.88 (11) IRSwTTerminationDigraphProof [EQUIVALENT, 110 ms]
10.16/3.88 (12) IRSwT
10.16/3.88 (13) IntTRSCompressionProof [EQUIVALENT, 0 ms]
10.16/3.88 (14) IRSwT
10.16/3.88 (15) FilterProof [EQUIVALENT, 0 ms]
10.16/3.88 (16) IntTRS
10.16/3.88 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms]
10.16/3.88 (18) IntTRS
10.16/3.88 (19) PolynomialOrderProcessor [EQUIVALENT, 18 ms]
10.16/3.88 (20) IntTRS
10.16/3.88 (21) TerminationGraphProcessor [EQUIVALENT, 0 ms]
10.16/3.88 (22) YES
10.16/3.88
10.16/3.88
10.16/3.88 ----------------------------------------
10.16/3.88
10.16/3.88 (0)
10.16/3.88 Obligation:
10.16/3.88 need to prove termination of the following program:
10.16/3.88 /**
10.16/3.88 * Abstract class to provide some additional mathematical functions
10.16/3.88 * which are not provided by java.lang.Math.
10.16/3.88 *
10.16/3.88 * @author fuhs
10.16/3.88 */
10.16/3.88 public abstract class AProVEMath {
10.16/3.88
10.16/3.88 /**
10.16/3.88 * Returns baseexponent
.
10.16/3.88 * Works considerably faster than java.lang.Math.pow(double, double).
10.16/3.88 *
10.16/3.88 * @param base base of the power
10.16/3.88 * @param exponent non-negative exponent of the power
10.16/3.88 * @return baseexponent
10.16/3.88 */
10.16/3.88 public static int power (int base, int exponent) {
10.16/3.88 if (exponent == 0) {
10.16/3.88 return 1;
10.16/3.88 }
10.16/3.88 else if (exponent == 1) {
10.16/3.88 return base;
10.16/3.88 }
10.16/3.88 else if (base == 2) {
10.16/3.88 return base << (exponent-1);
10.16/3.88 }
10.16/3.88 else {
10.16/3.88 int result = 1;
10.16/3.88 while (exponent > 0) {
10.16/3.88 if (exponent % 2 == 1) {
10.16/3.88 result *= base;
10.16/3.88 }
10.16/3.88 base *= base;
10.16/3.88 exponent /= 2;
10.16/3.88 }
10.16/3.88 return result;
10.16/3.88 }
10.16/3.88 }
10.16/3.88
10.16/3.88 public static void main(String[] args) {
10.16/3.88 Random.args = args;
10.16/3.88 int x = Random.random();
10.16/3.88 int y = Random.random();
10.16/3.88 power(x, y);
10.16/3.88 }
10.16/3.88 }
10.16/3.88
10.16/3.88
10.16/3.88 public class Random {
10.16/3.88 static String[] args;
10.16/3.89 static int index = 0;
10.16/3.89
10.16/3.89 public static int random() {
10.16/3.89 String string = args[index];
10.16/3.89 index++;
10.16/3.89 return string.length();
10.16/3.89 }
10.16/3.89 }
10.16/3.89
10.16/3.89
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (1) BareJBCToJBCProof (EQUIVALENT)
10.16/3.89 initialized classpath
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (2)
10.16/3.89 Obligation:
10.16/3.89 need to prove termination of the following program:
10.16/3.89 /**
10.16/3.89 * Abstract class to provide some additional mathematical functions
10.16/3.89 * which are not provided by java.lang.Math.
10.16/3.89 *
10.16/3.89 * @author fuhs
10.16/3.89 */
10.16/3.89 public abstract class AProVEMath {
10.16/3.89
10.16/3.89 /**
10.16/3.89 * Returns baseexponent
.
10.16/3.89 * Works considerably faster than java.lang.Math.pow(double, double).
10.16/3.89 *
10.16/3.89 * @param base base of the power
10.16/3.89 * @param exponent non-negative exponent of the power
10.16/3.89 * @return baseexponent
10.16/3.89 */
10.16/3.89 public static int power (int base, int exponent) {
10.16/3.89 if (exponent == 0) {
10.16/3.89 return 1;
10.16/3.89 }
10.16/3.89 else if (exponent == 1) {
10.16/3.89 return base;
10.16/3.89 }
10.16/3.89 else if (base == 2) {
10.16/3.89 return base << (exponent-1);
10.16/3.89 }
10.16/3.89 else {
10.16/3.89 int result = 1;
10.16/3.89 while (exponent > 0) {
10.16/3.89 if (exponent % 2 == 1) {
10.16/3.89 result *= base;
10.16/3.89 }
10.16/3.89 base *= base;
10.16/3.89 exponent /= 2;
10.16/3.89 }
10.16/3.89 return result;
10.16/3.89 }
10.16/3.89 }
10.16/3.89
10.16/3.89 public static void main(String[] args) {
10.16/3.89 Random.args = args;
10.16/3.89 int x = Random.random();
10.16/3.89 int y = Random.random();
10.16/3.89 power(x, y);
10.16/3.89 }
10.16/3.89 }
10.16/3.89
10.16/3.89
10.16/3.89 public class Random {
10.16/3.89 static String[] args;
10.16/3.89 static int index = 0;
10.16/3.89
10.16/3.89 public static int random() {
10.16/3.89 String string = args[index];
10.16/3.89 index++;
10.16/3.89 return string.length();
10.16/3.89 }
10.16/3.89 }
10.16/3.89
10.16/3.89
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (3) JBCToGraph (EQUIVALENT)
10.16/3.89 Constructed TerminationGraph.
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (4)
10.16/3.89 Obligation:
10.16/3.89 Termination Graph based on JBC Program:
10.16/3.89 AProVEMath.main([Ljava/lang/String;)V: Graph of 237 nodes with 1 SCC.
10.16/3.89
10.16/3.89
10.16/3.89
10.16/3.89
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (5) TerminationGraphToSCCProof (SOUND)
10.16/3.89 Splitted TerminationGraph to 1 SCCs.
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (6)
10.16/3.89 Obligation:
10.16/3.89 SCC of termination graph based on JBC Program.
10.16/3.89 SCC contains nodes from the following methods: AProVEMath.main([Ljava/lang/String;)V
10.16/3.89 SCC calls the following helper methods:
10.16/3.89 Performed SCC analyses:
10.16/3.89 *Used field analysis yielded the following read fields:
10.16/3.89
10.16/3.89 *Marker field analysis yielded the following relations that could be markers:
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (7) SCCToIRSProof (SOUND)
10.16/3.89 Transformed FIGraph SCCs to intTRSs. Log:
10.16/3.89 Generated rules. Obtained 26 IRulesP rules:
10.16/3.89 f1738_0_power_LE(EOS(STATIC_1738), i380, i380) -> f1743_0_power_Load(EOS(STATIC_1743), i380) :|: i380 > 0
10.16/3.89 f1743_0_power_Load(EOS(STATIC_1743), i380) -> f1785_0_power_ConstantStackPush(EOS(STATIC_1785), i380, i380) :|: TRUE
10.16/3.89 f1785_0_power_ConstantStackPush(EOS(STATIC_1785), i380, i380) -> f1787_0_power_IntArithmetic(EOS(STATIC_1787), i380, i380, 2) :|: TRUE
10.16/3.89 f1787_0_power_IntArithmetic(EOS(STATIC_1787), i380, i380, matching1) -> f1790_0_power_ConstantStackPush(EOS(STATIC_1790), i380, i380 % 2) :|: TRUE && matching1 = 2
10.16/3.89 f1790_0_power_ConstantStackPush(EOS(STATIC_1790), i380, i381) -> f1792_0_power_NE(EOS(STATIC_1792), i380, i381, 1) :|: TRUE
10.16/3.89 f1792_0_power_NE(EOS(STATIC_1792), i380, matching1, matching2) -> f1801_0_power_NE(EOS(STATIC_1801), i380, 0, 1) :|: i381 = 0 && matching1 = 0 && matching2 = 1
10.16/3.89 f1792_0_power_NE(EOS(STATIC_1792), i380, matching1, matching2) -> f1802_0_power_NE(EOS(STATIC_1802), i380, 1, 1) :|: i381 = 1 && matching1 = 1 && matching2 = 1
10.16/3.89 f1801_0_power_NE(EOS(STATIC_1801), i380, matching1, matching2) -> f1805_0_power_Load(EOS(STATIC_1805), i380) :|: TRUE && matching1 = 0 && matching2 = 1
10.16/3.89 f1805_0_power_Load(EOS(STATIC_1805), i380) -> f1818_0_power_Load(EOS(STATIC_1818), i380) :|: TRUE
10.16/3.89 f1818_0_power_Load(EOS(STATIC_1818), i380) -> f1822_0_power_IntArithmetic(EOS(STATIC_1822), i380) :|: TRUE
10.16/3.89 f1822_0_power_IntArithmetic(EOS(STATIC_1822), i380) -> f1826_0_power_Store(EOS(STATIC_1826), i380) :|: TRUE
10.16/3.89 f1826_0_power_Store(EOS(STATIC_1826), i380) -> f1831_0_power_Load(EOS(STATIC_1831), i380) :|: TRUE
10.16/3.89 f1831_0_power_Load(EOS(STATIC_1831), i380) -> f1840_0_power_ConstantStackPush(EOS(STATIC_1840), i380) :|: TRUE
10.16/3.89 f1840_0_power_ConstantStackPush(EOS(STATIC_1840), i380) -> f1843_0_power_IntArithmetic(EOS(STATIC_1843), i380, 2) :|: TRUE
10.16/3.89 f1843_0_power_IntArithmetic(EOS(STATIC_1843), i380, matching1) -> f1846_0_power_Store(EOS(STATIC_1846), i395) :|: i395 = i380 / 2 && i380 >= 1 && i395 < i380 && matching1 = 2
10.16/3.89 f1846_0_power_Store(EOS(STATIC_1846), i395) -> f1848_0_power_JMP(EOS(STATIC_1848), i395) :|: TRUE
10.16/3.89 f1848_0_power_JMP(EOS(STATIC_1848), i395) -> f1863_0_power_Load(EOS(STATIC_1863), i395) :|: TRUE
10.16/3.89 f1863_0_power_Load(EOS(STATIC_1863), i395) -> f1725_0_power_Load(EOS(STATIC_1725), i395) :|: TRUE
10.16/3.89 f1725_0_power_Load(EOS(STATIC_1725), i340) -> f1736_0_power_LE(EOS(STATIC_1736), i340, i340) :|: TRUE
10.16/3.89 f1736_0_power_LE(EOS(STATIC_1736), i380, i380) -> f1738_0_power_LE(EOS(STATIC_1738), i380, i380) :|: TRUE
10.16/3.89 f1802_0_power_NE(EOS(STATIC_1802), i380, matching1, matching2) -> f1816_0_power_Load(EOS(STATIC_1816), i380) :|: TRUE && matching1 = 1 && matching2 = 1
10.16/3.89 f1816_0_power_Load(EOS(STATIC_1816), i380) -> f1820_0_power_Load(EOS(STATIC_1820), i380) :|: TRUE
10.16/3.89 f1820_0_power_Load(EOS(STATIC_1820), i380) -> f1824_0_power_IntArithmetic(EOS(STATIC_1824), i380) :|: TRUE
10.16/3.89 f1824_0_power_IntArithmetic(EOS(STATIC_1824), i380) -> f1829_0_power_Store(EOS(STATIC_1829), i380) :|: TRUE
10.16/3.89 f1829_0_power_Store(EOS(STATIC_1829), i380) -> f1839_0_power_Load(EOS(STATIC_1839), i380) :|: TRUE
10.16/3.89 f1839_0_power_Load(EOS(STATIC_1839), i380) -> f1805_0_power_Load(EOS(STATIC_1805), i380) :|: TRUE
10.16/3.89 Combined rules. Obtained 4 IRulesP rules:
10.16/3.89 f1738_0_power_LE(EOS(STATIC_1738), i380:0, i380:0) -> f1738_0_power_LE'(EOS(STATIC_1738), i380:0, i380:0) :|: i380:0 > 0 && i380:0 - 2 * div = 0 && i380:0 > div1
10.16/3.89 f1738_0_power_LE'(EOS(STATIC_1738), i380:0, i380:0) -> f1738_0_power_LE(EOS(STATIC_1738), div1, div1) :|: i380:0 > 0 && i380:0 - 2 * div = 0 && i380:0 > div1 && i380:0 - 2 * div > -2 && i380:0 - 2 * div < 2 && i380:0 - 2 * div1 < 2 && i380:0 - 2 * div1 > -2
10.16/3.89 f1738_0_power_LE(EOS(STATIC_1738), i380:0, i380:0) -> f1738_0_power_LE'(EOS(STATIC_1738), i380:0, i380:0) :|: i380:0 > 0 && i380:0 - 2 * div = 1 && i380:0 > div1
10.16/3.89 f1738_0_power_LE'(EOS(STATIC_1738), i380:0, i380:0) -> f1738_0_power_LE(EOS(STATIC_1738), div1, div1) :|: i380:0 > 0 && i380:0 > div1 && i380:0 - 2 * div = 1 && i380:0 - 2 * div > -2 && i380:0 - 2 * div < 2 && i380:0 - 2 * div1 < 2 && i380:0 - 2 * div1 > -2
10.16/3.89 Filtered constant ground arguments:
10.16/3.89 f1738_0_power_LE(x1, x2, x3) -> f1738_0_power_LE(x2, x3)
10.16/3.89 f1738_0_power_LE'(x1, x2, x3) -> f1738_0_power_LE'(x2, x3)
10.16/3.89 EOS(x1) -> EOS
10.16/3.89 Filtered duplicate arguments:
10.16/3.89 f1738_0_power_LE(x1, x2) -> f1738_0_power_LE(x2)
10.16/3.89 f1738_0_power_LE'(x1, x2) -> f1738_0_power_LE'(x2)
10.16/3.89 Finished conversion. Obtained 4 rules.P rules:
10.16/3.89 f1738_0_power_LE(i380:0) -> f1738_0_power_LE'(i380:0) :|: i380:0 - 2 * div = 0 && i380:0 > div1 && i380:0 > 0
10.16/3.89 f1738_0_power_LE'(i380:0) -> f1738_0_power_LE(div1) :|: i380:0 - 2 * div = 0 && i380:0 > 0 && i380:0 > div1 && i380:0 - 2 * div > -2 && i380:0 - 2 * div < 2 && i380:0 - 2 * div1 > -2 && i380:0 - 2 * div1 < 2
10.16/3.89 f1738_0_power_LE(i380:0) -> f1738_0_power_LE'(i380:0) :|: i380:0 - 2 * div = 1 && i380:0 > div1 && i380:0 > 0
10.16/3.89 f1738_0_power_LE'(i380:0) -> f1738_0_power_LE(div1) :|: i380:0 > div1 && i380:0 > 0 && i380:0 - 2 * div = 1 && i380:0 - 2 * div > -2 && i380:0 - 2 * div < 2 && i380:0 - 2 * div1 > -2 && i380:0 - 2 * div1 < 2
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (8)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE(x) -> f1738_0_power_LE'(x) :|: x - 2 * x1 = 0 && x > x2 && x > 0
10.16/3.89 f1738_0_power_LE'(x3) -> f1738_0_power_LE(x4) :|: x3 - 2 * x5 = 0 && x3 > 0 && x3 > x4 && x3 - 2 * x5 > -2 && x3 - 2 * x5 < 2 && x3 - 2 * x4 > -2 && x3 - 2 * x4 < 2
10.16/3.89 f1738_0_power_LE(x6) -> f1738_0_power_LE'(x6) :|: x6 - 2 * x7 = 1 && x6 > x8 && x6 > 0
10.16/3.89 f1738_0_power_LE'(x9) -> f1738_0_power_LE(x10) :|: x9 > x10 && x9 > 0 && x9 - 2 * x11 = 1 && x9 - 2 * x11 > -2 && x9 - 2 * x11 < 2 && x9 - 2 * x10 > -2 && x9 - 2 * x10 < 2
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (9) IRSFormatTransformerProof (EQUIVALENT)
10.16/3.89 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %).
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (10)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE(x) -> f1738_0_power_LE'(x) :|: x - 2 * x1 = 0 && x > x2 && x > 0
10.16/3.89 f1738_0_power_LE'(x3) -> f1738_0_power_LE(x4) :|: x3 - 2 * x5 = 0 && x3 > 0 && x3 > x4 && x3 - 2 * x5 > -2 && x3 - 2 * x5 < 2 && x3 - 2 * x4 > -2 && x3 - 2 * x4 < 2
10.16/3.89 f1738_0_power_LE(x6) -> f1738_0_power_LE'(x6) :|: x6 - 2 * x7 = 1 && x6 > x8 && x6 > 0
10.16/3.89 f1738_0_power_LE'(x9) -> f1738_0_power_LE(x10) :|: x9 > x10 && x9 > 0 && x9 - 2 * x11 = 1 && x9 - 2 * x11 > -2 && x9 - 2 * x11 < 2 && x9 - 2 * x10 > -2 && x9 - 2 * x10 < 2
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (11) IRSwTTerminationDigraphProof (EQUIVALENT)
10.16/3.89 Constructed termination digraph!
10.16/3.89 Nodes:
10.16/3.89 (1) f1738_0_power_LE(x) -> f1738_0_power_LE'(x) :|: x - 2 * x1 = 0 && x > x2 && x > 0
10.16/3.89 (2) f1738_0_power_LE'(x3) -> f1738_0_power_LE(x4) :|: x3 - 2 * x5 = 0 && x3 > 0 && x3 > x4 && x3 - 2 * x5 > -2 && x3 - 2 * x5 < 2 && x3 - 2 * x4 > -2 && x3 - 2 * x4 < 2
10.16/3.89 (3) f1738_0_power_LE(x6) -> f1738_0_power_LE'(x6) :|: x6 - 2 * x7 = 1 && x6 > x8 && x6 > 0
10.16/3.89 (4) f1738_0_power_LE'(x9) -> f1738_0_power_LE(x10) :|: x9 > x10 && x9 > 0 && x9 - 2 * x11 = 1 && x9 - 2 * x11 > -2 && x9 - 2 * x11 < 2 && x9 - 2 * x10 > -2 && x9 - 2 * x10 < 2
10.16/3.89
10.16/3.89 Arcs:
10.16/3.89 (1) -> (2)
10.16/3.89 (2) -> (1), (3)
10.16/3.89 (3) -> (4)
10.16/3.89 (4) -> (1), (3)
10.16/3.89
10.16/3.89 This digraph is fully evaluated!
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (12)
10.16/3.89 Obligation:
10.16/3.89
10.16/3.89 Termination digraph:
10.16/3.89 Nodes:
10.16/3.89 (1) f1738_0_power_LE(x) -> f1738_0_power_LE'(x) :|: x - 2 * x1 = 0 && x > x2 && x > 0
10.16/3.89 (2) f1738_0_power_LE'(x9) -> f1738_0_power_LE(x10) :|: x9 > x10 && x9 > 0 && x9 - 2 * x11 = 1 && x9 - 2 * x11 > -2 && x9 - 2 * x11 < 2 && x9 - 2 * x10 > -2 && x9 - 2 * x10 < 2
10.16/3.89 (3) f1738_0_power_LE(x6) -> f1738_0_power_LE'(x6) :|: x6 - 2 * x7 = 1 && x6 > x8 && x6 > 0
10.16/3.89 (4) f1738_0_power_LE'(x3) -> f1738_0_power_LE(x4) :|: x3 - 2 * x5 = 0 && x3 > 0 && x3 > x4 && x3 - 2 * x5 > -2 && x3 - 2 * x5 < 2 && x3 - 2 * x4 > -2 && x3 - 2 * x4 < 2
10.16/3.89
10.16/3.89 Arcs:
10.16/3.89 (1) -> (4)
10.16/3.89 (2) -> (1), (3)
10.16/3.89 (3) -> (2)
10.16/3.89 (4) -> (1), (3)
10.16/3.89
10.16/3.89 This digraph is fully evaluated!
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (13) IntTRSCompressionProof (EQUIVALENT)
10.16/3.89 Compressed rules.
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (14)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE(x6:0) -> f1738_0_power_LE'(x6:0) :|: x6:0 - 2 * x7:0 = 1 && x8:0 < x6:0 && x6:0 > 0
10.16/3.89 f1738_0_power_LE'(x3:0) -> f1738_0_power_LE(x4:0) :|: x3:0 - 2 * x4:0 > -2 && x3:0 - 2 * x4:0 < 2 && x3:0 - 2 * x5:0 < 2 && x3:0 - 2 * x5:0 > -2 && x4:0 < x3:0 && x3:0 > 0 && x3:0 - 2 * x5:0 = 0
10.16/3.89 f1738_0_power_LE(x:0) -> f1738_0_power_LE'(x:0) :|: x:0 - 2 * x1:0 = 0 && x:0 > x2:0 && x:0 > 0
10.16/3.89 f1738_0_power_LE'(x9:0) -> f1738_0_power_LE(x10:0) :|: x9:0 - 2 * x10:0 > -2 && x9:0 - 2 * x10:0 < 2 && x9:0 - 2 * x11:0 < 2 && x9:0 - 2 * x11:0 > -2 && x9:0 - 2 * x11:0 = 1 && x9:0 > 0 && x9:0 > x10:0
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (15) FilterProof (EQUIVALENT)
10.16/3.89 Used the following sort dictionary for filtering:
10.16/3.89 f1738_0_power_LE(INTEGER)
10.16/3.89 f1738_0_power_LE'(INTEGER)
10.16/3.89 Replaced non-predefined constructor symbols by 0.
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (16)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE(x6:0) -> f1738_0_power_LE'(x6:0) :|: x6:0 - 2 * x7:0 = 1 && x8:0 < x6:0 && x6:0 > 0
10.16/3.89 f1738_0_power_LE'(x3:0) -> f1738_0_power_LE(x4:0) :|: x3:0 - 2 * x4:0 > -2 && x3:0 - 2 * x4:0 < 2 && x3:0 - 2 * x5:0 < 2 && x3:0 - 2 * x5:0 > -2 && x4:0 < x3:0 && x3:0 > 0 && x3:0 - 2 * x5:0 = 0
10.16/3.89 f1738_0_power_LE(x:0) -> f1738_0_power_LE'(x:0) :|: x:0 - 2 * x1:0 = 0 && x:0 > x2:0 && x:0 > 0
10.16/3.89 f1738_0_power_LE'(x9:0) -> f1738_0_power_LE(x10:0) :|: x9:0 - 2 * x10:0 > -2 && x9:0 - 2 * x10:0 < 2 && x9:0 - 2 * x11:0 < 2 && x9:0 - 2 * x11:0 > -2 && x9:0 - 2 * x11:0 = 1 && x9:0 > 0 && x9:0 > x10:0
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (17) IntTRSCompressionProof (EQUIVALENT)
10.16/3.89 Compressed rules.
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (18)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE'(x3:0:0) -> f1738_0_power_LE(x4:0:0) :|: x3:0:0 > 0 && x3:0:0 - 2 * x5:0:0 = 0 && x4:0:0 < x3:0:0 && x3:0:0 - 2 * x5:0:0 > -2 && x3:0:0 - 2 * x5:0:0 < 2 && x3:0:0 - 2 * x4:0:0 < 2 && x3:0:0 - 2 * x4:0:0 > -2
10.16/3.89 f1738_0_power_LE'(x9:0:0) -> f1738_0_power_LE(x10:0:0) :|: x9:0:0 > 0 && x9:0:0 > x10:0:0 && x9:0:0 - 2 * x11:0:0 = 1 && x9:0:0 - 2 * x11:0:0 > -2 && x9:0:0 - 2 * x11:0:0 < 2 && x9:0:0 - 2 * x10:0:0 < 2 && x9:0:0 - 2 * x10:0:0 > -2
10.16/3.89 f1738_0_power_LE(x6:0:0) -> f1738_0_power_LE'(x6:0:0) :|: x6:0:0 - 2 * x7:0:0 = 1 && x8:0:0 < x6:0:0 && x6:0:0 > 0
10.16/3.89 f1738_0_power_LE(x:0:0) -> f1738_0_power_LE'(x:0:0) :|: x:0:0 - 2 * x1:0:0 = 0 && x:0:0 > x2:0:0 && x:0:0 > 0
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (19) PolynomialOrderProcessor (EQUIVALENT)
10.16/3.89 Found the following polynomial interpretation:
10.16/3.89 [f1738_0_power_LE'(x)] = x
10.16/3.89 [f1738_0_power_LE(x1)] = x1
10.16/3.89
10.16/3.89 The following rules are decreasing:
10.16/3.89 f1738_0_power_LE'(x3:0:0) -> f1738_0_power_LE(x4:0:0) :|: x3:0:0 > 0 && x3:0:0 - 2 * x5:0:0 = 0 && x4:0:0 < x3:0:0 && x3:0:0 - 2 * x5:0:0 > -2 && x3:0:0 - 2 * x5:0:0 < 2 && x3:0:0 - 2 * x4:0:0 < 2 && x3:0:0 - 2 * x4:0:0 > -2
10.16/3.89 f1738_0_power_LE'(x9:0:0) -> f1738_0_power_LE(x10:0:0) :|: x9:0:0 > 0 && x9:0:0 > x10:0:0 && x9:0:0 - 2 * x11:0:0 = 1 && x9:0:0 - 2 * x11:0:0 > -2 && x9:0:0 - 2 * x11:0:0 < 2 && x9:0:0 - 2 * x10:0:0 < 2 && x9:0:0 - 2 * x10:0:0 > -2
10.16/3.89 The following rules are bounded:
10.16/3.89 f1738_0_power_LE'(x3:0:0) -> f1738_0_power_LE(x4:0:0) :|: x3:0:0 > 0 && x3:0:0 - 2 * x5:0:0 = 0 && x4:0:0 < x3:0:0 && x3:0:0 - 2 * x5:0:0 > -2 && x3:0:0 - 2 * x5:0:0 < 2 && x3:0:0 - 2 * x4:0:0 < 2 && x3:0:0 - 2 * x4:0:0 > -2
10.16/3.89 f1738_0_power_LE'(x9:0:0) -> f1738_0_power_LE(x10:0:0) :|: x9:0:0 > 0 && x9:0:0 > x10:0:0 && x9:0:0 - 2 * x11:0:0 = 1 && x9:0:0 - 2 * x11:0:0 > -2 && x9:0:0 - 2 * x11:0:0 < 2 && x9:0:0 - 2 * x10:0:0 < 2 && x9:0:0 - 2 * x10:0:0 > -2
10.16/3.89 f1738_0_power_LE(x6:0:0) -> f1738_0_power_LE'(x6:0:0) :|: x6:0:0 - 2 * x7:0:0 = 1 && x8:0:0 < x6:0:0 && x6:0:0 > 0
10.16/3.89 f1738_0_power_LE(x:0:0) -> f1738_0_power_LE'(x:0:0) :|: x:0:0 - 2 * x1:0:0 = 0 && x:0:0 > x2:0:0 && x:0:0 > 0
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (20)
10.16/3.89 Obligation:
10.16/3.89 Rules:
10.16/3.89 f1738_0_power_LE(x6:0:0) -> f1738_0_power_LE'(x6:0:0) :|: x6:0:0 - 2 * x7:0:0 = 1 && x8:0:0 < x6:0:0 && x6:0:0 > 0
10.16/3.89 f1738_0_power_LE(x:0:0) -> f1738_0_power_LE'(x:0:0) :|: x:0:0 - 2 * x1:0:0 = 0 && x:0:0 > x2:0:0 && x:0:0 > 0
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (21) TerminationGraphProcessor (EQUIVALENT)
10.16/3.89 Constructed the termination graph and obtained no non-trivial SCC(s).
10.16/3.89
10.16/3.89 ----------------------------------------
10.16/3.89
10.16/3.89 (22)
10.16/3.89 YES
10.16/3.95 EOF