+(

+(

*(

*(

ge(

ge(0, s(

ge(s(

-(

-(s(

fact(

iffact(

iffact(

R

↳Dependency Pair Analysis

+'(x, s(y)) -> +'(x,y)

*'(x, s(y)) -> +'(*(x,y),x)

*'(x, s(y)) -> *'(x,y)

GE(s(x), s(y)) -> GE(x,y)

-'(s(x), s(y)) -> -'(x,y)

FACT(x) -> IFFACT(x, ge(x, s(s(0))))

FACT(x) -> GE(x, s(s(0)))

IFFACT(x, true) -> *'(x, fact(-(x, s(0))))

IFFACT(x, true) -> FACT(-(x, s(0)))

IFFACT(x, true) -> -'(x, s(0))

Furthermore,

R

↳DPs

→DP Problem 1

↳Polynomial Ordering

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

**+'( x, s(y)) -> +'(x, y)**

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

The following dependency pair can be strictly oriented:

+'(x, s(y)) -> +'(x,y)

There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:

_{ }^{ }POL(s(x)_{1})= 1 + x _{1}_{ }^{ }_{ }^{ }POL(+'(x)_{1}, x_{2})= x _{2}_{ }^{ }

resulting in one new DP problem.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 6

↳Dependency Graph

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

Using the Dependency Graph resulted in no new DP problems.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polynomial Ordering

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

**GE(s( x), s(y)) -> GE(x, y)**

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

The following dependency pair can be strictly oriented:

GE(s(x), s(y)) -> GE(x,y)

There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:

_{ }^{ }POL(GE(x)_{1}, x_{2})= x _{1}_{ }^{ }_{ }^{ }POL(s(x)_{1})= 1 + x _{1}_{ }^{ }

resulting in one new DP problem.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 7

↳Dependency Graph

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

Using the Dependency Graph resulted in no new DP problems.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 3

↳Polynomial Ordering

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

**-'(s( x), s(y)) -> -'(x, y)**

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

The following dependency pair can be strictly oriented:

-'(s(x), s(y)) -> -'(x,y)

There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:

_{ }^{ }POL(-'(x)_{1}, x_{2})= x _{1}_{ }^{ }_{ }^{ }POL(s(x)_{1})= 1 + x _{1}_{ }^{ }

resulting in one new DP problem.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 8

↳Dependency Graph

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

Using the Dependency Graph resulted in no new DP problems.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 4

↳Polynomial Ordering

→DP Problem 5

↳Remaining

***'( x, s(y)) -> *'(x, y)**

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

The following dependency pair can be strictly oriented:

*'(x, s(y)) -> *'(x,y)

There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:

_{ }^{ }POL(*'(x)_{1}, x_{2})= x _{2}_{ }^{ }_{ }^{ }POL(s(x)_{1})= 1 + x _{1}_{ }^{ }

resulting in one new DP problem.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 9

↳Dependency Graph

→DP Problem 5

↳Remaining

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

Using the Dependency Graph resulted in no new DP problems.

R

↳DPs

→DP Problem 1

↳Polo

→DP Problem 2

↳Polo

→DP Problem 3

↳Polo

→DP Problem 4

↳Polo

→DP Problem 5

↳Remaining Obligation(s)

The following remains to be proven:

**IFFACT( x, true) -> FACT(-(x, s(0)))**

+(x, 0) ->x

+(x, s(y)) -> s(+(x,y))

*(x, 0) -> 0

*(x, s(y)) -> +(*(x,y),x)

ge(x, 0) -> true

ge(0, s(y)) -> false

ge(s(x), s(y)) -> ge(x,y)

-(x, 0) ->x

-(s(x), s(y)) -> -(x,y)

fact(x) -> iffact(x, ge(x, s(s(0))))

iffact(x, true) -> *(x, fact(-(x, s(0))))

iffact(x, false) -> s(0)

innermost

Duration:

0:00 minutes