* @param o2
   * @return boolean
   */
  public static boolean logicFormLessP(Stella_Object o1, Stella_Object o2) {
    if (o1 == o2) {
      return (false);
    }
    if (Stella_Object.isaP(o1, Logic.SGT_LOGIC_SKOLEM)) {
      { Stella_Object value = ((Stella_Object)(Stella_Object.accessInContext(((Skolem)(o1)).variableValue, ((Skolem)(o1)).homeContext, false)));

        if (value != null) {
          o1 = value;
        }
        else if (Logic.functionOutputSkolemP(o1)) {
          o1 = ((Skolem)(o1)).definingProposition;
        }
        else {
          o1 = ((Skolem)(o1)).skolemName;
        }
      }
    }
    if (Stella_Object.isaP(o2, Logic.SGT_LOGIC_SKOLEM)) {
      { Stella_Object value = ((Stella_Object)(Stella_Object.accessInContext(((Skolem)(o2)).variableValue, ((Skolem)(o2)).homeContext, false)));

        if (value != null) {
          o2 = value;
        }
        else if (Logic.functionOutputSkolemP(o2)) {
          o2 = ((Skolem)(o2)).definingProposition;
        }
        else {
          o2 = ((Skolem)(o2)).skolemName;
        }
      }
    }
    if (o1 == null) {
      return (false);
    }
    if (o2 == null) {
      return (true);
    }
    { Surrogate testValue000 = Stella_Object.safePrimaryType(o1);

      if (Surrogate.subtypeOfIntegerP(testValue000)) {
        { IntegerWrapper o1000 = ((IntegerWrapper)(o1));

          { Surrogate testValue001 = Stella_Object.safePrimaryType(o2);

            if (Surrogate.subtypeOfIntegerP(testValue001)) {
              { IntegerWrapper o2000 = ((IntegerWrapper)(o2));

                return (o1000.wrapperValue < o2000.wrapperValue);
              }
            }
            else if (Surrogate.subtypeOfFloatP(testValue001)) {
              { FloatWrapper o2000 = ((FloatWrapper)(o2));

                return (o1000.wrapperValue < o2000.wrapperValue);
              }
            }
            else if (Surrogate.subtypeOfP(testValue001, Logic.SGT_LOGIC_QUANTITY_LOGIC_WRAPPER)) {
              { QuantityLogicWrapper o2000 = ((QuantityLogicWrapper)(o2));

                return (!Logic.safeQuantityGreaterEqualP(o2000.wrapperValue, o1000));
              }
            }
            else {
              return (true);
            }
          }
        }
      }
      else if (Surrogate.subtypeOfFloatP(testValue000)) {
        { FloatWrapper o1000 = ((FloatWrapper)(o1));

          { Surrogate testValue002 = Stella_Object.safePrimaryType(o2);

            if (Surrogate.subtypeOfIntegerP(testValue002)) {
              { IntegerWrapper o2000 = ((IntegerWrapper)(o2));

                return (o1000.wrapperValue < o2000.wrapperValue);
              }
            }
            else if (Surrogate.subtypeOfFloatP(testValue002)) {
              { FloatWrapper o2000 = ((FloatWrapper)(o2));

                return (o1000.wrapperValue < o2000.wrapperValue);
              }
            }
            else if (Surrogate.subtypeOfP(testValue002, Logic.SGT_LOGIC_QUANTITY_LOGIC_WRAPPER)) {
              { QuantityLogicWrapper o2000 = ((QuantityLogicWrapper)(o2));

                return (!Logic.safeQuantityGreaterEqualP(o2000.wrapperValue, o1000));
              }
            }
            else {
              return (true);
            }
          }
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_QUANTITY_LOGIC_WRAPPER)) {
        { QuantityLogicWrapper o1000 = ((QuantityLogicWrapper)(o1));

          { Surrogate testValue003 = Stella_Object.safePrimaryType(o2);

            if (Surrogate.subtypeOfP(testValue003, Logic.SGT_LOGIC_QUANTITY_LOGIC_WRAPPER)) {
              { QuantityLogicWrapper o2000 = ((QuantityLogicWrapper)(o2));

                return (Logic.safeQuantityLessP(o1000.wrapperValue, o2000.wrapperValue));
              }
            }
            else if (Surrogate.subtypeOfP(testValue003, Logic.SGT_STELLA_NUMBER_WRAPPER)) {
              { NumberWrapper o2000 = ((NumberWrapper)(o2));

                return (Logic.safeQuantityLessP(o1000.wrapperValue, o2000));
              }
            }
            else {
              return (true);
            }
          }
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_PROPOSITION)) {
        { Proposition o1000 = ((Proposition)(o1));

          { Surrogate testValue004 = Stella_Object.safePrimaryType(o2);

            if (Surrogate.subtypeOfP(testValue004, Logic.SGT_LOGIC_PROPOSITION)) {
              { Proposition o2000 = ((Proposition)(o2));

                return (Proposition.propositionLessThanP(o1000, o2000));
              }
            }
            else if (Surrogate.subtypeOfP(testValue004, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
              { NamedDescription o2000 = ((NamedDescription)(o2));

                return (Stella.stringLessP(Proposition.propositionHeadSortString(o1000), Logic.objectSortString(o2000)));
              }
            }
            else if (Surrogate.subtypeOfP(testValue004, Logic.SGT_LOGIC_DESCRIPTION)) {
              { Description o2000 = ((Description)(o2));

                return (Proposition.propositionLessThanP(o1000, o2000.proposition));
              }
            }
            else {
              return (Stella.stringLessP(Proposition.propositionHeadSortString(o1000), Logic.objectSortString(o2)));
            }
          }
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
        { NamedDescription o1000 = ((NamedDescription)(o1));

          { Surrogate testValue005 = Stella_Object.safePrimaryType(o2);

            if (Surrogate.subtypeOfP(testValue005, Logic.SGT_LOGIC_PROPOSITION)) {
              { Proposition o2000 = ((Proposition)(o2));

                return (Stella.stringLessP(Logic.objectSortString(o1000), Proposition.propositionHeadSortString(o2000)));
              }
            }
            else if (Surrogate.subtypeOfP(testValue005, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
              { NamedDescription o2000 = ((NamedDescription)(o2));

                return (Stella.stringLessP(Logic.objectSortString(o1000), Logic.objectSortString(o2000)));
              }
            }
            else if (Surrogate.subtypeOfP(testValue005, Logic.SGT_LOGIC_DESCRIPTION)) {
              { Description o2000 = ((Description)(o2));

                return (Stella.stringLessP(Logic.objectSortString(o1000), Proposition.propositionHeadSortString(o2000.proposition)));
              }
            }
            else {
              return (Stella.stringLessP(Logic.objectSortString(o1000), Logic.objectSortString(o2)));
            }
          }
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_DESCRIPTION)) {
        { Description o1000 = ((Description)(o1));

          return (Logic.logicFormLessP(o1000.proposition, o2));
        }
      }
      else {
        { Surrogate testValue006 = Stella_Object.safePrimaryType(o2);

          if (Surrogate.subtypeOfP(testValue006, Logic.SGT_LOGIC_PROPOSITION)) {
            { Proposition o2000 = ((Proposition)(o2));

              return (!Stella.stringLessP(Logic.objectSortString(o1), Proposition.propositionHeadSortString(o2000)));
            }
          }
          else if (Surrogate.subtypeOfP(testValue006, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
            { NamedDescription o2000 = ((NamedDescription)(o2));

              return (Stella.stringLessP(Logic.objectSortString(o1), Logic.objectSortString(o2000)));
            }
          }
          else if (Surrogate.subtypeOfP(testValue006, Logic.SGT_LOGIC_DESCRIPTION)) {
            { Description o2000 = ((Description)(o2));

              return (Stella.stringLessP(Logic.objectSortString(o1), Proposition.propositionHeadSortString(o2000.proposition)));
            }
          }
          else {
            return (Stella.stringLessP(Logic.objectSortString(o1), Logic.objectSortString(o2)));
          }
        }
      }
    }
  }