public static Keyword continueForallProof(ControlFrame frame, Keyword lastmove) {
    lastmove = lastmove;
    { boolean testValue000 = false;

      if (frame.reversePolarityP) {
        testValue000 = true;
      }
      else {
        {
          { boolean alwaysP000 = true;

            { PatternVariable var = null;
              Vector vector000 = ((Vector)(KeyValueList.dynamicSlotValue(frame.proposition.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null)));
              int index000 = 0;
              int length000 = vector000.length();

              loop000 : for (;index000 < length000; index000 = index000 + 1) {
                var = ((PatternVariable)((vector000.theArray)[index000]));
                if (!Logic.closedTermP(Logic.getDescription(Logic.logicalType(var)))) {
                  alwaysP000 = false;
                  break loop000;
                }
              }
            }
            testValue000 = alwaysP000;
          }
          if (!testValue000) {
            testValue000 = Proposition.closedPropositionP(((Proposition)((frame.proposition.arguments.theArray)[0])));
          }
        }
      }
      if (testValue000) {
        {
          frame.state = Logic.KWD_ITERATIVE_FORALL;
          return (Logic.KWD_MOVE_IN_PLACE);
        }
      }
      else {
        {
          { Keyword testValue001 = Logic.currentInferenceLevel().keyword;

            if ((testValue001 == Logic.KWD_NORMAL) ||
                (testValue001 == Logic.KWD_REFUTATION)) {
              ControlFrame.overlayWithStrategyFrame(frame, Logic.KWD_UNIVERSAL_INTRODUCTION);
              return (Logic.KWD_MOVE_IN_PLACE);
            }
            else {
              return (Logic.KWD_FAILURE);
            }
          }
        }
      }
    }
  }