let out_str = function
| MQCons s -> con s
- | MQRVar s -> out_rvar s
- | MQSVar s -> out_svar s
+ | MQSRVar s -> out_rvar s
+ | MQSSVar s -> out_svar s
| MQFunc (f, r) -> out_func f ^ out_rvar r
| MQMConclusion -> key "mainconclusion"
| MQConclusion -> key "conclusion"
| MQPattern p -> key "pattern" ^ out_pat p
| MQUnion (l1, l2) -> sep "(" ^ out_list l1 ^ key "union" ^ out_list l2 ^ sep ")"
| MQIntersect (l1, l2) -> sep "(" ^ out_list l1 ^ key "intersect" ^ out_list l2 ^ sep ")"
- | MQRVarOccur v -> key "rvaroccur" ^ v
+ | MQLRVar v -> key "rvaroccur" ^ v
+ | MQLetIn (v, l1, l2) ->
+ key "let " ^ out_rvar v ^ " = " ^ out_list l1 ^ key " in " ^ out_list l2
+ | MQLetRef v -> out_rvar v
let out_query = function
| MQList l -> out_list l
| Meta (i, _) -> l
| Sort s -> l
| Implicit -> l
- | Abst u -> l
| Var u -> inspect_uri main l u None None v
| Const (u, i) -> inspect_uri main l u None None v
| MutInd (u, i, t) -> inspect_uri main l u (Some t) None v
let mqs = if b then MQMConclusion else MQConclusion in
MQSelect (rvar,
MQUse (MQPattern r, svar),
- MQIs (MQSVar svar, mqs)
+ MQIs (MQSSVar svar, mqs)
)
let rec build_inter n = function
in
compose_universe !universe
in
- MQSelect (
- "uri", query,
- MQSubset (
- MQSelect (
- "uri2",
- MQUsedBy (MQRVarOccur "uri", "pos"),
- MQOr (
- MQIs (MQSVar "pos", MQConclusion),
- MQIs (MQSVar "pos", MQMConclusion)
+ MQLetIn (
+ "universe",universe,
+ MQSelect (
+ "uri", query,
+ MQSubset (
+ MQSelect (
+ "uri2",
+ MQUsedBy (MQLRVar "uri", "pos"),
+ MQOr (
+ MQIs (MQSSVar "pos", MQConclusion),
+ MQIs (MQSSVar "pos", MQMConclusion)
+ )
+ ),
+ MQLetRef "universe"
)
- ),
- universe
)
)
;;