• CanadaPlus@lemmy.sdf.org
    link
    fedilink
    arrow-up
    2
    ·
    1 day ago

    So this is a definite example of “regex” that’s not regular, then. I really don’t think there’s any finite state machine that can track every possible number of string repeats separately.

    • NateNate60@lemmy.worldOP
      link
      fedilink
      arrow-up
      1
      ·
      1 day ago

      You got downvoted here but you’re absolutely right. It’s easy to prove that the set of strings with prime length is not a regular language using the pumping lemma for regular languages. And in typical StackExchange fashion, someone’s already done it.

      Here’s their proof.

      Claim 1: The language consisting of the character 1 repeated a prime number of times is not regular.

      A further argument to justify your claim—

      Claim 2: If the language described in Claim 1 is not regular, then the language consisting of the character 1 repeated a composite number of times is not regular.

      Proof: Suppose the language described in Claim 2 is regular if the language described in Claim 1 is not. Then there must exist a finite-state automaton A that recognises it. If we create a new finite-state automaton B which (1) checks whether the string has length 1 and rejects it, and (2) then passes the string to automaton A and rejects when automaton A accepts and accepts when automaton A rejects, then we can see that automaton B accepts the set of all strings of non-composite length that are not of length 1, i.e. the set of all strings of prime length. But since the language consisting of all strings of prime length is non-regular, there cannot exist such an automaton. Therefore, the assumption that the language described in Claim 2 being regular is false.

      • CanadaPlus@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        8 hours ago

        By now, I have just one, so thanks for the assist. There’s always that one (sometimes puzzling) downvote on anything factual.

        The pumping lemma, for anyone unfamiliar. It’s a consequence of the fact an FSM is finite, so you can construct a repeatable y just by exhausting the FSM’s ability to “remember” how much it’s seen.

      • CanadaPlus@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        9 hours ago

        Yeah, but in an FSM all you have are states. To do it the obvious way, you need a loop with separate branches for every number greater than 2, or at the very least every prime number, and that’s not going to be finite.