(0) Obligation:

Clauses:

hidden_flatten([], L, L).
hidden_flatten(.(.(H, T), L), S, F) :- ','(!, ','(hidden_flatten(L, S, Lf), hidden_flatten(.(H, T), Lf, F))).
hidden_flatten(.(H, T), S, .(H, L)) :- hidden_flatten(T, S, L).

Query: hidden_flatten(g,a,a)

(1) PrologToTRSTransformerProof (SOUND transformation)

Transformed Prolog program to TRS.

(2) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

f1_in([]) → f1_out1
f1_in(.(.(T27, T28), T29)) → U1(f37_in(T29, T27, T28), .(.(T27, T28), T29))
U1(f37_out1, .(.(T27, T28), T29)) → f1_out1
f1_in(.(T89, T90)) → U2(f1_in(T90), .(T89, T90))
U2(f1_out1, .(T89, T90)) → f1_out1
f45_in([]) → f45_out1
f45_in(.(.(T59, T60), T61)) → U3(f87_in(T61, T59, T60), .(.(T59, T60), T61))
U3(f87_out1, .(.(T59, T60), T61)) → f45_out1
f45_in(.(T75, T76)) → U4(f45_in(T76), .(T75, T76))
U4(f45_out1, .(T75, T76)) → f45_out1
f37_in(T29, T27, T28) → U5(f45_in(T29), T29, T27, T28)
U5(f45_out1, T29, T27, T28) → U6(f1_in(.(T27, T28)), T29, T27, T28)
U6(f1_out1, T29, T27, T28) → f37_out1
f87_in(T61, T59, T60) → U7(f45_in(T61), T61, T59, T60)
U7(f45_out1, T61, T59, T60) → U8(f1_in(.(T59, T60)), T61, T59, T60)
U8(f1_out1, T61, T59, T60) → f87_out1

Q is empty.

(3) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(4) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F1_IN(.(.(T27, T28), T29)) → U11(f37_in(T29, T27, T28), .(.(T27, T28), T29))
F1_IN(.(.(T27, T28), T29)) → F37_IN(T29, T27, T28)
F1_IN(.(T89, T90)) → U21(f1_in(T90), .(T89, T90))
F1_IN(.(T89, T90)) → F1_IN(T90)
F45_IN(.(.(T59, T60), T61)) → U31(f87_in(T61, T59, T60), .(.(T59, T60), T61))
F45_IN(.(.(T59, T60), T61)) → F87_IN(T61, T59, T60)
F45_IN(.(T75, T76)) → U41(f45_in(T76), .(T75, T76))
F45_IN(.(T75, T76)) → F45_IN(T76)
F37_IN(T29, T27, T28) → U51(f45_in(T29), T29, T27, T28)
F37_IN(T29, T27, T28) → F45_IN(T29)
U51(f45_out1, T29, T27, T28) → U61(f1_in(.(T27, T28)), T29, T27, T28)
U51(f45_out1, T29, T27, T28) → F1_IN(.(T27, T28))
F87_IN(T61, T59, T60) → U71(f45_in(T61), T61, T59, T60)
F87_IN(T61, T59, T60) → F45_IN(T61)
U71(f45_out1, T61, T59, T60) → U81(f1_in(.(T59, T60)), T61, T59, T60)
U71(f45_out1, T61, T59, T60) → F1_IN(.(T59, T60))

The TRS R consists of the following rules:

f1_in([]) → f1_out1
f1_in(.(.(T27, T28), T29)) → U1(f37_in(T29, T27, T28), .(.(T27, T28), T29))
U1(f37_out1, .(.(T27, T28), T29)) → f1_out1
f1_in(.(T89, T90)) → U2(f1_in(T90), .(T89, T90))
U2(f1_out1, .(T89, T90)) → f1_out1
f45_in([]) → f45_out1
f45_in(.(.(T59, T60), T61)) → U3(f87_in(T61, T59, T60), .(.(T59, T60), T61))
U3(f87_out1, .(.(T59, T60), T61)) → f45_out1
f45_in(.(T75, T76)) → U4(f45_in(T76), .(T75, T76))
U4(f45_out1, .(T75, T76)) → f45_out1
f37_in(T29, T27, T28) → U5(f45_in(T29), T29, T27, T28)
U5(f45_out1, T29, T27, T28) → U6(f1_in(.(T27, T28)), T29, T27, T28)
U6(f1_out1, T29, T27, T28) → f37_out1
f87_in(T61, T59, T60) → U7(f45_in(T61), T61, T59, T60)
U7(f45_out1, T61, T59, T60) → U8(f1_in(.(T59, T60)), T61, T59, T60)
U8(f1_out1, T61, T59, T60) → f87_out1

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 6 less nodes.

