aboutsummaryrefslogtreecommitdiff
path: root/sample/process_networks/processnet_fib.in
blob: ab19eecf142582ca3adc3c30f392546cabab8f41 (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
// Rules
dup(a1,a2) >< (int i):xs => a1~(i:xs1), a2~(i:xs2), dup(xs1,xs2)~xs;
dup(a1,a2) >< []         => a1~[], a2~[];

add(r, ys) >< (int i):xs => addn(r, xs, i)~ys;
addn(r, xs, int i) >< (int j):ys => r~(i+j):w, add(w,ys)~xs;


// Nets
dup(r, r1)~(1:xs), r1~add(sum, w), dup(xs, w)~(1:sum);

// r,r1 << dup(1:xs),
// xs,w << dup(1:sum),
// sum << add(r1,w);

//       +-----+        +---+   
// r ----|     |        |   | xs  +-----+        +---+
//       | dup |---><---| 1 |-----|     |        |   |
//   +---|     |        |   |     | dup |---><---| 1 |----+
//   |   +-----+        +---+  +--|     |        |   |    |
//   |                         |  +-----+        +---+    | sum
//   |                         |                          |
//   |                         |                       +-----+
//   |                         |                       | add |
//   |                         |                       +-----+
//   |                         |        w               |   |
//   |                         +------------------------+   v
//   |     r1                                               |
//   +------------------------------------------------------+
//