Пример #1
0
        public override bool Visit(VCExprVar node, bool arg)
        {
            Contract.Requires(node != null);
            if (!BoundTermVars.Contains(node) && !KnownVariables.Contains(node))
            {
                string printedName = Namer.GetQuotedName(node, node.Name);
                Contract.Assert(printedName != null);
                RegisterType(node.Type);
                string decl =
                    "(declare-fun " + printedName + " () " + TypeToString(node.Type) + ")";
                if (!(printedName.StartsWith("assume$$") || printedName.StartsWith("soft$$") ||
                      printedName.StartsWith("try$$")))
                {
                    AddDeclaration(decl);
                }

                KnownVariables.Add(node);
                if (declHandler != null)
                {
                    declHandler.VarDecl(node);
                }
            }

            return(base.Visit(node, arg));
        }
Пример #2
0
 protected void AddKnownVariables(IDictionary <int, string> knownVariables)
 {
     foreach (var item in knownVariables)
     {
         KnownVariables.Add(item.Key, item.Value);
     }
 }
Пример #3
0
 public void AddKnownVariable(VCExprVar variable)
 {
     if (KnownVariables.Contains(variable))
     {
         return;
     }
     KnownVariables.Add(variable);
 }
Пример #4
0
 public void AddKnownVariable(VCExprVar variable)
 {
     if (KnownVariables.Contains(variable))
     {
         return;
     }
     KnownVariables.Add(variable);
     if (declHandler != null)
     {
         declHandler.VarDecl(variable);
     }
 }
Пример #5
0
        public override bool Visit(VCExprVar node, bool arg)
        {
            Contract.Requires(node != null);
            if (!BoundTermVars.Contains(node) && !KnownVariables.Contains(node))
            {
                string printedName = Namer.GetQuotedName(node, node.Name);
                Contract.Assert(printedName != null);
                RegisterType(node.Type);
                string decl =
                    "(declare-fun " + printedName + " () " + TypeToString(node.Type) + ")";
                AddDeclaration(decl);
                KnownVariables.Add(node);
            }

            return(base.Visit(node, arg));
        }
Пример #6
0
        private static void AddFormulaNode(List <BaseFormulaNode> nodes, string variableName, bool isNegative)
        {
            // Known variable kinda Pi, E, etc...
            if (KnownVariables.TryGetValue(variableName, out var value))
            {
                if (isNegative)
                {
                    value *= -1;
                }

                var valNode = new NumberNode(value);
                nodes.Add(valNode);
            }
            else
            {
                var varNode = new VariableNode(variableName, isNegative);
                nodes.Add(varNode);
            }
        }