def each_sat
      return to_enum(:each_sat) unless block_given?
      sat_loop(self) do |sat, solver|
        yield sat
        negated_vars = sat.terms.map do |t|
          t.is_a?(NotTerm) ? t.terms[0] : ~t
        end
        solver << PropLogic.all_or(*negated_vars)
      end
    end
def each_sat
      return to_enum(:each_sat) unless block_given?
      sat_loop(self) do |sat, solver|
        yield sat
        negated_vars = sat.terms.map do |t|
          t.is_a?(NotTerm) ? t.terms[0] : ~t
        end
        solver << PropLogic.all_or(*negated_vars)
      end
    end
loop with each satisfied terms.
 @return [Enumerator] if block is not given.
 @return [nil] if block is given.