↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
flat2: (b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
flat_2_in_ga2(niltree_0, nil_0) -> flat_2_out_ga2(niltree_0, nil_0)
flat_2_in_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> if_flat_2_in_1_ga4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
if_flat_2_in_1_ga4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
flat_2_in_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_out_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)) -> flat_2_out_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS)
if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_out_ga2(ZS, YS)) -> flat_2_out_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_2_in_ga2(niltree_0, nil_0) -> flat_2_out_ga2(niltree_0, nil_0)
flat_2_in_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> if_flat_2_in_1_ga4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
if_flat_2_in_1_ga4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
flat_2_in_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_out_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)) -> flat_2_out_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS)
if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_out_ga2(ZS, YS)) -> flat_2_out_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS))
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> RIGHT_2_IN_GA2(tree_33(X, niltree_0, XS), ZS)
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> IF_FLAT_2_IN_2_GA5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> FLAT_2_IN_GA2(ZS, YS)
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> IF_FLAT_2_IN_3_GA7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> FLAT_2_IN_GA2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)
flat_2_in_ga2(niltree_0, nil_0) -> flat_2_out_ga2(niltree_0, nil_0)
flat_2_in_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> if_flat_2_in_1_ga4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
if_flat_2_in_1_ga4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
flat_2_in_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_out_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)) -> flat_2_out_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS)
if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_out_ga2(ZS, YS)) -> flat_2_out_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> RIGHT_2_IN_GA2(tree_33(X, niltree_0, XS), ZS)
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> IF_FLAT_2_IN_2_GA5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> FLAT_2_IN_GA2(ZS, YS)
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> IF_FLAT_2_IN_3_GA7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> FLAT_2_IN_GA2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)
flat_2_in_ga2(niltree_0, nil_0) -> flat_2_out_ga2(niltree_0, nil_0)
flat_2_in_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> if_flat_2_in_1_ga4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
if_flat_2_in_1_ga4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
flat_2_in_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_out_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)) -> flat_2_out_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS)
if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_out_ga2(ZS, YS)) -> flat_2_out_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> FLAT_2_IN_GA2(ZS, YS)
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> FLAT_2_IN_GA2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)
flat_2_in_ga2(niltree_0, nil_0) -> flat_2_out_ga2(niltree_0, nil_0)
flat_2_in_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> if_flat_2_in_1_ga4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
if_flat_2_in_1_ga4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_in_ga2(ZS, YS))
flat_2_in_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_in_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS))
if_flat_2_in_3_ga7(X, Y, YS1, YS2, XS, ZS, flat_2_out_ga2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)) -> flat_2_out_ga2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS)
if_flat_2_in_2_ga5(X, XS, YS, ZS, flat_2_out_ga2(ZS, YS)) -> flat_2_out_ga2(tree_33(X, niltree_0, XS), cons_22(X, YS))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_2_IN_GA2(tree_33(X, niltree_0, XS), cons_22(X, YS)) -> IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_in_ga2(tree_33(X, niltree_0, XS), ZS))
IF_FLAT_2_IN_1_GA4(X, XS, YS, right_2_out_ga2(tree_33(X, niltree_0, XS), ZS)) -> FLAT_2_IN_GA2(ZS, YS)
FLAT_2_IN_GA2(tree_33(X, tree_33(Y, YS1, YS2), XS), ZS) -> FLAT_2_IN_GA2(tree_33(Y, YS1, tree_33(X, YS2, XS)), ZS)
right_2_in_ga2(tree_33(X, XS1, XS2), XS2) -> right_2_out_ga2(tree_33(X, XS1, XS2), XS2)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPPoloProof
FLAT_2_IN_GA1(tree_33(X, niltree_0, XS)) -> IF_FLAT_2_IN_1_GA2(X, right_2_in_ga1(tree_33(X, niltree_0, XS)))
IF_FLAT_2_IN_1_GA2(X, right_2_out_ga1(ZS)) -> FLAT_2_IN_GA1(ZS)
FLAT_2_IN_GA1(tree_33(X, tree_33(Y, YS1, YS2), XS)) -> FLAT_2_IN_GA1(tree_33(Y, YS1, tree_33(X, YS2, XS)))
right_2_in_ga1(tree_33(X, XS1, XS2)) -> right_2_out_ga1(XS2)
right_2_in_ga1(x0)
The remaining Dependency Pairs were at least non-strictly be oriented.
IF_FLAT_2_IN_1_GA2(X, right_2_out_ga1(ZS)) -> FLAT_2_IN_GA1(ZS)
With the implicit AFS we had to orient the following set of usable rules non-strictly.
FLAT_2_IN_GA1(tree_33(X, niltree_0, XS)) -> IF_FLAT_2_IN_1_GA2(X, right_2_in_ga1(tree_33(X, niltree_0, XS)))
FLAT_2_IN_GA1(tree_33(X, tree_33(Y, YS1, YS2), XS)) -> FLAT_2_IN_GA1(tree_33(Y, YS1, tree_33(X, YS2, XS)))
Used ordering: POLO with Polynomial interpretation:
right_2_in_ga1(tree_33(X, XS1, XS2)) -> right_2_out_ga1(XS2)
POL(niltree_0) = 0
POL(FLAT_2_IN_GA1(x1)) = x1
POL(right_2_out_ga1(x1)) = 1 + x1
POL(IF_FLAT_2_IN_1_GA2(x1, x2)) = x2
POL(right_2_in_ga1(x1)) = x1
POL(tree_33(x1, x2, x3)) = 1 + x2 + x3
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPPoloProof
↳ QDP
↳ DependencyGraphProof
FLAT_2_IN_GA1(tree_33(X, niltree_0, XS)) -> IF_FLAT_2_IN_1_GA2(X, right_2_in_ga1(tree_33(X, niltree_0, XS)))
FLAT_2_IN_GA1(tree_33(X, tree_33(Y, YS1, YS2), XS)) -> FLAT_2_IN_GA1(tree_33(Y, YS1, tree_33(X, YS2, XS)))
right_2_in_ga1(tree_33(X, XS1, XS2)) -> right_2_out_ga1(XS2)
right_2_in_ga1(x0)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPPoloProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
FLAT_2_IN_GA1(tree_33(X, tree_33(Y, YS1, YS2), XS)) -> FLAT_2_IN_GA1(tree_33(Y, YS1, tree_33(X, YS2, XS)))
right_2_in_ga1(tree_33(X, XS1, XS2)) -> right_2_out_ga1(XS2)
right_2_in_ga1(x0)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPPoloProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
FLAT_2_IN_GA1(tree_33(X, tree_33(Y, YS1, YS2), XS)) -> FLAT_2_IN_GA1(tree_33(Y, YS1, tree_33(X, YS2, XS)))
right_2_in_ga1(x0)
Order:Homeomorphic Embedding Order
AFS:
tree_33(x1, x2, x3) = tree_31(x2)
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules.
none