public static void inequalityEvaluator(Proposition self) {
    if (!(Proposition.trueP(self))) {
      return;
    }
    { Stella_Object arg1 = (self.arguments.theArray)[0];
      Stella_Object arg2 = (self.arguments.theArray)[1];
      Stella_Object value1 = Logic.valueOf(arg1);
      Stella_Object value2 = Logic.valueOf(arg2);
      boolean skolem1P = Stella_Object.isaP(value1, Logic.SGT_LOGIC_LOGIC_OBJECT);
      boolean skolem2P = Stella_Object.isaP(value2, Logic.SGT_LOGIC_LOGIC_OBJECT);
      Surrogate operator = ((Surrogate)(self.operator));

      if (Stella_Object.eqlP(value1, value2)) {
        if (!Stella_Object.eqlP(arg1, value1)) {
          if (!Stella_Object.eqlP(arg2, value2)) {
            IntervalCache.unifyIntervalCaches(PlKernelKb.getIntervalCache(((LogicObject)(arg1))), PlKernelKb.getIntervalCache(((LogicObject)(arg2))), PlKernelKb.SGT_PL_KERNEL_KB_el);
            IntervalCache.unifyIntervalCaches(PlKernelKb.getIntervalCache(((LogicObject)(arg1))), PlKernelKb.getIntervalCache(((LogicObject)(arg2))), Logic.SGT_PL_KERNEL_KB_ge);
            value2 = arg2;
            skolem2P = true;
          }
          else {
            PlKernelKb.getIntervalCache(((LogicObject)(arg1))).propagateInequalityToIntervalCache(value2, PlKernelKb.SGT_PL_KERNEL_KB_el);
            PlKernelKb.getIntervalCache(((LogicObject)(arg1))).propagateInequalityToIntervalCache(value2, Logic.SGT_PL_KERNEL_KB_ge);
          }
          value1 = arg1;
          skolem1P = true;
        }
        else if (!Stella_Object.eqlP(arg2, value2)) {
          if (!Stella_Object.eqlP(arg1, value1)) {
            IntervalCache.unifyIntervalCaches(PlKernelKb.getIntervalCache(((LogicObject)(arg2))), PlKernelKb.getIntervalCache(((LogicObject)(arg1))), PlKernelKb.SGT_PL_KERNEL_KB_el);
            IntervalCache.unifyIntervalCaches(PlKernelKb.getIntervalCache(((LogicObject)(arg2))), PlKernelKb.getIntervalCache(((LogicObject)(arg1))), Logic.SGT_PL_KERNEL_KB_ge);
            value1 = arg1;
            skolem1P = true;
          }
          else {
            PlKernelKb.getIntervalCache(((LogicObject)(arg2))).propagateInequalityToIntervalCache(value1, PlKernelKb.SGT_PL_KERNEL_KB_el);
            PlKernelKb.getIntervalCache(((LogicObject)(arg2))).propagateInequalityToIntervalCache(value1, Logic.SGT_PL_KERNEL_KB_ge);
          }
          value2 = arg2;
          skolem2P = true;
        }
      }
      if (skolem1P) {
        if (skolem2P) {
          IntervalCache.unifyIntervalCaches(PlKernelKb.getIntervalCache(((LogicObject)(value1))), PlKernelKb.getIntervalCache(((LogicObject)(value2))), operator);
        }
        else {
          PlKernelKb.getIntervalCache(((LogicObject)(value1))).propagateInequalityToIntervalCache(value2, operator);
        }
      }
      else {
        if (skolem2P) {
          PlKernelKb.getIntervalCache(((LogicObject)(value2))).propagateInequalityToIntervalCache(value1, PlKernelKb.inverseInequalityOperator(operator));
        }
        else {
          if (PlKernelKb.compareIntervalBoundsP(operator, value1, value2)) {
            Proposition.assignTruthValue(self, Stella.TRUE_WRAPPER);
          }
          else if (Proposition.trueP(self)) {
            Proposition.signalTruthValueClash(self);
          }
          else {
            Proposition.assignTruthValue(self, Stella.FALSE_WRAPPER);
          }
        }
      }
    }
  }