reserve X for set;
reserve a,b,c,k,m,n for Nat;
reserve i,j for Integer;
reserve r,s for Real;
reserve p,p1,p2,p3 for Prime;
reserve z for Complex;

theorem
  { [x,y] where x,y is Nat: y^2-x*(x+1)*(x+2)*(x+3) = 1 }
  = { [x,y] where x,y is Nat: y = x^2+3*x+1 }
  proof
    set A = { [x,y] where x,y is Nat: y^2-x*(x+1)*(x+2)*(x+3) = 1 };
    set B = { [x,y] where x,y is Nat: y = x^2+3*x+1 };
    thus A c= B
    proof
      let a be object;
      assume a in A;
      then consider x,y being Nat such that
A1:   a = [x,y] and
A2:   y^2-x*(x+1)*(x+2)*(x+3) = 1;
      x*(x+1)*(x+2)*(x+3)+1 = (x^2+3*x+1)^2;
      then y = x^2+3*x+1 by A2,PYTHTRIP:5;
      hence a in B by A1;
    end;
    let a be object;
    assume a in B;
    then consider x,y being Nat such that
A3: a = [x,y] and
A4: y = x^2+3*x+1;
    y^2-x*(x+1)*(x+2)*(x+3) = 1 by A4;
    hence a in A by A3;
  end;
