- | _, [], [] -> M.Select "obj" x onlyobj_val
- | [], _, [] -> M.Select "obj" x onlysort_val
- | [], [], _ -> M.Select "obj" x onlyrel_val
- | _, _, [] -> M.Select "obj" x (M.Test M.And onlyobj_val onlysort_val)
- | _, [], _ -> M.Select "obj" x (M.Test M.And onlyobj_val onlyrel_val)
- | [], _, _ -> M.Select "obj" x (M.Test M.And onlysort_val onlyrel_val)
- | _, _, _ -> M.Select "obj" x (M.Test M.And (M.Test M.And onlyobj_val onlysort_val) onlyrel_val)
+ | _, [], [] -> M.Select ("obj", x, onlyobj_val)
+ | [], _, [] -> M.Select ("obj", x, onlysort_val)
+ | [], [], _ -> M.Select ("obj", x, onlyrel_val)
+ | _, _, [] -> M.Select ("obj", x, lamp [onlyobj_val; onlysort_val])
+ | _, [], _ -> M.Select ("obj", x, lamp [onlyobj_val; onlyrel_val])
+ | [], _, _ -> M.Select ("obj", x, lamp [onlysort_val; onlyrel_val])
+ | _, _, _ -> M.Select ("obj", x, lamp [onlyobj_val; onlysort_val; onlyrel_val])