TPTP Problem File: PUZ130+1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : PUZ130+1 : TPTP v9.0.0. Released v4.1.0.
% Domain   : Puzzles
% Problem  : Garfield and Odie
% Version  : Especial.
% English  : Garfield is a cat and Odie is a dog. Cats and dogs are pets. Jon
%            is a human. Every pet has a human owner. Jon owns Garfield and
%            Odie, and they are the only cat and dog he owns. If a dog chases
%            a cat, then the cat's owner hates the dog's owner. Odie has chased
%            Garfield. Therefore, Jon hates himself.

% Refs     : 
% Source   : [TPTP]
% Names    :

% Status   : Theorem
% Rating   : 0.06 v9.0.0, 0.11 v8.2.0, 0.08 v8.1.0, 0.11 v7.5.0, 0.12 v7.4.0, 0.03 v7.1.0, 0.04 v7.0.0, 0.03 v6.4.0, 0.08 v6.3.0, 0.04 v6.2.0, 0.08 v6.1.0, 0.13 v6.0.0, 0.04 v5.3.0, 0.11 v5.2.0, 0.00 v4.1.0
% Syntax   : Number of formulae    :   19 (  11 unt;   0 def)
%            Number of atoms       :   34 (   3 equ)
%            Maximal formula atoms :    4 (   1 avg)
%            Number of connectives :   15 (   0   ~;   0   |;   3   &)
%                                         (   1 <=>;  11  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    5 (   3 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :    8 (   7 usr;   0 prp; 1-2 aty)
%            Number of functors    :    4 (   4 usr;   3 con; 0-1 aty)
%            Number of variables   :   17 (  12   !;   5   ?)
% SPC      : FOF_THM_RFO_SEQ

% Comments :
%------------------------------------------------------------------------------
fof(cat_type,axiom,
    ? [A] : cat(A) ).

fof(garfield_type,axiom,
    cat(garfield) ).

fof(dog_type,axiom,
    ? [A] : dog(A) ).

fof(odie_type,axiom,
    dog(odie) ).

fof(pet_type,axiom,
    ? [A] : pet(A) ).

fof(dog_pet_type,axiom,
    ! [A] :
      ( dog(A)
     => pet(A) ) ).

fof(cat_pet_type,axiom,
    ! [A] :
      ( cat(A)
     => pet(A) ) ).

fof(human_type,axiom,
    ? [A] : human(A) ).

fof(jon_type,axiom,
    human(jon) ).

fof(owner_of_type,axiom,
    ! [A] :
      ( pet(A)
     => human(owner_of(A)) ) ).

fof(pet_owner_axiom,axiom,
    ! [X] :
      ( pet(X)
     => ? [Y] :
          ( human(Y)
          & owner(X,Y) ) ) ).

fof(jon_o_owner_axiom,axiom,
    owner(jon,odie) ).

fof(jon_g_owner_axiom,axiom,
    owner(jon,garfield) ).

fof(jon_only_g_owner_axiom,axiom,
    ! [X] :
      ( ! [X] :
          ( cat(X)
         => owner(jon,X) )
     => X = garfield ) ).

fof(jon_only_o_owner_axiom,axiom,
    ! [X] :
      ( ! [X] :
          ( dog(X)
         => owner(jon,X) )
     => X = odie ) ).

fof(cat_chase_axiom,axiom,
    ! [X,Y] :
      ( ( cat(X)
        & dog(Y) )
     => ( chased(Y,X)
       => hates(owner_of(X),owner_of(Y)) ) ) ).

fof(owner_def,axiom,
    ! [X,Y] :
      ( ( human(X)
        & pet(Y) )
     => ( owner(X,Y)
      <=> X = owner_of(Y) ) ) ).

fof(odie_chase_axiom,axiom,
    chased(odie,garfield) ).

fof(jon_conjecture,conjecture,
    hates(jon,jon) ).

%------------------------------------------------------------------------------