public override string ToString() { string t; bool isBin = Term.Args.Length == 2; if (Negated && Term.Name == "or") { Negated = false; Term = new Term("And", LogProcessor.NegateAll(Term.Args)); } if (isBin) { if (Term.Name.Any(char.IsLetterOrDigit)) { isBin = false; } } if (Term == null) { t = "(nil)"; } else if (isBin) { var content0 = new InfoPanelContent(); var content1 = new InfoPanelContent(); Term.Args[0].PrettyPrint(content0, PrettyPrintFormat.DefaultPrettyPrintFormat()); Term.Args[1].PrettyPrint(content1, PrettyPrintFormat.DefaultPrettyPrintFormat()); content0.finalize(); content1.finalize(); t = $"{content0} {Term.Name} {content1}"; } else { var content = new InfoPanelContent(); Term.PrettyPrint(content, PrettyPrintFormat.DefaultPrettyPrintFormat()); content.finalize(); t = content.ToString(); } return(string.Format("{0}p{1} {3}{2}", Negated ? "~" : "", Id, t, Implied == null ? "" : "[+" + Implied.Length + "] ")); }