public static Keyword rangeMinCardinalitySpecialist(ControlFrame frame, Keyword lastmove) {
    { Proposition proposition = frame.proposition;
      Stella_Object relation = Logic.argumentBoundTo((proposition.arguments.theArray)[0]);
      Stella_Object instance = Logic.argumentBoundTo((proposition.arguments.theArray)[1]);
      Stella_Object mincardarg = (proposition.arguments.theArray)[2];
      Stella_Object mincardvalue = Logic.argumentBoundTo(mincardarg);
      int computedvalue = Stella.NULL_INTEGER;

      lastmove = lastmove;
      if (!Logic.$ACCELERATE_FRAME_COMPUTATIONSp$) {
        return (Logic.KWD_FAILURE);
      }
      if ((relation == null) ||
          (instance == null)) {
        return (Logic.KWD_FAILURE);
      }
      { boolean testValue000 = false;

        testValue000 = Stella_Object.isaP(relation, Logic.SGT_LOGIC_NAMED_DESCRIPTION);
        if (testValue000) {
          { 
            computedvalue = NamedDescription.computeMinimumCardinality(((NamedDescription)(relation)), instance);
            testValue000 = computedvalue != Stella.NULL_INTEGER;
          }
        }
        if (testValue000) {
          { TruthValue tv = Logic.UNKNOWN_TRUTH_VALUE;

            if ((mincardvalue != null) &&
                Stella_Object.isaP(mincardvalue, Logic.SGT_STELLA_INTEGER_WRAPPER)) {
              if (computedvalue >= ((NumberWrapper)(mincardvalue)).numberWrapperToFloat()) {
                {
                  tv = Logic.TRUE_TRUTH_VALUE;
                }
              }
              else {
                if (Logic.closedTermP(relation)) {
                  {
                    tv = Logic.FALSE_TRUTH_VALUE;
                  }
                }
                else {
                  { boolean testValue001 = false;

                    { 
                      computedvalue = NamedDescription.computeMaximumCardinality(((NamedDescription)(relation)), instance);
                      testValue001 = computedvalue != Stella.NULL_INTEGER;
                    }
                    if (testValue001) {
                      testValue001 = computedvalue < ((NumberWrapper)(mincardvalue)).numberWrapperToFloat();
                    }
                    if (testValue001) {
                      tv = Logic.FALSE_TRUTH_VALUE;
                    }
                  }
                }
              }
            }
            else {
              if (Logic.bindArgumentToValueP(mincardarg, IntegerWrapper.wrapInteger(computedvalue), true)) {
                tv = Logic.TRUE_TRUTH_VALUE;
              }
              else {
                tv = Logic.FALSE_TRUTH_VALUE;
              }
            }
            if (((Boolean)(Logic.$REVERSEPOLARITYp$.get())).booleanValue()) {
              tv = TruthValue.invertTruthValue(tv);
            }
            ControlFrame.setFrameTruthValue(frame, tv);
            if ((tv == Logic.TRUE_TRUTH_VALUE) ||
                (tv == Logic.DEFAULT_TRUE_TRUTH_VALUE)) {
              return (Logic.KWD_FINAL_SUCCESS);
            }
            else if ((tv == Logic.FALSE_TRUTH_VALUE) ||
                (tv == Logic.DEFAULT_FALSE_TRUTH_VALUE)) {
              return (Logic.KWD_FAILURE);
            }
            else {
              return (Logic.KWD_FAILURE);
            }
          }
        }
        else {
          return (Logic.KWD_FAILURE);
        }
      }
    }
  }