### (0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

le(0, y, z) → greater(y, z)
le(s(x), 0, z) → false
le(s(x), s(y), 0) → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0) → first
greater(0, s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0, 0)
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Rewrite Strategy: FULL

### (1) DecreasingLoopProof (EQUIVALENT transformation)

The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
le(s(x), s(y), s(z)) →+ le(x, y, z)
gives rise to a decreasing loop by considering the right hand sides subterm at position [].
The pumping substitution is [x / s(x), y / s(y), z / s(z)].
The result substitution is [ ].

### (3) RenamingProof (EQUIVALENT transformation)

Renamed function symbols to avoid clashes with predefined symbol.

### (4) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

S is empty.
Rewrite Strategy: FULL

Infered types.

### (6) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

### (7) OrderProof (LOWER BOUND(ID) transformation)

Heuristically decided to analyse the following defined symbols:
le, greater, double, if

They will be analysed ascendingly in the following order:
greater < le
le < if

### (8) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

The following defined symbols remain to be analysed:
greater, le, double, if

They will be analysed ascendingly in the following order:
greater < le
le < if

### (9) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

Induction Base:
greater(gen_0':s4_0(0), gen_0':s4_0(0)) →RΩ(1)
first

Induction Step:
greater(gen_0':s4_0(+(n6_0, 1)), gen_0':s4_0(+(n6_0, 1))) →RΩ(1)
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) →IH
first

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

### (11) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

The following defined symbols remain to be analysed:
le, double, if

They will be analysed ascendingly in the following order:
le < if

### (12) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)

Induction Base:
le(gen_0':s4_0(+(1, 0)), gen_0':s4_0(0), gen_0':s4_0(0)) →RΩ(1)
false

Induction Step:
le(gen_0':s4_0(+(1, +(n295_0, 1))), gen_0':s4_0(+(n295_0, 1)), gen_0':s4_0(+(n295_0, 1))) →RΩ(1)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) →IH
false

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

### (14) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

The following defined symbols remain to be analysed:
double, if

### (15) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
double(gen_0':s4_0(n1154_0)) → gen_0':s4_0(*(2, n1154_0)), rt ∈ Ω(1 + n11540)

Induction Base:
double(gen_0':s4_0(0)) →RΩ(1)
0'

Induction Step:
double(gen_0':s4_0(+(n1154_0, 1))) →RΩ(1)
s(s(double(gen_0':s4_0(n1154_0)))) →IH
s(s(gen_0':s4_0(*(2, c1155_0))))

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

### (17) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)
double(gen_0':s4_0(n1154_0)) → gen_0':s4_0(*(2, n1154_0)), rt ∈ Ω(1 + n11540)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

The following defined symbols remain to be analysed:
if

### (18) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol if.

### (19) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)
double(gen_0':s4_0(n1154_0)) → gen_0':s4_0(*(2, n1154_0)), rt ∈ Ω(1 + n11540)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

No more defined symbols left to analyse.

### (20) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

### (22) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)
double(gen_0':s4_0(n1154_0)) → gen_0':s4_0(*(2, n1154_0)), rt ∈ Ω(1 + n11540)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

No more defined symbols left to analyse.

### (23) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

### (25) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)
le(gen_0':s4_0(+(1, n295_0)), gen_0':s4_0(n295_0), gen_0':s4_0(n295_0)) → false, rt ∈ Ω(1 + n2950)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

No more defined symbols left to analyse.

### (26) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

### (28) Obligation:

TRS:
Rules:
le(0', y, z) → greater(y, z)
le(s(x), 0', z) → false
le(s(x), s(y), 0') → false
le(s(x), s(y), s(z)) → le(x, y, z)
greater(x, 0') → first
greater(0', s(y)) → second
greater(s(x), s(y)) → greater(x, y)
double(0') → 0'
double(s(x)) → s(s(double(x)))
triple(x) → if(le(x, x, double(x)), x, 0', 0')
if(false, x, y, z) → true
if(first, x, y, z) → if(le(s(x), y, s(z)), s(x), y, s(z))
if(second, x, y, z) → if(le(s(x), s(y), z), s(x), s(y), z)

Types:
le :: 0':s → 0':s → 0':s → false:first:second
0' :: 0':s
greater :: 0':s → 0':s → false:first:second
s :: 0':s → 0':s
false :: false:first:second
first :: false:first:second
second :: false:first:second
double :: 0':s → 0':s
triple :: 0':s → true
if :: false:first:second → 0':s → 0':s → 0':s → true
true :: true
hole_false:first:second1_0 :: false:first:second
hole_0':s2_0 :: 0':s
hole_true3_0 :: true
gen_0':s4_0 :: Nat → 0':s

Lemmas:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)

Generator Equations:
gen_0':s4_0(0) ⇔ 0'
gen_0':s4_0(+(x, 1)) ⇔ s(gen_0':s4_0(x))

No more defined symbols left to analyse.

### (29) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
greater(gen_0':s4_0(n6_0), gen_0':s4_0(n6_0)) → first, rt ∈ Ω(1 + n60)