public static void traceForwardRule(Proposition rule, Proposition trigger, Cons consequents) {
    if ((consequents != null) &&
        (!(consequents == Stella.NIL))) {
      { int indent = 11;

        {
          System.out.println("RUNNING FORWARD RULE:");
          System.out.print("  TRIGGER: ");
        }
;
        Logic.printFormula(trigger, indent);
        if (Proposition.falseP(trigger)) {
          System.out.print(")");
        }
        {
          System.out.println();
          System.out.print("  RULE:    ");
        }
;
        Logic.printFormula(rule, indent);
        {
          System.out.println();
          System.out.print("  RESULT:  ");
        }
;
        if (!(consequents.rest == Stella.NIL)) {
          System.out.print("(" + Logic.stringifiedSurrogate(Logic.SGT_PL_KERNEL_KB_AND) + " ");
          indent = indent + 5;
        }
        { Proposition c = null;
          Cons iter000 = consequents;
          int i = Stella.NULL_INTEGER;
          int iter001 = 1;

          for (;!(iter000 == Stella.NIL); iter000 = iter000.rest, iter001 = iter001 + 1) {
            c = ((Proposition)(iter000.value));
            i = iter001;
            if (i > 1) {
              System.out.println();
              { int i000 = Stella.NULL_INTEGER;
                int iter002 = 1;
                int upperBound000 = indent;
                boolean unboundedP000 = upperBound000 == Stella.NULL_INTEGER;

                for (;unboundedP000 ||
                          (iter002 <= upperBound000); iter002 = iter002 + 1) {
                  i000 = iter002;
                  i000 = i000;
                  System.out.print(" ");
                }
              }
            }
            Logic.printFormula(c, indent);
          }
        }
        if (!(consequents.rest == Stella.NIL)) {
          System.out.print(")");
          indent = indent - 5;
        }
        System.out.println();
      }
    }
  }