Пример #1
0
 private void GenerateHoudiniVarsForContract(ContractDefinition contract, Dictionary <int, BoogieExpr> houdiniVarMap)
 {
     foreach (int id in houdiniVarMap.Keys)
     {
         string         varName    = GetHoudiniVarName(id, contract);
         BoogieConstant houdiniVar = new BoogieConstant(new BoogieTypedIdent(varName, BoogieType.Bool));
         houdiniVar.Attributes = new List <BoogieAttribute>()
         {
             new BoogieAttribute("existential", true)
         };
         context.Program.AddDeclaration(houdiniVar);
     }
 }
Пример #2
0
        private void GenerateConstants()
        {
            BoogieConstant nullConstant = new BoogieConstant(new BoogieTypedIdent("null", BoogieType.Ref), true);

            context.Program.AddDeclaration(nullConstant);

            // constants for contract names
            BoogieCtorType tnameType = new BoogieCtorType("ContractName");

            foreach (ContractDefinition contract in context.ContractDefinitions)
            {
                BoogieTypedIdent typedIdent           = new BoogieTypedIdent(contract.Name, tnameType);
                BoogieConstant   contractNameConstant = new BoogieConstant(typedIdent, true);
                context.Program.AddDeclaration(contractNameConstant);
                foreach (var node in contract.Nodes)
                {
                    if (node is StructDefinition structDefn)
                    {
                        var structTypedIdent = new BoogieTypedIdent(structDefn.CanonicalName, tnameType);
                        context.Program.AddDeclaration(new BoogieConstant(structTypedIdent, true));
                    }
                }
            }
        }