src/HOLCF/Tools/Domain/domain_extender.ML
changeset 35518 3b20559d809b
parent 35517 0e2ef13796a4
child 35519 abf45a91d24d
equal deleted inserted replaced
35517:0e2ef13796a4 35518:3b20559d809b
   148     val dtnvs' =
   148     val dtnvs' =
   149       map (fn (dname,vs,mx) => (Sign.full_name thy dname,vs)) dtnvs;
   149       map (fn (dname,vs,mx) => (Sign.full_name thy dname,vs)) dtnvs;
   150     val eqs' : ((string * typ list) *
   150     val eqs' : ((string * typ list) *
   151         (binding * (bool * binding option * typ) list * mixfix) list) list =
   151         (binding * (bool * binding option * typ) list * mixfix) list) list =
   152       check_and_sort_domain false dtnvs' cons'' thy;
   152       check_and_sort_domain false dtnvs' cons'' thy;
   153     val thy = thy |> Domain_Syntax.add_syntax false eqs';
   153     val thy = Domain_Syntax.add_syntax eqs' thy;
   154     val dts  = map (Type o fst) eqs';
   154     val dts  = map (Type o fst) eqs';
   155     val new_dts = map (fn ((s,Ts),_) => (s, map (fst o dest_TFree) Ts)) eqs';
   155     val new_dts = map (fn ((s,Ts),_) => (s, map (fst o dest_TFree) Ts)) eqs';
   156     fun strip ss = drop (find_index (fn s => s = "'") ss + 1) ss;
   156     fun strip ss = drop (find_index (fn s => s = "'") ss + 1) ss;
   157     fun one_con (con,args,mx) =
   157     fun one_con (con,args,mx) =
   158         (Binding.name_of con,  (* FIXME preverse binding (!?) *)
   158         (Binding.name_of con,  (* FIXME preverse binding (!?) *)
   221       Domain_Isomorphism.domain_isomorphism
   221       Domain_Isomorphism.domain_isomorphism
   222         (map (fn ((vs, dname, mx, _), eq) =>
   222         (map (fn ((vs, dname, mx, _), eq) =>
   223                  (map fst vs, dname, mx, mk_eq_typ eq, NONE))
   223                  (map fst vs, dname, mx, mk_eq_typ eq, NONE))
   224              (eqs''' ~~ eqs'))
   224              (eqs''' ~~ eqs'))
   225 
   225 
   226     val thy = thy |> Domain_Syntax.add_syntax true eqs';
       
   227     val dts  = map (Type o fst) eqs';
   226     val dts  = map (Type o fst) eqs';
   228     val new_dts = map (fn ((s,Ts),_) => (s, map (fst o dest_TFree) Ts)) eqs';
   227     val new_dts = map (fn ((s,Ts),_) => (s, map (fst o dest_TFree) Ts)) eqs';
   229     fun strip ss = drop (find_index (fn s => s = "'") ss + 1) ss;
   228     fun strip ss = drop (find_index (fn s => s = "'") ss + 1) ss;
   230     fun one_con (con,args,mx) =
   229     fun one_con (con,args,mx) =
   231         (Binding.name_of con,   (* FIXME preverse binding (!?) *)
   230         (Binding.name_of con,   (* FIXME preverse binding (!?) *)