↑ Up

Drodi---4.1.1.THM-CRf.s

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

% Computer : n020.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 12:10:17 PM UTC 2026

% Result   : Theorem 0.13s 0.41s
% Output   : CNFRefutation 0.13s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    9
%            Number of leaves      :   15
% Syntax   : Number of formulae    :   68 (  10 unt;  10 def)
%            Number of atoms       :  283 (   5 equ)
%            Maximal formula atoms :   13 (   4 avg)
%            Number of connectives :  378 ( 163   ~; 173   |;  26   &)
%                                         (  12 <=>;   4  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   14 (   6 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :   15 (  13 usr;   9 prp; 0-3 aty)
%            Number of functors    :    5 (   5 usr;   4 con; 0-3 aty)
%            Number of variables   :   75 (  70   !;   5   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f3,axiom,
    ! [W0,W1] :
      ( ( aRewritingSystem0(W1)
        & aElement0(W0) )
     => ! [W2] :
          ( aReductOfIn0(W2,W0,W1)
         => aElement0(W2) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f6,definition,
    ! [W0,W1,W2] :
      ( ( aElement0(W2)
        & aRewritingSystem0(W1)
        & aElement0(W0) )
     => ( sdtmndtplgtdt0(W0,W1,W2)
      <=> ( ? [W3] :
              ( sdtmndtplgtdt0(W3,W1,W2)
              & aReductOfIn0(W3,W0,W1)
              & aElement0(W3) )
          | aReductOfIn0(W2,W0,W1) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f8,definition,
    ! [W0,W1,W2] :
      ( ( aElement0(W2)
        & aRewritingSystem0(W1)
        & aElement0(W0) )
     => ( sdtmndtasgtdt0(W0,W1,W2)
      <=> ( sdtmndtplgtdt0(W0,W1,W2)
          | W0 = W2 ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f15,hypothesis,
    aRewritingSystem0(xR),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f17,hypothesis,
    ( aElement0(xc)
    & aElement0(xb)
    & aElement0(xa) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f19,hypothesis,
    ( sdtmndtplgtdt0(xa,xR,xc)
    & sdtmndtplgtdt0(xa,xR,xb) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f20,conjecture,
    ? [W0] :
      ( sdtmndtasgtdt0(W0,xR,xb)
      & aReductOfIn0(W0,xa,xR)
      & aElement0(W0) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

fof(f21,negated_conjecture,
    ~ ? [W0] :
        ( sdtmndtasgtdt0(W0,xR,xb)
        & aReductOfIn0(W0,xa,xR)
        & aElement0(W0) ),
    inference(negated_conjecture,[status(cth)],[f20]) ).

fof(f28,plain,
    ! [W0,W1] :
      ( ! [W2] :
          ( aElement0(W2)
          | ~ aReductOfIn0(W2,W0,W1) )
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(pre_NNF_transformation,[status(thm)],[f3]) ).

fof(f29,plain,
    ! [X0,X1,X2] :
      ( aElement0(X2)
      | ~ aReductOfIn0(X2,X0,X1)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f28]) ).

fof(f34,plain,
    ! [W0,W1,W2] :
      ( ( sdtmndtplgtdt0(W0,W1,W2)
      <=> ( ? [W3] :
              ( sdtmndtplgtdt0(W3,W1,W2)
              & aReductOfIn0(W3,W0,W1)
              & aElement0(W3) )
          | aReductOfIn0(W2,W0,W1) ) )
      | ~ aElement0(W2)
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(pre_NNF_transformation,[status(thm)],[f6]) ).

fof(f35,plain,
    ! [W0,W1,W2] :
      ( ( ( ( ! [W3] :
                ( ~ sdtmndtplgtdt0(W3,W1,W2)
                | ~ aReductOfIn0(W3,W0,W1)
                | ~ aElement0(W3) )
            & ~ aReductOfIn0(W2,W0,W1) )
          | sdtmndtplgtdt0(W0,W1,W2) )
        & ( ? [W3] :
              ( sdtmndtplgtdt0(W3,W1,W2)
              & aReductOfIn0(W3,W0,W1)
              & aElement0(W3) )
          | aReductOfIn0(W2,W0,W1)
          | ~ sdtmndtplgtdt0(W0,W1,W2) ) )
      | ~ aElement0(W2)
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(NNF_transformation,[status(thm)],[f34]) ).

fof(f36,plain,
    ! [W0,W1,W2] :
      ( ( ( ( ! [W3] :
                ( ~ sdtmndtplgtdt0(W3,W1,W2)
                | ~ aReductOfIn0(W3,W0,W1)
                | ~ aElement0(W3) )
            & ~ aReductOfIn0(W2,W0,W1) )
          | sdtmndtplgtdt0(W0,W1,W2) )
        & ( ( sdtmndtplgtdt0(sK0_skl(W2,W1,W0),W1,W2)
            & aReductOfIn0(sK0_skl(W2,W1,W0),W0,W1)
            & aElement0(sK0_skl(W2,W1,W0)) )
          | aReductOfIn0(W2,W0,W1)
          | ~ sdtmndtplgtdt0(W0,W1,W2) ) )
      | ~ aElement0(W2)
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(skolemize,[status(esa),new_symbols(skolem,[sK0_skl]),skolemize(W3,sK0_skl(W2,W1,W0))],[f35]) ).

fof(f38,plain,
    ! [X0,X1,X2] :
      ( aReductOfIn0(sK0_skl(X2,X1,X0),X0,X1)
      | aReductOfIn0(X2,X0,X1)
      | ~ sdtmndtplgtdt0(X0,X1,X2)
      | ~ aElement0(X2)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f36]) ).

fof(f39,plain,
    ! [X0,X1,X2] :
      ( sdtmndtplgtdt0(sK0_skl(X2,X1,X0),X1,X2)
      | aReductOfIn0(X2,X0,X1)
      | ~ sdtmndtplgtdt0(X0,X1,X2)
      | ~ aElement0(X2)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f36]) ).

fof(f44,plain,
    ! [W0,W1,W2] :
      ( ( sdtmndtasgtdt0(W0,W1,W2)
      <=> ( sdtmndtplgtdt0(W0,W1,W2)
          | W0 = W2 ) )
      | ~ aElement0(W2)
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(pre_NNF_transformation,[status(thm)],[f8]) ).

fof(f45,plain,
    ! [W0,W1,W2] :
      ( ( ( ( ~ sdtmndtplgtdt0(W0,W1,W2)
            & W0 != W2 )
          | sdtmndtasgtdt0(W0,W1,W2) )
        & ( sdtmndtplgtdt0(W0,W1,W2)
          | W0 = W2
          | ~ sdtmndtasgtdt0(W0,W1,W2) ) )
      | ~ aElement0(W2)
      | ~ aRewritingSystem0(W1)
      | ~ aElement0(W0) ),
    inference(NNF_transformation,[status(thm)],[f44]) ).

fof(f47,plain,
    ! [X0,X1,X2] :
      ( X0 != X2
      | sdtmndtasgtdt0(X0,X1,X2)
      | ~ aElement0(X2)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f45]) ).

fof(f48,plain,
    ! [X0,X1,X2] :
      ( ~ sdtmndtplgtdt0(X0,X1,X2)
      | sdtmndtasgtdt0(X0,X1,X2)
      | ~ aElement0(X2)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f45]) ).

fof(f96,plain,
    aRewritingSystem0(xR),
    inference(cnf_transformation,[status(thm)],[f15]) ).

fof(f99,plain,
    aElement0(xa),
    inference(cnf_transformation,[status(thm)],[f17]) ).

fof(f100,plain,
    aElement0(xb),
    inference(cnf_transformation,[status(thm)],[f17]) ).

fof(f107,plain,
    sdtmndtplgtdt0(xa,xR,xb),
    inference(cnf_transformation,[status(thm)],[f19]) ).

fof(f109,plain,
    ! [W0] :
      ( ~ sdtmndtasgtdt0(W0,xR,xb)
      | ~ aReductOfIn0(W0,xa,xR)
      | ~ aElement0(W0) ),
    inference(pre_NNF_transformation,[status(thm)],[f21]) ).

fof(f110,plain,
    ! [X0] :
      ( ~ sdtmndtasgtdt0(X0,xR,xb)
      | ~ aReductOfIn0(X0,xa,xR)
      | ~ aElement0(X0) ),
    inference(cnf_transformation,[status(thm)],[f109]) ).

fof(f111,plain,
    ! [X2,X1] :
      ( sdtmndtasgtdt0(X2,X1,X2)
      | ~ aElement0(X2)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X2) ),
    inference(destructive_equality_resolution,[status(thm)],[f47]) ).

fof(f112,plain,
    ! [X0,X1] :
      ( sdtmndtasgtdt0(X0,X1,X0)
      | ~ aRewritingSystem0(X1)
      | ~ aElement0(X0) ),
    inference(duplicate_literals_removal,[status(thm)],[f111]) ).

fof(f113,plain,
    ! [X0] :
      ( sdtmndtasgtdt0(X0,xR,X0)
      | ~ aElement0(X0) ),
    inference(resolution,[status(thm)],[f96,f112]) ).

fof(f114,plain,
    ! [X0,X1] :
      ( aElement0(X1)
      | ~ aReductOfIn0(X1,X0,xR)
      | ~ aElement0(X0) ),
    inference(resolution,[status(thm)],[f96,f29]) ).

fof(f115,plain,
    ( ~ aReductOfIn0(xb,xa,xR)
    | ~ aElement0(xb)
    | ~ aElement0(xb) ),
    inference(resolution,[status(thm)],[f113,f110]) ).

fof(f117,definition,
    ( sQ0_spl
  <=> aElement0(xb) ),
    introduced(definition,[new_symbols(definition,[sQ0_spl])],[split_symbol_definition]) ).

fof(f119,plain,
    ( sQ0_spl
    | ~ aElement0(xb) ),
    inference(component_clause,[status(thm)],[f117]) ).

fof(f120,definition,
    ( sQ1_spl
  <=> aReductOfIn0(xb,xa,xR) ),
    introduced(definition,[new_symbols(definition,[sQ1_spl])],[split_symbol_definition]) ).

fof(f123,plain,
    ( ~ sQ1_spl
    | ~ sQ0_spl ),
    inference(split_clause,[status(thm)],[f115,f117,f120]) ).

fof(f127,definition,
    ( sQ3_spl
  <=> aRewritingSystem0(xR) ),
    introduced(definition,[new_symbols(definition,[sQ3_spl])],[split_symbol_definition]) ).

fof(f129,plain,
    ( sQ3_spl
    | ~ aRewritingSystem0(xR) ),
    inference(component_clause,[status(thm)],[f127]) ).

fof(f131,plain,
    ( sQ0_spl
    | $false ),
    inference(forward_subsumption_resolution,[status(thm)],[f119,f100]) ).

fof(f132,plain,
    sQ0_spl,
    inference(contradiction_clause,[status(thm)],[f131]) ).

fof(f133,plain,
    ! [X0,X1] :
      ( aReductOfIn0(sK0_skl(X1,xR,X0),X0,xR)
      | aReductOfIn0(X1,X0,xR)
      | ~ sdtmndtplgtdt0(X0,xR,X1)
      | ~ aElement0(X1)
      | ~ aElement0(X0) ),
    inference(resolution,[status(thm)],[f38,f96]) ).

fof(f136,plain,
    ! [X0] :
      ( ~ sdtmndtasgtdt0(sK0_skl(X0,xR,xa),xR,xb)
      | ~ aElement0(sK0_skl(X0,xR,xa))
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ aElement0(xa) ),
    inference(resolution,[status(thm)],[f133,f110]) ).

fof(f137,definition,
    ( sQ4_spl
  <=> aElement0(xa) ),
    introduced(definition,[new_symbols(definition,[sQ4_spl])],[split_symbol_definition]) ).

fof(f139,plain,
    ( sQ4_spl
    | ~ aElement0(xa) ),
    inference(component_clause,[status(thm)],[f137]) ).

fof(f140,definition,
    ! [X0] :
      ( sQ5_spl
    <=> ( ~ sdtmndtasgtdt0(sK0_skl(X0,xR,xa),xR,xb)
        | ~ aElement0(sK0_skl(X0,xR,xa))
        | aReductOfIn0(X0,xa,xR)
        | ~ sdtmndtplgtdt0(xa,xR,X0)
        | ~ aElement0(X0) ) ),
    introduced(definition,[new_symbols(definition,[sQ5_spl])],[split_symbol_definition]) ).

fof(f141,plain,
    ! [X0] :
      ( ~ sQ5_spl
      | ~ sdtmndtasgtdt0(sK0_skl(X0,xR,xa),xR,xb)
      | ~ aElement0(sK0_skl(X0,xR,xa))
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0) ),
    inference(component_clause,[status(thm)],[f140]) ).

fof(f143,plain,
    ( sQ5_spl
    | ~ sQ4_spl ),
    inference(split_clause,[status(thm)],[f136,f137,f140]) ).

fof(f144,plain,
    ( sQ4_spl
    | $false ),
    inference(forward_subsumption_resolution,[status(thm)],[f139,f99]) ).

fof(f145,plain,
    sQ4_spl,
    inference(contradiction_clause,[status(thm)],[f144]) ).

fof(f146,plain,
    ! [X0,X1] :
      ( ~ sdtmndtplgtdt0(X0,xR,X1)
      | sdtmndtasgtdt0(X0,xR,X1)
      | ~ aElement0(X1)
      | ~ aElement0(X0) ),
    inference(resolution,[status(thm)],[f48,f96]) ).

fof(f147,plain,
    ! [X0] :
      ( ~ sQ5_spl
      | ~ aElement0(sK0_skl(X0,xR,xa))
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb)
      | ~ aElement0(xb)
      | ~ aElement0(sK0_skl(X0,xR,xa)) ),
    inference(resolution,[status(thm)],[f146,f141]) ).

fof(f150,definition,
    ! [X0] :
      ( sQ6_spl
    <=> ( ~ aElement0(sK0_skl(X0,xR,xa))
        | aReductOfIn0(X0,xa,xR)
        | ~ sdtmndtplgtdt0(xa,xR,X0)
        | ~ aElement0(X0)
        | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb)
        | ~ aElement0(sK0_skl(X0,xR,xa)) ) ),
    introduced(definition,[new_symbols(definition,[sQ6_spl])],[split_symbol_definition]) ).

fof(f151,plain,
    ! [X0] :
      ( ~ sQ6_spl
      | ~ aElement0(sK0_skl(X0,xR,xa))
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb)
      | ~ aElement0(sK0_skl(X0,xR,xa)) ),
    inference(component_clause,[status(thm)],[f150]) ).

fof(f153,plain,
    ( ~ sQ5_spl
    | ~ sQ0_spl
    | sQ6_spl ),
    inference(split_clause,[status(thm)],[f147,f150,f117,f140]) ).

fof(f162,plain,
    ( sQ3_spl
    | $false ),
    inference(forward_subsumption_resolution,[status(thm)],[f129,f96]) ).

fof(f163,plain,
    sQ3_spl,
    inference(contradiction_clause,[status(thm)],[f162]) ).

fof(f165,plain,
    ! [X0] :
      ( ~ sQ6_spl
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb)
      | ~ aElement0(sK0_skl(X0,xR,xa)) ),
    inference(duplicate_literals_removal,[status(thm)],[f151]) ).

fof(f187,plain,
    ! [X0,X1] :
      ( ~ sQ6_spl
      | ~ aReductOfIn0(sK0_skl(X0,xR,xa),X1,xR)
      | ~ aElement0(X1)
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb) ),
    inference(resolution,[status(thm)],[f165,f114]) ).

fof(f189,definition,
    ! [X0] :
      ( sQ12_spl
    <=> ( aReductOfIn0(X0,xa,xR)
        | ~ sdtmndtplgtdt0(xa,xR,X0)
        | ~ aElement0(X0)
        | aReductOfIn0(X0,xa,xR)
        | ~ sdtmndtplgtdt0(xa,xR,X0)
        | ~ aElement0(X0)
        | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb) ) ),
    introduced(definition,[new_symbols(definition,[sQ12_spl])],[split_symbol_definition]) ).

fof(f190,plain,
    ! [X0] :
      ( ~ sQ12_spl
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb) ),
    inference(component_clause,[status(thm)],[f189]) ).

fof(f193,plain,
    ! [X0] :
      ( ~ sQ12_spl
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb) ),
    inference(duplicate_literals_removal,[status(thm)],[f190]) ).

fof(f194,plain,
    ! [X0] :
      ( ~ sQ6_spl
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ aElement0(xa)
      | ~ aElement0(xa)
      | aReductOfIn0(X0,xa,xR)
      | ~ sdtmndtplgtdt0(xa,xR,X0)
      | ~ aElement0(X0)
      | ~ sdtmndtplgtdt0(sK0_skl(X0,xR,xa),xR,xb) ),
    inference(resolution,[status(thm)],[f187,f133]) ).

fof(f195,plain,
    ( ~ sQ6_spl
    | ~ sQ4_spl
    | sQ12_spl ),
    inference(split_clause,[status(thm)],[f194,f189,f137,f150]) ).

fof(f350,plain,
    ( ~ sQ12_spl
    | aReductOfIn0(xb,xa,xR)
    | ~ sdtmndtplgtdt0(xa,xR,xb)
    | ~ aElement0(xb)
    | ~ aRewritingSystem0(xR)
    | ~ aElement0(xa)
    | aReductOfIn0(xb,xa,xR)
    | ~ sdtmndtplgtdt0(xa,xR,xb)
    | ~ aElement0(xb) ),
    inference(resolution,[status(thm)],[f193,f39]) ).

fof(f355,definition,
    ( sQ38_spl
  <=> sdtmndtplgtdt0(xa,xR,xb) ),
    introduced(definition,[new_symbols(definition,[sQ38_spl])],[split_symbol_definition]) ).

fof(f357,plain,
    ( sQ38_spl
    | ~ sdtmndtplgtdt0(xa,xR,xb) ),
    inference(component_clause,[status(thm)],[f355]) ).

fof(f358,plain,
    ( ~ sQ12_spl
    | ~ sQ3_spl
    | ~ sQ4_spl
    | sQ1_spl
    | ~ sQ38_spl
    | ~ sQ0_spl ),
    inference(split_clause,[status(thm)],[f350,f117,f355,f120,f137,f127,f189]) ).

fof(f375,plain,
    ( sQ38_spl
    | $false ),
    inference(forward_subsumption_resolution,[status(thm)],[f357,f107]) ).

fof(f376,plain,
    sQ38_spl,
    inference(contradiction_clause,[status(thm)],[f375]) ).

fof(f377,plain,
    $false,
    inference(sat_refutation,[status(thm)],[f123,f132,f143,f145,f153,f163,f195,f358,f376]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : COM016+1 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.04  % Command  : drodi -timeout(300) /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.08/0.37  % Computer : n020.cluster.edu
% 0.08/0.37  % Model    : x86_64 x86_64
% 0.08/0.37  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.37  % Memory   : 8046.5625MB
% 0.08/0.37  % OS       : Linux 6.8.0-71-generic
% 0.08/0.37  % CPULimit : 300
% 0.08/0.37  % WCLimit  : 300
% 0.08/0.37  % DateTime : Mon Sep 21 14:15:33 UTC 2026
% 0.13/0.37  % CPUTime  : 
% 0.13/0.38  % Drodi V4.1.1
% 0.13/0.41  % Refutation found
% 0.13/0.41  % SZS status Theorem for theBenchmark: Theorem is valid
% 0.13/0.41  % SZS output start CNFRefutation for theBenchmark
% See solution above
% 0.13/0.44  % Elapsed time: 0.064787 seconds
% 0.13/0.44  % CPU time: 0.204821 seconds
% 0.13/0.44  % Total memory used: 83.828 MB
% 0.13/0.44  % Net memory used: 83.629 MB
%------------------------------------------------------------------------------