public static boolean nonRecursiveSingleValuedTermP(Stella_Object self) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

      if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
        { NamedDescription self000 = ((NamedDescription)(self));

          return (NamedDescription.functionDescriptionP(self000) ||
              Logic.testPropertyP(self000, Logic.SGT_PL_KERNEL_KB_SINGLE_VALUED));
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_DESCRIPTION)) {
        { Description self000 = ((Description)(self));

          { Proposition proposition = self000.proposition;
            Cons iovariables = Stella.NIL;

            { PatternVariable arg = null;
              Vector vector000 = self000.ioVariables;
              int index000 = 0;
              int length000 = vector000.length();

              for (;index000 < length000; index000 = index000 + 1) {
                arg = ((PatternVariable)((vector000.theArray)[index000]));
                iovariables = Cons.cons(arg, iovariables);
              }
            }
            return (Proposition.helpSingleValuedGoalP(proposition, iovariables, Cons.copyConsList(iovariables.rest), false));
          }
        }
      }
      else {
        return (false);
      }
    }
  }