public static void runGoesTrueDemons(Proposition proposition) {
    { Keyword testValue000 = proposition.kind;

      if ((testValue000 == Logic.KWD_FUNCTION) ||
          (testValue000 == Logic.KWD_ISA)) {
        Proposition.runTruthChangeDemon(proposition, Logic.SGT_PL_KERNEL_KB_GOES_TRUE_DEMON);
      }
      else if (testValue000 == Logic.KWD_PREDICATE) {
        { NamedDescription description = Logic.getDescription(((Surrogate)(proposition.operator)));

          if (Logic.singleValuedTermP(description)) {
            Proposition.clipOrClashWithOldPredicateValue(proposition);
          }
        }
        Proposition.runTruthChangeDemon(proposition, Logic.SGT_PL_KERNEL_KB_GOES_TRUE_DEMON);
      }
      else if (testValue000 == Logic.KWD_IMPLIES) {
        if ((!Stella_Object.isaP((proposition.arguments.theArray)[0], Logic.SGT_LOGIC_DESCRIPTION)) ||
            (!Stella_Object.isaP((proposition.arguments.theArray)[1], Logic.SGT_LOGIC_DESCRIPTION))) {
          return;
        }
        if (!Logic.descriptionModeP()) {
          Description.addTaxonomyImpliesSubsumesLink(((Description)((proposition.arguments.theArray)[0])), ((Description)((proposition.arguments.theArray)[1])));
        }
        Proposition.reviseEquivalences(proposition, true);
        if (((Module)(Stella.$MODULE$.get())) == ((Context)(Stella.$CONTEXT$.get()))) {
          Logic.bumpInferableTimestamp();
        }
        Proposition.flushInferableDirectSubdescriptionsCache(proposition);
      }
      else if (testValue000 == Logic.KWD_FORALL) {
        if (proposition.satellitePropositions() == Stella.NIL_LIST) {
          Proposition.deriveSatelliteRules(proposition);
        }
        Logic.bumpInferableTimestamp();
      }
      else {
      }
    }
    return;
  }