anchor.diff:              else U.comp_effect_name c |> Some in
             join_effects eff_hd_and_args eff_app
   
  -        | _ -> None)
  -  | Tm_ascribed (_, (Inl t, _), _) -> None
  +        | _ -> (* BU.print_string "Arrow type did not turn out to be an arrow?\n"; *) None)
  +  | Tm_ascribed (t, (Inl _, _), _) -> effect_of_well_typed_term env t
     | Tm_ascribed (_, (Inr c, _), _) ->
       let c_eff = U.comp_effect_name c in
       if lid_equals c_eff Const.effect_Tot_lid ||
  
positive.code:   | Tm_refine _ -> Const.effect_Tot_lid |> Some
    | Tm_app (hd, args) ->
      let join_effects eff1_opt eff2_opt =
        if eff1_opt |> is_none || eff2_opt |> is_none then None
        else
          let Some eff1, Some eff2 = eff1_opt, eff2_opt in
          let tot, gtot = Const.effect_Tot_lid, Const.effect_GTot_lid in
  
          if lid_equals eff1 tot && lid_equals eff2 tot then Some tot
          else if (lid_equals eff1 gtot ||
                   lid_equals eff1 tot)
               && (lid_equals eff2 gtot ||
                   lid_equals eff2 gtot) then Some gtot
          else None in
  
      let eff_hd = effect_of_well_typed_term env hd in
  
negative.code:       args
        |> List.map fst
        |> List.map (effect_of_well_typed_term env) in
      // BU.print4 "Effect of hd %s is %s, and effects for args %s are %s\n"
      //   (Print.term_to_string hd)
      //   (match eff_hd with | None -> "None" | Some l -> Ident.string_of_lid l)
      //   (Print.args_to_string args)
      //   (List.fold_left (fun acc l -> acc ^ "; " ^ (match l with | None -> "None" | Some l -> Ident.string_of_lid l)) "" eff_args);
      let eff_hd_and_args = List.fold_left join_effects eff_hd eff_args in
      if eff_hd_and_args |> is_none then
        (* let _ = BU.print_string "eff_hd_and_args turned out to be None\n" in *) None
      else
        let t_hd = type_of_well_typed_term env hd in
        // if Env.debug env <| Options.Other "FastImplicits"
        // then BU.print2 "Computing type of hd %s to be %s\n" (Print.term_to_string hd)
        //        (match t_hd with | None -> "None" | Some k -> Print.term_to_string k);
        if t_hd = None then None
        else
          let Some t_hd = t_hd in
  