method alpha : 'a. 'a printer -> 'a printer = fun pp fmt data ->
    if alpha then pp fmt data
    else
      let mark = LogicId.mark space in
      alpha <- true ;
      try
        pp fmt data ;
        alpha <- false ;
        LogicId.unmark space mark ;
      with error ->
        alpha <- false ;
        LogicId.unmark space mark ;
        raise error