anchor.diff:  let tacprint2 (s:string) x y   = BU.print1 "TAC>> %s\n" (BU.format2 s x y)
   let tacprint3 (s:string) x y z = BU.print1 "TAC>> %s\n" (BU.format3 s x y z)
   
  -(* TODO: If I define this as *)
  -(*     (U.comp_to_comp_typ c).result_typ *)
  -(*     then I get  *)
  -(*     Unexpected error; please file a bug report, ideally with a minimized version of the source program that triggered the error. *)
  -(*     Assertion failed: Computation type without universe *)
   let comp_to_typ (c:comp) : typ =
       match c.n with
       | Total (t, _)
  
positive.code:     bind cur_goal (fun goal ->
      bind (__tc goal.context tm) (fun (tm, t, guard) ->
      let bs, comp = U.arrow_formals_comp t in
      if not (U.is_lemma_comp comp) then fail "not a lemma" else
      let uvs, implicits, subst =
         List.fold_left (fun (uvs, guard, subst) (b, aq) ->
                 let b_t = SS.subst subst b.sort in
  
negative.code:        bs
      in
      let uvs = List.rev uvs in
      let pre  = SS.subst subst pre in
      let post = SS.subst subst post in
      bind (do_unify goal.context (U.mk_squash U_zero post) goal.goal_ty) (fun b ->
      if not b
      then fail3 "Cannot instantiate lemma %s (with postcondition: %s) to match goal (%s)"
  