Skip to content
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