set(binary_resolution). clear(print_initial_clauses). clear(print_kept). clear(print_given). assign(max_seconds,1). assign(stats,none). formulas(sos). % 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. formulas(goals). % 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)) all y exists x (maternal(x,y) & -mother(x,y)). end_of_list.