datatype.ML
changeset 141 9cb51c2358ea
parent 129 0bba840aa07c
child 142 760641387b20
equal deleted inserted replaced
140:f745ff8bdb91 141:9cb51c2358ea
    93 end
    93 end
    94 
    94 
    95 val primrec_decl =
    95 val primrec_decl =
    96   let fun mkstrings((fname,tname),axms) =
    96   let fun mkstrings((fname,tname),axms) =
    97     let fun prove (name,eqn) =
    97     let fun prove (name,eqn) =
    98       "val "^name^"= prove_goalw thy [get_def thy \""^fname^"\"] "
    98       "val "^name^"= prove_goalw thy [get_def thy "^fname^"] "
    99       ^ eqn ^"\n\
    99       ^ eqn ^"\n\
   100        \(fn _ => [simp_tac (HOL_ss addsimps " ^ tname^".recs) 1])"
   100        \(fn _ => [simp_tac (HOL_ss addsimps " ^ tname^".recs) 1])"
   101     in ("|> " ^ tname^"_add_primrec " ^ mk_list (map snd axms)
   101     in ("|> " ^ tname^"_add_primrec " ^ mk_list (map snd axms)
   102 	, cat_lines(map prove axms))
   102 	, cat_lines(map prove axms))
   103     end
   103     end
   104   in ident -- long_id -- repeat1 (ident -- string)  >> mkstrings end
   104   in name -- long_id -- repeat1 (ident -- string)  >> mkstrings end
   105 end;
   105 end;
   106 
   106 
   107 (*used for constructor parameters*)
   107 (*used for constructor parameters*)
   108 datatype dt_type = dtVar of string |
   108 datatype dt_type = dtVar of string |
   109   dtTyp of dt_type list * string |
   109   dtTyp of dt_type list * string |