TPTP Problem File: SWX219+1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWX219+1 : TPTP v9.3.0. Released v9.3.0.
% Domain   : Software Verification
% Problem  : Show a specific given type is inhabited
% Version  : Especial.
% English  :

% Refs     : [CST26] Claessen et al. (2026), Email to Geoff Sutcliffe
% Source   : [CST26]
% Names    : Type_compose.p [CST26]

% Status   : Theorem
% Rating   : 0.57 v9.3.0
% Syntax   : Number of formulae    :   32 (  27 unt;   0 def)
%            Number of atoms       :   39 (  30 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   22 (  15   ~;   0   |;   1   &)
%                                         (   3 <=>;   3  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    8 (   4 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    2 (   1 usr;   0 prp; 2-3 aty)
%            Number of functors    :   25 (  25 usr;   6 con; 0-3 aty)
%            Number of variables   :   67 (  66   !;   1   ?)
% SPC      : FOF_THM_RFO_SEQ

% Comments :
%------------------------------------------------------------------------------
fof(axiom_001,axiom,
    ! [X,X2] : head(cons(X,X2)) = X ).

fof(axiom_002,axiom,
    ! [X,X2] : tail(cons(X,X2)) = X2 ).

fof(axiom_003,axiom,
    ! [X,X2] : nil != cons(X,X2) ).

fof(axiom_004,axiom,
    ! [X,X2] : proj1Arr(arr(X,X2)) = X ).

fof(axiom_005,axiom,
    ! [X,X2] : proj2Arr(arr(X,X2)) = X2 ).

fof(axiom_006,axiom,
    ! [X,X2] : arr(X,X2) != a ).

fof(axiom_007,axiom,
    ! [X,X2] : arr(X,X2) != b ).

fof(axiom_008,axiom,
    ! [X,X2] : arr(X,X2) != c ).

fof(axiom_009,axiom,
    a != b ).

fof(axiom_010,axiom,
    a != c ).

fof(axiom_011,axiom,
    b != c ).

fof(axiom_012,axiom,
    ! [X] : proj1Suc(suc(X)) = X ).

fof(axiom_013,axiom,
    ! [X] : zero != suc(X) ).

fof(axiom_014,axiom,
    ! [X] : proj1Just(just(X)) = X ).

fof(axiom_015,axiom,
    ! [X] : nothing != just(X) ).

fof(axiom_016,axiom,
    ! [X,X2,X3] : proj1App(app(X,X2,X3)) = X ).

fof(axiom_017,axiom,
    ! [X,X2,X3] : proj2App(app(X,X2,X3)) = X2 ).

fof(axiom_018,axiom,
    ! [X,X2,X3] : proj3App(app(X,X2,X3)) = X3 ).

fof(axiom_019,axiom,
    ! [X] : proj1Lam(lam(X)) = X ).

fof(axiom_020,axiom,
    ! [X] : proj1Var(var(X)) = X ).

fof(axiom_021,axiom,
    ! [X,X2,X3,X4] : app(X,X2,X3) != lam(X4) ).

fof(axiom_022,axiom,
    ! [X,X2,X3,X4] : app(X,X2,X3) != var(X4) ).

fof(axiom_023,axiom,
    ! [X,X2] : lam(X) != var(X2) ).

fof(axiom_024,axiom,
    ! [Y] : index(nil,Y) = nothing ).

fof(axiom_025,axiom,
    ! [Z,Xs] : index(cons(Z,Xs),zero) = just(Z) ).

fof(axiom_026,axiom,
    ! [Z,Xs,N] : index(cons(Z,Xs),suc(N)) = index(Xs,N) ).

fof(axiom_027,axiom,
    ! [X,Z,F,X2,Tx] :
      ( tc(X,app(F,X2,Tx),Z)
    <=> ( tc(X,F,arr(Tx,Z))
        & tc(X,X2,Tx) ) ) ).

fof(axiom_028,axiom,
    ! [X,Z,E] :
      ( Z != arr(proj1Arr(Z),proj2Arr(Z))
     => ~ tc(X,lam(E),Z) ) ).

fof(axiom_029,axiom,
    ! [X,E,Tx2,T1] :
      ( tc(X,lam(E),arr(Tx2,T1))
    <=> tc(cons(Tx2,X),E,T1) ) ).

fof(axiom_030,axiom,
    ! [X,Z,X3] :
      ( index(X,X3) = nothing
     => ~ tc(X,var(X3),Z) ) ).

fof(axiom_031,axiom,
    ! [X,Z,X3,Tx3] :
      ( index(X,X3) = just(Tx3)
     => ( tc(X,var(X3),Z)
      <=> Tx3 = Z ) ) ).

fof(goal_032,conjecture,
    ? [E] : tc(nil,E,arr(arr(b,c),arr(arr(a,b),arr(a,c)))) ).

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