(***********************************************************************)
(*                                                                     *)
(*                                 GALAX                               *)
(*                              XQuery Engine                          *)
(*                                                                     *)
(*  Copyright 2001-2003, Lucent Technologies.                          *)
(*  Distributed only by permission.                                    *)
(*                                                                     *)
(***********************************************************************)

(* $Id: optim_vars.mli,v 1.1 2003/05/21 15:03:49 simeon Exp $ *)

(* Module: Path_varlists
   Description:
     This module implements operations on variable for optimized
     projection.
*)

(* Type representing a set of optimization variables *)

type optim_vars

(* The set of all optimization variables *)

val all_optimvars : optim_vars

(* The empty set *)

val empty_optimvars : optim_vars

(* Creates a singleton set with one optimization variable inside *)

val single_optimvars : Xquery_ast.vname -> optim_vars

(* Is a given variable in the given set of optimization variables ? *)

val member : Xquery_ast.vname -> optim_vars -> bool

(* The union of two sets of optimization variables *)

val union : optim_vars -> optim_vars -> optim_vars

(* The intersection between two sets of optimization variables *)

val intersection : optim_vars -> optim_vars -> optim_vars

(* Removes one variable from a set of optimization variables *)

val remove : Xquery_ast.vname -> optim_vars -> optim_vars

