To RUN: Save all related files in one directory (i.e. utilities.pl, reducer.pl, satisfier.pl, main.pl, your_turing_machine.pl, your_interpretation.pl). Start the SWI-Prolog Interpeter (or your favorite Prolog Interperter). You may need to rename the file extensions to .pro on some prolog implementations. Consult the files "utilities.pl, reducer.pl, satisfier.pl, main.pl" . ?- [utilities,reducer, satisfier, main]. Call main. ?- main. You will be prompted for the file name for the turing machine, then the file name for the truth assignments. Provide these without the .pl extension. Don't forget to end all your answers with the dot "." . Also don't forget to specify the max(...) predicate in the file for the Turing Machine. This is the equivalent of p(n) and determinies the length of each ID. You are now ready to run queries. You have the following queries available. To get the full boolean expression ?- try( expression). To get the expression for "next move right" ?- try( next_move_right). To get the expression for "starts right" ?- try( starts_right). To get the expression for "finishes right" ?- try( finishes_right). To get the expression for N_{i} ?- try( ni(xxx)). /* Formula for one complete row. xxx must be a number in the range 0..p(n)-1 */ To get the expression for A_{i,j} ?- try( a(i,j)). /* Formula for a specific a(...) term. i,j must be numbers. i in the range 0..p(n)-1, j in the range 0..p(n). Covers the case where the ID contains a final state */ To get the expression for B_{i,j} ?- try( b(i,j)). /* Formula for a specific b(...) term. i,j must be numbers */