Beispiel #1
0
 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);
        }