public static void startupRuleInduction() {
    { Object old$Module$000 = Stella.$MODULE$.get();
      Object old$Context$000 = Stella.$CONTEXT$.get();

      try {
        Native.setSpecial(Stella.$MODULE$, Stella.getStellaModule("/LOGIC", Stella.$STARTUP_TIME_PHASE$ > 1));
        Native.setSpecial(Stella.$CONTEXT$, ((Module)(Stella.$MODULE$.get())));
        if (Stella.currentStartupTimePhaseP(2)) {
          _StartupRuleInduction.helpStartupRuleInduction1();
        }
        if (Stella.currentStartupTimePhaseP(4)) {
          Logic.$RULE_INDUCTION_STRATEGY$ = Logic.KWD_TOP_DOWN;
          Logic.$SIGNATURE_STRATEGY$ = Logic.KWD_TOP_DOWN;
          Logic.$BOTTOM_UP_VARIABLE_COUNTER$.setDefaultValue(new Integer(-1));
        }
        if (Stella.currentStartupTimePhaseP(5)) {
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("DECISION-TREE", "(DEFCLASS DECISION-TREE (STANDARD-OBJECT) :SLOTS ((FEATURE :TYPE SYMBOL) (FEATURE-INDEX :TYPE INTEGER) (PROPOSITION :TYPE PROPOSITION) (TRUTH-VALUE :TYPE BOOLEAN) (CONCEPT :TYPE SYMBOL) (TRUE-BRANCH :TYPE DECISION-TREE) (FALSE-BRANCH :TYPE DECISION-TREE)) :PRINT-FORM (PRINT-DECISION-TREE SELF STREAM))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.DecisionTree", "newDecisionTree", new java.lang.Class [] {});
            renamed_Class.classSlotAccessorCode = Native.find_java_method("edu.isi.powerloom.logic.DecisionTree", "accessDecisionTreeSlotValue", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.DecisionTree"), Native.find_java_class("edu.isi.stella.Symbol"), Native.find_java_class("edu.isi.stella.Stella_Object"), java.lang.Boolean.TYPE});
          }
        }
        if (Stella.currentStartupTimePhaseP(6)) {
          Stella.finalizeClasses();
        }
        if (Stella.currentStartupTimePhaseP(7)) {
          _StartupRuleInduction.helpStartupRuleInduction2();
          Stella.defineFunctionObject("GET-VARIABLES-FROM-PROPOSITION-LIST", "(DEFUN (GET-VARIABLES-FROM-PROPOSITION-LIST (LIST OF SYMBOL)) ((PROPS (LIST OF PROPOSITION))))", Native.find_java_method("edu.isi.powerloom.logic.Logic", "getVariablesFromPropositionList", new java.lang.Class [] {Native.find_java_class("edu.isi.stella.List")}), null);
          Stella.defineFunctionObject("GET-VARIABLES-FROM-CONS-PROPOSITIONS", "(DEFUN (GET-VARIABLES-FROM-CONS-PROPOSITIONS (LIST OF SYMBOL)) ((PROPS (CONS OF CONS))))", Native.find_java_method("edu.isi.powerloom.logic.Logic", "getVariablesFromConsPropositions", new java.lang.Class [] {Native.find_java_class("edu.isi.stella.Cons")}), null);
          Stella.defineFunctionObject("HELP-GET-VARIABLES-FROM-CONS-PROPOSITIONS", "(DEFUN (HELP-GET-VARIABLES-FROM-CONS-PROPOSITIONS (LIST OF SYMBOL)) ((ELE PARSE-TREE) (THE-LIST (LIST OF SYMBOL))))", Native.find_java_method("edu.isi.powerloom.logic.Logic", "helpGetVariablesFromConsPropositions", new java.lang.Class [] {Native.find_java_class("edu.isi.stella.Stella_Object"), Native.find_java_class("edu.isi.stella.List")}), null);
          Stella.defineFunctionObject("GET-PROPOSITIONS-FROM-DECISION-TREE", "(DEFUN (GET-PROPOSITIONS-FROM-DECISION-TREE (LIST OF PROPOSITION)) ((TREE DECISION-TREE)))", Native.find_java_method("edu.isi.powerloom.logic.DecisionTree", "getPropositionsFromDecisionTree", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.DecisionTree")}), null);
          Stella.defineFunctionObject("STARTUP-RULE-INDUCTION", "(DEFUN STARTUP-RULE-INDUCTION () :PUBLIC? TRUE)", Native.find_java_method("edu.isi.powerloom.logic._StartupRuleInduction", "startupRuleInduction", new java.lang.Class [] {}), null);
          { MethodSlot function = Symbol.lookupFunction(Logic.SYM_LOGIC_STARTUP_RULE_INDUCTION);

            KeyValueList.setDynamicSlotValue(function.dynamicSlots, Logic.SYM_STELLA_METHOD_STARTUP_CLASSNAME, StringWrapper.wrapString("_StartupRuleInduction"), Stella.NULL_STRING_WRAPPER);
          }
        }
        if (Stella.currentStartupTimePhaseP(8)) {
          Stella.finalizeSlots();
          Stella.cleanupUnfinalizedClasses();
        }
        if (Stella.currentStartupTimePhaseP(9)) {
          Stella_Object.inModule(((StringWrapper)(Stella_Object.copyConsTree(StringWrapper.wrapString("LOGIC")))));
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *RULE-INDUCTION-STRATEGY* KEYWORD :TOP-DOWN)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *SIGNATURE-STRATEGY* KEYWORD :TOP-DOWN)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *ENABLE-USER-THING* BOOLEAN TRUE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *OPTIMIZE-INDUCED-QUERIES* BOOLEAN TRUE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *SIMPLIFY-RULE-ANTECEDENT?* BOOLEAN FALSE :DOCUMENTATION \"Flag to control whether we try to simplify the rule antecedent.\nThis should be set to FALSE if we expect the user to edit the rule and\nTRUE if we want to have final rules as general as possible.\" :PUBLIC? TRUE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *TRACE-ID3* BOOLEAN FALSE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *TRACE-FOIL* BOOLEAN FALSE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *INDUCE-RULES-FROM-SIGNATURES* BOOLEAN TRUE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *NUM-LGGS* INTEGER 2000)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *ENFORCE-LINKED-VARIABLES* BOOLEAN FALSE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *LOG-INDUCED-RULES* BOOLEAN FALSE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *ALLOW-RECURSIVE-DECISION-NODES* BOOLEAN TRUE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *LOG-DECISION-RULE-CONSTRUCTION* BOOLEAN FALSE)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL LOG_2 FLOAT 0.6931472)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *INDUCED-DECISION-RULES* (LIST OF CONS) NULL)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *INDUCED-RULE-COUNTER* INTEGER 0)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFGLOBAL *CANDIDATE-CLAUSES* (VECTOR OF CONS) NULL)");
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFSPECIAL *BOTTOM-UP-VARIABLE-COUNTER* INTEGER -1)");
        }

      } finally {
        Stella.$CONTEXT$.set(old$Context$000);
        Stella.$MODULE$.set(old$Module$000);
      }
    }
  }