public static Keyword continueNotProof(ControlFrame frame, Keyword lastmove) {
    if (lastmove == Logic.KWD_DOWN) {
      if (frame.down != null) {
        return (Logic.KWD_MOVE_DOWN);
      }
      { Proposition argument = ((Proposition)((frame.proposition.arguments.theArray)[0]));

        if ((!frame.reversePolarityP) &&
            Proposition.closedPropositionP(argument)) {
          return (ControlFrame.overlayWithFailFrame(frame, argument));
        }
        ControlFrame.createDownFrame(frame, argument);
        frame.down.reversePolarityP = !frame.reversePolarityP;
        return (Logic.KWD_MOVE_DOWN);
      }
    }
    else if (lastmove == Logic.KWD_UP_TRUE) {
      frame.truthValue = TruthValue.invertTruthValue(frame.result.truthValue);
      if (((Boolean)(Logic.$RECORD_JUSTIFICATIONSp$.get())).booleanValue()) {
        ControlFrame.recordDisproofJustification(frame, lastmove);
      }
      if (frame.down == null) {
        return (Logic.KWD_FINAL_SUCCESS);
      }
      else {
        return (Logic.KWD_CONTINUING_SUCCESS);
      }
    }
    else if (lastmove == Logic.KWD_UP_FAIL) {
      frame.truthValue = TruthValue.invertTruthValue(frame.result.truthValue);
      if (((Boolean)(Logic.$RECORD_JUSTIFICATIONSp$.get())).booleanValue() &&
          (((Justification)(KeyValueList.dynamicSlotValue(frame.result.dynamicSlots, Logic.SYM_LOGIC_JUSTIFICATION, null))) != null)) {
        ControlFrame.recordDisproofJustification(frame, lastmove);
      }
      return (Logic.KWD_FAILURE);
    }
    else {
      { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

        stream000.nativeStream.print("`" + lastmove + "' is not a valid case option");
        throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
      }
    }
  }