src/Pure/Isar/delta_data.ML
changeset 15452 e2a721567f67
child 15531 08c8dad8e399
equal deleted inserted replaced
15451:c6c8786b9921 15452:e2a721567f67
       
     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