We restrict the rewrite rules to the following usable rules of the DP problem.
We restrict the innermost strategy to the following left hand sides.
are bounded w.r.t. the constant c.
The following constraints are generated for the pairs.
-
For the chain
we build the initial constraint
(diff#(x22,s(x23))→*diff#(x24,x25)⟹cond1#(equal(x24,x25),x24,x25)→*cond1#(false,x26,x27)⟹cond1#(false,x26,x27)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(x22→*x24⟹s(x23)→*x25⟹cond1#(equal(x24,x25),x24,x25)→*cond1#(false,x26,x27)⟹cond1#(false,x26,x27)≥c)
-
Applying Rule "Same Constructor" results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹x24→*x26⟹x25→*x27⟹cond1#(false,x26,x27)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x26 by x24 which results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹x25→*x27⟹cond1#(false,x24,x27)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x27 by x25 which results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹cond1#(false,x24,x25)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x22 by x24 which results in
(s(x23)→*x25⟹equal(x24,x25)→*false⟹cond1#(false,x24,x25)≥c)
-
Applying Rule "Induction" on equal(x24,x25)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,0,0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x23)→*0⟹cond1#(false,s(x180),0)≥c)
-
Applying Rule "Same Constructor" results in
(s(x23)→*0⟹cond1#(false,s(x180),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x23)→*s(x181)⟹cond1#(false,0,s(x181))≥c)
- (equal(x183,x182)→*false⟹s(x23)→*s(x182)⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥c)⟹cond1#(false,s(x183),s(x182))≥c)
-
Applying Rule "Same Constructor" results in
(equal(x183,x182)→*false⟹x23→*x182⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥c)⟹cond1#(false,s(x183),s(x182))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x23 by x182 which results in
(equal(x183,x182)→*false⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥c)⟹cond1#(false,s(x183),s(x182))≥c)
-
Applying Rule "Delete Conditions" results in
(equal(x183,x182)→*false⟹cond1#(false,s(x183),s(x182))≥c)
-
Applying Rule "Induction" on equal(x183,x182)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,s(0),s(0))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹cond1#(false,s(s(x185)),s(0))≥c)
- (false→*false⟹cond1#(false,s(0),s(s(x186)))≥c)
- (equal(x188,x187)→*false⟹(equal(x188,x187)→*false⟹cond1#(false,s(x188),s(x187))≥c)⟹cond1#(false,s(s(x188)),s(s(x187)))≥c)
-
For the chain
we build the initial constraint
(diff#(s(x30),x31)→*diff#(x32,x33)⟹cond1#(equal(x32,x33),x32,x33)→*cond1#(false,x34,x35)⟹cond1#(false,x34,x35)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(s(x30)→*x32⟹x31→*x33⟹cond1#(equal(x32,x33),x32,x33)→*cond1#(false,x34,x35)⟹cond1#(false,x34,x35)≥c)
-
Applying Rule "Same Constructor" results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹x32→*x34⟹x33→*x35⟹cond1#(false,x34,x35)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x34 by x32 which results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹x33→*x35⟹cond1#(false,x32,x35)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x35 by x33 which results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹cond1#(false,x32,x33)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x31 by x33 which results in
(s(x30)→*x32⟹equal(x32,x33)→*false⟹cond1#(false,x32,x33)≥c)
-
Applying Rule "Induction" on equal(x32,x33)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,0,0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x30)→*s(x189)⟹cond1#(false,s(x189),0)≥c)
- (false→*false⟹s(x30)→*0⟹cond1#(false,0,s(x190))≥c)
-
Applying Rule "Same Constructor" results in
(s(x30)→*0⟹cond1#(false,0,s(x190))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x192,x191)→*false⟹s(x30)→*s(x192)⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥c)⟹cond1#(false,s(x192),s(x191))≥c)
-
Applying Rule "Same Constructor" results in
(equal(x192,x191)→*false⟹x30→*x192⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥c)⟹cond1#(false,s(x192),s(x191))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x30 by x192 which results in
(equal(x192,x191)→*false⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥c)⟹cond1#(false,s(x192),s(x191))≥c)
-
Applying Rule "Delete Conditions" results in
(equal(x192,x191)→*false⟹cond1#(false,s(x192),s(x191))≥c)
-
Applying Rule "Induction" on equal(x192,x191)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,s(0),s(0))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹cond1#(false,s(s(x194)),s(0))≥c)
- (false→*false⟹cond1#(false,s(0),s(s(x195)))≥c)
- (equal(x197,x196)→*false⟹(equal(x197,x196)→*false⟹cond1#(false,s(x197),s(x196))≥c)⟹cond1#(false,s(s(x197)),s(s(x196)))≥c)
-
For the chain
we build the initial constraint
(cond1#(equal(x50,x51),x50,x51)→*cond1#(false,x52,x53)⟹cond2#(gt(x52,x53),x52,x53)→*cond2#(true,x54,x55)⟹cond2#(true,x54,x55)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹cond2#(gt(x52,x53),x52,x53)→*cond2#(true,x54,x55)⟹cond2#(true,x54,x55)≥c)
-
Applying Rule "Same Constructor" results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹x52→*x54⟹x53→*x55⟹cond2#(true,x54,x55)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x54 by x52 which results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹x53→*x55⟹cond2#(true,x52,x55)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x55 by x53 which results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Induction" on equal(x50,x51)→*false results in the following 4 new constraints.
- (true→*false⟹cond2#(true,x52,x53)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x198)→*x52⟹0→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Same Constructor" results in
(s(x198)→*x52⟹0→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x204)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹s(x198)→*s(x205)⟹0→*0⟹cond2#(true,s(x205),0)≥c)
- (gt(x207,x206)→*true⟹s(x198)→*s(x207)⟹0→*s(x206)⟹∀x208
.
(gt(x207,x206)→*true⟹s(x208)→*x207⟹0→*x206⟹cond2#(true,x207,x206)≥c)⟹cond2#(true,s(x207),s(x206))≥c)
-
Applying Rule "Same Constructor" results in
(gt(x207,x206)→*true⟹x198→*x207⟹0→*s(x206)⟹∀x208
.
(gt(x207,x206)→*true⟹s(x208)→*x207⟹0→*x206⟹cond2#(true,x207,x206)≥c)⟹cond2#(true,s(x207),s(x206))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹0→*x52⟹s(x199)→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Same Constructor" results in
(0→*x52⟹s(x199)→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x209)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹0→*s(x210)⟹s(x199)→*0⟹cond2#(true,s(x210),0)≥c)
-
Applying Rule "Same Constructor" results in
(0→*s(x210)⟹s(x199)→*0⟹cond2#(true,s(x210),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x212,x211)→*true⟹0→*s(x212)⟹s(x199)→*s(x211)⟹∀x213
.
(gt(x212,x211)→*true⟹0→*x212⟹s(x213)→*x211⟹cond2#(true,x212,x211)≥c)⟹cond2#(true,s(x212),s(x211))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x201,x200)→*false⟹s(x201)→*x52⟹s(x200)→*x53⟹gt(x52,x53)→*true⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203)≥c)⟹cond2#(true,x52,x53)≥c)
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x214)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹equal(x201,x200)→*false⟹s(x201)→*s(x215)⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203)≥c)⟹cond2#(true,s(x215),0)≥c)
-
Applying Rule "Same Constructor" results in
(equal(x201,x200)→*false⟹s(x201)→*s(x215)⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203)≥c)⟹cond2#(true,s(x215),0)≥c)
-
Applying Rule "Same Constructor" results in
(equal(x201,x200)→*false⟹x201→*x215⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203)≥c)⟹cond2#(true,s(x215),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x217,x216)→*true⟹equal(x201,x200)→*false⟹s(x201)→*s(x217)⟹s(x200)→*s(x216)⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203)≥c)⟹∀x218
.
∀x219
.
∀x220
.
∀x221
.
(gt(x217,x216)→*true⟹equal(x218,x219)→*false⟹s(x218)→*x217⟹s(x219)→*x216⟹∀x220
.
∀x221
.
(equal(x218,x219)→*false⟹x218→*x220⟹x219→*x221⟹gt(x220,x221)→*true⟹cond2#(true,x220,x221)≥c)⟹cond2#(true,x217,x216)≥c)⟹cond2#(true,s(x217),s(x216))≥c)
-
For the chain
we build the initial constraint
(cond2#(gt(x100,x101),x100,x101)→*cond2#(true,x102,x103)⟹diff#(x102,s(x103))→*diff#(x104,x105)⟹diff#(x104,x105)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(gt(x100,x101)→*true⟹x100→*x102⟹x101→*x103⟹diff#(x102,s(x103))→*diff#(x104,x105)⟹diff#(x104,x105)≥c)
-
Applying Rule "Same Constructor" results in
(gt(x100,x101)→*true⟹x100→*x102⟹x101→*x103⟹x102→*x104⟹s(x103)→*x105⟹diff#(x104,x105)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x102 by x100 which results in
(gt(x100,x101)→*true⟹x101→*x103⟹x100→*x104⟹s(x103)→*x105⟹diff#(x104,x105)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x103 by x101 which results in
(gt(x100,x101)→*true⟹x100→*x104⟹s(x101)→*x105⟹diff#(x104,x105)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x104 by x100 which results in
(gt(x100,x101)→*true⟹s(x101)→*x105⟹diff#(x100,x105)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x105 by s(x101) which results in
(gt(x100,x101)→*true⟹diff#(x100,s(x101))≥c)
-
Applying Rule "Induction" on gt(x100,x101)→*true results in the following 3 new constraints.
- (false→*true⟹diff#(0,s(x222))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹diff#(s(x223),s(0))≥c)
- (gt(x225,x224)→*true⟹(gt(x225,x224)→*true⟹diff#(x225,s(x224))≥c)⟹diff#(s(x225),s(s(x224)))≥c)
-
For the chain
we build the initial constraint
(cond2#(gt(x124,x125),x124,x125)→*cond2#(false,x126,x127)⟹diff#(s(x126),x127)→*diff#(x128,x129)⟹diff#(x128,x129)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(gt(x124,x125)→*false⟹x124→*x126⟹x125→*x127⟹diff#(s(x126),x127)→*diff#(x128,x129)⟹diff#(x128,x129)≥c)
-
Applying Rule "Same Constructor" results in
(gt(x124,x125)→*false⟹x124→*x126⟹x125→*x127⟹s(x126)→*x128⟹x127→*x129⟹diff#(x128,x129)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x126 by x124 which results in
(gt(x124,x125)→*false⟹x125→*x127⟹s(x124)→*x128⟹x127→*x129⟹diff#(x128,x129)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x127 by x125 which results in
(gt(x124,x125)→*false⟹s(x124)→*x128⟹x125→*x129⟹diff#(x128,x129)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x128 by s(x124) which results in
(gt(x124,x125)→*false⟹x125→*x129⟹diff#(s(x124),x129)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x129 by x125 which results in
(gt(x124,x125)→*false⟹diff#(s(x124),x125)≥c)
-
Applying Rule "Induction" on gt(x124,x125)→*false results in the following 3 new constraints.
- (false→*false⟹diff#(s(0),x226)≥c)
- (true→*false⟹diff#(s(s(x227)),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x229,x228)→*false⟹(gt(x229,x228)→*false⟹diff#(s(x229),x228)≥c)⟹diff#(s(s(x229)),s(x228))≥c)
-
For the chain
we build the initial constraint
(cond1#(equal(x140,x141),x140,x141)→*cond1#(false,x142,x143)⟹cond2#(gt(x142,x143),x142,x143)→*cond2#(false,x144,x145)⟹cond2#(false,x144,x145)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹cond2#(gt(x142,x143),x142,x143)→*cond2#(false,x144,x145)⟹cond2#(false,x144,x145)≥c)
-
Applying Rule "Same Constructor" results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹x142→*x144⟹x143→*x145⟹cond2#(false,x144,x145)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x144 by x142 which results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹x143→*x145⟹cond2#(false,x142,x145)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x145 by x143 which results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Induction" on equal(x140,x141)→*false results in the following 4 new constraints.
- (true→*false⟹cond2#(false,x142,x143)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x230)→*x142⟹0→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Same Constructor" results in
(s(x230)→*x142⟹0→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹s(x230)→*0⟹0→*x236⟹cond2#(false,0,x236)≥c)
-
Applying Rule "Same Constructor" results in
(s(x230)→*0⟹0→*x236⟹cond2#(false,0,x236)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*false⟹cond2#(false,s(x237),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x239,x238)→*false⟹s(x230)→*s(x239)⟹0→*s(x238)⟹∀x240
.
(gt(x239,x238)→*false⟹s(x240)→*x239⟹0→*x238⟹cond2#(false,x239,x238)≥c)⟹cond2#(false,s(x239),s(x238))≥c)
-
Applying Rule "Same Constructor" results in
(gt(x239,x238)→*false⟹x230→*x239⟹0→*s(x238)⟹∀x240
.
(gt(x239,x238)→*false⟹s(x240)→*x239⟹0→*x238⟹cond2#(false,x239,x238)≥c)⟹cond2#(false,s(x239),s(x238))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹0→*x142⟹s(x231)→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Same Constructor" results in
(0→*x142⟹s(x231)→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹0→*0⟹s(x231)→*x241⟹cond2#(false,0,x241)≥c)
- (true→*false⟹cond2#(false,s(x242),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x244,x243)→*false⟹0→*s(x244)⟹s(x231)→*s(x243)⟹∀x245
.
(gt(x244,x243)→*false⟹0→*x244⟹s(x245)→*x243⟹cond2#(false,x244,x243)≥c)⟹cond2#(false,s(x244),s(x243))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x233,x232)→*false⟹s(x233)→*x142⟹s(x232)→*x143⟹gt(x142,x143)→*false⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235)≥c)⟹cond2#(false,x142,x143)≥c)
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹equal(x233,x232)→*false⟹s(x233)→*0⟹s(x232)→*x246⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235)≥c)⟹cond2#(false,0,x246)≥c)
-
Applying Rule "Same Constructor" results in
(equal(x233,x232)→*false⟹s(x233)→*0⟹s(x232)→*x246⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235)≥c)⟹cond2#(false,0,x246)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*false⟹cond2#(false,s(x247),0)≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x249,x248)→*false⟹equal(x233,x232)→*false⟹s(x233)→*s(x249)⟹s(x232)→*s(x248)⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235)≥c)⟹∀x250
.
∀x251
.
∀x252
.
∀x253
.
(gt(x249,x248)→*false⟹equal(x250,x251)→*false⟹s(x250)→*x249⟹s(x251)→*x248⟹∀x252
.
∀x253
.
(equal(x250,x251)→*false⟹x250→*x252⟹x251→*x253⟹gt(x252,x253)→*false⟹cond2#(false,x252,x253)≥c)⟹cond2#(false,x249,x248)≥c)⟹cond2#(false,s(x249),s(x248))≥c)
-
For the chain
we build the initial constraint
(diff#(x22,s(x23))→*diff#(x24,x25)⟹cond1#(equal(x24,x25),x24,x25)→*cond1#(false,x26,x27)⟹cond1#(false,x26,x27)≥cond2#(gt(x26,x27),x26,x27))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(x22→*x24⟹s(x23)→*x25⟹cond1#(equal(x24,x25),x24,x25)→*cond1#(false,x26,x27)⟹cond1#(false,x26,x27)≥cond2#(gt(x26,x27),x26,x27))
-
Applying Rule "Same Constructor" results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹x24→*x26⟹x25→*x27⟹cond1#(false,x26,x27)≥cond2#(gt(x26,x27),x26,x27))
-
Applying Rule "Variable in Equation" allows to substitute
x26 by x24 which results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹x25→*x27⟹cond1#(false,x24,x27)≥cond2#(gt(x24,x27),x24,x27))
-
Applying Rule "Variable in Equation" allows to substitute
x27 by x25 which results in
(x22→*x24⟹s(x23)→*x25⟹equal(x24,x25)→*false⟹cond1#(false,x24,x25)≥cond2#(gt(x24,x25),x24,x25))
-
Applying Rule "Variable in Equation" allows to substitute
x22 by x24 which results in
(s(x23)→*x25⟹equal(x24,x25)→*false⟹cond1#(false,x24,x25)≥cond2#(gt(x24,x25),x24,x25))
-
Applying Rule "Induction" on equal(x24,x25)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,0,0)≥cond2#(gt(0,0),0,0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x23)→*0⟹cond1#(false,s(x180),0)≥cond2#(gt(s(x180),0),s(x180),0))
-
Applying Rule "Same Constructor" results in
(s(x23)→*0⟹cond1#(false,s(x180),0)≥cond2#(gt(s(x180),0),s(x180),0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x23)→*s(x181)⟹cond1#(false,0,s(x181))≥cond2#(gt(0,s(x181)),0,s(x181)))
- (equal(x183,x182)→*false⟹s(x23)→*s(x182)⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥cond2#(gt(x183,x182),x183,x182))⟹cond1#(false,s(x183),s(x182))≥cond2#(gt(s(x183),s(x182)),s(x183),s(x182)))
-
Applying Rule "Same Constructor" results in
(equal(x183,x182)→*false⟹x23→*x182⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥cond2#(gt(x183,x182),x183,x182))⟹cond1#(false,s(x183),s(x182))≥cond2#(gt(s(x183),s(x182)),s(x183),s(x182)))
-
Applying Rule "Variable in Equation" allows to substitute
x23 by x182 which results in
(equal(x183,x182)→*false⟹∀x184
.
(equal(x183,x182)→*false⟹s(x184)→*x182⟹cond1#(false,x183,x182)≥cond2#(gt(x183,x182),x183,x182))⟹cond1#(false,s(x183),s(x182))≥cond2#(gt(s(x183),s(x182)),s(x183),s(x182)))
-
Applying Rule "Delete Conditions" results in
(equal(x183,x182)→*false⟹cond1#(false,s(x183),s(x182))≥cond2#(gt(s(x183),s(x182)),s(x183),s(x182)))
-
Applying Rule "Induction" on equal(x183,x182)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,s(0),s(0))≥cond2#(gt(s(0),s(0)),s(0),s(0)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹cond1#(false,s(s(x185)),s(0))≥cond2#(gt(s(s(x185)),s(0)),s(s(x185)),s(0)))
- (false→*false⟹cond1#(false,s(0),s(s(x186)))≥cond2#(gt(s(0),s(s(x186))),s(0),s(s(x186))))
- (equal(x188,x187)→*false⟹(equal(x188,x187)→*false⟹cond1#(false,s(x188),s(x187))≥cond2#(gt(s(x188),s(x187)),s(x188),s(x187)))⟹cond1#(false,s(s(x188)),s(s(x187)))≥cond2#(gt(s(s(x188)),s(s(x187))),s(s(x188)),s(s(x187))))
-
For the chain
we build the initial constraint
(diff#(s(x30),x31)→*diff#(x32,x33)⟹cond1#(equal(x32,x33),x32,x33)→*cond1#(false,x34,x35)⟹cond1#(false,x34,x35)≥cond2#(gt(x34,x35),x34,x35))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(s(x30)→*x32⟹x31→*x33⟹cond1#(equal(x32,x33),x32,x33)→*cond1#(false,x34,x35)⟹cond1#(false,x34,x35)≥cond2#(gt(x34,x35),x34,x35))
-
Applying Rule "Same Constructor" results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹x32→*x34⟹x33→*x35⟹cond1#(false,x34,x35)≥cond2#(gt(x34,x35),x34,x35))
-
Applying Rule "Variable in Equation" allows to substitute
x34 by x32 which results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹x33→*x35⟹cond1#(false,x32,x35)≥cond2#(gt(x32,x35),x32,x35))
-
Applying Rule "Variable in Equation" allows to substitute
x35 by x33 which results in
(s(x30)→*x32⟹x31→*x33⟹equal(x32,x33)→*false⟹cond1#(false,x32,x33)≥cond2#(gt(x32,x33),x32,x33))
-
Applying Rule "Variable in Equation" allows to substitute
x31 by x33 which results in
(s(x30)→*x32⟹equal(x32,x33)→*false⟹cond1#(false,x32,x33)≥cond2#(gt(x32,x33),x32,x33))
-
Applying Rule "Induction" on equal(x32,x33)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,0,0)≥cond2#(gt(0,0),0,0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x30)→*s(x189)⟹cond1#(false,s(x189),0)≥cond2#(gt(s(x189),0),s(x189),0))
- (false→*false⟹s(x30)→*0⟹cond1#(false,0,s(x190))≥cond2#(gt(0,s(x190)),0,s(x190)))
-
Applying Rule "Same Constructor" results in
(s(x30)→*0⟹cond1#(false,0,s(x190))≥cond2#(gt(0,s(x190)),0,s(x190)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x192,x191)→*false⟹s(x30)→*s(x192)⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥cond2#(gt(x192,x191),x192,x191))⟹cond1#(false,s(x192),s(x191))≥cond2#(gt(s(x192),s(x191)),s(x192),s(x191)))
-
Applying Rule "Same Constructor" results in
(equal(x192,x191)→*false⟹x30→*x192⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥cond2#(gt(x192,x191),x192,x191))⟹cond1#(false,s(x192),s(x191))≥cond2#(gt(s(x192),s(x191)),s(x192),s(x191)))
-
Applying Rule "Variable in Equation" allows to substitute
x30 by x192 which results in
(equal(x192,x191)→*false⟹∀x193
.
(equal(x192,x191)→*false⟹s(x193)→*x192⟹cond1#(false,x192,x191)≥cond2#(gt(x192,x191),x192,x191))⟹cond1#(false,s(x192),s(x191))≥cond2#(gt(s(x192),s(x191)),s(x192),s(x191)))
-
Applying Rule "Delete Conditions" results in
(equal(x192,x191)→*false⟹cond1#(false,s(x192),s(x191))≥cond2#(gt(s(x192),s(x191)),s(x192),s(x191)))
-
Applying Rule "Induction" on equal(x192,x191)→*false results in the following 4 new constraints.
- (true→*false⟹cond1#(false,s(0),s(0))≥cond2#(gt(s(0),s(0)),s(0),s(0)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹cond1#(false,s(s(x194)),s(0))≥cond2#(gt(s(s(x194)),s(0)),s(s(x194)),s(0)))
- (false→*false⟹cond1#(false,s(0),s(s(x195)))≥cond2#(gt(s(0),s(s(x195))),s(0),s(s(x195))))
- (equal(x197,x196)→*false⟹(equal(x197,x196)→*false⟹cond1#(false,s(x197),s(x196))≥cond2#(gt(s(x197),s(x196)),s(x197),s(x196)))⟹cond1#(false,s(s(x197)),s(s(x196)))≥cond2#(gt(s(s(x197)),s(s(x196))),s(s(x197)),s(s(x196))))
-
For the chain
we build the initial constraint
(cond1#(equal(x50,x51),x50,x51)→*cond1#(false,x52,x53)⟹cond2#(gt(x52,x53),x52,x53)→*cond2#(true,x54,x55)⟹cond2#(true,x54,x55) > diff#(x54,s(x55)))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹cond2#(gt(x52,x53),x52,x53)→*cond2#(true,x54,x55)⟹cond2#(true,x54,x55) > diff#(x54,s(x55)))
-
Applying Rule "Same Constructor" results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹x52→*x54⟹x53→*x55⟹cond2#(true,x54,x55) > diff#(x54,s(x55)))
-
Applying Rule "Variable in Equation" allows to substitute
x54 by x52 which results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹x53→*x55⟹cond2#(true,x52,x55) > diff#(x52,s(x55)))
-
Applying Rule "Variable in Equation" allows to substitute
x55 by x53 which results in
(equal(x50,x51)→*false⟹x50→*x52⟹x51→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Induction" on equal(x50,x51)→*false results in the following 4 new constraints.
- (true→*false⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x198)→*x52⟹0→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Same Constructor" results in
(s(x198)→*x52⟹0→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x204) > diff#(0,s(x204)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹s(x198)→*s(x205)⟹0→*0⟹cond2#(true,s(x205),0) > diff#(s(x205),s(0)))
- (gt(x207,x206)→*true⟹s(x198)→*s(x207)⟹0→*s(x206)⟹∀x208
.
(gt(x207,x206)→*true⟹s(x208)→*x207⟹0→*x206⟹cond2#(true,x207,x206) > diff#(x207,s(x206)))⟹cond2#(true,s(x207),s(x206)) > diff#(s(x207),s(s(x206))))
-
Applying Rule "Same Constructor" results in
(gt(x207,x206)→*true⟹x198→*x207⟹0→*s(x206)⟹∀x208
.
(gt(x207,x206)→*true⟹s(x208)→*x207⟹0→*x206⟹cond2#(true,x207,x206) > diff#(x207,s(x206)))⟹cond2#(true,s(x207),s(x206)) > diff#(s(x207),s(s(x206))))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹0→*x52⟹s(x199)→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Same Constructor" results in
(0→*x52⟹s(x199)→*x53⟹gt(x52,x53)→*true⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x209) > diff#(0,s(x209)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹0→*s(x210)⟹s(x199)→*0⟹cond2#(true,s(x210),0) > diff#(s(x210),s(0)))
-
Applying Rule "Same Constructor" results in
(0→*s(x210)⟹s(x199)→*0⟹cond2#(true,s(x210),0) > diff#(s(x210),s(0)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x212,x211)→*true⟹0→*s(x212)⟹s(x199)→*s(x211)⟹∀x213
.
(gt(x212,x211)→*true⟹0→*x212⟹s(x213)→*x211⟹cond2#(true,x212,x211) > diff#(x212,s(x211)))⟹cond2#(true,s(x212),s(x211)) > diff#(s(x212),s(s(x211))))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x201,x200)→*false⟹s(x201)→*x52⟹s(x200)→*x53⟹gt(x52,x53)→*true⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203) > diff#(x202,s(x203)))⟹cond2#(true,x52,x53) > diff#(x52,s(x53)))
-
Applying Rule "Induction" on gt(x52,x53)→*true results in the following 3 new constraints.
- (false→*true⟹cond2#(true,0,x214) > diff#(0,s(x214)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹equal(x201,x200)→*false⟹s(x201)→*s(x215)⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203) > diff#(x202,s(x203)))⟹cond2#(true,s(x215),0) > diff#(s(x215),s(0)))
-
Applying Rule "Same Constructor" results in
(equal(x201,x200)→*false⟹s(x201)→*s(x215)⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203) > diff#(x202,s(x203)))⟹cond2#(true,s(x215),0) > diff#(s(x215),s(0)))
-
Applying Rule "Same Constructor" results in
(equal(x201,x200)→*false⟹x201→*x215⟹s(x200)→*0⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203) > diff#(x202,s(x203)))⟹cond2#(true,s(x215),0) > diff#(s(x215),s(0)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x217,x216)→*true⟹equal(x201,x200)→*false⟹s(x201)→*s(x217)⟹s(x200)→*s(x216)⟹∀x202
.
∀x203
.
(equal(x201,x200)→*false⟹x201→*x202⟹x200→*x203⟹gt(x202,x203)→*true⟹cond2#(true,x202,x203) > diff#(x202,s(x203)))⟹∀x218
.
∀x219
.
∀x220
.
∀x221
.
(gt(x217,x216)→*true⟹equal(x218,x219)→*false⟹s(x218)→*x217⟹s(x219)→*x216⟹∀x220
.
∀x221
.
(equal(x218,x219)→*false⟹x218→*x220⟹x219→*x221⟹gt(x220,x221)→*true⟹cond2#(true,x220,x221) > diff#(x220,s(x221)))⟹cond2#(true,x217,x216) > diff#(x217,s(x216)))⟹cond2#(true,s(x217),s(x216)) > diff#(s(x217),s(s(x216))))
-
For the chain
we build the initial constraint
(cond2#(gt(x100,x101),x100,x101)→*cond2#(true,x102,x103)⟹diff#(x102,s(x103))→*diff#(x104,x105)⟹diff#(x104,x105)≥cond1#(equal(x104,x105),x104,x105))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(gt(x100,x101)→*true⟹x100→*x102⟹x101→*x103⟹diff#(x102,s(x103))→*diff#(x104,x105)⟹diff#(x104,x105)≥cond1#(equal(x104,x105),x104,x105))
-
Applying Rule "Same Constructor" results in
(gt(x100,x101)→*true⟹x100→*x102⟹x101→*x103⟹x102→*x104⟹s(x103)→*x105⟹diff#(x104,x105)≥cond1#(equal(x104,x105),x104,x105))
-
Applying Rule "Variable in Equation" allows to substitute
x102 by x100 which results in
(gt(x100,x101)→*true⟹x101→*x103⟹x100→*x104⟹s(x103)→*x105⟹diff#(x104,x105)≥cond1#(equal(x104,x105),x104,x105))
-
Applying Rule "Variable in Equation" allows to substitute
x103 by x101 which results in
(gt(x100,x101)→*true⟹x100→*x104⟹s(x101)→*x105⟹diff#(x104,x105)≥cond1#(equal(x104,x105),x104,x105))
-
Applying Rule "Variable in Equation" allows to substitute
x104 by x100 which results in
(gt(x100,x101)→*true⟹s(x101)→*x105⟹diff#(x100,x105)≥cond1#(equal(x100,x105),x100,x105))
-
Applying Rule "Variable in Equation" allows to substitute
x105 by s(x101) which results in
(gt(x100,x101)→*true⟹diff#(x100,s(x101))≥cond1#(equal(x100,s(x101)),x100,s(x101)))
-
Applying Rule "Induction" on gt(x100,x101)→*true results in the following 3 new constraints.
- (false→*true⟹diff#(0,s(x222))≥cond1#(equal(0,s(x222)),0,s(x222)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*true⟹diff#(s(x223),s(0))≥cond1#(equal(s(x223),s(0)),s(x223),s(0)))
- (gt(x225,x224)→*true⟹(gt(x225,x224)→*true⟹diff#(x225,s(x224))≥cond1#(equal(x225,s(x224)),x225,s(x224)))⟹diff#(s(x225),s(s(x224)))≥cond1#(equal(s(x225),s(s(x224))),s(x225),s(s(x224))))
-
For the chain
we build the initial constraint
(cond2#(gt(x124,x125),x124,x125)→*cond2#(false,x126,x127)⟹diff#(s(x126),x127)→*diff#(x128,x129)⟹diff#(x128,x129)≥cond1#(equal(x128,x129),x128,x129))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(gt(x124,x125)→*false⟹x124→*x126⟹x125→*x127⟹diff#(s(x126),x127)→*diff#(x128,x129)⟹diff#(x128,x129)≥cond1#(equal(x128,x129),x128,x129))
-
Applying Rule "Same Constructor" results in
(gt(x124,x125)→*false⟹x124→*x126⟹x125→*x127⟹s(x126)→*x128⟹x127→*x129⟹diff#(x128,x129)≥cond1#(equal(x128,x129),x128,x129))
-
Applying Rule "Variable in Equation" allows to substitute
x126 by x124 which results in
(gt(x124,x125)→*false⟹x125→*x127⟹s(x124)→*x128⟹x127→*x129⟹diff#(x128,x129)≥cond1#(equal(x128,x129),x128,x129))
-
Applying Rule "Variable in Equation" allows to substitute
x127 by x125 which results in
(gt(x124,x125)→*false⟹s(x124)→*x128⟹x125→*x129⟹diff#(x128,x129)≥cond1#(equal(x128,x129),x128,x129))
-
Applying Rule "Variable in Equation" allows to substitute
x128 by s(x124) which results in
(gt(x124,x125)→*false⟹x125→*x129⟹diff#(s(x124),x129)≥cond1#(equal(s(x124),x129),s(x124),x129))
-
Applying Rule "Variable in Equation" allows to substitute
x129 by x125 which results in
(gt(x124,x125)→*false⟹diff#(s(x124),x125)≥cond1#(equal(s(x124),x125),s(x124),x125))
-
Applying Rule "Induction" on gt(x124,x125)→*false results in the following 3 new constraints.
- (false→*false⟹diff#(s(0),x226)≥cond1#(equal(s(0),x226),s(0),x226))
- (true→*false⟹diff#(s(s(x227)),0)≥cond1#(equal(s(s(x227)),0),s(s(x227)),0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x229,x228)→*false⟹(gt(x229,x228)→*false⟹diff#(s(x229),x228)≥cond1#(equal(s(x229),x228),s(x229),x228))⟹diff#(s(s(x229)),s(x228))≥cond1#(equal(s(s(x229)),s(x228)),s(s(x229)),s(x228)))
-
For the chain
we build the initial constraint
(cond1#(equal(x140,x141),x140,x141)→*cond1#(false,x142,x143)⟹cond2#(gt(x142,x143),x142,x143)→*cond2#(false,x144,x145)⟹cond2#(false,x144,x145) > diff#(s(x144),x145))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹cond2#(gt(x142,x143),x142,x143)→*cond2#(false,x144,x145)⟹cond2#(false,x144,x145) > diff#(s(x144),x145))
-
Applying Rule "Same Constructor" results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹x142→*x144⟹x143→*x145⟹cond2#(false,x144,x145) > diff#(s(x144),x145))
-
Applying Rule "Variable in Equation" allows to substitute
x144 by x142 which results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹x143→*x145⟹cond2#(false,x142,x145) > diff#(s(x142),x145))
-
Applying Rule "Variable in Equation" allows to substitute
x145 by x143 which results in
(equal(x140,x141)→*false⟹x140→*x142⟹x141→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Induction" on equal(x140,x141)→*false results in the following 4 new constraints.
- (true→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹s(x230)→*x142⟹0→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Same Constructor" results in
(s(x230)→*x142⟹0→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹s(x230)→*0⟹0→*x236⟹cond2#(false,0,x236) > diff#(s(0),x236))
-
Applying Rule "Same Constructor" results in
(s(x230)→*0⟹0→*x236⟹cond2#(false,0,x236) > diff#(s(0),x236))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*false⟹cond2#(false,s(x237),0) > diff#(s(s(x237)),0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x239,x238)→*false⟹s(x230)→*s(x239)⟹0→*s(x238)⟹∀x240
.
(gt(x239,x238)→*false⟹s(x240)→*x239⟹0→*x238⟹cond2#(false,x239,x238) > diff#(s(x239),x238))⟹cond2#(false,s(x239),s(x238)) > diff#(s(s(x239)),s(x238)))
-
Applying Rule "Same Constructor" results in
(gt(x239,x238)→*false⟹x230→*x239⟹0→*s(x238)⟹∀x240
.
(gt(x239,x238)→*false⟹s(x240)→*x239⟹0→*x238⟹cond2#(false,x239,x238) > diff#(s(x239),x238))⟹cond2#(false,s(x239),s(x238)) > diff#(s(s(x239)),s(x238)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹0→*x142⟹s(x231)→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Same Constructor" results in
(0→*x142⟹s(x231)→*x143⟹gt(x142,x143)→*false⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹0→*0⟹s(x231)→*x241⟹cond2#(false,0,x241) > diff#(s(0),x241))
- (true→*false⟹cond2#(false,s(x242),0) > diff#(s(s(x242)),0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x244,x243)→*false⟹0→*s(x244)⟹s(x231)→*s(x243)⟹∀x245
.
(gt(x244,x243)→*false⟹0→*x244⟹s(x245)→*x243⟹cond2#(false,x244,x243) > diff#(s(x244),x243))⟹cond2#(false,s(x244),s(x243)) > diff#(s(s(x244)),s(x243)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (equal(x233,x232)→*false⟹s(x233)→*x142⟹s(x232)→*x143⟹gt(x142,x143)→*false⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235) > diff#(s(x234),x235))⟹cond2#(false,x142,x143) > diff#(s(x142),x143))
-
Applying Rule "Induction" on gt(x142,x143)→*false results in the following 3 new constraints.
- (false→*false⟹equal(x233,x232)→*false⟹s(x233)→*0⟹s(x232)→*x246⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235) > diff#(s(x234),x235))⟹cond2#(false,0,x246) > diff#(s(0),x246))
-
Applying Rule "Same Constructor" results in
(equal(x233,x232)→*false⟹s(x233)→*0⟹s(x232)→*x246⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235) > diff#(s(x234),x235))⟹cond2#(false,0,x246) > diff#(s(0),x246))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (true→*false⟹cond2#(false,s(x247),0) > diff#(s(s(x247)),0))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (gt(x249,x248)→*false⟹equal(x233,x232)→*false⟹s(x233)→*s(x249)⟹s(x232)→*s(x248)⟹∀x234
.
∀x235
.
(equal(x233,x232)→*false⟹x233→*x234⟹x232→*x235⟹gt(x234,x235)→*false⟹cond2#(false,x234,x235) > diff#(s(x234),x235))⟹∀x250
.
∀x251
.
∀x252
.
∀x253
.
(gt(x249,x248)→*false⟹equal(x250,x251)→*false⟹s(x250)→*x249⟹s(x251)→*x248⟹∀x252
.
∀x253
.
(equal(x250,x251)→*false⟹x250→*x252⟹x251→*x253⟹gt(x252,x253)→*false⟹cond2#(false,x252,x253) > diff#(s(x252),x253))⟹cond2#(false,x249,x248) > diff#(s(x249),x248))⟹cond2#(false,s(x249),s(x248)) > diff#(s(s(x249)),s(x248)))
We remove those pairs which are strictly decreasing and bounded.
The dependency pairs are split into 0
components.