public static void elaborateSurrogatesInProposition(Proposition proposition) {
    if (Logic.$JUST_IN_TIME_FORWARD_INFERENCEp$) {
      { Keyword testValue000 = proposition.kind;

        if ((testValue000 == Logic.KWD_PREDICATE) ||
            ((testValue000 == Logic.KWD_FUNCTION) ||
             (testValue000 == Logic.KWD_ISA))) {
          Logic.elaborateMetaInstance(Logic.getDescription(((Surrogate)(proposition.operator))));
          { Stella_Object arg = null;
            Vector vector000 = proposition.arguments;
            int index000 = 0;
            int length000 = vector000.length();

            for (;index000 < length000; index000 = index000 + 1) {
              arg = (vector000.theArray)[index000];
              if (Stella_Object.isaP(arg, Logic.SGT_STELLA_SURROGATE)) {
                { Stella_Object value = Logic.valueOf(arg);

                  if (value != null) {
                    Logic.elaborateInstance(value);
                  }
                }
              }
            }
          }
        }
        else if ((testValue000 == Logic.KWD_AND) ||
            ((testValue000 == Logic.KWD_OR) ||
             ((testValue000 == Logic.KWD_NOT) ||
              ((testValue000 == Logic.KWD_EXISTS) ||
               (testValue000 == Logic.KWD_FORALL))))) {
          { Stella_Object p = null;
            Vector vector001 = proposition.arguments;
            int index001 = 0;
            int length001 = vector001.length();

            for (;index001 < length001; index001 = index001 + 1) {
              p = (vector001.theArray)[index001];
              Proposition.elaborateSurrogatesInProposition(((Proposition)(p)));
            }
          }
        }
        else {
        }
      }
    }
  }