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); } }
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)); } } } }