anchor.diff:      let b = List.hd (SS.close_binders [b]) in
       Some (b, asc), aq
   
  -and desugar_ascription env t tac_opt : S.ascription * antiquotations =
  +and desugar_ascription env t tac_opt use_eq : S.ascription * antiquotations =
     let annot, aq0 =
       if is_comp_type env t
       then let comp = desugar_comp t.range true env t in
            (Inr comp, [])
       else let tm, aq = desugar_term_aq env t in
            (Inl tm, aq) in
  -  (annot, BU.map_opt tac_opt (desugar_term env)), aq0
  +  (annot, BU.map_opt tac_opt (desugar_term env), use_eq), aq0
   
   and desugar_args env args =
       args |> List.map (fun (a, imp) -> arg_withimp_t imp (desugar_term env a))
  
positive.code:       | Some b ->
          let env, bv = Env.push_bv env b in
          env, S.mk_binder bv in
      let asc = snd asc in
      let asc, aq = desugar_ascription env_asc asc None in
      //if scrutinee is a name, it may appear in the ascription
      //  substitute it with the (new or annotated) binder
      let asc =
  
negative.code:       let x = Syntax.new_bv (Some t3.range) (tun_r t3.range) in
        let t_bool = mk (Tm_fvar(S.lid_as_fv C.bool_lid delta_constant None)) in
        let t1', aq1 = desugar_term_aq env t1 in
        let t1' = U.ascribe t1' (Inl t_bool, None, false) in
        let asc_opt, aq0 = desugar_match_returns env t1' asc_opt in
        let t2', aq2 = desugar_term_aq env t2 in
        let t3', aq3 = desugar_term_aq env t3 in
  