TPTP Problem File: SWX214+1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWX214+1 : TPTP v9.3.0. Released v9.3.0.
% Domain   : Software Verification
% Problem  : Faulty property of regular expressions
% Version  : Especial.
% English  :

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

% Status   : Theorem
% Rating   : 1.00 v9.3.0
% Syntax   : Number of formulae    :   50 (  33 unt;   0 def)
%            Number of atoms       :   80 (  63 equ)
%            Maximal formula atoms :    5 (   1 avg)
%            Number of connectives :   71 (  41   ~;   1   |;   1   &)
%                                         (   4 <=>;  23  =>;   0  <=;   1 <~>)
%            Maximal formula depth :    8 (   4 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    3 (   2 usr;   0 prp; 1-2 aty)
%            Number of functors    :   22 (  22 usr;   6 con; 0-2 aty)
%            Number of variables   :   87 (  83   !;   4   ?)
% 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,
    a != b ).

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

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

fof(axiom_007,axiom,
    ! [X] : proj1Atom(atom(X)) = X ).

fof(axiom_008,axiom,
    ! [X,X2] : proj1(x(X,X2)) = X ).

fof(axiom_009,axiom,
    ! [X,X2] : proj2(x(X,X2)) = X2 ).

fof(axiom_010,axiom,
    ! [X,X2] : proj12(y(X,X2)) = X ).

fof(axiom_011,axiom,
    ! [X,X2] : proj22(y(X,X2)) = X2 ).

fof(axiom_012,axiom,
    ! [X] : proj1Star(star(X)) = X ).

fof(axiom_013,axiom,
    nil2 != eps ).

fof(axiom_014,axiom,
    ! [X] : nil2 != atom(X) ).

fof(axiom_015,axiom,
    ! [X,X2] : nil2 != x(X,X2) ).

fof(axiom_016,axiom,
    ! [X,X2] : nil2 != y(X,X2) ).

fof(axiom_017,axiom,
    ! [X] : nil2 != star(X) ).

fof(axiom_018,axiom,
    ! [X] : eps != atom(X) ).

fof(axiom_019,axiom,
    ! [X,X2] : eps != x(X,X2) ).

fof(axiom_020,axiom,
    ! [X,X2] : eps != y(X,X2) ).

fof(axiom_021,axiom,
    ! [X] : eps != star(X) ).

fof(axiom_022,axiom,
    ! [X,X2,X3] : atom(X) != x(X2,X3) ).

fof(axiom_023,axiom,
    ! [X,X2,X3] : atom(X) != y(X2,X3) ).

fof(axiom_024,axiom,
    ! [X,X2] : atom(X) != star(X2) ).

fof(axiom_025,axiom,
    ! [X,X2,X3,X4] : x(X,X2) != y(X3,X4) ).

fof(axiom_026,axiom,
    ! [X,X2,X3] : x(X,X2) != star(X3) ).

fof(axiom_027,axiom,
    ! [X,X2,X3] : y(X,X2) != star(X3) ).

fof(axiom_028,axiom,
    ! [X,Y] :
      ( X != nil2
     => ( Y != nil2
       => ( X != eps
         => ( Y != eps
           => z(X,Y) = y(X,Y) ) ) ) ) ).

fof(axiom_029,axiom,
    ! [X] :
      ( X != nil2
     => ( X != eps
       => z(X,eps) = X ) ) ).

fof(axiom_030,axiom,
    ! [Y] :
      ( Y != nil2
     => z(eps,Y) = Y ) ).

fof(axiom_031,axiom,
    ! [X] :
      ( X != nil2
     => z(X,nil2) = nil2 ) ).

fof(axiom_032,axiom,
    ! [Y] : z(nil2,Y) = nil2 ).

fof(axiom_033,axiom,
    ! [X,Y] :
      ( X != nil2
     => ( Y != nil2
       => x2(X,Y) = x(X,Y) ) ) ).

fof(axiom_034,axiom,
    ! [X] :
      ( X != nil2
     => x2(X,nil2) = X ) ).

fof(axiom_035,axiom,
    ! [Y] : x2(nil2,Y) = Y ).

fof(axiom_036,axiom,
    ! [X] :
      ( X != eps
     => ( X != x(proj1(X),proj2(X))
       => ( X != y(proj12(X),proj22(X))
         => ( X != star(proj1Star(X))
           => ~ eps2(X) ) ) ) ) ).

fof(axiom_037,axiom,
    eps2(eps) ).

fof(axiom_038,axiom,
    ! [P,Q] :
      ( eps2(x(P,Q))
    <=> ( eps2(P)
        | eps2(Q) ) ) ).

fof(axiom_039,axiom,
    ! [R,Q2] :
      ( eps2(y(R,Q2))
    <=> ( eps2(R)
        & eps2(Q2) ) ) ).

fof(axiom_040,axiom,
    ! [Y] : eps2(star(Y)) ).

fof(axiom_041,axiom,
    ! [X,Y] :
      ( X != atom(proj1Atom(X))
     => ( X != x(proj1(X),proj2(X))
       => ( X != y(proj12(X),proj22(X))
         => ( X != star(proj1Star(X))
           => step(X,Y) = nil2 ) ) ) ) ).

fof(axiom_042,axiom,
    ! [Y,B] :
      ( B = Y
     => step(atom(B),Y) = eps ) ).

fof(axiom_043,axiom,
    ! [Y,B] :
      ( B != Y
     => step(atom(B),Y) = nil2 ) ).

fof(axiom_044,axiom,
    ! [Y,P,Q] : step(x(P,Q),Y) = x(step(P,Y),step(Q,Y)) ).

fof(axiom_045,axiom,
    ! [Y,R,Q2] :
      ( eps2(R)
     => step(y(R,Q2),Y) = x(y(step(R,Y),Q2),step(Q2,Y)) ) ).

fof(axiom_046,axiom,
    ! [Y,R,Q2] :
      ( ~ eps2(R)
     => step(y(R,Q2),Y) = x(y(step(R,Y),Q2),nil2) ) ).

fof(axiom_047,axiom,
    ! [Y,P2] : step(star(P2),Y) = y(step(P2,Y),star(P2)) ).

fof(axiom_048,axiom,
    ! [X] :
      ( rec(X,nil)
    <=> eps2(X) ) ).

fof(axiom_049,axiom,
    ! [X,Z,Xs] :
      ( rec(X,cons(Z,Xs))
    <=> rec(step(X,Z),Xs) ) ).

fof(goal_050,conjecture,
    ? [P,Q,A,B] :
      ( rec(star(x(P,Q)),cons(A,cons(B,nil)))
    <~> rec(x(star(P),star(Q)),cons(A,cons(B,nil))) ) ).

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