(6) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F1_IN(.(.(T27, T28), T29)) → F37_IN(T29, T27, T28)
F37_IN(T29, T27, T28) → U51(f45_in(T29), T29, T27, T28)
U51(f45_out1, T29, T27, T28) → F1_IN(.(T27, T28))
F1_IN(.(T89, T90)) → F1_IN(T90)
F37_IN(T29, T27, T28) → F45_IN(T29)
F45_IN(.(.(T59, T60), T61)) → F87_IN(T61, T59, T60)
F87_IN(T61, T59, T60) → U71(f45_in(T61), T61, T59, T60)
U71(f45_out1, T61, T59, T60) → F1_IN(.(T59, T60))
F87_IN(T61, T59, T60) → F45_IN(T61)
F45_IN(.(T75, T76)) → F45_IN(T76)

The TRS R consists of the following rules:

f1_in([]) → f1_out1
f1_in(.(.(T27, T28), T29)) → U1(f37_in(T29, T27, T28), .(.(T27, T28), T29))
U1(f37_out1, .(.(T27, T28), T29)) → f1_out1
f1_in(.(T89, T90)) → U2(f1_in(T90), .(T89, T90))
U2(f1_out1, .(T89, T90)) → f1_out1
f45_in([]) → f45_out1
f45_in(.(.(T59, T60), T61)) → U3(f87_in(T61, T59, T60), .(.(T59, T60), T61))
U3(f87_out1, .(.(T59, T60), T61)) → f45_out1
f45_in(.(T75, T76)) → U4(f45_in(T76), .(T75, T76))
U4(f45_out1, .(T75, T76)) → f45_out1
f37_in(T29, T27, T28) → U5(f45_in(T29), T29, T27, T28)
U5(f45_out1, T29, T27, T28) → U6(f1_in(.(T27, T28)), T29, T27, T28)
U6(f1_out1, T29, T27, T28) → f37_out1
f87_in(T61, T59, T60) → U7(f45_in(T61), T61, T59, T60)
U7(f45_out1, T61, T59, T60) → U8(f1_in(.(T59, T60)), T61, T59, T60)
U8(f1_out1, T61, T59, T60) → f87_out1

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(7) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


U51(f45_out1, T29, T27, T28) → F1_IN(.(T27, T28))
F37_IN(T29, T27, T28) → F45_IN(T29)
F45_IN(.(.(T59, T60), T61)) → F87_IN(T61, T59, T60)
F87_IN(T61, T59, T60) → U71(f45_in(T61), T61, T59, T60)
U71(f45_out1, T61, T59, T60) → F1_IN(.(T59, T60))
F87_IN(T61, T59, T60) → F45_IN(T61)
F45_IN(.(T75, T76)) → F45_IN(T76)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:

POL( U51(x1, ..., x4) ) = x2 + 2x3 + 2x4 + 2


POL( U71(x1, ..., x4) ) = 2x2 + 2x3 + 2x4 + 1


POL( f45_in(x1) ) = 0


POL( [] ) = 1


POL( f45_out1 ) = 2


POL( .(x1, x2) ) = x1 + x2 + 1


POL( U3(x1, x2) ) = max{0, -2}


POL( f87_in(x1, ..., x3) ) = x2 + 2x3 + 1


POL( U4(x1, x2) ) = x2 + 2


POL( f1_in(x1) ) = max{0, -2}


POL( U1(x1, x2) ) = max{0, -2}


POL( f37_in(x1, ..., x3) ) = x1 + 2x3 + 1


POL( f37_out1 ) = 0


POL( f1_out1 ) = 0


