walther@59866
|
1 |
(* Title: BaseDefinitions/rewrite-order.sml
|
walther@59857
|
2 |
Author: Walther Neuper
|
walther@59857
|
3 |
(c) due to copyright terms
|
walther@59857
|
4 |
*)
|
walther@59857
|
5 |
signature REWRITE_ORDER =
|
walther@59857
|
6 |
sig
|
walther@59857
|
7 |
val e_rew_ord': Rule_Def.rew_ord';
|
walther@59857
|
8 |
val dummy_ord: Rule_Def.rew_ord_
|
walther@59857
|
9 |
val e_rew_ord: Rule_Def.rew_ord_
|
walther@59857
|
10 |
|
walther@59857
|
11 |
type rew_ord = Rule_Def.rew_ord
|
walther@59857
|
12 |
val e_rew_ordX: rew_ord
|
Walther@60436
|
13 |
val to_string: rew_ord -> string
|
walther@59857
|
14 |
|
walther@59857
|
15 |
type rew_ord' = Rule_Def.rew_ord'
|
Walther@60506
|
16 |
val equal: rew_ord * rew_ord -> bool
|
walther@59857
|
17 |
end
|
walther@59857
|
18 |
|
walther@59857
|
19 |
(**)
|
walther@59857
|
20 |
structure Rewrite_Ord(**): REWRITE_ORDER(**) =
|
walther@59857
|
21 |
struct
|
walther@59857
|
22 |
(**)
|
walther@59857
|
23 |
|
walther@59857
|
24 |
val e_rew_ord' = "e_rew_ord" : Rule_Def.rew_ord';
|
walther@59857
|
25 |
type rew_ord_ = Rule_Def.rew_ord_;
|
walther@59857
|
26 |
fun dummy_ord (_: subst) (_: term, _: term) = true;
|
walther@59857
|
27 |
val e_rew_ord_ = dummy_ord;
|
walther@59857
|
28 |
|
walther@59857
|
29 |
type rew_ord = (*rew_ord' * rew_ord_;*) Rule_Def.rew_ord
|
walther@59857
|
30 |
val e_rew_ord = dummy_ord; (* TODO.WN071231 clarify identifiers..e_rew_ordX*)
|
walther@59857
|
31 |
val e_rew_ordX = (e_rew_ord', e_rew_ord_)
|
Walther@60436
|
32 |
fun to_string (rew_ord', _) = "(" ^ rew_ord' ^ ", _: fn)"
|
walther@59857
|
33 |
|
walther@59857
|
34 |
type rew_ord' = Rule_Def.rew_ord'
|
walther@59857
|
35 |
(* rewrite orders, also stored in 'type met' and type 'and rls'
|
walther@59857
|
36 |
The association list is required for 'rewrite.."rew_ord"..' *)
|
walther@59857
|
37 |
val rew_ord' = Unsynchronized.ref
|
walther@59857
|
38 |
([("e_rew_ord", e_rew_ord), ("dummy_ord", dummy_ord)]
|
walther@59857
|
39 |
: (rew_ord' * (* the key for the association list *)
|
walther@59857
|
40 |
(subst (* the bound variables - they get high order*)
|
walther@59857
|
41 |
-> (term * term) (* (t1, t2) to be compared *)
|
walther@59857
|
42 |
-> bool)) (* if t1 <= t2 then true else false *)
|
walther@59857
|
43 |
list); (* association list *)
|
walther@59857
|
44 |
|
Walther@60506
|
45 |
fun equal ((id1, _), (id2, _)) = id1 = id2
|
Walther@60506
|
46 |
|
Walther@60506
|
47 |
end
|