src/Pure/Isar/delta_data.ML
author paulson
Wed, 02 Mar 2005 10:21:17 +0100
changeset 15559 10c5c689aa20
parent 15531 08c8dad8e399
child 15596 8665d08085df
permissions -rw-r--r--
obscured the e-mail address lcp@cl
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15452
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     1
(*  Author: Jia Meng, Cambridge University Computer Laboratory (06/01/05)
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     2
    Copyright 2004 University of Cambridge
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     3
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     4
Used for delta_simpset and delta_claset
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     5
*)
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     6
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     7
signature DELTA_DATA_ARGS =
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     8
sig
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
     9
  val name: string 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    10
  type T
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    11
  val empty: T
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    12
end;
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    13
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    14
signature DELTA_DATA =
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    15
sig
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    16
  type T
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    17
  val get: ProofContext.context -> T
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    18
  val put: T -> ProofContext.context -> ProofContext.context
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    19
end;
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    20
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    21
functor DeltaDataFun(Args: DELTA_DATA_ARGS): DELTA_DATA =
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    22
struct
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    23
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    24
type T = Args.T; 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    25
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    26
exception Data of T; 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    27
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    28
val key = Args.name; 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    29
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    30
fun get ctxt =
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    31
    let val delta_tab = ProofContext.get_delta ctxt
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    32
	val delta_data = Symtab.lookup(delta_tab,key) 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    33
    in
15531
08c8dad8e399 Deleted Library.option type.
skalberg
parents: 15452
diff changeset
    34
	case delta_data of (SOME (Data d)) => d 
08c8dad8e399 Deleted Library.option type.
skalberg
parents: 15452
diff changeset
    35
			 | NONE => (Args.empty)
15452
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    36
    end;
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    37
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    38
fun put delta_data ctxt = 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    39
    let val delta_tab = ProofContext.get_delta ctxt 
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    40
	val new_tab = Symtab.update((key,Data delta_data),delta_tab)
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    41
    in
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    42
	ProofContext.put_delta new_tab ctxt
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    43
    end;
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    44
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    45
end;
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    46
e2a721567f67 Jia Meng: delta simpsets and clasets
paulson
parents:
diff changeset
    47