cnf(person1,axiom,
    person(one) ).

cnf(person2,axiom,
    person(two) ).

cnf(person3,axiom,
    person(three) ).

cnf(person4,axiom,
    person(four) ).

cnf(person5,axiom,
    person(five) ).

cnf(person6,axiom,
    person(six) ).

cnf(order1,axiom,
    after(one,two) ).

cnf(order2,axiom,
    after(two,three) ).

cnf(order3,axiom,
    after(three,four) ).

cnf(order4,axiom,
    after(four,five) ).

cnf(order5,axiom,
    after(five,six) ).

cnf(transitivity_of_order,axiom,
    ( after(Large,Small)
    | ~ after(Large,Medium)
    | ~ after(Medium,Small) ) ).

cnf(familiar_or_not,axiom,
    ( familiar(X,Y)
    | not_familiar(X,Y)
    | ~ person(X)
    | ~ person(Y)
    | ~ after(X,Y) ) ).

%----These 3 literals can never all be resolved away because the
%----familiar_or_not axiom prevents X1 > X2 > X3 > X1, as is
%----required by the argument ordering here. That's why it's
%----satisfiable.
cnf(three_familiar,negated_conjecture,
    ( ~ familiar(X1,X2)
    | ~ familiar(X2,X3)
    | ~ familiar(X3,X1) ) ).

cnf(three_not_familiar,negated_conjecture,
    ( ~ not_familiar(X1,X2)
    | ~ not_familiar(X2,X3)
    | ~ not_familiar(X3,X1) ) ).