source 
 prog 
 defn 
 TYP 
 2:1-2:3 
 typ 
 ID 
 2:5-2:6 
 t1 
 EQUALS 
 2:8-2:8 
 = 
 type 
 LBRACKET 
 2:10-2:10 
 ( 
 ID 
 2:11-2:11 
 i 
 COLON 
 2:12-2:12 
 : 
 type 
 INT 
 2:13-2:15 
 int 
 COMMA 
 2:16-2:16 
 , 
 ID 
 2:18-2:18 
 n 
 COLON 
 2:19-2:19 
 : 
 type 
 ID 
 2:21-2:22 
 t2 
 RBRACKET 
 2:23-2:23 
 ) 
 defn 
 TYP 
 3:1-3:3 
 typ 
 ID 
 3:5-3:6 
 t2 
 EQUALS 
 3:8-3:8 
 = 
 type 
 LBRACKET 
 3:10-3:10 
 ( 
 ID 
 3:11-3:11 
 j 
 COLON 
 3:12-3:12 
 : 
 type 
 INT 
 3:13-3:15 
 int 
 COMMA 
 3:16-3:16 
 , 
 ID 
 3:18-3:18 
 n 
 COLON 
 3:19-3:19 
 : 
 type 
 ID 
 3:21-3:22 
 t1 
 RBRACKET 
 3:23-3:23 
 ) 
 defn 
 FUN 
 5:1-5:3 
 fun 
 ID 
 5:5-5:5 
 a 
 LBRACKET 
 5:6-5:6 
 ( 
 RBRACKET 
 5:7-5:7 
 ) 
 COLON 
 5:8-5:8 
 : 
 type 
 INT 
 5:9-5:11 
 int 
 EQUALS 
 5:13-5:13 
 = 
 expr 
 expr 
 ID 
 5:15-5:15 
 b 
 LBRACKET 
 5:16-5:16 
 ( 
 RBRACKET 
 5:17-5:17 
 ) 
 defn 
 FUN 
 6:1-6:3 
 fun 
 ID 
 6:5-6:5 
 b 
 LBRACKET 
 6:6-6:6 
 ( 
 RBRACKET 
 6:7-6:7 
 ) 
 COLON 
 6:8-6:8 
 : 
 type 
 INT 
 6:9-6:11 
 int 
 EQUALS 
 6:13-6:13 
 = 
 expr 
 expr 
 ID 
 6:15-6:15 
 a 
 LBRACKET 
 6:16-6:16 
 ( 
 RBRACKET 
 6:17-6:17 
 ) 
 EOF