mikemccand commented on code in PR #13707:
URL: https://github.com/apache/lucene/pull/13707#discussion_r1745429485


##########
lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java:
##########
@@ -857,22 +857,38 @@ public static boolean isEmpty(Automaton a) {
     return true;
   }
 
-  /** Returns true if the given automaton accepts all strings. The automaton 
must be minimized. */
+  /** Returns true if the given automaton accepts all strings. */
   public static boolean isTotal(Automaton a) {
     return isTotal(a, Character.MIN_CODE_POINT, Character.MAX_CODE_POINT);
   }
 
   /**
    * Returns true if the given automaton accepts all strings for the specified 
min/max range of the
-   * alphabet. The automaton must be minimized.
+   * alphabet.
    */
   public static boolean isTotal(Automaton a, int minAlphabet, int maxAlphabet) 
{
-    if (a.isAccept(0) && a.getNumTransitions(0) == 1) {
-      Transition t = new Transition();
-      a.getTransition(0, 0, t);
-      return t.dest == 0 && t.min == minAlphabet && t.max == maxAlphabet;
+    BitSet states = getLiveStates(a);
+    Transition spare = new Transition();
+    int seenStates = 0;
+    for (int state = states.nextSetBit(0); state >= 0; state = 
states.nextSetBit(state + 1)) {
+      // all reachable states must be accept states
+      if (a.isAccept(state) == false) return false;

Review Comment:
   It can return a false `false`!  (When the automaton is non-deterministic).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to