Всё зависит от договорённости как мы понимаем функцию ЛЖЕЦ. Логично было бы понимать функцию лжеца как NOT.
Лжец просто инвертирует результат любого (в т.ч. состоящего из множества элементарных высказываний) правдивого высказывания. Ему говоришь Z, а он говорит тупо NOT(Z).
Например, мы знаем, что лжец - заведомый лжец, а жена его - заведомая правдорубка. И, соответственно, хотя бы один из них - правдоруб. ЛЖЕЦ обязан это утверждение опровергнуть, объявив его ложным.
Ну и далее всё по законам бинарной логики: NOT (X *|+ Y) = NOT(X) +|* NOT(Y)
NOT (хотя бы один из нас - правдоруб) = никто из нас не правдоруб = оба лжецы.
Можно, конечно, потребовать от лжеца не просто тупо инвертировать результат правдивого высказывания, но ещё и следить что бы элементарные высказывания, составляющие целое высказывание, никогда не были правдой.
Но, тогда ЛЖЕЦ не будет в состоянии перевирать некоторые правдивые утверждения, и что это тогда за ЛЖЕЦ? ))