2013-04-04 15 views
0

rise4fun的教程提到了訪問MuZ的.Net API。但是,點擊任何提及的方法,例如To add a rule, call: Z3_datalog_add_rule將導致死鏈接。這些方法在哪裏描述,目前是否支持?。用於訪問MuZ的Net API

此外,與此問題沒有直接關係,但我注意到這些可能使用SMT-LIB API的示例使用define-fun命令。 .Net API中是否有等效函數?

謝謝

回答

1

感謝您報告損壞的鏈接。

鏈接:

http://rise4fun.com/Z3/tutorialcontent/group__capi.html#ga0d158891352456e6a4ac9ba398a75653 

應該已經指出:

http://research.microsoft.com/en-us/um/redmond/projects/z3/group__capi.html 

到.NET API函數對應的鏈接是:

http://research.microsoft.com/en-us/um/redmond/projects/z3/class_microsoft_1_1_z3_1_1_context.html 

注意,在最新版本的Z3, .NET API已經對使用的版本進行了重大修改4fun。 上面的鏈接描述了最新的.NET API。 在Z3的早期版本中使用的「傳統」 .NET API鏈接是:

http://research.microsoft.com/en-us/um/redmond/projects/z3/old/group__mapi.html 

這些鏈接收集:http://research.microsoft.com/en-us/um/redmond/projects/z3/

項目申報功能,在最新版本的.NET API是稱爲「MkFuncDecl」。它是一個上下文對象的方法。它有幾個過載:

FuncDecl MkFuncDecl (Symbol name, Sort[] domain, Sort range) 
FuncDecl MkFuncDecl (Symbol name, Sort domain, Sort range) 
FuncDecl MkFuncDecl (string name, Sort[] domain, Sort range) 
FuncDecl MkFuncDecl (string name, Sort domain, Sort range) 

上面提到的第二個鏈接帶你到這些函數的文檔。

+0

感謝您的及時迴應。你給的鏈接似乎指向C API。我估計下面的代碼應該做的伎倆(從F#):let testMuZ()= 讓ctx =新的上下文() 讓fp =新固定點(ctx) – 2013-04-04 16:18:18

+0

感謝您的快速響應。你給的鏈接似乎指向C API。基於其他Z3方法的樣子,我想下面的代碼應該做的(在F#中): let testMuZ()= let ctx = new Context()let fp = new Fixedpoint(ctx) 。 .. 但是,這給了我一個編譯器錯誤 Test.fs(134,12):錯誤FS0509:未找到方法或對象構造函數'固定點' 我檢查了源代碼(我沒有構建)和固定點.cs類存在於源代碼中。但編譯器似乎不認爲它包含在DLL – 2013-04-04 16:28:03

+0

關於MkFuncDecl,我知道這種方法。然而,在rise4fun(或許老api?)的例子是'(define-fun odd((x Int))Bool(=(mod x 2)1))',我想也許這樣的東西可以在新的API中訪問。它在使用量化約束方面非常方便。 – 2013-04-04 16:30:26