source 
 prog 
 defn 
 TYP 
 1:1-1:3 
 typ 
 ID 
 1:5-1:5 
 b 
 EQUALS 
 1:7-1:7 
 = 
 type 
 BOOL 
 1:9-1:12 
 bool 
 defn 
 FUN 
 2:1-2:3 
 fun 
 ID 
 2:5-2:8 
 main 
 LBRACKET 
 2:9-2:9 
 ( 
 RBRACKET 
 2:10-2:10 
 ) 
 COLON 
 2:12-2:12 
 : 
 type 
 ID 
 2:14-2:14 
 b 
 EQUALS 
 2:16-2:16 
 = 
 expr 
 LET 
 3:5-3:7 
 let 
 defn 
 VAR 
 3:9-3:11 
 var 
 ID 
 3:13-3:14 
 b1 
 COLON 
 3:16-3:16 
 : 
 type 
 ID 
 3:18-3:18 
 b 
 defn 
 VAR 
 3:20-3:22 
 var 
 ID 
 3:24-3:25 
 b2 
 COLON 
 3:27-3:27 
 : 
 type 
 ID 
 3:29-3:29 
 b 
 IN 
 3:31-3:32 
 in 
 expr 
 IF 
 4:9-4:10 
 if 
 expr 
 expr 
 expr 
 expr 
 ID 
 4:12-4:13 
 b1 
 AND 
 4:15-4:17 
 and 
 expr 
 ID 
 4:19-4:20 
 b2 
 OR 
 4:22-4:23 
 or 
 expr 
 ID 
 4:25-4:26 
 b1 
 OR 
 4:28-4:29 
 or 
 expr 
 ID 
 4:31-4:32 
 b2 
 THEN 
 4:34-4:37 
 then 
 expr 
 expr 
 expr 
 expr 
 ID 
 5:13-5:14 
 b2 
 AND 
 5:16-5:18 
 and 
 expr 
 ID 
 5:20-5:21 
 b1 
 AND 
 5:23-5:25 
 and 
 expr 
 TRUE 
 5:27-5:30 
 true 
 OR 
 5:32-5:33 
 or 
 expr 
 FALSE 
 5:35-5:39 
 false 
 ELSE 
 6:9-6:12 
 else 
 expr 
 LET 
 7:13-7:15 
 let 
 defn 
 VAR 
 7:17-7:19 
 var 
 ID 
 7:21-7:22 
 b1 
 COLON 
 7:24-7:24 
 : 
 type 
 ID 
 7:26-7:26 
 b 
 defn 
 VAR 
 7:28-7:30 
 var 
 ID 
 7:32-7:33 
 b2 
 COLON 
 7:35-7:35 
 : 
 type 
 ID 
 7:37-7:37 
 b 
 IN 
 7:39-7:40 
 in 
 expr 
 IF 
 8:17-8:18 
 if 
 expr 
 expr 
 expr 
 expr 
 ID 
 8:20-8:21 
 b1 
 AND 
 8:23-8:25 
 and 
 expr 
 ID 
 8:27-8:28 
 b2 
 OR 
 8:30-8:31 
 or 
 expr 
 ID 
 8:33-8:34 
 b1 
 OR 
 8:36-8:37 
 or 
 expr 
 ID 
 8:39-8:40 
 b2 
 THEN 
 8:42-8:45 
 then 
 expr 
 expr 
 expr 
 expr 
 ID 
 9:21-9:22 
 b2 
 AND 
 9:24-9:26 
 and 
 expr 
 ID 
 9:28-9:29 
 b1 
 AND 
 9:31-9:33 
 and 
 expr 
 TRUE 
 9:35-9:38 
 true 
 OR 
 9:40-9:41 
 or 
 expr 
 FALSE 
 9:43-9:47 
 false 
 ELSE 
 10:17-10:20 
 else 
 expr 
 LET 
 11:21-11:23 
 let 
 defn 
 VAR 
 11:25-11:27 
 var 
 ID 
 11:29-11:30 
 b1 
 COLON 
 11:32-11:32 
 : 
 type 
 ID 
 11:34-11:34 
 b 
 defn 
 VAR 
 11:36-11:38 
 var 
 ID 
 11:40-11:41 
 b2 
 COLON 
 11:43-11:43 
 : 
 type 
 ID 
 11:45-11:45 
 b 
 IN 
 11:47-11:48 
 in 
 expr 
 IF 
 12:25-12:26 
 if 
 expr 
 expr 
 expr 
 expr 
 ID 
 12:28-12:29 
 b1 
 AND 
 12:31-12:33 
 and 
 expr 
 ID 
 12:35-12:36 
 b2 
 OR 
 12:38-12:39 
 or 
 expr 
 ID 
 12:41-12:42 
 b1 
 OR 
 12:44-12:45 
 or 
 expr 
 ID 
 12:47-12:48 
 b2 
 THEN 
 12:50-12:53 
 then 
 expr 
 expr 
 expr 
 expr 
 ID 
 13:29-13:30 
 b2 
 AND 
 13:32-13:34 
 and 
 expr 
 ID 
 13:36-13:37 
 b1 
 AND 
 13:39-13:41 
 and 
 expr 
 TRUE 
 13:43-13:46 
 true 
 OR 
 13:48-13:49 
 or 
 expr 
 FALSE 
 13:51-13:55 
 false 
 ELSE 
 14:25-14:28 
 else 
 expr 
 LBRACKET 
 15:29-15:29 
 ( 
 expr 
 LET 
 15:30-15:32 
 let 
 defn 
 VAR 
 15:34-15:36 
 var 
 ID 
 15:38-15:39 
 b1 
 COLON 
 15:41-15:41 
 : 
 type 
 ID 
 15:43-15:43 
 b 
 defn 
 VAR 
 15:45-15:47 
 var 
 ID 
 15:49-15:50 
 b2 
 COLON 
 15:52-15:52 
 : 
 type 
 ID 
 15:54-15:54 
 b 
 IN 
 15:56-15:57 
 in 
 expr 
 IF 
 16:33-16:34 
 if 
 expr 
 expr 
 expr 
 expr 
 ID 
 16:36-16:37 
 b1 
 AND 
 16:39-16:41 
 and 
 expr 
 ID 
 16:43-16:44 
 b2 
 OR 
 16:46-16:47 
 or 
 expr 
 ID 
 16:49-16:50 
 b1 
 OR 
 16:52-16:53 
 or 
 expr 
 ID 
 16:55-16:56 
 b2 
 THEN 
 16:58-16:61 
 then 
 expr 
 expr 
 expr 
 expr 
 ID 
 17:37-17:38 
 b2 
 AND 
 17:40-17:42 
 and 
 expr 
 ID 
 17:44-17:45 
 b1 
 AND 
 17:47-17:49 
 and 
 expr 
 TRUE 
 17:51-17:54 
 true 
 OR 
 17:56-17:57 
 or 
 expr 
 FALSE 
 17:59-17:63 
 false 
 ELSE 
 18:33-18:36 
 else 
 expr 
 FALSE 
 19:37-19:41 
 false 
 END 
 20:33-20:35 
 end 
 END 
 21:29-21:31 
 end 
 COMMA 
 21:32-21:32 
 , 
 expr 
 LET 
 22:29-22:31 
 let 
 defn 
 VAR 
 22:33-22:35 
 var 
 ID 
 22:37-22:38 
 b1 
 COLON 
 22:40-22:40 
 : 
 type 
 ID 
 22:42-22:42 
 b 
 defn 
 VAR 
 22:44-22:46 
 var 
 ID 
 22:48-22:49 
 b2 
 COLON 
 22:51-22:51 
 : 
 type 
 ID 
 22:53-22:53 
 b 
 IN 
 22:55-22:56 
 in 
 expr 
 IF 
 23:33-23:34 
 if 
 expr 
 expr 
 expr 
 expr 
 ID 
 23:36-23:37 
 b1 
 AND 
 23:39-23:41 
 and 
 expr 
 ID 
 23:43-23:44 
 b2 
 OR 
 23:46-23:47 
 or 
 expr 
 ID 
 23:49-23:50 
 b1 
 OR 
 23:52-23:53 
 or 
 expr 
 ID 
 23:55-23:56 
 b2 
 THEN 
 23:58-23:61 
 then 
 expr 
 expr 
 expr 
 expr 
 ID 
 24:37-24:38 
 b2 
 AND 
 24:40-24:42 
 and 
 expr 
 ID 
 24:44-24:45 
 b1 
 AND 
 24:47-24:49 
 and 
 expr 
 TRUE 
 24:51-24:54 
 true 
 OR 
 24:56-24:57 
 or 
 expr 
 FALSE 
 24:59-24:63 
 false 
 ELSE 
 25:33-25:36 
 else 
 expr 
 FALSE 
 26:37-26:41 
 false 
 END 
 27:33-27:35 
 end 
 END 
 28:29-28:31 
 end 
 RBRACKET 
 28:32-28:32 
 ) 
 END 
 29:25-29:27 
 end 
 END 
 30:21-30:23 
 end 
 END 
 31:17-31:19 
 end 
 END 
 32:13-32:15 
 end 
 END 
 33:9-33:11 
 end 
 END 
 34:5-34:7 
 end 
 EOF