let locate s =
let query =
M.Property (true,M.RefineExact,["objectName"],[],[],[],[],false,(M.Const s) )
- in M.Log (false, true, M.StatQuery query)
+ in query
let unreferred target_pattern source_pattern =
let query =
M.Property(false,M.RefineExact,["refObj"],["h:occurrence"],[],[],[],true,(M.Const source_pattern))
))
- in M.Log (false, true, M.StatQuery query)
+ in query
let compose cl =
let letin = ref [] in
M.Property(true,M.RefineExact,[n],[],(cons false c),[],[],false,(M.Const ""))
in
let property_only n cl =
- let cll = List.map (cons true) cl in
+ let rec build = function
+ | [] -> []
+ | c :: tl ->
+ let r = (cons true) c in
+ if r = [] then build tl else r :: build tl
+ in
+ let cll = build cl in
M.Property(false,M.RefineExact,[n],[],!univ,cll,[],false,(M.Proj(None,(M.AVar "obj"))))
in
let rec aux = function
let f (vvar, msval) x = M.LetVVar(vvar,msval,x) in
iter f (fun x y z -> x (y z)) ! letin
in
- M.Log (false, true, M.StatQuery (letin_query (select_query must_query)))
+ letin_query (select_query must_query)
(* high-level functions ****************************************************)
in
let univ = match u with None -> [] | Some l -> [T.Universe l] in
compose (must @ only @ univ)
-