static void XML(params int[] indices) { if (indices.Length == 0) { foreach (WExpr program in programs) { string s1 = program.ToString(); XElement xml = new XElement("WhileProgram", new XAttribute("NumVariables", program.GetNumVariables()), program.ToXML()); WExpr parsedProgram = WhileUtilities.ParseWhileProgramFromXML(xml); string s2 = parsedProgram.ToString(); Console.WriteLine(s1 == s2); } } else { foreach (int index in indices) { WExpr program = programs[index]; string s1 = program.ToString(); XElement xml = new XElement("WhileProgram", new XAttribute("NumVariables", program.GetNumVariables()), program.ToXML()); WExpr parsedProgram = WhileUtilities.ParseWhileProgramFromXML(xml); string s2 = parsedProgram.ToString(); Console.WriteLine(s1 == s2); } } }
static bool uselessVariables(WExpr program) { foreach (int var in program.GetUselessVariables()) { Console.Write($"{var}, "); Console.WriteLine(); } return(true); }
static void ProgramTest(programMethod body, params int[] indices) { string input; if (indices.Length == 0) { foreach (WExpr program in programs) { Console.WriteLine(program.ToString()); input = Console.ReadLine(); if (input == "exit") { return; } if (input == "skip") { continue; } if (input == "enter") { int x = 0; } if (!body(program)) { return; } } } else { foreach (int index in indices) { WExpr program = programs[index]; Console.WriteLine(program.ToString()); input = Console.ReadLine(); if (input == "exit") { return; } if (input == "skip") { continue; } if (input == "enter") { int x = 0; } if (!body(program)) { return; } } } }
static bool numGenerations(WExpr program) { //ProgramGenerator genNone = new ProgramGenerator(program, WEFilter.Filtermode.NONE, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial); ProgramGenerator genInputs = new ProgramGenerator(program, WEFilter.Filtermode.INPUTS, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial); WExpr newprogram; //int countNone = 0; //while (genNone.GenerateWExpr(out newprogram)) //{ // ++countNone; //} int countInputs = 0; while (genInputs.GenerateWExpr(out newprogram)) { ++countInputs; } //Console.WriteLine($"None: {countNone}, Inputs: {countInputs}"); return(true); }
//static bool toTMAndRun(WExpr program) //{ // TMCB<int, int> M = program.ToTMCB(-1); // foreach (int[][] input in WhileUtilities.NonNegIntTestInputs(program.GetNumVariables(), 4, program.GetUselessVariables().ToArray())) // { // Console.WriteLine("input:"); // Console.WriteLine(WhileUtilities.PrintTapes(input, M.blank)); // bool dummy; // int[][] output = M.Run(input, out dummy); // Console.WriteLine("output:"); // Console.WriteLine(WhileUtilities.PrintTapes(output, M.blank)); // string s = Console.ReadLine(); // if (s == "exit") // { // return false; // } // } // return true; //} static bool generate(WExpr program) { WExpr newProgram; ProgramGenerator gen = new ProgramGenerator(program, WEFilter.Filtermode.INFINITE, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial); while (gen.GenerateWExpr(out newProgram)) { Console.WriteLine(newProgram.ToString()); string s = Console.ReadLine(); if (s == "exit") { return(false); } if (s == "skip") { return(true); } } return(true); }
static bool toTM(WExpr program) { TMCB <int, int> M = program.ToTMCB(-1); return(true); }