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 p_quantifier e = match e.tm with
       | QForall _ -> str "forall"
       | QExists _ -> str "exists"
  
positive.code:      has_fsdoc: bool;
       is_fsdoc: bool} //is a standalone fsdoc
  let dummy_meta = {r = dummyRange; has_qs = false; has_attrs = false; has_fsdoc = false; is_fsdoc = false}
  
  // TODO: rewrite in terms of with_comment_sep
  let with_comment printer tm tmrange origin =
  
negative.code:   (* TODO : this should be refined when head is an applicative pattern (function definition) *)
    let pat, ascr_doc =
      match pat.pat with
      | PatAscribed (pat, (t, None)) -> pat, group (colon ^^ space ^^ p_tmArrow (Arrows (2, 2)) p_tmNoEq t)
      | PatAscribed (pat, (t, Some tac)) -> pat, group (colon ^^ space ^^ p_tmArrow (Arrows (2, 2)) p_tmNoEq t) ^^ group (str "by" ^^ space ^^ p_atomicTerm tac)
      | _ -> pat, empty
    in
    match pat.pat with
  