equal
deleted
inserted
replaced
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 | |