/ synthesizer / process / src / resources / large_functions.alpha
large_functions.alpha
  1  import credits.alpha;
  2  
  3  program large_functions.alpha;
  4  
  5  function join_3:
  6      input r0 as credits.alpha/credits.record;
  7      input r1 as credits.alpha/credits.record;
  8      input r2 as credits.alpha/credits.record;
  9      assert.eq r0.owner r1.owner;
 10      assert.eq r1.owner r2.owner;
 11      call credits.alpha/join r0 r1 into r3;
 12      call credits.alpha/join r3 r2 into r4;
 13      output r4 as credits.alpha/credits.record;
 14  
 15  function join_5:
 16      input r0 as credits.alpha/credits.record;
 17      input r1 as credits.alpha/credits.record;
 18      input r2 as credits.alpha/credits.record;
 19      input r3 as credits.alpha/credits.record;
 20      input r4 as credits.alpha/credits.record;
 21      assert.eq r0.owner r1.owner;
 22      assert.eq r1.owner r2.owner;
 23      assert.eq r2.owner r3.owner;
 24      assert.eq r3.owner r4.owner;
 25      call credits.alpha/join r0 r1 into r5;
 26      call credits.alpha/join r2 r3 into r6;
 27      call credits.alpha/join r5 r6 into r7;
 28      call credits.alpha/join r7 r4 into r8;
 29      output r8 as credits.alpha/credits.record;
 30  
 31  function join6:
 32      input r0 as credits.alpha/credits.record;
 33      input r1 as credits.alpha/credits.record;
 34      input r2 as credits.alpha/credits.record;
 35      input r3 as credits.alpha/credits.record;
 36      input r4 as credits.alpha/credits.record;
 37      input r5 as credits.alpha/credits.record;
 38      assert.eq r0.owner r1.owner;
 39      assert.eq r1.owner r2.owner;
 40      assert.eq r2.owner r3.owner;
 41      assert.eq r3.owner r4.owner;
 42      assert.eq r4.owner r5.owner;
 43      call credits.alpha/join r0 r1 into r6;
 44      call credits.alpha/join r2 r3 into r7;
 45      call credits.alpha/join r4 r5 into r8;
 46      call credits.alpha/join r6 r7 into r9;
 47      call credits.alpha/join r9 r8 into r10;
 48      output r10 as credits.alpha/credits.record;
 49  
 50  function join7:
 51      input r0 as credits.alpha/credits.record;
 52      input r1 as credits.alpha/credits.record;
 53      input r2 as credits.alpha/credits.record;
 54      input r3 as credits.alpha/credits.record;
 55      input r4 as credits.alpha/credits.record;
 56      input r5 as credits.alpha/credits.record;
 57      input r6 as credits.alpha/credits.record;
 58      assert.eq r0.owner r1.owner;
 59      assert.eq r1.owner r2.owner;
 60      assert.eq r2.owner r3.owner;
 61      assert.eq r3.owner r4.owner;
 62      assert.eq r4.owner r5.owner;
 63      assert.eq r5.owner r6.owner;
 64      call credits.alpha/join r0 r1 into r7;
 65      call credits.alpha/join r2 r3 into r8;
 66      call credits.alpha/join r4 r5 into r9;
 67      call credits.alpha/join r7 r8 into r10;
 68      call credits.alpha/join r10 r9 into r11;
 69      call credits.alpha/join r11 r6 into r12;
 70      output r12 as credits.alpha/credits.record;
 71  
 72  function join8:
 73      input r0 as credits.alpha/credits.record;
 74      input r1 as credits.alpha/credits.record;
 75      input r2 as credits.alpha/credits.record;
 76      input r3 as credits.alpha/credits.record;
 77      input r4 as credits.alpha/credits.record;
 78      input r5 as credits.alpha/credits.record;
 79      input r6 as credits.alpha/credits.record;
 80      input r7 as credits.alpha/credits.record;
 81      assert.eq r0.owner r1.owner;
 82      assert.eq r1.owner r2.owner;
 83      assert.eq r2.owner r3.owner;
 84      assert.eq r3.owner r4.owner;
 85      assert.eq r4.owner r5.owner;
 86      assert.eq r5.owner r6.owner;
 87      assert.eq r6.owner r7.owner;
 88      call credits.alpha/join r0 r1 into r8;
 89      call credits.alpha/join r2 r3 into r9;
 90      call credits.alpha/join r4 r5 into r10;
 91      call credits.alpha/join r6 r7 into r11;
 92      call credits.alpha/join r8 r9 into r12;
 93      call credits.alpha/join r11 r10 into r13;
 94      call credits.alpha/join r12 r13 into r14;
 95      output r14 as credits.alpha/credits.record;
 96  
 97  function join9:
 98      input r0 as credits.alpha/credits.record;
 99      input r1 as credits.alpha/credits.record;
