blob: a36e550734738b9910037c0150cc453f4a6f8cc9 (
plain) (
blame)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
definition module rewr
// $Id$
from rule import Rule
from graph import Graph
from pfun import Pfun
from StdOverloaded import ==
// Unfold a rewrite rule
xunfold
:: var
(Rule sym pvar)
!( [var]
, var
, Graph sym var
, Pfun pvar var
)
-> ( [var]
, var
, Graph sym var
, Pfun pvar var
) | == var & == pvar
foldfn
:: (Pfun pvar var) // Matching of replacement
sym // Symbol at root of pattern
[pvar] // Arguments of pattern
pvar // Root of replacement
(Graph sym var) // Subject graph
-> Graph sym var // Folded subject
| == pvar
getmapping
:: tsym
(Graph sym pvar)
(Graph sym var)
!(pvar,var)
((Pfun pvar var) -> tsym)
!(Pfun pvar var)
-> tsym
| == sym
& == var
& == pvar
rewrinstantiate
:: .(Graph sym pvar) // Pattern to instantiate with
pvar // Root of the pattern
var // Open node to instantiate
(.[var],.Graph sym var) // Heap,graph
-> .([var],Graph sym var) // New heap,graph
| == var
& == pvar
|