anchor.diff:      | _ -> merge xs
     in
     gather_stmts (fun _ -> merge) aux [s]
  -let build_codegen_success_stmts (env:env) (stmts:stmt list):exp =
  +let build_codegen_success_stmts (q:id) (env:env) (stmts:stmt list):exp =
     let empty = vaApp "ttrue" [] in
     let cons el e = match e with | None -> el | Some e -> vaApp "pbool_and" [e; el] in
  -  let slist = List.collect (build_codegen_success_stmt env) stmts in
  +  let slist = List.collect (build_codegen_success_stmt q env) stmts in
     List.fold cons empty (List.rev slist)
   
   // compute parameters/returns for procedures (abstract/concrete/lemma)
  
positive.code:   let rec aux (e:exp) (xs:exp option list) : exp option =
      match e with
      | ELoc (_, e) -> aux e xs
      | EApply (e, _, es, _) when is_id e && is_proc env (id_of_exp e) NotGhost ->
        let x = string_of_id (id_of_exp e) in
        let es = List.filter (fun e -> match e with EOp (Uop UGhostOnly, _, _) -> false | _ -> true) es in
        let es = List.map get_code_exp es in
  
negative.code:         fret_name = None;
          fret = tPbool;
          fspecs = [];
          fbody = Some (build_codegen_success_stmts p.pname env stmts);
          fattrs =
            if benv.is_quick then
              [(Id "opaque_to_smt", []); (Id "public_decl", []); (Id "qattr", [])] @ attrs @ attr_no_verify "admit" benv.proc.pattrs
  