dom(A)-->product(inverse(A),A,identity). dom(A)-->product(identity,A,A). product(A,B,C),product(B,D,E),product(C,D,F)-->product(A,E,F). product(A,B,C),product(B,D,E),product(A,E,F)-->product(C,D,F). product(a,identity,a)-->false. true-->dom(identity),dom(a). dom(A)-->dom(inverse(A)).