source 
 prog 
 defn 
 FUN 
 1:1-1:3 
 fun 
 ID 
 1:5-1:7 
 abc 
 LBRACKET 
 1:9-1:9 
 ( 
 RBRACKET 
 1:10-1:10 
 ) 
 COLON 
 1:12-1:12 
 : 
 type 
 LBRACKET 
 1:14-1:14 
 ( 
 ID 
 1:15-1:15 
 a 
 COLON 
 1:16-1:16 
 : 
 type 
 LSQUARE 
 1:17-1:17 
 [ 
 NUM 
 1:18-1:18 
 1 
 RSQUARE 
 1:19-1:19 
 ] 
 type 
 LSQUARE 
 1:20-1:20 
 [ 
 NUM 
 1:21-1:21 
 2 
 RSQUARE 
 1:22-1:22 
 ] 
 type 
 LSQUARE 
 1:23-1:23 
 [ 
 NUM 
 1:24-1:24 
 4 
 RSQUARE 
 1:25-1:25 
 ] 
 type 
 BOOL 
 1:26-1:29 
 bool 
 COMMA 
 1:30-1:30 
 , 
 ID 
 1:32-1:32 
 b 
 COLON 
 1:33-1:33 
 : 
 type 
 HAT 
 1:35-1:35 
 ^ 
 type 
 HAT 
 1:36-1:36 
 ^ 
 type 
 HAT 
 1:37-1:37 
 ^ 
 type 
 HAT 
 1:38-1:38 
 ^ 
 type 
 HAT 
 1:39-1:39 
 ^ 
 type 
 HAT 
 1:40-1:40 
 ^ 
 type 
 HAT 
 1:41-1:41 
 ^ 
 type 
 HAT 
 1:42-1:42 
 ^ 
 type 
 HAT 
 1:43-1:43 
 ^ 
 type 
 HAT 
 1:44-1:44 
 ^ 
 type 
 HAT 
 1:45-1:45 
 ^ 
 type 
 HAT 
 1:46-1:46 
 ^ 
 type 
 HAT 
 1:47-1:47 
 ^ 
 type 
 HAT 
 1:48-1:48 
 ^ 
 type 
 VOID 
 1:49-1:52 
 void 
 COMMA 
 1:53-1:53 
 , 
 ID 
 1:55-1:55 
 c 
 COLON 
 1:56-1:56 
 : 
 type 
 ID 
 1:58-1:65 
 randomid 
 COMMA 
 1:66-1:66 
 , 
 ID 
 1:68-1:68 
 x 
 COLON 
 1:69-1:69 
 : 
 type 
 LBRACKET 
 1:71-1:71 
 ( 
 ID 
 1:72-1:72 
 d 
 COLON 
 1:74-1:74 
 : 
 type 
 INT 
 1:76-1:78 
 int 
 COMMA 
 1:79-1:79 
 , 
 ID 
 1:81-1:81 
 e 
 COLON 
 1:83-1:83 
 : 
 type 
 BOOL 
 1:85-1:88 
 bool 
 COMMA 
 1:89-1:89 
 , 
 ID 
 1:91-1:91 
 f 
 COLON 
 1:93-1:93 
 : 
 type 
 CHAR 
 1:95-1:98 
 char 
 COMMA 
 1:99-1:99 
 , 
 ID 
 1:101-1:101 
 g 
 COLON 
 1:103-1:103 
 : 
 type 
 LCURLY 
 1:105-1:105 
 { 
 ID 
 1:107-1:107 
 h 
 COLON 
 1:109-1:109 
 : 
 type 
 HAT 
 1:111-1:111 
 ^ 
 type 
 HAT 
 1:112-1:112 
 ^ 
 type 
 INT 
 1:113-1:115 
 int 
 COMMA 
 1:116-1:116 
 , 
 ID 
 1:118-1:118 
 i 
 COLON 
 1:119-1:119 
 : 
 type 
 VOID 
 1:121-1:124 
 void 
 RCURLY 
 1:125-1:125 
 } 
 RBRACKET 
 1:126-1:126 
 ) 
 RBRACKET 
 1:128-1:128 
 ) 
 EOF