Functions | |
bool | simpleLoopCheck (turing_machine< d_type > &machine, unsigned int transition_limit) |
Simple loop detection algorithm. | |
bool | isInfinite (std::vector< state< d_type > > &stateSet, localTape< d_type > &tape, std::vector< state< d_type > >::size_type stateIndex, int limitSeed, int backTrackLimit) |
recursive back track helper. | |
bool | backTrack (turing_machine< d_type > &machine, unsigned int transition_limit) |
parent backTrack function. | |
bool | isIn (std::vector< state< d_type > >::size_type element, std::vector< std::vector< state< d_type > >::size_type > set) |
check if element is in set | |
bool | subsetLoop (std::vector< state< d_type > >::size_type seed, std::vector< state< d_type > >::size_type haltState, std::vector< state< d_type > > &stateSet) |
subset loops helper function. | |
bool | loopStates (turing_machine< d_type > &machine) |
subset loop non halt detection. | |
unsigned int | getNextRightBound (turing_machine< d_type > &machine, std::list< d_type >::iterator &rightBound, std::list< d_type >::iterator &leftBound, unsigned int &step_counter, unsigned int transition_limit) |
get the next right extremum in the back and forth sweeping motion of a christmas tree. | |
bool | findMidSection (tapeChunk< d_type > &before, tapeChunk< d_type > &after, tapeChunk< d_type > &midSection, tapeChunk< d_type > &leftSection, tapeChunk< d_type > &rightSection) |
finds an additional middle portion of the tape given a tape before and after a sweep of a christmas tree. | |
tapeChunk< d_type > | getNextChunk (turing_machine< d_type > &machine, std::list< d_type >::iterator leftBound, std::list< d_type >::iterator rightBound, unsigned int stopPointCounter, unsigned int &step_counter, unsigned int transition_limit, bool stopAtLeftBound, bool stopAtRightBound, bool inclusiveLeft, bool inclusiveRight, bool pushLeftBound, bool pushRightBound) |
get the next chunk of the tape after performing a transformation in the christmas tree grammars. | |
tapeChunk< d_type > | getNextChunkUnevenCheck (turing_machine< d_type > &machine, std::list< d_type >::iterator leftBoundCheck, std::list< d_type >::iterator leftBound, std::list< d_type >::iterator rightBound, unsigned int stopPointCounter, unsigned int &step_counter, unsigned int transition_limit, bool stopAtLeftBound, bool stopAtRightBound, bool inclusiveLeft, bool inclusiveRight, bool pushLeftBound, bool pushRightBound) |
specialized version of getNextChunk this version is run for transitions that push the left bound in alternating christmas trees picks up uneven alternating christmas tree. | |
bool | checkLeaningChristmasTreeGrammar (turing_machine< d_type > &machine, unsigned int firstRightBound, unsigned int secondRightBound, unsigned int thirdRightBound, std::list< d_type >::iterator firstLeftBound, std::list< d_type >::iterator secondLeftBound, std::list< d_type >::iterator thirdLeftBound, unsigned int transition_limit, tapeChunk< d_type > &N, tapeChunk< d_type > &U, tapeChunk< d_type > &X, tapeChunk< d_type > &V, std::vector< state< d_type > >::size_type s) |
check the grammar for a leaning christmas tree. | |
unsigned int | getNextLeaningRightBound (turing_machine< d_type > &machine, std::list< d_type >::iterator &rightBound, unsigned int &step_counter, unsigned int transition_limit) |
specialized version of getNextRightBound for leaning christmas trees. | |
bool | checkLeaningChristmasTree (turing_machine< d_type > &machine, unsigned int transition_limit) |
leaning christmas tree non halt detection routine. | |
bool | leaningChristmasTree (turing_machine< d_type > &machine, unsigned int transition_limit) |
leaning christmas tree non halt detection routine (checks mirror machines). | |
unsigned int | getNextBlankLocation (turing_machine< d_type > &machine, std::list< d_type >::iterator &rightBound, std::list< d_type >::iterator &leftBound, unsigned int &step_counter, unsigned int transition_limit) |
get the next location of a blank cell in a counter. | |
bool | checkCounterConversion (turing_machine< d_type > &machine, tapeChunk< d_type > originalTape, tapeChunk< d_type > desiredTape, int originalReadHead, int desiredReadHead, std::vector< state< d_type > >::size_type originalState, std::vector< state< d_type > >::size_type desiredState) |
check a transformation in the counter grammar. | |
bool | checkFinalCounterGrammar (turing_machine< d_type > &machine, tapeChunk< d_type > splitLeftSide, tapeChunk< d_type > splitRightSide, tapeChunk< d_type > zeroCell, tapeChunk< d_type > oneCell, tapeChunk< d_type > onePrimeCell, tapeChunk< d_type > endCell, int cellSize, std::vector< state< d_type > >::size_type stateC, std::vector< state< d_type > >::size_type stateR) |
checks all of the necessary transformations in the counter grammar. | |
bool | checkCounterRun (turing_machine< d_type > &machine, unsigned int transition_limit, unsigned int firstBlankLocationCounter, tapeChunk< d_type > firstBlankLocation, tapeChunk< d_type > zeroCell, tapeChunk< d_type > oneCell, tapeChunk< d_type > onePrimeCell, tapeChunk< d_type > endCell, unsigned int cellSize, std::vector< state< d_type > >::size_type stateC) |
check the run of a counter from a blank location to verify transformations. | |
bool | extractCounterElements (turing_machine< d_type > &machine, unsigned int transition_limit, unsigned int firstBlankLocationCounter, tapeChunk< d_type > firstBlankLocation, tapeChunk< d_type > secondBlankLocation, tapeChunk< d_type > middleLocation, std::vector< state< d_type > >::size_type stateC) |
extract the components in a counter. | |
bool | testCounter (turing_machine< d_type > &machine, unsigned int transition_limit) |
test if the machine is a counter | |
bool | counter (turing_machine< d_type > &machine, unsigned int transition_limit) |
test if the machine is a counter | |
bool | establishSweep (turing_machine< d_type > &machine, std::list< d_type >::iterator &leftBound, std::list< d_type >::iterator &rightBound, unsigned int &step_counter, unsigned int step_limit, unsigned int transition_limit) |
run a machine for a while to establish a sweeping motion | |
bool | checkMultiSweepFirstPass (turing_machine< d_type > &machine, unsigned int currentSweep, unsigned int totalSweeps, std::vector< unsigned int > rightBoundCounters, std::vector< std::list< d_type >::iterator > leftBoundPointers, unsigned int transition_limit, unsigned int &step_counter, tapeChunk< d_type > &U, tapeChunk< d_type > &X, tapeChunk< d_type > &V, std::vector< state< d_type > >::size_type s, std::vector< sweepStats< d_type > > &statistics) |
check the first pass through the grammar in a multi-sweep christmas tree. | |
bool | checkMultiSweepSecondPass (turing_machine< d_type > &machine, unsigned int currentSweep, unsigned int totalSweeps, std::vector< unsigned int > rightBoundCounters, std::vector< std::list< d_type >::iterator > leftBoundPointers, unsigned int transition_limit, unsigned int &step_counter, std::vector< state< d_type > >::size_type s, std::vector< sweepStats< d_type > > &statistics) |
check the first pass through the grammar in a multi-sweep christmas tree. | |
bool | checkMultiSweepChristmasTreeGrammar (turing_machine< d_type > &machine, unsigned int totalSweeps, std::vector< unsigned int > rightBoundCounters, std::vector< std::list< d_type >::iterator > leftBoundPointers, unsigned int transition_limit, tapeChunk< d_type > &U, tapeChunk< d_type > &X, tapeChunk< d_type > &V, std::vector< state< d_type > >::size_type s) |
check the grammar for christmas trees. | |
bool | checkMultiSweepChristmasTree (turing_machine< d_type > &machine, unsigned int sweeps, unsigned int transition_limit) |
check for christmas tree non-halter. | |
bool | multiSweepChristmasTree (turing_machine< d_type > &machine, unsigned int sweeps, unsigned int transition_limit) |
check for christmas tree non-halter (mirror machines as well). |
|
parent backTrack function.
Definition at line 175 of file non_halt_detection.hpp. References turing_machine< T >::haltState(), isInfinite(), and turing_machine< T >::stateSet(). |
|
check a transformation in the counter grammar.
Definition at line 3053 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), turing_machine< T >::nextMove(), turing_machine< T >::rigMachine(), turing_machine< T >::run_one(), and tapeChunk< T >::tapeConfig. Referenced by checkFinalCounterGrammar(). |
|
check the run of a counter from a blank location to verify transformations.
Definition at line 3190 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), checkFinalCounterGrammar(), tapeChunk< T >::emptyTape(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), tapeChunk< T >::length(), turing_machine< T >::nextMove(), turing_machine< T >::resetMachine(), and turing_machine< T >::run_one(). Referenced by extractCounterElements(). |
|
checks all of the necessary transformations in the counter grammar.
Definition at line 3114 of file non_halt_detection.hpp. References checkCounterConversion(), tapeChunk< T >::compareNextChunk(), and tapeChunk< T >::length(). Referenced by checkCounterRun(). |
|
leaning christmas tree non halt detection routine.
Definition at line 1937 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), checkLeaningChristmasTreeGrammar(), tapeChunk< T >::fillTape(), findMidSection(), turing_machine< T >::get_current_state(), getNextLeaningRightBound(), turing_machine< T >::nextMove(), turing_machine< T >::resetMachine(), and turing_machine< T >::run_one(). Referenced by leaningChristmasTree(). |
|
check the grammar for a leaning christmas tree.
Definition at line 1638 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), getNextChunk(), tapeChunk< T >::isEmpty(), turing_machine< T >::resetMachine(), turing_machine< T >::run_one(), and tapeChunk< T >::tapeConfig. Referenced by checkLeaningChristmasTree(). |
|
check for christmas tree non-halter.
Definition at line 3863 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), checkMultiSweepChristmasTreeGrammar(), establishSweep(), tapeChunk< T >::fillTape(), findMidSection(), turing_machine< T >::get_current_state(), getNextRightBound(), turing_machine< T >::nextMove(), turing_machine< T >::resetMachine(), and turing_machine< T >::run_one(). Referenced by multiSweepChristmasTree(). |
|
check the grammar for christmas trees.
Definition at line 3833 of file non_halt_detection.hpp. References checkMultiSweepFirstPass(), checkMultiSweepSecondPass(), and turing_machine< T >::resetMachine(). Referenced by checkMultiSweepChristmasTree(). |
|
check the first pass through the grammar in a multi-sweep christmas tree.
Definition at line 3547 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), getNextChunk(), getNextChunkUnevenCheck(), tapeChunk< T >::isEmpty(), turing_machine< T >::run_one(), and tapeChunk< T >::tapeConfig. Referenced by checkMultiSweepChristmasTreeGrammar(). |
|
check the first pass through the grammar in a multi-sweep christmas tree.
Definition at line 3669 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), getNextChunk(), getNextChunkUnevenCheck(), tapeChunk< T >::isEmpty(), and tapeChunk< T >::tapeConfig. Referenced by checkMultiSweepChristmasTreeGrammar(). |
|
test if the machine is a counter
Definition at line 3464 of file non_halt_detection.hpp. References turing_machine< T >::reverseMachine(), and testCounter(). |
|
run a machine for a while to establish a sweeping motion
Definition at line 3492 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by checkMultiSweepChristmasTree(). |
|
extract the components in a counter.
Definition at line 3302 of file non_halt_detection.hpp. References checkCounterRun(), tapeChunk< T >::emptyTape(), tapeChunk< T >::fillTape(), and tapeChunk< T >::length(). Referenced by testCounter(). |
|
finds an additional middle portion of the tape given a tape before and after a sweep of a christmas tree.
Definition at line 396 of file non_halt_detection.hpp. References tapeChunk< T >::fillTape(), and tapeChunk< T >::tapeConfig. Referenced by checkLeaningChristmasTree(), and checkMultiSweepChristmasTree(). |
|
get the next location of a blank cell in a counter. machine to check location of previous right bound location of previous left bound current step counter of machine max limit to go to
Definition at line 3002 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by testCounter(). |
|
get the next chunk of the tape after performing a transformation in the christmas tree grammars. runs the machine according to the following conditions. if stopAtLeftBound runs the machine until the read head hits leftBound. if stopAtRightBoudn runs the machine until the read head hits right bound. if neither runs the machine until the specified stopPointCounter. returns the tapeChunk representative of the tape between leftBound and rightBound after the transformation. returns blank tape if left or right bounds are breached when they shouldn't be
Definition at line 437 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by checkLeaningChristmasTreeGrammar(), checkMultiSweepFirstPass(), and checkMultiSweepSecondPass(). |
|
specialized version of getNextChunk this version is run for transitions that push the left bound in alternating christmas trees picks up uneven alternating christmas tree. get the next chunk of the tape after performing a transformation in the christmas tree grammars. runs the machine according to the following conditions. if stopAtLeftBound runs the machine until the read head hits leftBound. if stopAtRightBoudn runs the machine until the read head hits right bound. if neither runs the machine until the specified stopPointCounter. returns the tapeChunk representative of the tape between leftBound and rightBound after the transformation. returns blank tape if left or right bounds are breached when they shouldn't be
Definition at line 911 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), tapeChunk< T >::fillTape(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by checkMultiSweepFirstPass(), and checkMultiSweepSecondPass(). |
|
specialized version of getNextRightBound for leaning christmas trees.
Definition at line 1882 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by checkLeaningChristmasTree(). |
|
get the next right extremum in the back and forth sweeping motion of a christmas tree.
Definition at line 300 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), turing_machine< T >::nextMove(), and turing_machine< T >::run_one(). Referenced by checkMultiSweepChristmasTree(). |
|
check if element is in set
Definition at line 221 of file non_halt_detection.hpp. Referenced by subsetLoop(). |
|
recursive back track helper.
Definition at line 136 of file non_halt_detection.hpp. References localTape< T >::allOneValue(), localTape< T >::currentPosition, and localTape< T >::tapeConfig. Referenced by backTrack(). |
|
leaning christmas tree non halt detection routine (checks mirror machines).
Definition at line 2126 of file non_halt_detection.hpp. References checkLeaningChristmasTree(), and turing_machine< T >::reverseMachine(). |
|
subset loop non halt detection. searches for an inescapable set of states in machine
Definition at line 273 of file non_halt_detection.hpp. References turing_machine< T >::haltState(), turing_machine< T >::stateSet(), and subsetLoop(). |
|
check for christmas tree non-halter (mirror machines as well).
Definition at line 3961 of file non_halt_detection.hpp. References checkMultiSweepChristmasTree(), and turing_machine< T >::reverseMachine(). |
|
Simple loop detection algorithm.
Definition at line 70 of file non_halt_detection.hpp. References turing_machine< T >::access_tape(), turing_machine< T >::access_tape_read_write(), turing_machine< T >::blank_tape(), turing_machine< T >::get_current_state(), turing_machine< T >::resetMachine(), and turing_machine< T >::run_one(). |
|
subset loops helper function. searches for an inescapable set of states given a starting state
Definition at line 239 of file non_halt_detection.hpp. References isIn(). Referenced by loopStates(). |
|
test if the machine is a counter
Definition at line 3357 of file non_halt_detection.hpp. References turing_machine< T >::access_tape_read_write(), extractCounterElements(), tapeChunk< T >::fillTape(), turing_machine< T >::get_current_state(), getNextBlankLocation(), turing_machine< T >::nextMove(), turing_machine< T >::resetMachine(), and turing_machine< T >::run_one(). Referenced by counter(). |