anchor.diff:              (p_trigger trigger))) term_doc)
     | _ -> p_simpleTerm ps pb e
   
  -and alt_p_typ ps pb e = with_comment (alt_p_typ' ps pb) e e.range "!41"
  -
  -and alt_p_typ' ps pb e = p_tmArrow (Binders (4, 0)) p_tmFormula e
  +and alt_p_typ style ps pb e = with_comment (alt_p_typ' style ps pb) e e.range "!41"
  +
  +and alt_p_typ' style ps pb e = p_tmArrow style p_tmFormula e
   
   and p_quantifier e = match e.tm with
       | QForall _ -> str "forall"
  
positive.code: and is_meta_qualifier aq =
    match aq with
    | Some (Meta _) -> true
    | _ -> false
  
  (* is_atomic is true if the binder must be parsed atomically *)
  
negative.code:   | _ -> group (ifflat ((separate sep terms') ^^ space ^^ last_op ^^ List.hd last)
               (prefix n 1 (group ((ifflat (separate sep terms')
                    (jump2 ((single_line_arg_indent ^^ separate (sep ^^ single_line_arg_indent) (List.map (fun x -> align (hang 2 x)) terms'))))))) (align (hang last_n (last_op ^^ List.hd last)))))
  
  and all_binders_annot e =
    let rec all_binders e l =
      match e.tm with
      | Product(bs, tgt) -> if List.for_all is_binder_annot bs then all_binders tgt (l+ List.length bs) else (false, 0)
      | _ -> (true, l+1)
    in
    let b, l = all_binders e 0 in
    if b && l > 1 then true else false
  
  and p_tmArrow' p_Tm e = match e.tm with
    | Product(bs, tgt) -> (List.map (fun b -> p_binder false b) bs) @ (p_tmArrow' p_Tm tgt)
  