anchor.diff:               fail (BU.format1
                        "Pattern matching a constant that does not have decidable equality: %s"
                        (Print.const_to_string c)));
  -          let _, e_c, _, _ = PatternUtils.pat_as_exp false env p in
  +          let _, e_c, _, _ = PatternUtils.pat_as_exp false false env p in
             let e_c, lc, g = tc_tot_or_gtot_term env e_c in
             Rel.force_trivial_guard env g;
             let expected_t = expected_pat_typ env p0.p t in
  
positive.code:     let rec aux env us bs =
        match bs with
        | [] ->
          bind_opt (universe_of_well_typed_term env (U.comp_result c)) (fun uc ->
          Some (mk_tm_type (S.U_max (uc::us))))
  
        | ({binder_bv=x;binder_qual=imp})::bs ->
          // BU.print2 "type_of_well_typed_term computed universe of %s as : %s\n"
  
negative.code:                             | _ -> true)
            in
            let simple_bvs, simple_pat_e, g0, simple_pat_elab =
                PatternUtils.pat_as_exp false false env simple_pat
            in
            if List.length simple_bvs <> List.length sub_pats
            then failwith (BU.format4 "(%s) Impossible: pattern bvar mismatch: %s; expected %s sub pats; got %s"
  