POL( U5(x1, ..., x4) ) = max{0, x1 + 2x2 + x3 + x4 - 1}


POL( f87_out1 ) = 1


POL( U7(x1, ..., x4) ) = max{0, x2 - 2}


POL( U8(x1, ..., x4) ) = max{0, 2x1 + x2 + x3 + 2x4 - 2}


POL( U2(x1, x2) ) = max{0, -2}


POL( U6(x1, ..., x4) ) = max{0, 2x2 + 2x3 + 2x4 - 2}


POL( F1_IN(x1) ) = max{0, 2x1 - 2}


POL( F37_IN(x1, ..., x3) ) = 2x1 + 2x2 + 2x3 + 2


POL( F45_IN(x1) ) = 2x1


POL( F87_IN(x1, ..., x3) ) = 2x1 + 2x2 + 2x3 + 2



The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(8) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F1_IN(.(.(T27, T28), T29)) → F37_IN(T29, T27, T28)
F37_IN(T29, T27, T28) → U51(f45_in(T29), T29, T27, T28)
F1_IN(.(T89, T90)) → F1_IN(T90)

The TRS R consists of the following rules:

f1_in([]) → f1_out1
f1_in(.(.(T27, T28), T29)) → U1(f37_in(T29, T27, T28), .(.(T27, T28), T29))
U1(f37_out1, .(.(T27, T28), T29)) → f1_out1
f1_in(.(T89, T90)) → U2(f1_in(T90), .(T89, T90))
U2(f1_out1, .(T89, T90)) → f1_out1
f45_in([]) → f45_out1
f45_in(.(.(T59, T60), T61)) → U3(f87_in(T61, T59, T60), .(.(T59, T60), T61))
U3(f87_out1, .(.(T59, T60), T61)) → f45_out1
f45_in(.(T75, T76)) → U4(f45_in(T76), .(T75, T76))
U4(f45_out1, .(T75, T76)) → f45_out1
f37_in(T29, T27, T28) → U5(f45_in(T29), T29, T27, T28)
U5(f45_out1, T29, T27, T28) → U6(f1_in(.(T27, T28)), T29, T27, T28)
U6(f1_out1, T29, T27, T28) → f37_out1
f87_in(T61, T59, T60) → U7(f45_in(T61), T61, T59, T60)
U7(f45_out1, T61, T59, T60) → U8(f1_in(.(T59, T60)), T61, T59, T60)
U8(f1_out1, T61, T59, T60) → f87_out1

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(9) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes.

(10) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F1_IN(.(T89, T90)) → F1_IN(T90)

The TRS R consists of the following rules:

f1_in([]) → f1_out1
f1_in(.(.(T27, T28), T29)) → U1(f37_in(T29, T27, T28), .(.(T27, T28), T29))
U1(f37_out1, .(.(T27, T28), T29)) → f1_out1
f1_in(.(T89, T90)) → U2(f1_in(T90), .(T89, T90))
U2(f1_out1, .(T89, T90)) → f1_out1
f45_in([]) → f45_out1
f45_in(.(.(T59, T60), T61)) → U3(f87_in(T61, T59, T60), .(.(T59, T60), T61))
U3(f87_out1, .(.(T59, T60), T61)) → f45_out1
f45_in(.(T75, T76)) → U4(f45_in(T76), .(T75, T76))
U4(f45_out1, .(T75, T76)) → f45_out1
f37_in(T29, T27, T28) → U5(f45_in(T29), T29, T27, T28)
U5(f45_out1, T29, T27, T28) → U6(f1_in(.(T27, T28)), T29, T27, T28)
U6(f1_out1, T29, T27, T28) → f37_out1
f87_in(T61, T59, T60) → U7(f45_in(T61), T61, T59, T60)
U7(f45_out1, T61, T59, T60) → U8(f1_in(.(T59, T60)), T61, T59, T60)
U8(f1_out1, T61, T59, T60) → f87_out1

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(11) UsableRulesProof (EQUIVALENT transformation)

We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.

(12) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F1_IN(.(T89, T90)) → F1_IN(T90)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(13) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • F1_IN(.(T89, T90)) → F1_IN(T90)
    The graph contains the following edges 1 > 1

(14) YES