public static boolean truePropositionsIteratorDnextP(TruePropositionsIterator self) {
    { Iterator cursor = self.propositionCursor;
      Proposition proposition = null;

      if (cursor == null) {
        return (false);
      }
      loop000 : for (;;) {
        if (cursor.nextP()) {
          proposition = ((Proposition)(cursor.value));
        }
        else {
          { Cons pattern = AbstractPropositionsIterator.nextEquivalentSelectionPattern(self);

            if (pattern != null) {
              cursor = Logic.selectPropositions(pattern).allocateIterator();
              self.propositionCursor = cursor;
              continue loop000;
            }
            else {
              self.propositionCursor = null;
              return (false);
            }
          }
        }
        if ((!proposition.deletedP()) &&
            ((((Boolean)(Logic.$REVERSEPOLARITYp$.get())).booleanValue() ? Proposition.falseP(proposition) : (Proposition.trueP(proposition) ||
            Proposition.functionWithDefinedValueP(proposition))))) {
          self.value = proposition;
          self.truthValue = Proposition.propositionTruthValue(proposition);
          return (true);
        }
      }
    }
  }