↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
p1: (b)
geq2: (b,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G2(X, geq_2_in_ga2(X, Y))
P_1_IN_G1(s_11(X)) -> GEQ_2_IN_GA2(X, Y)
GEQ_2_IN_GA2(s_11(X), Y) -> IF_GEQ_2_IN_1_GA3(X, Y, geq_2_in_ga2(X, Y))
GEQ_2_IN_GA2(s_11(X), Y) -> GEQ_2_IN_GA2(X, Y)
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> IF_P_1_IN_2_G3(X, Y, p_1_in_g1(Y))
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> P_1_IN_G1(Y)
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G2(X, geq_2_in_ga2(X, Y))
P_1_IN_G1(s_11(X)) -> GEQ_2_IN_GA2(X, Y)
GEQ_2_IN_GA2(s_11(X), Y) -> IF_GEQ_2_IN_1_GA3(X, Y, geq_2_in_ga2(X, Y))
GEQ_2_IN_GA2(s_11(X), Y) -> GEQ_2_IN_GA2(X, Y)
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> IF_P_1_IN_2_G3(X, Y, p_1_in_g1(Y))
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> P_1_IN_G1(Y)
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
GEQ_2_IN_GA2(s_11(X), Y) -> GEQ_2_IN_GA2(X, Y)
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
GEQ_2_IN_GA2(s_11(X), Y) -> GEQ_2_IN_GA2(X, Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
GEQ_2_IN_GA1(s_11(X)) -> GEQ_2_IN_GA1(X)
From the DPs we obtained the following set of size-change graphs:
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> P_1_IN_G1(Y)
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G2(X, geq_2_in_ga2(X, Y))
p_1_in_g1(0_0) -> p_1_out_g1(0_0)
p_1_in_g1(s_11(X)) -> if_p_1_in_1_g2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
if_p_1_in_1_g2(X, geq_2_out_ga2(X, Y)) -> if_p_1_in_2_g3(X, Y, p_1_in_g1(Y))
if_p_1_in_2_g3(X, Y, p_1_out_g1(Y)) -> p_1_out_g1(s_11(X))
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
IF_P_1_IN_1_G2(X, geq_2_out_ga2(X, Y)) -> P_1_IN_G1(Y)
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G2(X, geq_2_in_ga2(X, Y))
geq_2_in_ga2(X, X) -> geq_2_out_ga2(X, X)
geq_2_in_ga2(s_11(X), Y) -> if_geq_2_in_1_ga3(X, Y, geq_2_in_ga2(X, Y))
if_geq_2_in_1_ga3(X, Y, geq_2_out_ga2(X, Y)) -> geq_2_out_ga2(s_11(X), Y)
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
IF_P_1_IN_1_G1(geq_2_out_ga1(Y)) -> P_1_IN_G1(Y)
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G1(geq_2_in_ga1(X))
geq_2_in_ga1(X) -> geq_2_out_ga1(X)
geq_2_in_ga1(s_11(X)) -> if_geq_2_in_1_ga1(geq_2_in_ga1(X))
if_geq_2_in_1_ga1(geq_2_out_ga1(Y)) -> geq_2_out_ga1(Y)
geq_2_in_ga1(x0)
if_geq_2_in_1_ga1(x0)
IF_P_1_IN_1_G1(geq_2_out_ga1(Y)) -> P_1_IN_G1(Y)
geq_2_in_ga1(X) -> geq_2_out_ga1(X)
geq_2_in_ga1(s_11(X)) -> if_geq_2_in_1_ga1(geq_2_in_ga1(X))
POL(if_geq_2_in_1_ga1(x1)) = x1
POL(IF_P_1_IN_1_G1(x1)) = x1
POL(geq_2_out_ga1(x1)) = 1 + x1
POL(s_11(x1)) = 2 + x1
POL(geq_2_in_ga1(x1)) = 2 + x1
POL(P_1_IN_G1(x1)) = x1
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
P_1_IN_G1(s_11(X)) -> IF_P_1_IN_1_G1(geq_2_in_ga1(X))
if_geq_2_in_1_ga1(geq_2_out_ga1(Y)) -> geq_2_out_ga1(Y)
geq_2_in_ga1(x0)
if_geq_2_in_1_ga1(x0)