Skip to content

[feat] Added TTA sync strategies #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Rule.fs
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,6 @@ let normalize(rule.Rule(_, body, head)) =
let eqs = List.concat eqs

clARule (atoms @ eqs) head

let fold f z (Rule(_, body, head)) =
List.fold f z (head::body)
3 changes: 2 additions & 1 deletion Terms.fs
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,9 @@ module Terms =
let mapFold = List.mapFold
let map = List.map

let length = List.length
let collectFreeVars = List.collect Term.collectFreeVars >> List.unique

let numVars ts = collectFreeVars ts |> List.length
let generateVariablesFromVars vars = List.map Term.generateVariableWithPrefix vars
let generateVariablesFromOperation = Operation.argumentTypes >> List.map Term.generateVariable

Expand Down
2 changes: 1 addition & 1 deletion Tests/SolverRuns.fs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,6 @@ type SampleSolverTests () =
member x.tta_mccarthy () =
x.RunTTAAloneCVCTIP "mccarthy91_M2.smt2" ".tta" 10

[<Test; Ignore("tta does not yet work")>]
[<Test>]
member x.tta_prop20 () =
x.RunTTAAloneCVCTIP "prop_20.smt2" ".tta" 10
37 changes: 35 additions & 2 deletions Tests/Transformations.fs
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ type TTATests () =
[<Test>]
member x.ltZSPattern () =
let ttaTraverser = TtaTransform.ToTTATraverser(1)
let pred = predicate "isEven" [nat]
let xs = [Z; S (S nNat)]
let pred = predicate "lt" [nat; nat]
let xs = [Z; S nNat]
let automaton = ttaTraverser.GetOrAddApplicationAutomaton pred xs
let decls = List.map toString automaton.Declarations
()
Expand All @@ -100,6 +100,7 @@ type TTATests () =
let automaton = ttaTraverser.GetOrAddApplicationAutomaton pred xs
let decls = List.map toString automaton.Declarations
()

[<Test>]
member x.patternLeafNode () =
let ttaTraverser = TtaTransform.ToTTATraverser(2)
Expand All @@ -117,3 +118,35 @@ type TTATests () =
let automaton = ttaTraverser.GetOrAddApplicationAutomaton pred xs
let decls = List.map toString automaton.Declarations
()

[<Test>]
member x.strategiesTest1 () =
let ttaTraverser = TtaTransform.ToTTATraverser(2)
let pred = predicate "pred" [tree; tree]
let patterns = [
TtaTransform.Pattern([leaf; node xTree yTree])
TtaTransform.Pattern([node xTree yTree; node vTree wTree])
TtaTransform.Pattern([xTree; yTree])
]
let auts = ttaTraverser.GeneratePatternAutomata true pred patterns
()

[<Test>]
member x.strategiesTest2 () =
let ttaTraverser = TtaTransform.ToTTATraverser(2)
let pred = predicate "pred" [tree; tree]
let patterns = [
TtaTransform.Pattern([xTree; yTree])
]
let auts = ttaTraverser.GeneratePatternAutomata true pred patterns
()

[<Test>]
member x.strategiesTest3 () =
let ttaTraverser = TtaTransform.ToTTATraverser(2)
let pred = predicate "pred" [tree; tree]
let patterns = [
TtaTransform.Pattern([node xTree yTree; node vTree wTree])
]
let auts = ttaTraverser.GeneratePatternAutomata true pred patterns
()
Loading