Left Termination of the query pattern at(f,f) w.r.t. the given Prolog program could successfully be proven:



PROLOG
  ↳ PrologToPiTRSProof

at2(X, fido0) :- at2(X, mary0), near1(X).
at2(ta0, mary0).
at2(jm0, mary0).
near1(jm0).


With regard to the inferred argument filtering the predicates were used in the following modes:
at2: (f,f) (f,b)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:


at_2_in_aa2(X, fido_0) -> if_at_2_in_1_aa2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(X, fido_0) -> if_at_2_in_1_ag2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(ta_0, mary_0) -> at_2_out_ag2(ta_0, mary_0)
at_2_in_ag2(jm_0, mary_0) -> at_2_out_ag2(jm_0, mary_0)
if_at_2_in_1_ag2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_ag2(X, near_1_in_g1(X))
near_1_in_g1(jm_0) -> near_1_out_g1(jm_0)
if_at_2_in_2_ag2(X, near_1_out_g1(X)) -> at_2_out_ag2(X, fido_0)
if_at_2_in_1_aa2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_aa2(X, near_1_in_g1(X))
if_at_2_in_2_aa2(X, near_1_out_g1(X)) -> at_2_out_aa2(X, fido_0)
at_2_in_aa2(ta_0, mary_0) -> at_2_out_aa2(ta_0, mary_0)
at_2_in_aa2(jm_0, mary_0) -> at_2_out_aa2(jm_0, mary_0)

The argument filtering Pi contains the following mapping:
at_2_in_aa2(x1, x2)  =  at_2_in_aa
fido_0  =  fido_0
mary_0  =  mary_0
ta_0  =  ta_0
jm_0  =  jm_0
if_at_2_in_1_aa2(x1, x2)  =  if_at_2_in_1_aa1(x2)
at_2_in_ag2(x1, x2)  =  at_2_in_ag1(x2)
if_at_2_in_1_ag2(x1, x2)  =  if_at_2_in_1_ag1(x2)
at_2_out_ag2(x1, x2)  =  at_2_out_ag1(x1)
if_at_2_in_2_ag2(x1, x2)  =  if_at_2_in_2_ag2(x1, x2)
near_1_in_g1(x1)  =  near_1_in_g1(x1)
near_1_out_g1(x1)  =  near_1_out_g
if_at_2_in_2_aa2(x1, x2)  =  if_at_2_in_2_aa2(x1, x2)
at_2_out_aa2(x1, x2)  =  at_2_out_aa2(x1, x2)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG



↳ PROLOG
  ↳ PrologToPiTRSProof
PiTRS
      ↳ DependencyPairsProof

Pi-finite rewrite system:
The TRS R consists of the following rules:

at_2_in_aa2(X, fido_0) -> if_at_2_in_1_aa2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(X, fido_0) -> if_at_2_in_1_ag2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(ta_0, mary_0) -> at_2_out_ag2(ta_0, mary_0)
at_2_in_ag2(jm_0, mary_0) -> at_2_out_ag2(jm_0, mary_0)
if_at_2_in_1_ag2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_ag2(X, near_1_in_g1(X))
near_1_in_g1(jm_0) -> near_1_out_g1(jm_0)
if_at_2_in_2_ag2(X, near_1_out_g1(X)) -> at_2_out_ag2(X, fido_0)
if_at_2_in_1_aa2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_aa2(X, near_1_in_g1(X))
if_at_2_in_2_aa2(X, near_1_out_g1(X)) -> at_2_out_aa2(X, fido_0)
at_2_in_aa2(ta_0, mary_0) -> at_2_out_aa2(ta_0, mary_0)
at_2_in_aa2(jm_0, mary_0) -> at_2_out_aa2(jm_0, mary_0)

The argument filtering Pi contains the following mapping:
at_2_in_aa2(x1, x2)  =  at_2_in_aa
fido_0  =  fido_0
mary_0  =  mary_0
ta_0  =  ta_0
jm_0  =  jm_0
if_at_2_in_1_aa2(x1, x2)  =  if_at_2_in_1_aa1(x2)
at_2_in_ag2(x1, x2)  =  at_2_in_ag1(x2)
if_at_2_in_1_ag2(x1, x2)  =  if_at_2_in_1_ag1(x2)
at_2_out_ag2(x1, x2)  =  at_2_out_ag1(x1)
if_at_2_in_2_ag2(x1, x2)  =  if_at_2_in_2_ag2(x1, x2)
near_1_in_g1(x1)  =  near_1_in_g1(x1)
near_1_out_g1(x1)  =  near_1_out_g
if_at_2_in_2_aa2(x1, x2)  =  if_at_2_in_2_aa2(x1, x2)
at_2_out_aa2(x1, x2)  =  at_2_out_aa2(x1, x2)


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