100      input r2 as credits.alpha/credits.record;
101      input r3 as credits.alpha/credits.record;
102      input r4 as credits.alpha/credits.record;
103      input r5 as credits.alpha/credits.record;
104      input r6 as credits.alpha/credits.record;
105      input r7 as credits.alpha/credits.record;
106      input r8 as credits.alpha/credits.record;
107      assert.eq r0.owner r1.owner;
108      assert.eq r1.owner r2.owner;
109      assert.eq r2.owner r3.owner;
110      assert.eq r3.owner r4.owner;
111      assert.eq r4.owner r5.owner;
112      assert.eq r5.owner r6.owner;
113      assert.eq r6.owner r7.owner;
114      assert.eq r7.owner r8.owner;
115      call credits.alpha/join r0 r1 into r9;
116      call credits.alpha/join r2 r3 into r10;
117      call credits.alpha/join r4 r5 into r11;
118      call credits.alpha/join r6 r7 into r12;
119      call credits.alpha/join r9 r10 into r13;
120      call credits.alpha/join r12 r11 into r14;
121      call credits.alpha/join r13 r14 into r15;
122      call credits.alpha/join r15 r8 into r16;
123      output r16 as credits.alpha/credits.record;
124  
125  function join10:
126      input r0 as credits.alpha/credits.record;
127      input r1 as credits.alpha/credits.record;
128      input r2 as credits.alpha/credits.record;
129      input r3 as credits.alpha/credits.record;
130      input r4 as credits.alpha/credits.record;
131      input r5 as credits.alpha/credits.record;
132      input r6 as credits.alpha/credits.record;
133      input r7 as credits.alpha/credits.record;
134      input r8 as credits.alpha/credits.record;
135      input r9 as credits.alpha/credits.record;
136      assert.eq r0.owner r1.owner;
137      assert.eq r1.owner r2.owner;
138      assert.eq r2.owner r3.owner;
139      assert.eq r3.owner r4.owner;
140      assert.eq r4.owner r5.owner;
141      assert.eq r5.owner r6.owner;
142      assert.eq r6.owner r7.owner;
143      assert.eq r7.owner r8.owner;
144      assert.eq r8.owner r9.owner;
145      call credits.alpha/join r0 r1 into r10;
146      call credits.alpha/join r2 r3 into r11;
147      call credits.alpha/join r4 r5 into r12;
148      call credits.alpha/join r6 r7 into r13;
149      call credits.alpha/join r8 r9 into r14;
150      call credits.alpha/join r10 r11 into r15;
151      call credits.alpha/join r13 r12 into r16;
152      call credits.alpha/join r15 r16 into r17;
153      call credits.alpha/join r17 r14 into r18;
154      output r18 as credits.alpha/credits.record;
155  
156  function transfer_3:
157      input r0 as address.private;
158      input r1 as credits.alpha/credits.record;
159      input r2 as credits.alpha/credits.record;
160      input r3 as credits.alpha/credits.record;
161      assert.eq r1.owner r2.owner;
162      assert.eq r2.owner r3.owner;
163      call credits.alpha/transfer_private r1 r0 r1.microcredits into r4 r5;
164      call credits.alpha/transfer_private r2 r0 r2.microcredits into r6 r7;
165      call credits.alpha/transfer_private r3 r0 r3.microcredits into r8 r9;
166      output r4 as credits.alpha/credits.record;
167      output r5 as credits.alpha/credits.record;
168      output r6 as credits.alpha/credits.record;
169      output r7 as credits.alpha/credits.record;
170      output r8 as credits.alpha/credits.record;
171      output r9 as credits.alpha/credits.record;
172  
173  function transfer_5:
174      input r0 as address.private;
175      input r1 as credits.alpha/credits.record;
176      input r2 as credits.alpha/credits.record;
177      input r3 as credits.alpha/credits.record;
178      input r4 as credits.alpha/credits.record;
179      input r5 as credits.alpha/credits.record;
180      assert.eq r1.owner r2.owner;
181      assert.eq r2.owner r3.owner;
182      assert.eq r3.owner r4.owner;
183      assert.eq r4.owner r5.owner;
184      call credits.alpha/transfer_private r1 r0 r1.microcredits into r6 r7;
185      call credits.alpha/transfer_private r2 r0 r2.microcredits into r8 r9;
186      call credits.alpha/transfer_private r3 r0 r3.microcredits into r10 r11;
187      call credits.alpha/transfer_private r4 r0 r4.microcredits into r12 r13;
188      call credits.alpha/transfer_private r5 r0 r5.microcredits into r14 r15;
189      output r6 as credits.alpha/credits.record;
190      output r7 as credits.alpha/credits.record;
191      output r8 as credits.alpha/credits.record;
192      output r9 as credits.alpha/credits.record;
193      output r10 as credits.alpha/credits.record;
194      output r11 as credits.alpha/credits.record;
195      output r12 as credits.alpha/credits.record;
196      output r13 as credits.alpha/credits.record;
197      output r14 as credits.alpha/credits.record;
198      output r15 as credits.alpha/credits.record;
199  
200  function split_3:
201      input r0 as u64.private;
202      input r1 as credits.alpha/credits.record;
203      input r2 as credits.alpha/credits.record;
204      input r3 as credits.alpha/credits.record;
205      assert.eq r1.owner r2.owner;
206      assert.eq r2.owner r3.owner;
207      call credits.alpha/split r1 r0 into r4 r5;
208      call credits.alpha/split r2 r0 into r6 r7;
209      call credits.alpha/split r3 r0 into r8 r9;
210      output r4 as credits.alpha/credits.record;
211      output r5 as credits.alpha/credits.record;
212      output r6 as credits.alpha/credits.record;
213      output r7 as credits.alpha/credits.record;
214      output r8 as credits.alpha/credits.record;
215      output r9 as credits.alpha/credits.record;
216  
217  function split_5:
218      input r0 as u64.private;
219      input r1 as credits.alpha/credits.record;
220      input r2 as credits.alpha/credits.record;
221      input r3 as credits.alpha/credits.record;
222      input r4 as credits.alpha/credits.record;
223      input r5 as credits.alpha/credits.record;
224      assert.eq r1.owner r2.owner;
225      assert.eq r2.owner r3.owner;
226      assert.eq r3.owner r4.owner;
227      assert.eq r4.owner r5.owner;
228      call credits.alpha/split r1 r0 into r6 r7;
229      call credits.alpha/split r2 r0 into r8 r9;
230      call credits.alpha/split r3 r0 into r10 r11;
231      call credits.alpha/split r4 r0 into r12 r13;
232      call credits.alpha/split r5 r0 into r14 r15;
233      output r6 as credits.alpha/credits.record;
234      output r7 as credits.alpha/credits.record;
235      output r8 as credits.alpha/credits.record;
236      output r9 as credits.alpha/credits.record;
237      output r10 as credits.alpha/credits.record;
238      output r11 as credits.alpha/credits.record;
239      output r12 as credits.alpha/credits.record;
240      output r13 as credits.alpha/credits.record;
241      output r14 as credits.alpha/credits.record;
242      output r15 as credits.alpha/credits.record;