clear(print_given). set(binary_res). clear(detailed_history). clear(print_kept). clear(print_back_sub). assign(max_seconds,10). assign(stats_level,0). list(usable). % Everybody has a mother. % forall y exists x mother(x,y). mother_of is a function. mother(mother_of(y),y). % You don't have more than one mother. % forall x,y (mother(x,y) -> x = mother_of(y) -mother(x,y) | x = mother_of(y). % You can't be your own mother. % forall x,y (mother(x,y) -> x != y) -mother(x,y) | x != y. % Your mother is in your maternal line. % forall x,y (mother(x,y) -> maternal(x,y)) -mother(x,y) | maternal(x,y). % The mother of anyone in your maternal line is in it too. % forall x,y,z (mother(x,y) & maternal(y,z) -> maternal(x,z)) -mother(x,y) | -maternal(y,z) | maternal(x,z). end_of_list. list(sos). % I want to prove that someone is in your maternal line % that is not your mother. % forall y exists x (maternal(x,y) & -mother(x,y)) % I need to refute the negation of this sentence which is: % exists y forall x (-maternal(x,y) | mother(x,y) % I use Jane as a Skolem constant. -maternal(x,Jane) | mother(x,Jane). end_of_list.