↑ Up

Drodi---4.1.1.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : Drodi---4.1.1
% Problem  : SWC018+1 : TPTP v9.3.1. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : drodi -timeout(300) /export/starexec/sandbox/benchmark/theBenchmark.p

% Computer : n011.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8046.5625MB
% OS       : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Thu Sep 24 02:39:36 PM UTC 2026

% Result   : Theorem 0.12s 0.39s
% Output   : CNFRefutation 0.12s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   26
%            Number of leaves      :    7
% Syntax   : Number of formulae    :   72 (  16 unt;   1 def)
%            Number of atoms       :  337 ( 104 equ)
%            Maximal formula atoms :   23 (   4 avg)
%            Number of connectives :  428 ( 163   ~; 162   |;  80   &)
%                                         (   7 <=>;  16  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   24 (   6 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of predicates  :    8 (   6 usr;   1 prp; 0-2 aty)
%            Number of functors    :    9 (   9 usr;   6 con; 0-2 aty)
%            Number of variables   :  106 (  80   !;  26   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f5,axiom,
    ! [U] :
      ( ssList(U)
     => ! [V] :
          ( ssList(V)
         => ( frontsegP(U,V)
          <=> ? [W] :
                ( app(V,W) = U
                & ssList(W) ) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f15,axiom,
    ! [U] :
      ( ssList(U)
     => ! [V] :
          ( ssList(V)
         => ( neq(U,V)
          <=> U != V ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f17,axiom,
    ssList(nil),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f42,axiom,
    ! [U] :
      ( ssList(U)
     => frontsegP(U,U) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f46,axiom,
    ! [U] :
      ( ssList(U)
     => ( frontsegP(nil,U)
      <=> nil = U ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f96,conjecture,
    ! [U] :
      ( ssList(U)
     => ! [V] :
          ( ssList(V)
         => ! [W] :
              ( ssList(W)
             => ! [X] :
                  ( ssList(X)
                 => ( ( ( ? [X3] :
                            ( frontsegP(U,X3)
                            & frontsegP(V,X3)
                            & neq(X3,nil)
                            & ssList(X3) )
                        | ~ neq(V,nil) )
                      & ( nil = U
                        | nil != V ) )
                    | ( nil = W
                      & nil != X )
                    | ! [Y] :
                        ( ssList(Y)
                       => ( ? [Z] :
                              ( ? [X1] :
                                  ( ? [X2] :
                                      ( app(X2,cons(Z,nil)) = W
                                      & ssList(X2) )
                                  & app(cons(Z,nil),X1) = Y
                                  & ssList(X1) )
                              & ssItem(Z) )
                          | ~ equalelemsP(W)
                          | app(W,Y) != X ) )
                    | U != W
                    | V != X ) ) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f97,negated_conjecture,
    ~ ! [U] :
        ( ssList(U)
       => ! [V] :
            ( ssList(V)
           => ! [W] :
                ( ssList(W)
               => ! [X] :
                    ( ssList(X)
                   => ( ( ( ? [X3] :
                              ( frontsegP(U,X3)
                              & frontsegP(V,X3)
                              & neq(X3,nil)
                              & ssList(X3) )
                          | ~ neq(V,nil) )
                        & ( nil = U
                          | nil != V ) )
                      | ( nil = W
                        & nil != X )
                      | ! [Y] :
                          ( ssList(Y)
                         => ( ? [Z] :
                                ( ? [X1] :
                                    ( ? [X2] :
                                        ( app(X2,cons(Z,nil)) = W
                                        & ssList(X2) )
                                    & app(cons(Z,nil),X1) = Y
                                    & ssList(X1) )
                                & ssItem(Z) )
                            | ~ equalelemsP(W)
                            | app(W,Y) != X ) )
                      | U != W
                      | V != X ) ) ) ) ),
    inference(negated_conjecture,[status(cth)],[f96]) ).

fof(f119,plain,
    ! [U] :
      ( ! [V] :
          ( ( frontsegP(U,V)
          <=> ? [W] :
                ( app(V,W) = U
                & ssList(W) ) )
          | ~ ssList(V) )
      | ~ ssList(U) ),
    inference(pre_NNF_transformation,[status(thm)],[f5]) ).

fof(f120,plain,
    ! [U] :
      ( ! [V] :
          ( ( ( ! [W] :
                  ( app(V,W) != U
                  | ~ ssList(W) )
              | frontsegP(U,V) )
            & ( ? [W] :
                  ( app(V,W) = U
                  & ssList(W) )
              | ~ frontsegP(U,V) ) )
          | ~ ssList(V) )
      | ~ ssList(U) ),
    inference(NNF_transformation,[status(thm)],[f119]) ).

fof(f121,plain,
    ! [U] :
      ( ! [V] :
          ( ( ( ! [W] :
                  ( app(V,W) != U
                  | ~ ssList(W) )
              | frontsegP(U,V) )
            & ( ( app(V,sK5_skl(V,U)) = U
                & ssList(sK5_skl(V,U)) )
              | ~ frontsegP(U,V) ) )
          | ~ ssList(V) )
      | ~ ssList(U) ),
    inference(skolemize,[status(esa),new_symbols(skolem,[sK5_skl]),skolemize(W,sK5_skl(V,U))],[f120]) ).

fof(f124,plain,
    ! [X0,X1,X2] :
      ( app(X1,X2) != X0
      | ~ ssList(X2)
      | frontsegP(X0,X1)
      | ~ ssList(X1)
      | ~ ssList(X0) ),
    inference(cnf_transformation,[status(thm)],[f121]) ).

fof(f217,plain,
    ! [U] :
      ( ! [V] :
          ( ( neq(U,V)
          <=> U != V )
          | ~ ssList(V) )
      | ~ ssList(U) ),
    inference(pre_NNF_transformation,[status(thm)],[f15]) ).

fof(f218,plain,
    ! [U] :
      ( ! [V] :
          ( ( ( U = V
              | neq(U,V) )
            & ( U != V
              | ~ neq(U,V) ) )
          | ~ ssList(V) )
      | ~ ssList(U) ),
    inference(NNF_transformation,[status(thm)],[f217]) ).

fof(f219,plain,
    ! [X0,X1] :
      ( X0 != X1
      | ~ neq(X0,X1)
      | ~ ssList(X1)
      | ~ ssList(X0) ),
    inference(cnf_transformation,[status(thm)],[f218]) ).

fof(f220,plain,
    ! [X0,X1] :
      ( X0 = X1
      | neq(X0,X1)
      | ~ ssList(X1)
      | ~ ssList(X0) ),
    inference(cnf_transformation,[status(thm)],[f218]) ).

fof(f223,plain,
    ssList(nil),
    inference(cnf_transformation,[status(thm)],[f17]) ).

fof(f285,plain,
    ! [U] :
      ( frontsegP(U,U)
      | ~ ssList(U) ),
    inference(pre_NNF_transformation,[status(thm)],[f42]) ).

fof(f286,plain,
    ! [X0] :
      ( frontsegP(X0,X0)
      | ~ ssList(X0) ),
    inference(cnf_transformation,[status(thm)],[f285]) ).

fof(f296,plain,
    ! [U] :
      ( ( frontsegP(nil,U)
      <=> nil = U )
      | ~ ssList(U) ),
    inference(pre_NNF_transformation,[status(thm)],[f46]) ).

fof(f297,plain,
    ! [U] :
      ( ( ( nil != U
          | frontsegP(nil,U) )
        & ( nil = U
          | ~ frontsegP(nil,U) ) )
      | ~ ssList(U) ),
    inference(NNF_transformation,[status(thm)],[f296]) ).

fof(f298,plain,
    ! [X0] :
      ( nil = X0
      | ~ frontsegP(nil,X0)
      | ~ ssList(X0) ),
    inference(cnf_transformation,[status(thm)],[f297]) ).

fof(f415,plain,
    ? [U] :
      ( ? [V] :
          ( ? [W] :
              ( ? [X] :
                  ( ( ( ! [X3] :
                          ( ~ frontsegP(U,X3)
                          | ~ frontsegP(V,X3)
                          | ~ neq(X3,nil)
                          | ~ ssList(X3) )
                      & neq(V,nil) )
                    | ( nil != U
                      & nil = V ) )
                  & ( nil != W
                    | nil = X )
                  & ? [Y] :
                      ( ! [Z] :
                          ( ! [X1] :
                              ( ! [X2] :
                                  ( app(X2,cons(Z,nil)) != W
                                  | ~ ssList(X2) )
                              | app(cons(Z,nil),X1) != Y
                              | ~ ssList(X1) )
                          | ~ ssItem(Z) )
                      & equalelemsP(W)
                      & app(W,Y) = X
                      & ssList(Y) )
                  & U = W
                  & V = X
                  & ssList(X) )
              & ssList(W) )
          & ssList(V) )
      & ssList(U) ),
    inference(pre_NNF_transformation,[status(thm)],[f97]) ).

fof(f416,definition,
    ! [U,V] :
      ( sP0_prd(V,U)
    <=> ( nil != U
        & nil = V ) ),
    introduced(definition,[new_symbols(definition,[sP0_prd])],[]) ).

fof(f417,plain,
    ? [U] :
      ( ? [V] :
          ( ? [W] :
              ( ? [X] :
                  ( ( ( ! [X3] :
                          ( ~ frontsegP(U,X3)
                          | ~ frontsegP(V,X3)
                          | ~ neq(X3,nil)
                          | ~ ssList(X3) )
                      & neq(V,nil) )
                    | sP0_prd(V,U) )
                  & ( nil != W
                    | nil = X )
                  & ? [Y] :
                      ( ! [Z] :
                          ( ! [X1] :
                              ( ! [X2] :
                                  ( app(X2,cons(Z,nil)) != W
                                  | ~ ssList(X2) )
                              | app(cons(Z,nil),X1) != Y
                              | ~ ssList(X1) )
                          | ~ ssItem(Z) )
                      & equalelemsP(W)
                      & app(W,Y) = X
                      & ssList(Y) )
                  & U = W
                  & V = X
                  & ssList(X) )
              & ssList(W) )
          & ssList(V) )
      & ssList(U) ),
    inference(formula_renaming,[status(thm)],[f415,f416]) ).

fof(f418,plain,
    ? [U] :
      ( ? [V] :
          ( ? [W] :
              ( ? [X] :
                  ( ( ( ! [X3] :
                          ( ~ frontsegP(U,X3)
                          | ~ frontsegP(V,X3)
                          | ~ neq(X3,nil)
                          | ~ ssList(X3) )
                      & neq(V,nil) )
                    | sP0_prd(V,U) )
                  & ( nil != W
                    | nil = X )
                  & ? [Y] :
                      ( ! [Z] :
                          ( ! [X2] :
                              ( app(X2,cons(Z,nil)) != W
                              | ~ ssList(X2) )
                          | ! [X1] :
                              ( app(cons(Z,nil),X1) != Y
                              | ~ ssList(X1) )
                          | ~ ssItem(Z) )
                      & equalelemsP(W)
                      & app(W,Y) = X
                      & ssList(Y) )
                  & U = W
                  & V = X
                  & ssList(X) )
              & ssList(W) )
          & ssList(V) )
      & ssList(U) ),
    inference(miniscoping,[status(thm)],[f417]) ).

fof(f419,plain,
    ( ( ( ! [X3] :
            ( ~ frontsegP(sK47_skl,X3)
            | ~ frontsegP(sK48_skl,X3)
            | ~ neq(X3,nil)
            | ~ ssList(X3) )
        & neq(sK48_skl,nil) )
      | sP0_prd(sK48_skl,sK47_skl) )
    & ( nil != sK49_skl
      | nil = sK50_skl )
    & ! [Z] :
        ( ! [X2] :
            ( app(X2,cons(Z,nil)) != sK49_skl
            | ~ ssList(X2) )
        | ! [X1] :
            ( app(cons(Z,nil),X1) != sK51_skl
            | ~ ssList(X1) )
        | ~ ssItem(Z) )
    & equalelemsP(sK49_skl)
    & app(sK49_skl,sK51_skl) = sK50_skl
    & ssList(sK51_skl)
    & sK47_skl = sK49_skl
    & sK48_skl = sK50_skl
    & ssList(sK50_skl)
    & ssList(sK49_skl)
    & ssList(sK48_skl)
    & ssList(sK47_skl) ),
    inference(skolemize,[status(esa),new_symbols(skolem,[sK47_skl,sK48_skl,sK49_skl,sK50_skl,sK51_skl]),skolemize(U,sK47_skl),skolemize(V,sK48_skl),skolemize(W,sK49_skl),skolemize(X,sK50_skl),skolemize(Y,sK51_skl)],[f418]) ).

fof(f421,plain,
    ssList(sK48_skl),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f422,plain,
    ssList(sK49_skl),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f424,plain,
    sK48_skl = sK50_skl,
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f425,plain,
    sK47_skl = sK49_skl,
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f426,plain,
    ssList(sK51_skl),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f427,plain,
    app(sK49_skl,sK51_skl) = sK50_skl,
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f430,plain,
    ( nil != sK49_skl
    | nil = sK50_skl ),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f431,plain,
    ( neq(sK48_skl,nil)
    | sP0_prd(sK48_skl,sK47_skl) ),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f432,plain,
    ! [X0] :
      ( ~ frontsegP(sK47_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ neq(X0,nil)
      | ~ ssList(X0)
      | sP0_prd(sK48_skl,sK47_skl) ),
    inference(cnf_transformation,[status(thm)],[f419]) ).

fof(f433,plain,
    ! [U,V] :
      ( ( nil = U
        | nil != V
        | sP0_prd(V,U) )
      & ( ( nil != U
          & nil = V )
        | ~ sP0_prd(V,U) ) ),
    inference(NNF_transformation,[status(thm)],[f416]) ).

fof(f434,plain,
    ( ! [U,V] :
        ( nil = U
        | nil != V
        | sP0_prd(V,U) )
    & ! [U,V] :
        ( ( nil != U
          & nil = V )
        | ~ sP0_prd(V,U) ) ),
    inference(miniscoping,[status(thm)],[f433]) ).

fof(f435,plain,
    ! [X0,X1] :
      ( nil = X0
      | ~ sP0_prd(X0,X1) ),
    inference(cnf_transformation,[status(thm)],[f434]) ).

fof(f436,plain,
    ! [X0,X1] :
      ( nil != X1
      | ~ sP0_prd(X0,X1) ),
    inference(cnf_transformation,[status(thm)],[f434]) ).

fof(f442,plain,
    ! [X0,X1] :
      ( ~ ssList(X1)
      | frontsegP(app(X0,X1),X0)
      | ~ ssList(X0)
      | ~ ssList(app(X0,X1)) ),
    inference(destructive_equality_resolution,[status(thm)],[f124]) ).

fof(f453,plain,
    ! [X1] :
      ( ~ neq(X1,X1)
      | ~ ssList(X1)
      | ~ ssList(X1) ),
    inference(destructive_equality_resolution,[status(thm)],[f219]) ).

fof(f454,plain,
    ! [X0] :
      ( ~ neq(X0,X0)
      | ~ ssList(X0) ),
    inference(duplicate_literals_removal,[status(thm)],[f453]) ).

fof(f468,plain,
    ! [X0] : ~ sP0_prd(X0,nil),
    inference(destructive_equality_resolution,[status(thm)],[f436]) ).

fof(f473,plain,
    app(sK49_skl,sK51_skl) = sK48_skl,
    inference(forward_demodulation,[status(thm)],[f424,f427]) ).

fof(f475,plain,
    ( nil != sK49_skl
    | nil = sK48_skl ),
    inference(forward_demodulation,[status(thm)],[f424,f430]) ).

fof(f478,plain,
    ( ~ ssList(sK51_skl)
    | frontsegP(sK48_skl,sK49_skl)
    | ~ ssList(sK49_skl)
    | ~ ssList(app(sK49_skl,sK51_skl)) ),
    inference(paramodulation,[status(thm)],[f473,f442]) ).

fof(f479,plain,
    ( ~ ssList(sK51_skl)
    | frontsegP(sK48_skl,sK49_skl)
    | ~ ssList(sK49_skl)
    | ~ ssList(sK48_skl) ),
    inference(forward_demodulation,[status(thm)],[f473,f478]) ).

fof(f480,plain,
    ( ~ ssList(sK51_skl)
    | frontsegP(sK48_skl,sK49_skl)
    | ~ ssList(sK49_skl) ),
    inference(forward_subsumption_resolution,[status(thm)],[f479,f421]) ).

fof(f481,plain,
    ( neq(sK48_skl,nil)
    | sP0_prd(sK48_skl,sK49_skl) ),
    inference(forward_demodulation,[status(thm)],[f425,f431]) ).

fof(f483,plain,
    ( ~ ssList(sK51_skl)
    | frontsegP(sK48_skl,sK49_skl) ),
    inference(forward_subsumption_resolution,[status(thm)],[f480,f422]) ).

fof(f484,plain,
    ! [X0] :
      ( ~ frontsegP(sK47_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ neq(X0,nil)
      | ~ ssList(X0)
      | sP0_prd(sK48_skl,sK49_skl) ),
    inference(forward_demodulation,[status(thm)],[f425,f432]) ).

fof(f485,plain,
    ! [X0] :
      ( ~ frontsegP(sK49_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ neq(X0,nil)
      | ~ ssList(X0)
      | sP0_prd(sK48_skl,sK49_skl) ),
    inference(forward_demodulation,[status(thm)],[f425,f484]) ).

fof(f486,plain,
    ! [X0] :
      ( nil = sK48_skl
      | ~ frontsegP(sK49_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ neq(X0,nil)
      | ~ ssList(X0) ),
    inference(resolution,[status(thm)],[f485,f435]) ).

fof(f501,plain,
    ! [X0] :
      ( X0 = nil
      | ~ ssList(nil)
      | ~ ssList(X0)
      | nil = sK48_skl
      | ~ frontsegP(sK49_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ ssList(X0) ),
    inference(resolution,[status(thm)],[f486,f220]) ).

fof(f505,plain,
    ! [X0] :
      ( X0 = nil
      | ~ ssList(nil)
      | nil = sK48_skl
      | ~ frontsegP(sK49_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ ssList(X0) ),
    inference(duplicate_literals_removal,[status(thm)],[f501]) ).

fof(f506,plain,
    ! [X0] :
      ( X0 = nil
      | nil = sK48_skl
      | ~ frontsegP(sK49_skl,X0)
      | ~ frontsegP(sK48_skl,X0)
      | ~ ssList(X0) ),
    inference(forward_subsumption_resolution,[status(thm)],[f505,f223]) ).

fof(f508,plain,
    ( ~ ssList(sK49_skl)
    | sK49_skl = nil
    | nil = sK48_skl
    | ~ frontsegP(sK48_skl,sK49_skl)
    | ~ ssList(sK49_skl) ),
    inference(resolution,[status(thm)],[f506,f286]) ).

fof(f509,plain,
    ( sK49_skl = nil
    | nil = sK48_skl
    | ~ frontsegP(sK48_skl,sK49_skl)
    | ~ ssList(sK49_skl) ),
    inference(duplicate_literals_removal,[status(thm)],[f508]) ).

fof(f510,plain,
    ( sK49_skl = nil
    | nil = sK48_skl
    | ~ frontsegP(sK48_skl,sK49_skl) ),
    inference(forward_subsumption_resolution,[status(thm)],[f509,f422]) ).

fof(f519,plain,
    ( nil = sK48_skl
    | ~ frontsegP(sK48_skl,sK49_skl) ),
    inference(forward_subsumption_resolution,[status(thm)],[f510,f475]) ).

fof(f520,plain,
    ( ~ ssList(sK51_skl)
    | nil = sK48_skl ),
    inference(resolution,[status(thm)],[f519,f483]) ).

fof(f521,plain,
    nil = sK48_skl,
    inference(forward_subsumption_resolution,[status(thm)],[f520,f426]) ).

fof(f527,plain,
    ( ~ ssList(sK51_skl)
    | frontsegP(nil,sK49_skl) ),
    inference(backward_demodulation,[status(thm)],[f521,f483]) ).

fof(f529,plain,
    ( neq(nil,nil)
    | sP0_prd(sK48_skl,sK49_skl) ),
    inference(backward_demodulation,[status(thm)],[f521,f481]) ).

fof(f535,plain,
    frontsegP(nil,sK49_skl),
    inference(forward_subsumption_resolution,[status(thm)],[f527,f426]) ).

fof(f536,plain,
    ( neq(nil,nil)
    | sP0_prd(nil,sK49_skl) ),
    inference(forward_demodulation,[status(thm)],[f521,f529]) ).

fof(f542,plain,
    ( nil = sK49_skl
    | ~ ssList(sK49_skl) ),
    inference(resolution,[status(thm)],[f535,f298]) ).

fof(f543,plain,
    nil = sK49_skl,
    inference(forward_subsumption_resolution,[status(thm)],[f542,f422]) ).

fof(f566,plain,
    ( neq(nil,nil)
    | sP0_prd(nil,nil) ),
    inference(forward_demodulation,[status(thm)],[f543,f536]) ).

fof(f567,plain,
    neq(nil,nil),
    inference(forward_subsumption_resolution,[status(thm)],[f566,f468]) ).

fof(f568,plain,
    ~ ssList(nil),
    inference(resolution,[status(thm)],[f567,f454]) ).

fof(f570,plain,
    $false,
    inference(forward_subsumption_resolution,[status(thm)],[f568,f223]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02  % Problem  : SWC018+1 : TPTP v9.3.1. Released v2.4.0.
% 0.00/0.03  % Command  : drodi -timeout(300) /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.09/0.35  % Computer : n011.cluster.edu
% 0.09/0.35  % Model    : x86_64 x86_64
% 0.09/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.09/0.35  % Memory   : 8046.5625MB
% 0.09/0.35  % OS       : Linux 6.8.0-71-generic
% 0.09/0.35  % CPULimit : 300
% 0.09/0.35  % WCLimit  : 300
% 0.09/0.35  % DateTime : Mon Sep 21 07:49:27 UTC 2026
% 0.09/0.35  % CPUTime  : 
% 0.12/0.37  % Drodi V4.1.1
% 0.12/0.39  % Refutation found
% 0.12/0.39  % SZS status Theorem for theBenchmark: Theorem is valid
% 0.12/0.39  % SZS output start CNFRefutation for theBenchmark
% See solution above
% 0.12/0.42  % Elapsed time: 0.058330 seconds
% 0.12/0.42  % CPU time: 0.168488 seconds
% 0.12/0.42  % Total memory used: 69.763 MB
% 0.12/0.42  % Net memory used: 69.627 MB
%------------------------------------------------------------------------------