%makeAdapt(smallerDot(CFC, DFC)) :- smallerDot(C, D), type(C, CN, CNP), type(D, DN, DNP), CNP != DNP %, smaller(CFC, DFC), type(CFC, CN, CNP), type(DFC, DN, DNP), mapRootFC(smaller(CFC, DFC), _, _) %. type(pointer(smallerDot(C,D)), DN, DNP) :- smallerDot(C, D), type(C, CN, CNP), type(D, DN, DNP), CNP != DNP . smallerDot(pointer(smallerDot(C,D)), D) :- smallerDot(C, D), type(C, CN, CNP), type(D, DN, DNP), CNP != DNP . param(pointer(smallerDot(C,D)), P, P2) :- smallerDot(C, D), type(C, CN, CNP), type(D, DN, DNP), CNP != DNP , smaller(CFC, DFC), type(CFC, CN, CNP), type(DFC, DN, DNP) , mapRootFC(smaller(CFC, DFC), P1, P2), param(C, P, P1) .