public static Surrogate chooseImplicationOperator(Proposition rule, boolean forwardP) {
    { Surrogate operatorprefix = (forwardP ? Logic.SGT_PL_KERNEL_KB_eg : Logic.SGT_PL_KERNEL_KB_le);

      if (((Keyword)(Logic.$PRINTMODE$.get())) == Logic.KWD_REALISTIC) {
      }
      else if (forwardP &&
          ((BooleanWrapper)(KeyValueList.dynamicSlotValue(rule.dynamicSlots, Logic.SYM_LOGIC_FORWARD_ONLYp, Stella.FALSE_WRAPPER))).wrapperValue) {
        operatorprefix = Logic.SGT_PL_KERNEL_KB_egg;
      }
      else if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(rule.dynamicSlots, Logic.SYM_LOGIC_BACKWARD_ONLYp, Stella.FALSE_WRAPPER))).wrapperValue &&
          (!forwardP)) {
        operatorprefix = Logic.SGT_PL_KERNEL_KB_lle;
      }
      if (Proposition.defaultTrueP(rule) &&
          (!(((Keyword)(Logic.$PRINTMODE$.get())) == Logic.KWD_REALISTIC))) {
        if (operatorprefix == Logic.SGT_PL_KERNEL_KB_le) {
          operatorprefix = Logic.SGT_PL_KERNEL_KB_lt;
        }
        else if (operatorprefix == Logic.SGT_PL_KERNEL_KB_eg) {
          operatorprefix = Logic.SGT_PL_KERNEL_KB_tg;
        }
        else if (operatorprefix == Logic.SGT_PL_KERNEL_KB_lle) {
          operatorprefix = Logic.SGT_PL_KERNEL_KB_llt;
        }
        else if (operatorprefix == Logic.SGT_PL_KERNEL_KB_egg) {
          operatorprefix = Logic.SGT_PL_KERNEL_KB_tgg;
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            stream000.nativeStream.print("`" + operatorprefix + "' is not a valid case option");
            throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      return (operatorprefix);
    }
  }