method bind (xs:VAR.t list) (pp:unit -> unit) =
    let mark = LogicId.mark space in
    let sigma0 = sigma in
    sigma <- List.fold_left
      (fun sigma x ->
         let xid = LogicId.push space (VAR.basename x) in
         VMAP.add x xid sigma)
      sigma xs ;
    try 
      pp () ;
      sigma <- sigma0 ;
      if not alpha then LogicId.unmark space mark ;
    with error ->
      sigma <- sigma0 ;
      if not alpha then LogicId.unmark space mark ;
      raise error