anchor.diff:      | App(t, ts) ->
         S.mk_Tm_app fstar_tactics_App
                   [S.as_arg (embed_term t);
  -                 S.as_arg (embed_list ts embed_term fstar_tactics_term)]
  +                 S.as_arg (embed_list embed_term fstar_tactics_term ts)]
                   None
                   Range.dummyRange
   
  
positive.code:             S.mk_Tm_app (S.mk_Tm_uinst (lid_as_data_tm FStar.Syntax.Const.cons_lid) [U_zero])
                          [S.iarg t_a;
                           S.as_arg (embed_a hd);
                           S.as_arg (embed_list tl embed_a t_a)]
                          None
                          Range.dummyRange
  
  let rec unembed_list (l:term) (unembed_a: (term -> 'a)) : list<'a> =
      let l = U.unascribe l in
      let hd, args = U.head_and_args l in
      match (U.un_uinst hd).n, args with
  
negative.code:      Some (unembed_a a)
     | _ -> failwith "Not an embedded option"
  
  let rec embed_list (embed_a: ('a -> term)) (t_a:term) (l:list<'a>) : term =
      match l with
      | [] -> S.mk_Tm_app (S.mk_Tm_uinst (lid_as_data_tm FStar.Syntax.Const.nil_lid) [U_zero])
                          [S.iarg t_a]
  