src/Pure/cterm_items.ML
author wenzelm
Thu, 09 Sep 2021 16:00:34 +0200
changeset 74272 0f3ca0cd8071
parent 74271 64be5f224462
child 77903 38d0a90e87c1
permissions -rw-r--r--
clarified signature;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
74270
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/cterm_items.ML
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     3
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     4
Scalable collections of term items: for type thm and cterm.
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     5
See als Pure/term_items.ML.
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     6
*)
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     7
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     8
structure Ctermtab:
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
     9
sig
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    10
  include TABLE
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    11
  val cterm_cache: (cterm -> 'a) -> cterm -> 'a
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    12
end =
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    13
struct
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    14
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    15
structure Table = Table(type key = cterm val ord = Thm.fast_term_ord);
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    16
open Table;
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    17
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    18
fun cterm_cache f = Cache.create empty lookup update f;
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    19
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    20
end;
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    21
ad2899cdd528 clarified modules;
wenzelm
parents:
diff changeset
    22
74271
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    23
structure Cterms:
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    24
sig
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    25
  include TERM_ITEMS
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    26
  val add_vars: thm -> set -> set
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    27
  val add_frees: thm -> set -> set
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    28
end =
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    29
struct
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    30
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    31
structure Term_Items = Term_Items
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    32
(
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    33
  type key = cterm;
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    34
  val ord = Thm.fast_term_ord
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    35
);
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    36
open Term_Items;
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    37
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    38
val add_vars = Thm.fold_atomic_cterms {hyps = false} Term.is_Var add_set;
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    39
val add_frees = Thm.fold_atomic_cterms {hyps = true} Term.is_Free add_set;
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    40
64be5f224462 clarified signature;
wenzelm
parents: 74270
diff changeset
    41
end;
74272
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    42
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    43
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    44
structure Thmtab:
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    45
sig
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    46
  include TABLE
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    47
  val thm_cache: (thm -> 'a) -> thm -> 'a
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    48
end =
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    49
struct
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    50
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    51
structure Table = Table(type key = thm val ord = Thm.thm_ord);
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    52
open Table;
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    53
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    54
fun thm_cache f = Cache.create empty lookup update f;
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    55
0f3ca0cd8071 clarified signature;
wenzelm
parents: 74271
diff changeset
    56
end;