public static void equateTopLevelEquivalences(Proposition proposition, Vector iovariables, Keyword kind) {
    { Vector arguments = proposition.arguments;

      { Keyword testValue000 = proposition.kind;

        if (testValue000 == Logic.KWD_EQUIVALENT) {
          { Stella_Object arg1 = Logic.innermostOf((arguments.theArray)[0]);
            Stella_Object arg2 = Logic.innermostOf((arguments.theArray)[1]);

            if ((Logic.variableP(arg1) ||
                Logic.argumentBoundP(arg1)) &&
                (Logic.variableP(arg2) ||
                 Logic.argumentBoundP(arg2))) {
              if (iovariables.memberP(arg1)) {
                if (iovariables.memberP(arg2)) {
                  if (!(kind == Logic.KWD_HEAD)) {
                    Proposition.equateValues(proposition, arg1, arg2);
                  }
                }
                else {
                  Proposition.equateValues(proposition, arg2, arg1);
                }
              }
              else {
                Proposition.equateValues(proposition, arg1, arg2);
              }
            }
          }
        }
        else if (testValue000 == Logic.KWD_AND) {
          { Stella_Object arg = null;
            Vector vector000 = arguments;
            int index000 = 0;
            int length000 = vector000.length();

            for (;index000 < length000; index000 = index000 + 1) {
              arg = (vector000.theArray)[index000];
              Proposition.equateTopLevelEquivalences(((Proposition)(arg)), iovariables, kind);
            }
          }
        }
        else if (testValue000 == Logic.KWD_EXISTS) {
          Proposition.equateTopLevelEquivalences(((Proposition)((arguments.theArray)[0])), iovariables, kind);
        }
        else if (testValue000 == Logic.KWD_FUNCTION) {
          Proposition.evaluateFunctionProposition(proposition);
        }
        else {
        }
      }
    }
  }