anchor.diff:  let as_tprims (id : lident) : option<tprims> =
       if is_prim_ns id.ns then
           match id.ident.idText with
  -        | "Tuple2" -> Some (Tuple 2)
  -        | "Tuple3" -> Some (Tuple 3)
  -        | "Tuple4" -> Some (Tuple 4)
  -        | "Tuple5" -> Some (Tuple 5)
  -        | "Tuple6" -> Some (Tuple 6)
  -        | "Tuple7" -> Some (Tuple 7)
  +        | "Tuple2" | "DTuple2" -> Some (Tuple 2)
  +        | "Tuple3" | "DTuple3" -> Some (Tuple 3)
  +        | "Tuple4" | "DTuple4" -> Some (Tuple 4)
  +        | "Tuple5" | "DTuple5" -> Some (Tuple 5)
  +        | "Tuple6" | "DTuple6" -> Some (Tuple 6)
  +        | "Tuple7" | "DTuple7" -> Some (Tuple 7)
           | "exn"    -> Some Exn
           | _        -> None
       else
  
positive.code: let is_xtuple (x : lident) =
      if is_prim_ns x.ns then
          match x.ident.idText with
          | "MkTuple2" -> Some 2
          | "MkTuple3" -> Some 3
          | "MkTuple4" -> Some 4
          | "MkTuple5" -> Some 5
          | "MkTuple6" -> Some 6
          | "MkTuple7" -> Some 7
          | _          -> None
      else
          None
  
negative.code:             | { n = Exp_fvar (c, false) } ->
                  let subns = String.concat "." (List.map (fun x -> x.idText) c.v.ns) in
                  let rn, subnsl = match List.rev c.v.ns with [] -> "", [] | h::t -> h.idText, List.rev t in
                  (match smap_try_find record_constructors subns, args with
                  | Some _, [arg] ->
                      MLE_Proj (arg, (path_of_ns mlenv subnsl, c.v.ident.idText))
                  | Some _, arg::args ->
                      MLE_App (MLE_Proj (arg, (path_of_ns mlenv subnsl, c.v.ident.idText)), args)
                  | _ -> MLE_App (mlexpr_of_expr mlenv rg lenv sube, args))
              | _ -> MLE_App (mlexpr_of_expr mlenv rg lenv sube, args)
  