
    wg	                     ,     G d  d      Z  G d d      Zy)c                       e Zd ZdZddZd Zy)Statea-  
    A representation of a state managed by a ``StateMachine``.

    Attributes:
        name (instance of FreeGroupElement or string) -- State name which is also assigned to the Machine.
        transisitons (OrderedDict) -- Represents all the transitions of the state object.
        state_type (string) -- Denotes the type (accept/start/dead) of the state.
        rh_rule (instance of FreeGroupElement) -- right hand rule for dead state.
        state_machine (instance of StateMachine object) -- The finite state machine that the state belongs to.
    Nc                 P    || _         i | _        || _        |d   | _        || _        y )N    )nametransitionsstate_machine
state_typerh_rule)selfr   r   r	   r
   s        l/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/combinatorics/rewritingsystem_fsm.py__init__zState.__init__   s+    	*$Q-    c                 "    || j                   |<   y)aZ  
        Add a transition from the current state to a new state.

        Keyword Arguments:
            letter -- The alphabet element the current state reads to make the state transition.
            state -- This will be an instance of the State object which represents a new state after in the transition after the alphabet is read.

        N)r   )r   letterstates      r   add_transitionzState.add_transition   s     $) r   NN)__name__
__module____qualname____doc__r   r    r   r   r   r      s    		)r   r   c                   $    e Zd ZdZd ZddZd Zy)StateMachinez
    Representation of a finite state machine the manages the states and the transitions of the automaton.

    Attributes:
        states (dictionary) -- Collection of all registered `State` objects.
        name (str) -- Name of the state machine.
    c                 T    || _         || _        i | _        | j                  dd       y )Nstarts)r	   )r   automaton_alphabetstates	add_state)r   r   r   s      r   r   zStateMachine.__init__(   s(    	"4w3/r   Nc                 >    t        || ||      }|| j                  |<   y)ax  
        Instantiate a state object and stores it in the 'states' dictionary.

        Arguments:
            state_name (instance of FreeGroupElement or string) -- name of the new states.
            state_type (string) -- Denotes the type (accept/start/dead) of the state added.
            rh_rule (instance of FreeGroupElement) -- right hand rule for dead state.

        N)r   r   )r   
state_namer	   r
   	new_states        r   r    zStateMachine.add_state.   s"     *dJ@	"+Jr   c                      d| j                   z  S )Nz%s)r   )r   s    r   __repr__zStateMachine.__repr__;   s    tyy!!r   r   )r   r   r   r   r   r    r%   r   r   r   r   r      s    0,"r   r   N)r   r   r   r   r   <module>r&      s   ) )<" "r   