Construct_Determined_States(
            State baseState,
            IEnumerable <TransitionFunction> determiningTFs)
        {
            int i = NUM_TAPES;

            foreach (TransitionFunction matchedTF in determiningTFs)
            {
                State permState = new State(matchedTF.DomainState.Actual);
                for (int k = 0; k < i; k++)
                {
                    string headSymbol = SymMap[matchedTF.DomainHeadValues[k]];
                    permState = new State(
                        permState.Actual + headSymbol,
                        permState,
                        headSymbol);
                }
                DeterminedState returnState = new DeterminedState(
                    permState.Actual,
                    permState,
                    permState.Actual,
                    matchedTF);
                yield return(returnState);
            }
        }
 Construct_Transition_States_Secondary(
     IEnumerable <DeterminedState> determinedStates_ActorStates_Write)
 {
     foreach (DeterminedState dstateNthTape in determinedStates_ActorStates_Write)
     {
         DeterminedState dstateNthTape_MoveHead = new DeterminedState(
             dstateNthTape.Actual + "a",
             dstateNthTape,
             dstateNthTape.BaseState,
             dstateNthTape.TF,
             ("a").ToString());
         yield return(dstateNthTape_MoveHead);
     }
 }
 Construct_Transition_Complete_States(
     IEnumerable <DeterminedState> determinedStates)
 {
     foreach (DeterminedState dstate in determinedStates)
     {
         DeterminedState permStateCompleted = new DeterminedState(
             dstate.Actual + "F",
             dstate,
             dstate.Actual,
             dstate.TF,
             "F");
         yield return(permStateCompleted);
     }
 }
 Construct_Transition_States_Primary(
     IEnumerable <DeterminedState> determinedStates)
 {
     foreach (DeterminedState dstate in determinedStates)
     {
         // Since each dstate is unique, states and tfs can be added immediately.
         for (int i = 1; i <= NUM_TAPES; i++)
         {
             DeterminedState dstateNthTape = new DeterminedState(
                 dstate.Actual + i,
                 dstate,
                 dstate.Actual,
                 dstate.TF,
                 (i).ToString());
             yield return(dstateNthTape);
         }
     }
 }