/// <summary> /// Traverses the tree. Generates, resolves and verifies each leaf node until a /// valid proof is found /// </summary> /// <param name="solution_tree"></param> /// <returns></returns> private void VerifySolutionList() { List <Solution> final = new List <Solution>(); // list of verified solutions Microsoft.Dafny.Program program; foreach (var list in solution_list.GetFinal()) { int index = 0; for (int i = 0; i < list.Count; i++) { index = i; var solution = list[i]; if (solution.isFinal) { final.Add(solution); break; } program = tacnyProgram.ParseProgram(); solution.GenerateProgram(ref program); tacnyProgram.MaybePrintProgram("debug" + i); tacnyProgram.ClearBody(solution.state.globalContext.md); tacnyProgram.VerifyProgram(); if (!tacnyProgram.HasError()) { final.Add(solution); break; } if (index == list.Count - 1) { final.Add(solution); } } } program = tacnyProgram.ParseProgram(); foreach (var solution in final) { solution.GenerateProgram(ref program); } }