anchor.diff:          "MisMatch ("
           ^ string_of_option Print.delta_depth_to_string d1 ^ ") ("
           ^ string_of_option Print.delta_depth_to_string d2 ^ ")"
  -    | HeadMatch -> "HeadMatch"
  +    | HeadMatch u -> "HeadMatch " ^ string_of_bool u
       | FullMatch -> "FullMatch"
   
   let head_match = function
       | MisMatch(i, j) -> MisMatch(i, j)
  -    | _ -> HeadMatch
  +    | HeadMatch true -> HeadMatch true
  +    | _ -> HeadMatch false
   
   // GM: This is unused, maybe delete
  -let and_match m1 m2 =
  -    match m1 with
  -    | MisMatch (i, j) -> MisMatch (i, j)
  -    | HeadMatch -> begin match m2 () with
  -                   | MisMatch (i,j) -> MisMatch (i, j)
  -                   | _ -> HeadMatch
  -                   end
  -    | FullMatch -> m2 ()
  +(* let and_match m1 m2 = *)
  +(*     match m1 with *)
  +(*     | MisMatch (i, j) -> MisMatch (i, j) *)
  +(*     | HeadMatch u -> begin match m2 () with *)
  +(*                      | MisMatch (i,j) -> MisMatch (i, j) *)
  +(*                      | _ -> HeadMatch *)
  +(*                      end *)
  +(*     | FullMatch -> m2 () *)
   
   let fv_delta_depth env fv = match fv.fv_delta with
       | Delta_abstract d ->
  
positive.code:         let head, _ = U.head_and_args t in
          match (U.un_uinst head).n with
          | Tm_fvar fv ->
            if Env.lookup_definition [Env.Eager_unfolding_only] env fv.fv_name.v |> Option.isSome
            then N.normalize [N.Beta; N.Eager_unfolding] env t |> Some
            else None
          | _ -> None
      in
      let success d r t1 t2 = (r, (if d>0 then Some(t1, t2) else None)) in
      let fail r = (r, None) in
      let rec aux retry n_delta t1 t2 =
          let r = head_matches env t1 t2 in
          if Env.debug env <| Options.Other "RelDelta" then
  
negative.code: 
          let reduce_both_and_try_again (d:delta_depth) (r:match_result) =
            match Common.decr_delta_depth d with
            | None -> fail n_delta r t1 t2
            | Some d ->
              let t1 = normalize_refinement [N.UnfoldUntil d; N.Weak; N.HNF] env wl t1 in
              let t2 = normalize_refinement [N.UnfoldUntil d; N.Weak; N.HNF] env wl t2 in
  