public static void helpNormalizePredicateProposition(Proposition self, Surrogate relationref, Vector predicatearguments) {
    { Stella_Object outputargument = predicatearguments.last();
      Cons inputarguments = Stella.NIL;
      Proposition functionprop = null;
      Proposition equivalenceprop = null;

      { int i = Stella.NULL_INTEGER;
        int iter000 = 0;
        int upperBound000 = predicatearguments.length() - 2;
        Cons collect000 = null;

        for (;iter000 <= upperBound000; iter000 = iter000 + 1) {
          i = iter000;
          if (collect000 == null) {
            {
              collect000 = Cons.cons((predicatearguments.theArray)[i], Stella.NIL);
              if (inputarguments == Stella.NIL) {
                inputarguments = collect000;
              }
              else {
                Cons.addConsToEndOfConsList(inputarguments, collect000);
              }
            }
          }
          else {
            {
              collect000.rest = Cons.cons((predicatearguments.theArray)[i], Stella.NIL);
              collect000 = collect000.rest;
            }
          }
        }
      }
      functionprop = Logic.findOrCreateFunctionProposition(relationref, inputarguments);
      equivalenceprop = Logic.createEquivalenceProposition(functionprop.arguments.last(), outputargument);
      Proposition.overlayProposition(self, equivalenceprop);
      Proposition.normalizeProposition(self);
    }
  }