summaryrefslogtreecommitdiff
path: root/backends/hol4/evalLib.sig
blob: 40183af89b91fd326b9e5507d3881476a36bb546 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
signature evalLib =
sig
  (* This module implements [eval_conv], which supersedes EVAL_CONV by
     allowing to use custom unfolding theorems. This is particularly
     useful for divDefLib, which returns rewriting theorems to the user
     which are actually not definitional theorems.
   *)

  include Abbrev

  (* The following functions allow to *persistently* register custom rewriting theorems.

     Remark: it is important that we allow to save rewriting theorems without forcing
     the user to save them in, say, srw_ss.
   *)
  val add_rewrite_thm : thm -> unit
  val add_rewrite_thms : thm list -> unit

  (* The following functions allow to *persistently* register custom unfolding theorems *)
  val add_unfold_thm : thm -> unit
  val add_unfold_thms : thm list -> unit

  (* Get the unfolding theorems *)
  val get_unfold_thms : unit -> thm list

  (* The custom "eval" conversion *)
  val eval_conv : conv

  (* The custom "eval" function *)
  val eval : term -> term
end