AT_2_IN_AA2(X, fido_0) -> IF_AT_2_IN_1_AA2(X, at_2_in_ag2(X, mary_0))
AT_2_IN_AA2(X, fido_0) -> AT_2_IN_AG2(X, mary_0)
AT_2_IN_AG2(X, fido_0) -> IF_AT_2_IN_1_AG2(X, at_2_in_ag2(X, mary_0))
AT_2_IN_AG2(X, fido_0) -> AT_2_IN_AG2(X, mary_0)
IF_AT_2_IN_1_AG2(X, at_2_out_ag2(X, mary_0)) -> IF_AT_2_IN_2_AG2(X, near_1_in_g1(X))
IF_AT_2_IN_1_AG2(X, at_2_out_ag2(X, mary_0)) -> NEAR_1_IN_G1(X)
IF_AT_2_IN_1_AA2(X, at_2_out_ag2(X, mary_0)) -> IF_AT_2_IN_2_AA2(X, near_1_in_g1(X))
IF_AT_2_IN_1_AA2(X, at_2_out_ag2(X, mary_0)) -> NEAR_1_IN_G1(X)

The TRS R consists of the following rules:

at_2_in_aa2(X, fido_0) -> if_at_2_in_1_aa2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(X, fido_0) -> if_at_2_in_1_ag2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(ta_0, mary_0) -> at_2_out_ag2(ta_0, mary_0)
at_2_in_ag2(jm_0, mary_0) -> at_2_out_ag2(jm_0, mary_0)
if_at_2_in_1_ag2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_ag2(X, near_1_in_g1(X))
near_1_in_g1(jm_0) -> near_1_out_g1(jm_0)
if_at_2_in_2_ag2(X, near_1_out_g1(X)) -> at_2_out_ag2(X, fido_0)
if_at_2_in_1_aa2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_aa2(X, near_1_in_g1(X))
if_at_2_in_2_aa2(X, near_1_out_g1(X)) -> at_2_out_aa2(X, fido_0)
at_2_in_aa2(ta_0, mary_0) -> at_2_out_aa2(ta_0, mary_0)
at_2_in_aa2(jm_0, mary_0) -> at_2_out_aa2(jm_0, mary_0)

The argument filtering Pi contains the following mapping:
at_2_in_aa2(x1, x2)  =  at_2_in_aa
fido_0  =  fido_0
mary_0  =  mary_0
ta_0  =  ta_0
jm_0  =  jm_0
if_at_2_in_1_aa2(x1, x2)  =  if_at_2_in_1_aa1(x2)
at_2_in_ag2(x1, x2)  =  at_2_in_ag1(x2)
if_at_2_in_1_ag2(x1, x2)  =  if_at_2_in_1_ag1(x2)
at_2_out_ag2(x1, x2)  =  at_2_out_ag1(x1)
if_at_2_in_2_ag2(x1, x2)  =  if_at_2_in_2_ag2(x1, x2)
near_1_in_g1(x1)  =  near_1_in_g1(x1)
near_1_out_g1(x1)  =  near_1_out_g
if_at_2_in_2_aa2(x1, x2)  =  if_at_2_in_2_aa2(x1, x2)
at_2_out_aa2(x1, x2)  =  at_2_out_aa2(x1, x2)
AT_2_IN_AA2(x1, x2)  =  AT_2_IN_AA
IF_AT_2_IN_2_AA2(x1, x2)  =  IF_AT_2_IN_2_AA2(x1, x2)
NEAR_1_IN_G1(x1)  =  NEAR_1_IN_G1(x1)
IF_AT_2_IN_2_AG2(x1, x2)  =  IF_AT_2_IN_2_AG2(x1, x2)
IF_AT_2_IN_1_AA2(x1, x2)  =  IF_AT_2_IN_1_AA1(x2)
IF_AT_2_IN_1_AG2(x1, x2)  =  IF_AT_2_IN_1_AG1(x2)
AT_2_IN_AG2(x1, x2)  =  AT_2_IN_AG1(x2)

