here we go: shaves(barber, X) :- male(X), not shaves(X,X). male(barber). He both shaves and does not shave himself by definition. Here is the issue with the paradox: It is that it is incomplete. It may be a complete statement for logic, but it is only a paradox because of the constraints of logic. One of the constraints of logic is that there is no time-scale. The system needs more inputs. The definition can exist - we just made it. We defined it. But to resolve it we need to: a) specify times where he does shave himself. b) specify times where he does not shave himself. It is that he is both shaving and not shaving himself SIMULTANEOUSLY (and _this_ is where the issue arises from - the simultaneousity _implied_ in the system) - that it becomes a paradox *within* the constraints of non-contradictory logic _only_. In short, it is a sign that you have reached the border. You have reached the limits of what non-contradictory logic is capable of. It can go no further. So, one must go further via other means. Add time. Add other additional metrics, such as statistical probability. Provide a choice for the Actor. Provide a choice for the person solving the puzzle. [does he shave today or does he not?] etc. Additionally, one very important, easy to overlook fact: This is a thought experiment. A thought experiment is a fiction. There is no barber that exists with this definition.