src/HOL/Tools/Datatype/datatype_realizer.ML
changeset 33035 15eab423e573
parent 32952 aeb1e44fbc19
child 33338 de76079f973a
equal deleted inserted replaced
33034:66ef64a5f122 33035:15eab423e573
   134 
   134 
   135     val ivs = rev (Term.add_vars (Logic.varify (DatatypeProp.make_ind [descr] sorts)) []);
   135     val ivs = rev (Term.add_vars (Logic.varify (DatatypeProp.make_ind [descr] sorts)) []);
   136     val rvs = rev (Thm.fold_terms Term.add_vars thm' []);
   136     val rvs = rev (Thm.fold_terms Term.add_vars thm' []);
   137     val ivs1 = map Var (filter_out (fn (_, T) =>
   137     val ivs1 = map Var (filter_out (fn (_, T) =>
   138       tname_of (body_type T) mem ["set", "bool"]) ivs);
   138       tname_of (body_type T) mem ["set", "bool"]) ivs);
   139     val ivs2 = map (fn (ixn, _) => Var (ixn, valOf (AList.lookup (op =) rvs ixn))) ivs;
   139     val ivs2 = map (fn (ixn, _) => Var (ixn, the (AList.lookup (op =) rvs ixn))) ivs;
   140 
   140 
   141     val prf = List.foldr forall_intr_prf
   141     val prf = List.foldr forall_intr_prf
   142      (List.foldr (fn ((f, p), prf) =>
   142      (List.foldr (fn ((f, p), prf) =>
   143         (case head_of (strip_abs_body f) of
   143         (case head_of (strip_abs_body f) of
   144            Free (s, T) =>
   144            Free (s, T) =>