public override object Congruence(CongruenceExplanation target, Action <Term> arg) { arg(target.source); arg(target.target); foreach (var eq in target.sourceArgumentEqualities) { visit(eq, arg); } return(null); }
public override object Congruence(CongruenceExplanation target, Tuple <InfoPanelContent, PrettyPrintFormat, bool, int> arg) { var content = arg.Item1; var format = arg.Item2; var shouldPrintSource = arg.Item3; var indent = arg.Item4; var indentString = getIndentString(format, indent); if (shouldPrintSource) { content.Append(indentString); target.source.PrettyPrint(content, format, indent); } content.switchToDefaultFormat(); content.Append($"\n{indentString}= (congruence)\n"); if (format.CurrentEqualityExplanationPrintingDepth < format.MaxEqualityExplanationPrintingDepth) { content.Append($"{indentString}\n{indentString}{PrintConstants.indentDiff}Argument Equalities:\n"); var recursiveArg = Tuple.Create(content, format.NextEqualityExplanationPrintingDepth(), true, indent); visit(target.sourceArgumentEqualities.First(), recursiveArg); foreach (var eqality in target.sourceArgumentEqualities.Skip(1)) { content.switchToDefaultFormat(); content.Append($"\n{indentString}{PrintConstants.indentDiff}\n"); visit(eqality, recursiveArg); } content.switchToDefaultFormat(); content.Append($"\n{indentString}\n"); } content.Append(indentString); target.target.PrettyPrint(content, format, indent); return(null); }