equal
deleted
inserted
replaced
100 |
100 |
101 |
101 |
102 (**** make datatype info ****) |
102 (**** make datatype info ****) |
103 |
103 |
104 fun make_dt_info descr sorts induct reccomb_names rec_thms |
104 fun make_dt_info descr sorts induct reccomb_names rec_thms |
105 (((i, (_, (tname, _, _))), distinct), inject) = |
105 (i, (((_, (tname, _, _)), distinct), inject)) = |
106 (tname, |
106 (tname, |
107 {index = i, |
107 {index = i, |
108 descr = descr, |
108 descr = descr, |
109 sorts = sorts, |
109 sorts = sorts, |
110 rec_names = reccomb_names, |
110 rec_names = reccomb_names, |
2043 resolve_tac rec_intrs 1, |
2043 resolve_tac rec_intrs 1, |
2044 REPEAT (solve (prems @ rec_total_thms) prems 1)]) |
2044 REPEAT (solve (prems @ rec_total_thms) prems 1)]) |
2045 end) (rec_eq_prems ~~ |
2045 end) (rec_eq_prems ~~ |
2046 DatatypeProp.make_primrecs new_type_names descr' sorts thy12); |
2046 DatatypeProp.make_primrecs new_type_names descr' sorts thy12); |
2047 |
2047 |
2048 val dt_infos = map (make_dt_info pdescr sorts induct reccomb_names rec_thms) |
2048 val dt_infos = map_index (make_dt_info pdescr sorts induct reccomb_names rec_thms) |
2049 ((0 upto length descr1 - 1) ~~ descr1 ~~ distinct_thms ~~ inject_thms); |
2049 (descr1 ~~ distinct_thms ~~ inject_thms); |
2050 |
2050 |
2051 (* FIXME: theorems are stored in database for testing only *) |
2051 (* FIXME: theorems are stored in database for testing only *) |
2052 val (_, thy13) = thy12 |> |
2052 val (_, thy13) = thy12 |> |
2053 PureThy.add_thmss |
2053 PureThy.add_thmss |
2054 [((Binding.name "rec_equiv", flat rec_equiv_thms), []), |
2054 [((Binding.name "rec_equiv", flat rec_equiv_thms), []), |