TPTP Problem File: PUZ162_1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : PUZ162_1 : TPTP v9.3.0. Released v9.3.0.
% Domain   : Puzzles
% Problem  : Where should Angela Merkel sit in the Compiegne Lit Wagon?
% Version  : Especial.
% English  : Given that the A-side of the Compiegne Lit Wagon table is 
%            associated with Foch and Hitler, while the C side is associated 
%            with Erzberger and Hutzinger, and no one can take Merkel's and 
%            Macron's picture if she sits at B, Merkel and Macron should sit 
%            at D.

% Refs     : [Kal00] Kahlert (2000), Email to Geoff Sutcliffe
% Source   : [Kal00]
% Names    : merkel-seating.tptp [Kal00]

% Status   : Theorem
% Rating   : 0.00 v9.3.0
% Syntax   : Number of formulae    :  115 (  46 unt;  59 typ;   0 def)
%            Number of atoms       :   82 (   0 equ)
%            Maximal formula atoms :   11 (   1 avg)
%            Number of connectives :   28 (   2   ~;   0   |;  16   &)
%                                         (   0 <=>;  10  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   20 (   2 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of types       :    8 (   7 usr)
%            Number of type conns  :   34 (  18   >;  16   *;   0   +;   0  <<)
%            Number of predicates  :   18 (  18 usr;   0 prp; 1-3 aty)
%            Number of functors    :   34 (  34 usr;  34 con; 0-0 aty)
%            Number of variables   :   29 (  29   !;   0   ?;  29   :)
% SPC      : TF0_THM_NEQ_NAR

% Comments : The year 2000 in [Kal00] might be wrong.
%------------------------------------------------------------------------------
tff(geographicalRegion_type,type,
    geographicalRegion: $tType ).

tff(event_type,type,
    event: $tType ).

tff(diplomaticEvent_attrib,type,
    diplomaticEvent: event > $o ).

tff(seatingEvent_attrib,type,
    seatingEvent: event > $o ).

tff(subEvents_rel,type,
    subEvents: ( event * event ) > $o ).

tff(endsBeforeStartOf_rel,type,
    endsBeforeStartOf: ( event * event ) > $o ).

tff(endsBeforeStartOf_trans,axiom,
    ! [X: event,Y: event,Z: event] :
      ( ( endsBeforeStartOf(X,Y)
        & endsBeforeStartOf(Y,Z) )
     => endsBeforeStartOf(X,Z) ) ).

% tff(subEventsOverlap, axiom, (
%     ![X: event, Y:event] :
%      (subEvents(X,Y) => (~endsBeforeStartOf(X,Y) & ~endsBeforeStartOf(Y,X))))).

tff(contentiousEvent_attrib,type,
    contentiousEvent: event > $o ).

tff(friendlyEvent_attrib,type,
    friendlyEvent: event > $o ).

tff(friendlyIsNotContentious_ax,axiom,
    ! [E: event] :
      ( friendlyEvent(E)
     => ~ contentiousEvent(E) ) ).

tff(contentiousIsNotFriendly_ax,axiom,
    ! [E: event] :
      ( contentiousEvent(E)
     => ~ friendlyEvent(E) ) ).

tff(armistice_attrib,type,
    armistice: event > $o ).

tff(armisticesAreContentious,axiom,
    ! [E: event] :
      ( armistice(E)
     => contentiousEvent(E) ) ).

tff(armisticesAreDiplomatic,axiom,
    ! [E: event] :
      ( armistice(E)
     => diplomaticEvent(E) ) ).

%---- geographical infrastructure ----
tff(eventOccursAt_attr,type,
    eventOccursAt: ( event * geographicalRegion ) > $o ).

tff(subRegions_rel,type,
    subRegions: ( geographicalRegion * geographicalRegion ) > $o ).

tff(subRegions_trans,axiom,
    ! [X: geographicalRegion,Y: geographicalRegion,Z: geographicalRegion] :
      ( ( subRegions(X,Y)
        & subRegions(Y,Z) )
     => subRegions(X,Z) ) ).

tff(eventOccursAt_trans,axiom,
    ! [X: geographicalRegion,Y: geographicalRegion,Z: event] :
      ( ( eventOccursAt(Z,X)
        & subRegions(Y,X) )
     => eventOccursAt(Z,Y) ) ).

tff(rethondes_inst,type,
    rethondesCompiegne: geographicalRegion ).

tff(picardy_inst,type,
    picardy: geographicalRegion ).

tff(rethondes_in_picardy,axiom,
    subRegions(picardy,rethondesCompiegne) ).

tff(hautsDeFrance_inst,type,
    hautsDeFrance: geographicalRegion ).

tff(picardyInHautsDeFrance,axiom,
    subRegions(hautsDeFrance,picardy) ).

tff(france_inst,type,
    france: geographicalRegion ).

tff(hautsDeFranceInFrance,axiom,
    subRegions(france,hautsDeFrance) ).

%---- government hierarchy
tff(constructedContinuity,type,
    constrCont: $tType ).

tff(germaniaGermanyStar,type,
    germania: constrCont ).

tff(marianneFranceStar,type,
    marianne: constrCont ).

tff(government_type,type,
    govt: $tType ).

tff(germanEmpireGovt,type,
    germanEmpire: govt ).

tff(weimarRepublicGovt,type,
    weimarRepublic: govt ).

tff(thirdReichGovt,type,
    thirdReich: govt ).

tff(alliedOccupiedGermanyGovt,type,
    alliedOccupiedGermany: govt ).

tff(federalGermanRepublicGovt,type,
    federalGermanRepublic: govt ).

tff(empireOfNapoleon3Govt,type,
    empireOfNapoleonIII: govt ).

tff(thirdRepublicOfFrance,type,
    thirdRepublicFrench: govt ).

tff(fourthRepublicOfFrance,type,
    fourthRepublicFrench: govt ).

tff(fifthRepublicOfFrance,type,
    fifthRepublicFrench: govt ).

tff(narrativeSuccessor_rel,type,
    narrativeSuccessor: ( constrCont * govt * govt ) > $o ).

tff(narrativeSuccessor_ax,axiom,
    ! [CC: constrCont,PR: govt,LT: govt,BW: govt] :
      ( ( narrativeSuccessor(CC,PR,BW)
        & narrativeSuccessor(CC,BW,LT) )
     => narrativeSuccessor(CC,PR,LT) ) ).

tff(germania_01,axiom,
    narrativeSuccessor(germania,germanEmpire,weimarRepublic) ).

tff(germania_02,axiom,
    narrativeSuccessor(germania,weimarRepublic,thirdReich) ).

tff(germania_03,axiom,
    narrativeSuccessor(germania,thirdReich,alliedOccupiedGermany) ).

tff(germania_04,axiom,
    narrativeSuccessor(germania,alliedOccupiedGermany,federalGermanRepublic) ).

tff(marianne_01,axiom,
    narrativeSuccessor(marianne,empireOfNapoleonIII,thirdRepublicFrench) ).

tff(marianne_02,axiom,
    narrativeSuccessor(marianne,thirdRepublicFrench,fourthRepublicFrench) ).

tff(marianne_03,axiom,
    narrativeSuccessor(marianne,fourthRepublicFrench,fifthRepublicFrench) ).

%---- actor hierarchy
tff(person_type,type,
    person: $tType ).

tff(performedBy_rel,type,
    performedBy: ( event * person ) > $o ).

tff(govtRepresentedBy_3rel,type,
    govtRepresentedBy: ( event * govt * person ) > $o ).

tff(dictatedBy_rel,type,
    dictatedBy: ( event * govt ) > $o ).

tff(dictatedTo_rel,type,
    dictatedTo: ( event * govt ) > $o ).

%--- table and seating infrastructure ---
tff(table_side_type,type,
    table_side: $tType ).

tff(table_type,type,
    table: $tType ).

tff(tableUsed_rel,type,
    tableUsed: ( event * table ) > $o ).

tff(seatedAtSide_rel,type,
    seatedAtSide: ( event * table_side ) > $o ).

%--- Construct the CWL table
tff(cwlTable_inst_1,type,
    cwlTable2419d: table ).

tff(cwlTable_inst_2,type,
    cwlTable2439d: table ).

tff(cwlTableSideA_inst,type,
    cwlTableSideA: table_side ).

tff(cwlTableSideB_inst,type,
    cwlTableSideB: table_side ).

tff(cwlTableSideC_inst,type,
    cwlTableSideC: table_side ).

tff(cwlTableSideD_inst,type,
    cwlTableSideD: table_side ).

% ==== Armistice of 1918 ====
tff(foch_inst,type,
    foch: person ).

tff(erzberger_inst,type,
    erzberger: person ).

tff(armistice1918_event,type,
    armistice1918: event ).

tff(armistice1918_typing,axiom,
    armistice(armistice1918) ).

tff(armistice1918_where,axiom,
    eventOccursAt(armistice1918,rethondesCompiegne) ).

tff(armistice1918_french,axiom,
    govtRepresentedBy(armistice1918,thirdRepublicFrench,foch) ).

tff(armistice1918_german,axiom,
    govtRepresentedBy(armistice1918,germanEmpire,erzberger) ).

tff(armistice1918AlliedSeating_event,type,
    armistice1918AlliedSeating: event ).

tff(armistice1918_AS_ax0,axiom,
    seatingEvent(armistice1918AlliedSeating) ).

tff(armistice1918_AS_ax1,axiom,
    subEvents(armistice1918,armistice1918AlliedSeating) ).

tff(armistice1918_AS_ax2,axiom,
    performedBy(armistice1918AlliedSeating,foch) ).

tff(armistice1918_AS_ax3,axiom,
    seatedAtSide(armistice1918AlliedSeating,cwlTableSideA) ).

tff(armistice1918_AS_ax4,axiom,
    tableUsed(armistice1918AlliedSeating,cwlTable2419d) ).

tff(armistice1918GermanSeating_event,type,
    armistice1918GermanSeating: event ).

tff(armistice1918_GS_ax0,axiom,
    seatingEvent(armistice1918GermanSeating) ).

tff(armistice1918_GS_ax1,axiom,
    subEvents(armistice1918,armistice1918GermanSeating) ).

tff(armistice1918_GS_ax2,axiom,
    performedBy(armistice1918GermanSeating,erzberger) ).

tff(armistice1918_GS_ax3,axiom,
    seatedAtSide(armistice1918GermanSeating,cwlTableSideC) ).

tff(armistice1918_GS_ax4,axiom,
    tableUsed(armistice1918GermanSeating,cwlTable2419d) ).

% ===== Armistice of 1940 =====
tff(hitler_inst,type,
    hitler: person ).

tff(hutzinger_inst,type,
    hutzinger: person ).

tff(armistice1940_event,type,
    armistice1940: event ).

tff(armistice1940_typing,axiom,
    armistice(armistice1940) ).

tff(armistice1940_where,axiom,
    eventOccursAt(armistice1940,rethondesCompiegne) ).

tff(armistice1940_hutzinger,axiom,
    govtRepresentedBy(armistice1940,thirdRepublicFrench,hutzinger) ).

tff(armistice1940_hitler,axiom,
    govtRepresentedBy(armistice1940,thirdReich,hitler) ).

tff(armistice1940_past1918,axiom,
    endsBeforeStartOf(armistice1918,armistice1940) ).

tff(armistice1940GermanSeating_event,type,
    armistice1940GermanSeating: event ).

tff(armistice1940_GS_ax0,axiom,
    seatingEvent(armistice1940GermanSeating) ).

tff(armistice1940_GS_ax1,axiom,
    subEvents(armistice1940,armistice1940GermanSeating) ).

tff(armistice1940_GS_ax2,axiom,
    performedBy(armistice1940GermanSeating,hitler) ).

tff(armistice1940_GS_ax3,axiom,
    seatedAtSide(armistice1940GermanSeating,cwlTableSideA) ).

tff(armistice1940_GS_ax4,axiom,
    tableUsed(armistice1940GermanSeating,cwlTable2419d) ).

tff(armistice1940FrenchSeating_event,type,
    armistice1940FrenchSeating: event ).

tff(armistice1940_FS_ax0,axiom,
    seatingEvent(armistice1940FrenchSeating) ).

tff(armistice1940_FS_ax1,axiom,
    subEvents(armistice1940,armistice1940FrenchSeating) ).

tff(armistice1940_FS_ax2,axiom,
    performedBy(armistice1940FrenchSeating,hutzinger) ).

tff(armistice1940_FS_ax3,axiom,
    seatedAtSide(armistice1940FrenchSeating,cwlTableSideC) ).

tff(armistice1940_FS_ax4,axiom,
    tableUsed(armistice1940FrenchSeating,cwlTable2419d) ).

% ===== The Visit in 2018 ======

tff(merkel_inst,type,
    merkel: person ).

tff(macron_inst,type,
    macron: person ).

tff(compiegneVisit2018_event,type,
    compiegneVisit2018: event ).

tff(compiegneVisit2018_where,axiom,
    eventOccursAt(compiegneVisit2018,rethondesCompiegne) ).

tff(compiegneVisit2018_diplomatic,axiom,
    diplomaticEvent(compiegneVisit2018) ).

tff(compiegneVisit2018_friendly,axiom,
    friendlyEvent(compiegneVisit2018) ).

tff(compiegneVisit2018_merkel,axiom,
    govtRepresentedBy(compiegneVisit2018,federalGermanRepublic,merkel) ).

tff(compiegneVisit2018_macron,axiom,
    govtRepresentedBy(compiegneVisit2018,fifthRepublicFrench,macron) ).

tff(armistice2018_past1940,axiom,
    endsBeforeStartOf(armistice1940,compiegneVisit2018) ).

tff(avoidTableSide_rel,type,
    avoidTableSide: ( person * event * table_side ) > $o ).

tff(pastColocatedDiplomaticEvent_rel,type,
    pastColocatedDiplomaticEvent: ( event * event ) > $o ).

tff(pastColocatedDiplomaticEvent_rule,axiom,
    ! [DE: event,VE: event,LOC: geographicalRegion] :
      ( ( diplomaticEvent(DE)
        & eventOccursAt(DE,LOC)
        & eventOccursAt(VE,LOC)
        & endsBeforeStartOf(DE,VE) )
     => pastColocatedDiplomaticEvent(VE,DE) ) ).

tff(dontSitWherePastConflictSat,axiom,
    ! [P: person,RP: person,PASTGOVT: govt,GOVT: govt,CC: constrCont,VE: event,DE: event,SE: event,TS: table_side] :
      ( ( pastColocatedDiplomaticEvent(VE,DE)
        & contentiousEvent(DE)
        & subEvents(DE,SE)
        & seatingEvent(SE)
        & performedBy(SE,RP)
        & seatedAtSide(SE,TS)
        & govtRepresentedBy(DE,PASTGOVT,RP)
        & narrativeSuccessor(CC,PASTGOVT,GOVT)
        & friendlyEvent(VE)
        & govtRepresentedBy(VE,GOVT,P) )
     => avoidTableSide(P,VE,TS) ) ).

tff(whereShouldMacronSit,conjecture,
    avoidTableSide(macron,compiegneVisit2018,cwlTableSideC) ).

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