这是本机CVC语言中的一个示例:
isblue: STRING -> BOOLEAN;
ASSERT isblue("sky");
ASSERT isblue("water");
QUERY isblue("sky"); //valid
QUERY isblue("pig"); //invalid我如何使用C++ API为CVC4编写它?找不到任何关于如何做到这一点的文档。
发布于 2014-11-30 00:29:59
源发行版中有一些API示例可能对您有所帮助。特别是,示例/api/组合。api创建了一些函数和谓词,并做出了一些断言:
https://github.com/CVC4/CVC4/blob/master/examples/api/combination.cpp
在您的示例中,您将使用ExprManager::mkFunctionType()创建一个谓词类型,然后使用ExprManager::mkVar()构造一个"isblue“谓词,使其具有该类型。它将如下所示(假设您已经完成了“使用命名空间CVC4”并包含了):
ExprManager em;
SmtEngine smt(&em);
Type predType = em.mkFunctionType(em.stringType(), em.booleanType());
Expr isblue = em.mkVar(predType);然后可以断言和查询谓词的应用程序:
smt.assertFormula(em.mkExpr(kind::APPLY_UF, isblue, em.mkConst(String("sky"))));
smt.assertFormula(em.mkExpr(kind::APPLY_UF, isblue, em.mkConst(String("water"))));
smt.query(em.mkExpr(kind::APPLY_UF, isblue, em.mkConst(String("sky"))));
smt.query(em.mkExpr(kind::APPLY_UF, isblue, em.mkConst(String("pig"))));https://stackoverflow.com/questions/27204949
复制相似问题