equal
deleted
inserted
replaced
|
1 (* Author: Jia Meng, Cambridge University Computer Laboratory (06/01/05) |
|
2 Copyright 2004 University of Cambridge |
|
3 |
|
4 Used for delta_simpset and delta_claset |
|
5 *) |
|
6 |
|
7 signature DELTA_DATA_ARGS = |
|
8 sig |
|
9 val name: string |
|
10 type T |
|
11 val empty: T |
|
12 end; |
|
13 |
|
14 signature DELTA_DATA = |
|
15 sig |
|
16 type T |
|
17 val get: ProofContext.context -> T |
|
18 val put: T -> ProofContext.context -> ProofContext.context |
|
19 end; |
|
20 |
|
21 functor DeltaDataFun(Args: DELTA_DATA_ARGS): DELTA_DATA = |
|
22 struct |
|
23 |
|
24 type T = Args.T; |
|
25 |
|
26 exception Data of T; |
|
27 |
|
28 val key = Args.name; |
|
29 |
|
30 fun get ctxt = |
|
31 let val delta_tab = ProofContext.get_delta ctxt |
|
32 val delta_data = Symtab.lookup(delta_tab,key) |
|
33 in |
|
34 case delta_data of (Some (Data d)) => d |
|
35 | None => (Args.empty) |
|
36 end; |
|
37 |
|
38 fun put delta_data ctxt = |
|
39 let val delta_tab = ProofContext.get_delta ctxt |
|
40 val new_tab = Symtab.update((key,Data delta_data),delta_tab) |
|
41 in |
|
42 ProofContext.put_delta new_tab ctxt |
|
43 end; |
|
44 |
|
45 end; |
|
46 |
|
47 |