let premap : ('-> 'b) -> ('b, 'r) withres -> ('a, 'r) withres =
      fun ab wbr -> { cons = ab %> wbr.cons; fin = wbr.fin; }