//Refinnig the statement shape and priority private void PaternRefine() { string temp; //Remov all double negiations if (PL_Statement.Contains("¬¬")) { PL_Statement = PL_Statement.Replace("¬¬", ""); } for (int i = 0; i < Letters.Length; i++) { temp = "¬(¬" + Letters[i] + ")"; PL_Statement = PL_Statement.Replace(temp, Letters[i]); } //Replace all occurrnces of "¬(A)" with "(¬A)" for (int i = 0; i < Letters.Length; i++) { temp = "¬(" + Letters[i] + ")"; PL_Statement = PL_Statement.Replace(temp, "(¬" + Letters[i] + ")"); } //Replace all occurrnces of "¬A" with "(¬A)" for (int i = 0; i < Letters.Length; i++) { temp = "¬" + Letters[i]; PL_Statement = PL_Statement.Replace(temp, "(¬" + Letters[i] + ")"); } //Replace all occurrnces of "((¬A))" with "(¬A)" for (int i = 0; i < Letters.Length; i++) { temp = "((¬" + Letters[i] + "))"; PL_Statement = PL_Statement.Replace(temp, "(¬" + Letters[i] + ")"); } //Replace all occurrnces of "(A)" with "A" for (int i = 0; i < Letters.Length; i++) { temp = "(" + Letters[i] + ")"; PL_Statement = PL_Statement.Replace(temp, Letters[i]); } }
//Constructor public PL_Dash1(string statement) : base() { sysOperators = new char[] { '¬', '→' }; StringBuilder sb = new StringBuilder("("); sb.Append(statement.Trim()); sb.Replace(" ", ""); //Remove all white spaces. sb.Append(")"); PL_Statement = sb.ToString(); Letters = PL_Statement.Split(new char[] { '¬', '→', '(', ')' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray(); //Extract operands from the equation. if (Letters.Length == 0) { throw new MalFormedException("Empty statement"); } Array.Sort(Letters); isWFF = IsWFF; TruthTable = new TruthTable(this); }