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
(if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97)→*if2#(true,x98,x99,x100,edge(x101,x102,x103),x104)⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(le(s(x96),size(x97))→*true⟹x94→*x98⟹x95→*x99⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x95→*x99⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x97→*edge(x101,x102,x103)⟹if1#(false,x94,x95,s(x96),x97,x97)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x97 by edge(x101,x102,x103) which results in
(le(s(x96),size(edge(x101,x102,x103)))→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Introduce fresh variable" results in
(size(edge(x101,x102,x103))→*x131⟹le(s(x96),x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Introduce fresh variable" results in
(s(x96)→*x130⟹size(edge(x101,x102,x103))→*x131⟹le(x130,x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Introduce fresh variable" results in
(s(x96)→*x130⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x131⟹le(x130,x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Induction" on le(x130,x131)→*true results in the following 3 new constraints.
- (true→*true⟹s(x96)→*0⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x133⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Same Constructor" results in
(s(x96)→*0⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x133⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x136,x135)→*true⟹s(x96)→*s(x136)⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Same Constructor" results in
(le(x136,x135)→*true⟹x96→*x136⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x96 by x136 which results in
(le(x136,x135)→*true⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Induction" on size(x132)→*s(x135) results in the following 2 new constraints.
- (0→*s(x135)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x144))→*s(x135)⟹le(x136,x135)→*true⟹edge(x101,x102,x103)→*edge(x146,x145,x144)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Same Constructor" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹edge(x101,x102,x103)→*edge(x146,x145,x144)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Same Constructor" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x101→*x146⟹x102→*x145⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x102→*x145⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x103 by x144 which results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥c)⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥c)⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥c)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144))≥c)
-
Applying Rule "Induction" on le(x136,x135)→*true results in the following 3 new constraints.
- (true→*true⟹size(x144)→*x161⟹if1#(false,x94,x95,s(0),edge(x101,x102,x144),edge(x101,x102,x144))≥c)
- (false→*true⟹if1#(false,x94,x95,s(s(x162)),edge(x101,x102,x144),edge(x101,x102,x144))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x164,x163)→*true⟹size(x144)→*s(x163)⟹∀x165
.
∀x166
.
∀x167
.
∀x168
.
∀x169
.
(le(x164,x163)→*true⟹size(x165)→*x163⟹if1#(false,x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165))≥c)⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,x144),edge(x101,x102,x144))≥c)
-
Applying Rule "Induction" on size(x144)→*s(x163) results in the following 2 new constraints.
- (0→*s(x163)⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,empty),edge(x101,x102,empty))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x170))→*s(x163)⟹le(x164,x163)→*true⟹∀x165
.
∀x166
.
∀x167
.
∀x168
.
∀x169
.
(le(x164,x163)→*true⟹size(x165)→*x163⟹if1#(false,x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165))≥c)⟹∀x173
.
∀x174
.
∀x175
.
∀x176
.
∀x177
.
∀x178
.
∀x179
.
∀x180
.
∀x181
.
∀x182
.
∀x183
.
(size(x170)→*s(x173)⟹le(x174,x173)→*true⟹∀x175
.
∀x176
.
∀x177
.
∀x178
.
∀x179
.
(le(x174,x173)→*true⟹size(x175)→*x173⟹if1#(false,x176,x177,s(x174),edge(x178,x179,x175),edge(x178,x179,x175))≥c)⟹if1#(false,x180,x181,s(s(x174)),edge(x182,x183,x170),edge(x182,x183,x170))≥c)⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,edge(x172,x171,x170)),edge(x101,x102,edge(x172,x171,x170)))≥c)
-
For the chain
we build the initial constraint
(if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108)→*if2#(true,x109,x110,x111,edge(x112,x113,x114),x115)⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(le(s(x107),size(x108))→*true⟹x105→*x109⟹x106→*x110⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x106→*x110⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x108→*edge(x112,x113,x114)⟹if1#(false,x105,x106,s(x107),x108,x108)≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x108 by edge(x112,x113,x114) which results in
(le(s(x107),size(edge(x112,x113,x114)))→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Introduce fresh variable" results in
(size(edge(x112,x113,x114))→*x185⟹le(s(x107),x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Introduce fresh variable" results in
(s(x107)→*x184⟹size(edge(x112,x113,x114))→*x185⟹le(x184,x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Introduce fresh variable" results in
(s(x107)→*x184⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x185⟹le(x184,x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Induction" on le(x184,x185)→*true results in the following 3 new constraints.
- (true→*true⟹s(x107)→*0⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x187⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Same Constructor" results in
(s(x107)→*0⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x187⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x190,x189)→*true⟹s(x107)→*s(x190)⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Same Constructor" results in
(le(x190,x189)→*true⟹x107→*x190⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x107 by x190 which results in
(le(x190,x189)→*true⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Induction" on size(x186)→*s(x189) results in the following 2 new constraints.
- (0→*s(x189)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x198))→*s(x189)⟹le(x190,x189)→*true⟹edge(x112,x113,x114)→*edge(x200,x199,x198)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Same Constructor" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹edge(x112,x113,x114)→*edge(x200,x199,x198)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Same Constructor" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x112→*x200⟹x113→*x199⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x113→*x199⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥c)
-
Applying Rule "Variable in Equation" allows to substitute
x114 by x198 which results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥c)⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥c)⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥c)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198))≥c)
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198))≥c)
-
Applying Rule "Induction" on le(x190,x189)→*true results in the following 3 new constraints.
- (true→*true⟹size(x198)→*x215⟹if1#(false,x105,x106,s(0),edge(x112,x113,x198),edge(x112,x113,x198))≥c)
- (false→*true⟹if1#(false,x105,x106,s(s(x216)),edge(x112,x113,x198),edge(x112,x113,x198))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x218,x217)→*true⟹size(x198)→*s(x217)⟹∀x219
.
∀x220
.
∀x221
.
∀x222
.
∀x223
.
(le(x218,x217)→*true⟹size(x219)→*x217⟹if1#(false,x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219))≥c)⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,x198),edge(x112,x113,x198))≥c)
-
Applying Rule "Induction" on size(x198)→*s(x217) results in the following 2 new constraints.
- (0→*s(x217)⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,empty),edge(x112,x113,empty))≥c)
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x224))→*s(x217)⟹le(x218,x217)→*true⟹∀x219
.
∀x220
.
∀x221
.
∀x222
.
∀x223
.
(le(x218,x217)→*true⟹size(x219)→*x217⟹if1#(false,x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219))≥c)⟹∀x227
.
∀x228
.
∀x229
.
∀x230
.
∀x231
.
∀x232
.
∀x233
.
∀x234
.
∀x235
.
∀x236
.
∀x237
.
(size(x224)→*s(x227)⟹le(x228,x227)→*true⟹∀x229
.
∀x230
.
∀x231
.
∀x232
.
∀x233
.
(le(x228,x227)→*true⟹size(x229)→*x227⟹if1#(false,x230,x231,s(x228),edge(x232,x233,x229),edge(x232,x233,x229))≥c)⟹if1#(false,x234,x235,s(s(x228)),edge(x236,x237,x224),edge(x236,x237,x224))≥c)⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,edge(x226,x225,x224)),edge(x112,x113,edge(x226,x225,x224)))≥c)
-
For the chain
we build the initial constraint
(if2#(true,x0,x1,x2,x5,x6)→*if2#(true,x7,x8,x9,edge(x10,x11,x12),x13)⟹if2#(true,x0,x1,x2,edge(x3,x4,x5),x6)≥if2#(true,x0,x1,x2,x5,x6))
which is simplified as follows.
-
For the chain
we build the initial constraint
(if2#(true,x14,x15,x16,x19,x20)→*if2#(true,x21,x22,x23,edge(x24,x25,x26),x27)⟹if2#(true,x14,x15,x16,edge(x17,x18,x19),x20)≥if2#(true,x14,x15,x16,x19,x20))
which is simplified as follows.
-
For the chain
we build the initial constraint
(reach#(x60,x57,s(x58),x62,x62)→*reach#(x63,x64,s(x65),x66,x66)⟹if2#(true,x56,x57,x58,edge(x59,x60,x61),x62) > reach#(x60,x57,s(x58),x62,x62))
which is simplified as follows.
-
For the chain
we build the initial constraint
(if1#(eq(x86,x87),x86,x87,s(x88),x89,x89)→*if1#(false,x90,x91,s(x92),x93,x93)⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(eq(x86,x87)→*false⟹x86→*x90⟹x87→*x91⟹s(x88)→*s(x92)⟹x89→*x93⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Same Constructor" results in
(eq(x86,x87)→*false⟹x86→*x90⟹x87→*x91⟹x88→*x92⟹x89→*x93⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Delete Conditions" results in
(eq(x86,x87)→*false⟹x87→*x91⟹x88→*x92⟹x89→*x93⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Delete Conditions" results in
(eq(x86,x87)→*false⟹x88→*x92⟹x89→*x93⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Delete Conditions" results in
(eq(x86,x87)→*false⟹x89→*x93⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Delete Conditions" results in
(eq(x86,x87)→*false⟹reach#(x86,x87,s(x88),x89,x89)≥if1#(eq(x86,x87),x86,x87,s(x88),x89,x89))
-
Applying Rule "Induction" on eq(x86,x87)→*false results in the following 4 new constraints.
- (true→*false⟹reach#(0,0,s(x88),x89,x89)≥if1#(eq(0,0),0,0,s(x88),x89,x89))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*false⟹reach#(0,s(x124),s(x88),x89,x89)≥if1#(eq(0,s(x124)),0,s(x124),s(x88),x89,x89))
- (false→*false⟹reach#(s(x125),0,s(x88),x89,x89)≥if1#(eq(s(x125),0),s(x125),0,s(x88),x89,x89))
- (eq(x127,x126)→*false⟹∀x128
.
∀x129
.
(eq(x127,x126)→*false⟹reach#(x127,x126,s(x128),x129,x129)≥if1#(eq(x127,x126),x127,x126,s(x128),x129,x129))⟹reach#(s(x127),s(x126),s(x88),x89,x89)≥if1#(eq(s(x127),s(x126)),s(x127),s(x126),s(x88),x89,x89))
-
For the chain
we build the initial constraint
(if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97)→*if2#(true,x98,x99,x100,edge(x101,x102,x103),x104)⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(le(s(x96),size(x97))→*true⟹x94→*x98⟹x95→*x99⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x95→*x99⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹s(x96)→*x100⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x97→*edge(x101,x102,x103)⟹x97→*x104⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
-
Applying Rule "Delete Conditions" results in
(le(s(x96),size(x97))→*true⟹x97→*edge(x101,x102,x103)⟹if1#(false,x94,x95,s(x96),x97,x97)≥if2#(le(s(x96),size(x97)),x94,x95,s(x96),x97,x97))
-
Applying Rule "Variable in Equation" allows to substitute
x97 by edge(x101,x102,x103) which results in
(le(s(x96),size(edge(x101,x102,x103)))→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Introduce fresh variable" results in
(size(edge(x101,x102,x103))→*x131⟹le(s(x96),x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Introduce fresh variable" results in
(s(x96)→*x130⟹size(edge(x101,x102,x103))→*x131⟹le(x130,x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Introduce fresh variable" results in
(s(x96)→*x130⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x131⟹le(x130,x131)→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Induction" on le(x130,x131)→*true results in the following 3 new constraints.
- (true→*true⟹s(x96)→*0⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x133⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Same Constructor" results in
(s(x96)→*0⟹edge(x101,x102,x103)→*x132⟹size(x132)→*x133⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*true⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x136,x135)→*true⟹s(x96)→*s(x136)⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Same Constructor" results in
(le(x136,x135)→*true⟹x96→*x136⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹if1#(false,x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x96),size(edge(x101,x102,x103))),x94,x95,s(x96),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Variable in Equation" allows to substitute
x96 by x136 which results in
(le(x136,x135)→*true⟹edge(x101,x102,x103)→*x132⟹size(x132)→*s(x135)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Induction" on size(x132)→*s(x135) results in the following 2 new constraints.
- (0→*s(x135)⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x144))→*s(x135)⟹le(x136,x135)→*true⟹edge(x101,x102,x103)→*edge(x146,x145,x144)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Same Constructor" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹edge(x101,x102,x103)→*edge(x146,x145,x144)⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Same Constructor" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x101→*x146⟹x102→*x145⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x102→*x145⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹x103→*x144⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103))≥if2#(le(s(x136),size(edge(x101,x102,x103))),x94,x95,s(x136),edge(x101,x102,x103),edge(x101,x102,x103)))
-
Applying Rule "Variable in Equation" allows to substitute
x103 by x144 which results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹∀x137
.
∀x138
.
∀x139
.
∀x140
.
∀x141
.
∀x142
.
∀x143
.
(le(x136,x135)→*true⟹s(x137)→*x136⟹edge(x138,x139,x140)→*x141⟹size(x141)→*x135⟹if1#(false,x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140))≥if2#(le(s(x137),size(edge(x138,x139,x140))),x142,x143,s(x137),edge(x138,x139,x140),edge(x138,x139,x140)))⟹∀x147
.
∀x148
.
∀x149
.
∀x150
.
∀x151
.
∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
∀x159
.
∀x160
.
(size(x144)→*s(x147)⟹le(x148,x147)→*true⟹edge(x149,x150,x151)→*x144⟹∀x152
.
∀x153
.
∀x154
.
∀x155
.
∀x156
.
∀x157
.
∀x158
.
(le(x148,x147)→*true⟹s(x152)→*x148⟹edge(x153,x154,x155)→*x156⟹size(x156)→*x147⟹if1#(false,x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155))≥if2#(le(s(x152),size(edge(x153,x154,x155))),x157,x158,s(x152),edge(x153,x154,x155),edge(x153,x154,x155)))⟹if1#(false,x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151))≥if2#(le(s(x148),size(edge(x149,x150,x151))),x159,x160,s(x148),edge(x149,x150,x151),edge(x149,x150,x151)))⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144))≥if2#(le(s(x136),size(edge(x101,x102,x144))),x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144)))
-
Applying Rule "Delete Conditions" results in
(size(x144)→*x135⟹le(x136,x135)→*true⟹if1#(false,x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144))≥if2#(le(s(x136),size(edge(x101,x102,x144))),x94,x95,s(x136),edge(x101,x102,x144),edge(x101,x102,x144)))
-
Applying Rule "Induction" on le(x136,x135)→*true results in the following 3 new constraints.
- (true→*true⟹size(x144)→*x161⟹if1#(false,x94,x95,s(0),edge(x101,x102,x144),edge(x101,x102,x144))≥if2#(le(s(0),size(edge(x101,x102,x144))),x94,x95,s(0),edge(x101,x102,x144),edge(x101,x102,x144)))
- (false→*true⟹if1#(false,x94,x95,s(s(x162)),edge(x101,x102,x144),edge(x101,x102,x144))≥if2#(le(s(s(x162)),size(edge(x101,x102,x144))),x94,x95,s(s(x162)),edge(x101,x102,x144),edge(x101,x102,x144)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x164,x163)→*true⟹size(x144)→*s(x163)⟹∀x165
.
∀x166
.
∀x167
.
∀x168
.
∀x169
.
(le(x164,x163)→*true⟹size(x165)→*x163⟹if1#(false,x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165))≥if2#(le(s(x164),size(edge(x168,x169,x165))),x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165)))⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,x144),edge(x101,x102,x144))≥if2#(le(s(s(x164)),size(edge(x101,x102,x144))),x94,x95,s(s(x164)),edge(x101,x102,x144),edge(x101,x102,x144)))
-
Applying Rule "Induction" on size(x144)→*s(x163) results in the following 2 new constraints.
- (0→*s(x163)⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,empty),edge(x101,x102,empty))≥if2#(le(s(s(x164)),size(edge(x101,x102,empty))),x94,x95,s(s(x164)),edge(x101,x102,empty),edge(x101,x102,empty)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x170))→*s(x163)⟹le(x164,x163)→*true⟹∀x165
.
∀x166
.
∀x167
.
∀x168
.
∀x169
.
(le(x164,x163)→*true⟹size(x165)→*x163⟹if1#(false,x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165))≥if2#(le(s(x164),size(edge(x168,x169,x165))),x166,x167,s(x164),edge(x168,x169,x165),edge(x168,x169,x165)))⟹∀x173
.
∀x174
.
∀x175
.
∀x176
.
∀x177
.
∀x178
.
∀x179
.
∀x180
.
∀x181
.
∀x182
.
∀x183
.
(size(x170)→*s(x173)⟹le(x174,x173)→*true⟹∀x175
.
∀x176
.
∀x177
.
∀x178
.
∀x179
.
(le(x174,x173)→*true⟹size(x175)→*x173⟹if1#(false,x176,x177,s(x174),edge(x178,x179,x175),edge(x178,x179,x175))≥if2#(le(s(x174),size(edge(x178,x179,x175))),x176,x177,s(x174),edge(x178,x179,x175),edge(x178,x179,x175)))⟹if1#(false,x180,x181,s(s(x174)),edge(x182,x183,x170),edge(x182,x183,x170))≥if2#(le(s(s(x174)),size(edge(x182,x183,x170))),x180,x181,s(s(x174)),edge(x182,x183,x170),edge(x182,x183,x170)))⟹if1#(false,x94,x95,s(s(x164)),edge(x101,x102,edge(x172,x171,x170)),edge(x101,x102,edge(x172,x171,x170)))≥if2#(le(s(s(x164)),size(edge(x101,x102,edge(x172,x171,x170)))),x94,x95,s(s(x164)),edge(x101,x102,edge(x172,x171,x170)),edge(x101,x102,edge(x172,x171,x170))))
-
For the chain
we build the initial constraint
(if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108)→*if2#(true,x109,x110,x111,edge(x112,x113,x114),x115)⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
which is simplified as follows.
-
Applying Rule "Same Constructor" results in
(le(s(x107),size(x108))→*true⟹x105→*x109⟹x106→*x110⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x106→*x110⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹s(x107)→*x111⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x108→*edge(x112,x113,x114)⟹x108→*x115⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
-
Applying Rule "Delete Conditions" results in
(le(s(x107),size(x108))→*true⟹x108→*edge(x112,x113,x114)⟹if1#(false,x105,x106,s(x107),x108,x108)≥if2#(le(s(x107),size(x108)),x105,x106,s(x107),x108,x108))
-
Applying Rule "Variable in Equation" allows to substitute
x108 by edge(x112,x113,x114) which results in
(le(s(x107),size(edge(x112,x113,x114)))→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Introduce fresh variable" results in
(size(edge(x112,x113,x114))→*x185⟹le(s(x107),x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Introduce fresh variable" results in
(s(x107)→*x184⟹size(edge(x112,x113,x114))→*x185⟹le(x184,x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Introduce fresh variable" results in
(s(x107)→*x184⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x185⟹le(x184,x185)→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Induction" on le(x184,x185)→*true results in the following 3 new constraints.
- (true→*true⟹s(x107)→*0⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x187⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Same Constructor" results in
(s(x107)→*0⟹edge(x112,x113,x114)→*x186⟹size(x186)→*x187⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (false→*true⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x190,x189)→*true⟹s(x107)→*s(x190)⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Same Constructor" results in
(le(x190,x189)→*true⟹x107→*x190⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹if1#(false,x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x107),size(edge(x112,x113,x114))),x105,x106,s(x107),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Variable in Equation" allows to substitute
x107 by x190 which results in
(le(x190,x189)→*true⟹edge(x112,x113,x114)→*x186⟹size(x186)→*s(x189)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Induction" on size(x186)→*s(x189) results in the following 2 new constraints.
- (0→*s(x189)⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x198))→*s(x189)⟹le(x190,x189)→*true⟹edge(x112,x113,x114)→*edge(x200,x199,x198)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Same Constructor" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹edge(x112,x113,x114)→*edge(x200,x199,x198)⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Same Constructor" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x112→*x200⟹x113→*x199⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x113→*x199⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹x114→*x198⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114))≥if2#(le(s(x190),size(edge(x112,x113,x114))),x105,x106,s(x190),edge(x112,x113,x114),edge(x112,x113,x114)))
-
Applying Rule "Variable in Equation" allows to substitute
x114 by x198 which results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹∀x191
.
∀x192
.
∀x193
.
∀x194
.
∀x195
.
∀x196
.
∀x197
.
(le(x190,x189)→*true⟹s(x191)→*x190⟹edge(x192,x193,x194)→*x195⟹size(x195)→*x189⟹if1#(false,x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194))≥if2#(le(s(x191),size(edge(x192,x193,x194))),x196,x197,s(x191),edge(x192,x193,x194),edge(x192,x193,x194)))⟹∀x201
.
∀x202
.
∀x203
.
∀x204
.
∀x205
.
∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
∀x213
.
∀x214
.
(size(x198)→*s(x201)⟹le(x202,x201)→*true⟹edge(x203,x204,x205)→*x198⟹∀x206
.
∀x207
.
∀x208
.
∀x209
.
∀x210
.
∀x211
.
∀x212
.
(le(x202,x201)→*true⟹s(x206)→*x202⟹edge(x207,x208,x209)→*x210⟹size(x210)→*x201⟹if1#(false,x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209))≥if2#(le(s(x206),size(edge(x207,x208,x209))),x211,x212,s(x206),edge(x207,x208,x209),edge(x207,x208,x209)))⟹if1#(false,x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205))≥if2#(le(s(x202),size(edge(x203,x204,x205))),x213,x214,s(x202),edge(x203,x204,x205),edge(x203,x204,x205)))⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198))≥if2#(le(s(x190),size(edge(x112,x113,x198))),x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198)))
-
Applying Rule "Delete Conditions" results in
(size(x198)→*x189⟹le(x190,x189)→*true⟹if1#(false,x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198))≥if2#(le(s(x190),size(edge(x112,x113,x198))),x105,x106,s(x190),edge(x112,x113,x198),edge(x112,x113,x198)))
-
Applying Rule "Induction" on le(x190,x189)→*true results in the following 3 new constraints.
- (true→*true⟹size(x198)→*x215⟹if1#(false,x105,x106,s(0),edge(x112,x113,x198),edge(x112,x113,x198))≥if2#(le(s(0),size(edge(x112,x113,x198))),x105,x106,s(0),edge(x112,x113,x198),edge(x112,x113,x198)))
- (false→*true⟹if1#(false,x105,x106,s(s(x216)),edge(x112,x113,x198),edge(x112,x113,x198))≥if2#(le(s(s(x216)),size(edge(x112,x113,x198))),x105,x106,s(s(x216)),edge(x112,x113,x198),edge(x112,x113,x198)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (le(x218,x217)→*true⟹size(x198)→*s(x217)⟹∀x219
.
∀x220
.
∀x221
.
∀x222
.
∀x223
.
(le(x218,x217)→*true⟹size(x219)→*x217⟹if1#(false,x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219))≥if2#(le(s(x218),size(edge(x222,x223,x219))),x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219)))⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,x198),edge(x112,x113,x198))≥if2#(le(s(s(x218)),size(edge(x112,x113,x198))),x105,x106,s(s(x218)),edge(x112,x113,x198),edge(x112,x113,x198)))
-
Applying Rule "Induction" on size(x198)→*s(x217) results in the following 2 new constraints.
- (0→*s(x217)⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,empty),edge(x112,x113,empty))≥if2#(le(s(s(x218)),size(edge(x112,x113,empty))),x105,x106,s(s(x218)),edge(x112,x113,empty),edge(x112,x113,empty)))
- Applying Rule "Different Constructors" allows to drop this constraint.
- (s(size(x224))→*s(x217)⟹le(x218,x217)→*true⟹∀x219
.
∀x220
.
∀x221
.
∀x222
.
∀x223
.
(le(x218,x217)→*true⟹size(x219)→*x217⟹if1#(false,x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219))≥if2#(le(s(x218),size(edge(x222,x223,x219))),x220,x221,s(x218),edge(x222,x223,x219),edge(x222,x223,x219)))⟹∀x227
.
∀x228
.
∀x229
.
∀x230
.
∀x231
.
∀x232
.
∀x233
.
∀x234
.
∀x235
.
∀x236
.
∀x237
.
(size(x224)→*s(x227)⟹le(x228,x227)→*true⟹∀x229
.
∀x230
.
∀x231
.
∀x232
.
∀x233
.
(le(x228,x227)→*true⟹size(x229)→*x227⟹if1#(false,x230,x231,s(x228),edge(x232,x233,x229),edge(x232,x233,x229))≥if2#(le(s(x228),size(edge(x232,x233,x229))),x230,x231,s(x228),edge(x232,x233,x229),edge(x232,x233,x229)))⟹if1#(false,x234,x235,s(s(x228)),edge(x236,x237,x224),edge(x236,x237,x224))≥if2#(le(s(s(x228)),size(edge(x236,x237,x224))),x234,x235,s(s(x228)),edge(x236,x237,x224),edge(x236,x237,x224)))⟹if1#(false,x105,x106,s(s(x218)),edge(x112,x113,edge(x226,x225,x224)),edge(x112,x113,edge(x226,x225,x224)))≥if2#(le(s(s(x218)),size(edge(x112,x113,edge(x226,x225,x224)))),x105,x106,s(s(x218)),edge(x112,x113,edge(x226,x225,x224)),edge(x112,x113,edge(x226,x225,x224))))
We get two subproofs, in the first the strict pairs are deleted, in the second the bounded pairs are deleted.
The dependency pairs are split into 1
component.
The dependency pairs are split into 1
component.