We have to consider all (P,R,Pi)-chains

↳ PROLOG
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
PiDP
          ↳ DependencyGraphProof

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

AT_2_IN_AA2(X, fido_0) -> IF_AT_2_IN_1_AA2(X, at_2_in_ag2(X, mary_0))
AT_2_IN_AA2(X, fido_0) -> AT_2_IN_AG2(X, mary_0)
AT_2_IN_AG2(X, fido_0) -> IF_AT_2_IN_1_AG2(X, at_2_in_ag2(X, mary_0))
AT_2_IN_AG2(X, fido_0) -> AT_2_IN_AG2(X, mary_0)
IF_AT_2_IN_1_AG2(X, at_2_out_ag2(X, mary_0)) -> IF_AT_2_IN_2_AG2(X, near_1_in_g1(X))
IF_AT_2_IN_1_AG2(X, at_2_out_ag2(X, mary_0)) -> NEAR_1_IN_G1(X)
IF_AT_2_IN_1_AA2(X, at_2_out_ag2(X, mary_0)) -> IF_AT_2_IN_2_AA2(X, near_1_in_g1(X))
IF_AT_2_IN_1_AA2(X, at_2_out_ag2(X, mary_0)) -> NEAR_1_IN_G1(X)

The TRS R consists of the following rules:

at_2_in_aa2(X, fido_0) -> if_at_2_in_1_aa2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(X, fido_0) -> if_at_2_in_1_ag2(X, at_2_in_ag2(X, mary_0))
at_2_in_ag2(ta_0, mary_0) -> at_2_out_ag2(ta_0, mary_0)
at_2_in_ag2(jm_0, mary_0) -> at_2_out_ag2(jm_0, mary_0)
if_at_2_in_1_ag2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_ag2(X, near_1_in_g1(X))
near_1_in_g1(jm_0) -> near_1_out_g1(jm_0)
if_at_2_in_2_ag2(X, near_1_out_g1(X)) -> at_2_out_ag2(X, fido_0)
if_at_2_in_1_aa2(X, at_2_out_ag2(X, mary_0)) -> if_at_2_in_2_aa2(X, near_1_in_g1(X))
if_at_2_in_2_aa2(X, near_1_out_g1(X)) -> at_2_out_aa2(X, fido_0)
at_2_in_aa2(ta_0, mary_0) -> at_2_out_aa2(ta_0, mary_0)
at_2_in_aa2(jm_0, mary_0) -> at_2_out_aa2(jm_0, mary_0)

The argument filtering Pi contains the following mapping:
at_2_in_aa2(x1, x2)  =  at_2_in_aa
fido_0  =  fido_0
mary_0  =  mary_0
ta_0  =  ta_0
jm_0  =  jm_0
if_at_2_in_1_aa2(x1, x2)  =  if_at_2_in_1_aa1(x2)
at_2_in_ag2(x1, x2)  =  at_2_in_ag1(x2)
if_at_2_in_1_ag2(x1, x2)  =  if_at_2_in_1_ag1(x2)
at_2_out_ag2(x1, x2)  =  at_2_out_ag1(x1)
if_at_2_in_2_ag2(x1, x2)  =  if_at_2_in_2_ag2(x1, x2)
near_1_in_g1(x1)  =  near_1_in_g1(x1)
near_1_out_g1(x1)  =  near_1_out_g
if_at_2_in_2_aa2(x1, x2)  =  if_at_2_in_2_aa2(x1, x2)
at_2_out_aa2(x1, x2)  =  at_2_out_aa2(x1, x2)
AT_2_IN_AA2(x1, x2)  =  AT_2_IN_AA
IF_AT_2_IN_2_AA2(x1, x2)  =  IF_AT_2_IN_2_AA2(x1, x2)
NEAR_1_IN_G1(x1)  =  NEAR_1_IN_G1(x1)
IF_AT_2_IN_2_AG2(x1, x2)  =  IF_AT_2_IN_2_AG2(x1, x2)
IF_AT_2_IN_1_AA2(x1, x2)  =  IF_AT_2_IN_1_AA1(x2)
IF_AT_2_IN_1_AG2(x1, x2)  =  IF_AT_2_IN_1_AG1(x2)
AT_2_IN_AG2(x1, x2)  =  AT_2_IN_AG1(x2)

We have to consider all (P,R,Pi)-chains
The approximation of the Dependency Graph contains 0 SCCs with 8 less nodes.