Structure ThyDataSexp
signature ThyDataSexp =
sig
datatype t =
Int of int
| String of string
| List of t list
| Term of Term.term
| Type of Type.hol_type
| Thm of Thm.thm
| Sym of string
| Bool of bool
| Char of char
| Option of t option
val uptodate : t -> bool
val compare : t * t -> order
(* note that merge functions must take identical "types" on both sides.
Thus, if the theory data is a list of values, both old and new should be
lists and the merge will effectively be an append. If there's just one
value being "merged", it should still be a singleton list.
Similarly, if the data is a dictionary, represented as an alist, then the
new data (representing a single key-value maplet) should be a singleton
alist
*)
val alist_merge : {old: t, new : t} -> t
val append_merge : {old : t, new : t} -> t
val new : {thydataty : string,
merge : {old : t, new : t} -> t,
load : {thyname : string, data : t} -> unit,
other_tds : t * TheoryDelta.t -> t option} ->
{export : t -> unit, segment_data : {thyname : string} -> t option}
val pp_sexp : Type.hol_type PP.pprinter -> Term.term PP.pprinter ->
Thm.thm PP.pprinter -> t PP.pprinter
end
HOL 4, Kananaskis-13