anchor.diff:              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)]
  +                         S.as_arg (embed_list embed_a t_a tl)]
                           None
                           Range.dummyRange
   
  -let rec unembed_list (l:term) (unembed_a: (term -> 'a)) : list<'a> =
  +let rec unembed_list (unembed_a: (term -> 'a)) (l:term) : 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
  
positive.code:     }
  
  
  let embed_goals (l:list<goal>) : term = embed_list l embed_goal fstar_tactics_goal
  let unembed_goals (env:Env.env) (egs:term) : list<goal> = unembed_list egs (unembed_goal env)
  
  type state = list<goal> * list<goal>
  
  
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]
  