equal
deleted
inserted
replaced
135 val k = serial (); |
135 val k = serial (); |
136 val kind = {empty = empty, extend = extend, merge = merge}; |
136 val kind = {empty = empty, extend = extend, merge = merge}; |
137 val _ = CRITICAL (fn () => Unsynchronized.change kinds (Datatab.update (k, kind))); |
137 val _ = CRITICAL (fn () => Unsynchronized.change kinds (Datatab.update (k, kind))); |
138 in k end; |
138 in k end; |
139 |
139 |
140 val extend_data = Datatab.map' invoke_extend; |
140 val extend_data = Datatab.map invoke_extend; |
141 |
141 |
142 fun merge_data pp (data1, data2) = |
142 fun merge_data pp (data1, data2) = |
143 Datatab.keys (Datatab.merge (K true) (data1, data2)) |
143 Datatab.keys (Datatab.merge (K true) (data1, data2)) |
144 |> Par_List.map (fn k => |
144 |> Par_List.map (fn k => |
145 (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of |
145 (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of |
474 (case Datatab.lookup (! kinds) k of |
474 (case Datatab.lookup (! kinds) k of |
475 SOME init => init |
475 SOME init => init |
476 | NONE => raise Fail "Invalid proof data identifier"); |
476 | NONE => raise Fail "Invalid proof data identifier"); |
477 |
477 |
478 fun init_data thy = |
478 fun init_data thy = |
479 Datatab.map' (fn k => fn _ => invoke_init k thy) (! kinds); |
479 Datatab.map (fn k => fn _ => invoke_init k thy) (! kinds); |
480 |
480 |
481 fun init_new_data data thy = |
481 fun init_new_data data thy = |
482 Datatab.merge (K true) (data, init_data thy); |
482 Datatab.merge (K true) (data, init_data thy); |
483 |
483 |
484 in |
484 in |