pon 23 mar 2026 21:36:08 CET e


test10.p26

typ ii = int

fun main():int =
    let fun c():int = 1 + 2
        fun b():ii = 5 * 4 + 7 + 9
    in
        c() * b() + 100
    end
 A40: Nodes<Defn> 
1:1-8:7
 A1: TypDefn ii 
1:1-1:12
 A0: AtomType INT 
1:10-1:12
 A39: DefFunDefn main 
3:1-8:7
 A36: Nodes<ParDefn> 
 A2: AtomType INT 
3:12-3:14
 A38: Exprs 
4:5-8:7
 A37: Nodes<Expr> 
4:5-8:7
 A35: LetExpr 
4:5-8:7
 A32: Nodes<Defn> 
4:9-5:34
 A10: DefFunDefn c 
4:9-4:27
 A7: Nodes<ParDefn> 
 A3: AtomType INT 
4:17-4:19
 A9: Exprs 
4:23-4:27
 A8: Nodes<Expr> 
4:23-4:27
 A6: BinExpr ADD 
4:23-4:27
 A4: AtomExpr 1 
4:23-4:23
 A5: AtomExpr 2 
4:27-4:27
 A22: DefFunDefn b 
5:9-5:34
 A19: Nodes<ParDefn> 
 A11: NameType ii 
5:17-5:18
defAt: A1 @ 1:1-1:12
 A21: Exprs 
5:22-5:34
 A20: Nodes<Expr> 
5:22-5:34
 A18: BinExpr ADD 
5:22-5:34
 A16: BinExpr ADD 
5:22-5:30
 A14: BinExpr MUL 
5:22-5:26
 A12: AtomExpr 5 
5:22-5:22
 A13: AtomExpr 4 
5:26-5:26
 A15: AtomExpr 7 
5:30-5:30
 A17: AtomExpr 9 
5:34-5:34
 A34: Exprs 
7:9-7:23
 A33: Nodes<Expr> 
7:9-7:23
 A31: BinExpr ADD 
7:9-7:23
 A29: BinExpr MUL 
7:9-7:17
 A25: CallExpr 
7:9-7:11
 A23: NameExpr c 
7:9-7:9
defAt: A10 @ 4:9-4:27
 A24: Nodes<Expr> 
 A28: CallExpr 
7:15-7:17
 A26: NameExpr b 
7:15-7:15
defAt: A22 @ 5:9-5:34
 A27: Nodes<Expr> 
 A30: AtomExpr 100 
7:21-7:23

test11.p26




fun f(a:int, b:int):int=
    a + b,
    let var a:int var b:int in
        a = 0,
        b = 0,
        a + b
    end
 A29: Nodes<Defn> 
4:1-10:7
 A28: DefFunDefn f 
4:1-10:7
 A25: Nodes<ParDefn> 
4:6-4:19
 A1: ParDefn a 
4:7-4:11
 A0: AtomType INT 
4:9-4:11
 A3: ParDefn b 
4:14-4:18
 A2: AtomType INT 
4:16-4:18
 A4: AtomType INT 
4:21-4:23
 A27: Exprs 
5:5-10:7
 A26: Nodes<Expr> 
5:5-10:7
 A7: BinExpr ADD 
5:5-5:9
 A5: NameExpr a 
5:5-5:5
defAt: A1 @ 4:7-4:11
 A6: NameExpr b 
5:9-5:9
defAt: A3 @ 4:14-4:18
 A24: LetExpr 
6:5-10:7
 A21: Nodes<Defn> 
6:9-6:27
 A9: VarDefn a 
6:9-6:17
 A8: AtomType INT 
6:15-6:17
 A11: VarDefn b 
6:19-6:27
 A10: AtomType INT 
6:25-6:27
 A23: Exprs 
7:9-9:13
 A22: Nodes<Expr> 
7:9-9:13
 A14: AsgnExpr 
7:9-7:13
 A12: NameExpr a 
7:9-7:9
defAt: A9 @ 6:9-6:17
 A13: AtomExpr 0 
7:13-7:13
 A17: AsgnExpr 
8:9-8:13
 A15: NameExpr b 
8:9-8:9
defAt: A11 @ 6:19-6:27
 A16: AtomExpr 0 
8:13-8:13
 A20: BinExpr ADD 
9:9-9:13
 A18: NameExpr a 
9:9-9:9
defAt: A9 @ 6:9-6:17
 A19: NameExpr b 
9:13-9:13
defAt: A11 @ 6:19-6:27

test12.p26

typ i = int
typ c = char
typ b = bool

fun bb(b1:int, b2:int): b =
    let
        fun bbb(d1:i, d2:i) : i = d1 + d2
    in
        let fun aa() : c = 'a'
            fun aaa(f:i) : i = 5 * 4 + 7 + 9 % 110
        in
            aaa(8) * bbb(2, 3)
    end,
    b1 >= b2
   end

 A70: Nodes<Defn> 
1:1-15:6
 A1: TypDefn i 
1:1-1:11
 A0: AtomType INT 
1:9-1:11
 A3: TypDefn c 
2:1-2:12
 A2: AtomType CHAR 
2:9-2:12
 A5: TypDefn b 
3:1-3:12
 A4: AtomType BOOL 
3:9-3:12
 A69: DefFunDefn bb 
5:1-15:6
 A66: Nodes<ParDefn> 
5:7-5:22
 A7: ParDefn b1 
5:8-5:13
 A6: AtomType INT 
5:11-5:13
 A9: ParDefn b2 
5:16-5:21
 A8: AtomType INT 
5:19-5:21
 A10: NameType b 
5:25-5:25
defAt: A5 @ 3:1-3:12
 A68: Exprs 
6:5-15:6
 A67: Nodes<Expr> 
6:5-15:6
 A65: LetExpr 
6:5-15:6
 A62: Nodes<Defn> 
7:9-7:41
 A22: DefFunDefn bbb 
7:9-7:41
 A19: Nodes<ParDefn> 
7:16-7:27
 A12: ParDefn d1 
7:17-7:20
 A11: NameType i 
7:20-7:20
defAt: A1 @ 1:1-1:11
 A14: ParDefn d2 
7:23-7:26
 A13: NameType i 
7:26-7:26
defAt: A1 @ 1:1-1:11
 A15: NameType i 
7:31-7:31
defAt: A1 @ 1:1-1:11
 A21: Exprs 
7:35-7:41
 A20: Nodes<Expr> 
7:35-7:41
 A18: BinExpr ADD 
7:35-7:41
 A16: NameExpr d1 
7:35-7:36
defAt: A12 @ 7:17-7:20
 A17: NameExpr d2 
7:40-7:41
defAt: A14 @ 7:23-7:26
 A64: Exprs 
9:9-14:12
 A63: Nodes<Expr> 
9:9-14:12
 A58: LetExpr 
9:9-13:7
 A55: Nodes<Defn> 
9:13-10:50
 A28: DefFunDefn aa 
9:13-9:30
 A25: Nodes<ParDefn> 
 A23: NameType c 
9:24-9:24
defAt: A3 @ 2:1-2:12
 A27: Exprs 
9:28-9:30
 A26: Nodes<Expr> 
9:28-9:30
 A24: AtomExpr 'a' 
9:28-9:30
 A44: DefFunDefn aaa 
10:13-10:50
 A41: Nodes<ParDefn> 
10:20-10:24
 A30: ParDefn f 
10:21-10:23
 A29: NameType i 
10:23-10:23
defAt: A1 @ 1:1-1:11
 A31: NameType i 
10:28-10:28
defAt: A1 @ 1:1-1:11
 A43: Exprs 
10:32-10:50
 A42: Nodes<Expr> 
10:32-10:50
 A40: BinExpr ADD 
10:32-10:50
 A36: BinExpr ADD 
10:32-10:40
 A34: BinExpr MUL 
10:32-10:36
 A32: AtomExpr 5 
10:32-10:32
 A33: AtomExpr 4 
10:36-10:36
 A35: AtomExpr 7 
10:40-10:40
 A39: BinExpr MOD 
10:44-10:50
 A37: AtomExpr 9 
10:44-10:44
 A38: AtomExpr 110 
10:48-10:50
 A57: Exprs 
12:13-12:30
 A56: Nodes<Expr> 
12:13-12:30
 A54: BinExpr MUL 
12:13-12:30
 A48: CallExpr 
12:13-12:18
 A45: NameExpr aaa 
12:13-12:15
defAt: A44 @ 10:13-10:50
 A47: Nodes<Expr> 
12:16-12:18
 A46: AtomExpr 8 
12:17-12:17
 A53: CallExpr 
12:22-12:30
 A49: NameExpr bbb 
12:22-12:24
defAt: A22 @ 7:9-7:41
 A52: Nodes<Expr> 
12:25-12:30
 A50: AtomExpr 2 
12:26-12:26
 A51: AtomExpr 3 
12:29-12:29
 A61: BinExpr GEQ 
14:5-14:12
 A59: NameExpr b1 
14:5-14:6
defAt: A7 @ 5:8-5:13
 A60: NameExpr b2 
14:11-14:12
defAt: A9 @ 5:16-5:21

test13.p26

 typ vv = void

 fun f1(p1:(i:int, j:int)):int
 fun f2(p2:{i:int, j:int}):char
 fun f3(p3:{s1: {s21:{i:int, j: int}, s22:{i:int, j:int}}, s2:(i:int, j: int)}):bool
 fun f4(p4:vv):vv
 A57: Nodes<Defn> 
1:2-6:17
 A1: TypDefn vv 
1:2-1:14
 A0: AtomType VOID 
1:11-1:14
 A11: ExtFunDefn f1 
3:2-3:30
 A10: Nodes<ParDefn> 
3:8-3:26
 A8: ParDefn p1 
3:9-3:25
 A7: StrType 
3:12-3:25
 A6: Nodes<CompDefn> 
3:13-3:24
 A3: CompDefn i 
3:13-3:17
 A2: AtomType INT 
3:15-3:17
 A5: CompDefn j 
3:20-3:24
 A4: AtomType INT 
3:22-3:24
 A9: AtomType INT 
3:28-3:30
 A21: ExtFunDefn f2 
4:2-4:31
 A20: Nodes<ParDefn> 
4:8-4:26
 A18: ParDefn p2 
4:9-4:25
 A17: UniType 
4:12-4:25
 A16: Nodes<CompDefn> 
4:13-4:24
 A13: CompDefn i 
4:13-4:17
 A12: AtomType INT 
4:15-4:17
 A15: CompDefn j 
4:20-4:24
 A14: AtomType INT 
4:22-4:24
 A19: AtomType CHAR 
4:28-4:31
 A51: ExtFunDefn f3 
5:2-5:84
 A50: Nodes<ParDefn> 
5:8-5:79
 A48: ParDefn p3 
5:9-5:78
 A47: UniType 
5:12-5:78
 A46: Nodes<CompDefn> 
5:13-5:77
 A38: CompDefn s1 
5:13-5:57
 A37: UniType 
5:17-5:57
 A36: Nodes<CompDefn> 
5:18-5:56
 A28: CompDefn s21 
5:18-5:36
 A27: UniType 
5:22-5:36
 A26: Nodes<CompDefn> 
5:23-5:35
 A23: CompDefn i 
5:23-5:27
 A22: AtomType INT 
5:25-5:27
 A25: CompDefn j 
5:30-5:35
 A24: AtomType INT 
5:33-5:35
 A35: CompDefn s22 
5:39-5:56
 A34: UniType 
5:43-5:56
 A33: Nodes<CompDefn> 
5:44-5:55
 A30: CompDefn i 
5:44-5:48
 A29: AtomType INT 
5:46-5:48
 A32: CompDefn j 
5:51-5:55
 A31: AtomType INT 
5:53-5:55
 A45: CompDefn s2 
5:60-5:77
 A44: StrType 
5:63-5:77
 A43: Nodes<CompDefn> 
5:64-5:76
 A40: CompDefn i 
5:64-5:68
 A39: AtomType INT 
5:66-5:68
 A42: CompDefn j 
5:71-5:76
 A41: AtomType INT 
5:74-5:76
 A49: AtomType BOOL 
5:81-5:84
 A56: ExtFunDefn f4 
6:2-6:17
 A55: Nodes<ParDefn> 
6:8-6:14
 A53: ParDefn p4 
6:9-6:13
 A52: NameType vv 
6:12-6:13
defAt: A1 @ 1:2-1:14
 A54: NameType vv 
6:16-6:17
defAt: A1 @ 1:2-1:14

test14.p26

fun dec100(p:int):int =
    while p > 0 do
        p = p - 1
    end,
    let var a : int in
        a = 1,
        while a < 100 do
            a = a + 1
        end,
        dec100(a)
    end
 A42: Nodes<Defn> 
1:1-11:7
 A41: DefFunDefn dec100 
1:1-11:7
 A38: Nodes<ParDefn> 
1:11-1:17
 A1: ParDefn p 
1:12-1:16
 A0: AtomType INT 
1:14-1:16
 A2: AtomType INT 
1:19-1:21
 A40: Exprs 
2:5-11:7
 A39: Nodes<Expr> 
2:5-11:7
 A13: WhileExpr 
2:5-4:7
 A5: BinExpr GTH 
2:11-2:15
 A3: NameExpr p 
2:11-2:11
defAt: A1 @ 1:12-1:16
 A4: AtomExpr 0 
2:15-2:15
 A12: Exprs 
3:9-3:17
 A11: Nodes<Expr> 
3:9-3:17
 A10: AsgnExpr 
3:9-3:17
 A6: NameExpr p 
3:9-3:9
defAt: A1 @ 1:12-1:16
 A9: BinExpr SUB 
3:13-3:17
 A7: NameExpr p 
3:13-3:13
defAt: A1 @ 1:12-1:16
 A8: AtomExpr 1 
3:17-3:17
 A37: LetExpr 
5:5-11:7
 A34: Nodes<Defn> 
5:9-5:19
 A15: VarDefn a 
5:9-5:19
 A14: AtomType INT 
5:17-5:19
 A36: Exprs 
6:9-10:17
 A35: Nodes<Expr> 
6:9-10:17
 A18: AsgnExpr 
6:9-6:13
 A16: NameExpr a 
6:9-6:9
defAt: A15 @ 5:9-5:19
 A17: AtomExpr 1 
6:13-6:13
 A29: WhileExpr 
7:9-9:11
 A21: BinExpr LTH 
7:15-7:21
 A19: NameExpr a 
7:15-7:15
defAt: A15 @ 5:9-5:19
 A20: AtomExpr 100 
7:19-7:21
 A28: Exprs 
8:13-8:21
 A27: Nodes<Expr> 
8:13-8:21
 A26: AsgnExpr 
8:13-8:21
 A22: NameExpr a 
8:13-8:13
defAt: A15 @ 5:9-5:19
 A25: BinExpr ADD 
8:17-8:21
 A23: NameExpr a 
8:17-8:17
defAt: A15 @ 5:9-5:19
 A24: AtomExpr 1 
8:21-8:21
 A33: CallExpr 
10:9-10:17
 A30: NameExpr dec100 
10:9-10:14
defAt: A41 @ 1:1-11:7
 A32: Nodes<Expr> 
10:15-10:17
 A31: NameExpr a 
10:16-10:16
defAt: A15 @ 5:9-5:19

test15.p26

typ b = bool
fun main() : b =
    let var b1 : b var b2 : b in
        if b1 and b2 or b1 or b2 then
            b2 and b1 and true or false
        else
            let var b1 : b var b2 : b in
                if b1 and b2 or b1 or b2 then
                    b2 and b1 and true or false
                else
                    let var b1 : b var b2 : b in
                        if b1 and b2 or b1 or b2 then
                            b2 and b1 and true or false
                        else
                            (let var b1 : b var b2 : b in
                                if b1 and b2 or b1 or b2 then
                                    b2 and b1 and true or false
                                else
                                    false
                                end
                            end,
                            let var b1 : b var b2 : b in
                                if b1 and b2 or b1 or b2 then
                                    b2 and b1 and true or false
                                else
                                    false
                                end
                            end)
                        end
                    end
                end
            end
        end
    end
 A146: Nodes<Defn> 
1:1-34:7
 A1: TypDefn b 
1:1-1:12
 A0: AtomType BOOL 
1:9-1:12
 A145: DefFunDefn main 
2:1-34:7
 A142: Nodes<ParDefn> 
 A2: NameType b 
2:14-2:14
defAt: A1 @ 1:1-1:12
 A144: Exprs 
3:5-34:7
 A143: Nodes<Expr> 
3:5-34:7
 A141: LetExpr 
3:5-34:7
 A138: Nodes<Defn> 
3:9-3:29
 A4: VarDefn b1 
3:9-3:18
 A3: NameType b 
3:18-3:18
defAt: A1 @ 1:1-1:12
 A6: VarDefn b2 
3:20-3:29
 A5: NameType b 
3:29-3:29
defAt: A1 @ 1:1-1:12
 A140: Exprs 
4:9-33:11
 A139: Nodes<Expr> 
4:9-33:11
 A137: IfThenElseExpr 
4:9-33:11
 A13: BinExpr OR 
4:12-4:32
 A11: BinExpr OR 
4:12-4:26
 A9: BinExpr AND 
4:12-4:20
 A7: NameExpr b1 
4:12-4:13
defAt: A4 @ 3:9-3:18
 A8: NameExpr b2 
4:19-4:20
defAt: A6 @ 3:20-3:29
 A10: NameExpr b1 
4:25-4:26
defAt: A4 @ 3:9-3:18
 A12: NameExpr b2 
4:31-4:32
defAt: A6 @ 3:20-3:29
 A134: Exprs 
5:13-5:39
 A133: Nodes<Expr> 
5:13-5:39
 A20: BinExpr OR 
5:13-5:39
 A18: BinExpr AND 
5:13-5:30
 A16: BinExpr AND 
5:13-5:21
 A14: NameExpr b2 
5:13-5:14
defAt: A6 @ 3:20-3:29
 A15: NameExpr b1 
5:20-5:21
defAt: A4 @ 3:9-3:18
 A17: AtomExpr true 
5:27-5:30
 A19: AtomExpr false 
5:35-5:39
 A136: Exprs 
7:13-32:15
 A135: Nodes<Expr> 
7:13-32:15
 A132: LetExpr 
7:13-32:15
 A129: Nodes<Defn> 
7:17-7:37
 A22: VarDefn b1 
7:17-7:26
 A21: NameType b 
7:26-7:26
defAt: A1 @ 1:1-1:12
 A24: VarDefn b2 
7:28-7:37
 A23: NameType b 
7:37-7:37
defAt: A1 @ 1:1-1:12
 A131: Exprs 
8:17-31:19
 A130: Nodes<Expr> 
8:17-31:19
 A128: IfThenElseExpr 
8:17-31:19
 A31: BinExpr OR 
8:20-8:40
 A29: BinExpr OR 
8:20-8:34
 A27: BinExpr AND 
8:20-8:28
 A25: NameExpr b1 
8:20-8:21
defAt: A22 @ 7:17-7:26
 A26: NameExpr b2 
8:27-8:28
defAt: A24 @ 7:28-7:37
 A28: NameExpr b1 
8:33-8:34
defAt: A22 @ 7:17-7:26
 A30: NameExpr b2 
8:39-8:40
defAt: A24 @ 7:28-7:37
 A125: Exprs 
9:21-9:47
 A124: Nodes<Expr> 
9:21-9:47
 A38: BinExpr OR 
9:21-9:47
 A36: BinExpr AND 
9:21-9:38
 A34: BinExpr AND 
9:21-9:29
 A32: NameExpr b2 
9:21-9:22
defAt: A24 @ 7:28-7:37
 A33: NameExpr b1 
9:28-9:29
defAt: A22 @ 7:17-7:26
 A35: AtomExpr true 
9:35-9:38
 A37: AtomExpr false 
9:43-9:47
 A127: Exprs 
11:21-30:23
 A126: Nodes<Expr> 
11:21-30:23
 A123: LetExpr 
11:21-30:23
 A120: Nodes<Defn> 
11:25-11:45
 A40: VarDefn b1 
11:25-11:34
 A39: NameType b 
11:34-11:34
defAt: A1 @ 1:1-1:12
 A42: VarDefn b2 
11:36-11:45
 A41: NameType b 
11:45-11:45
defAt: A1 @ 1:1-1:12
 A122: Exprs 
12:25-29:27
 A121: Nodes<Expr> 
12:25-29:27
 A119: IfThenElseExpr 
12:25-29:27
 A49: BinExpr OR 
12:28-12:48
 A47: BinExpr OR 
12:28-12:42
 A45: BinExpr AND 
12:28-12:36
 A43: NameExpr b1 
12:28-12:29
defAt: A40 @ 11:25-11:34
 A44: NameExpr b2 
12:35-12:36
defAt: A42 @ 11:36-11:45
 A46: NameExpr b1 
12:41-12:42
defAt: A40 @ 11:25-11:34
 A48: NameExpr b2 
12:47-12:48
defAt: A42 @ 11:36-11:45
 A116: Exprs 
13:29-13:55
 A115: Nodes<Expr> 
13:29-13:55
 A56: BinExpr OR 
13:29-13:55
 A54: BinExpr AND 
13:29-13:46
 A52: BinExpr AND 
13:29-13:37
 A50: NameExpr b2 
13:29-13:30
defAt: A42 @ 11:36-11:45
 A51: NameExpr b1 
13:36-13:37
defAt: A40 @ 11:25-11:34
 A53: AtomExpr true 
13:43-13:46
 A55: AtomExpr false 
13:51-13:55
 A118: Exprs 
15:29-28:32
 A117: Nodes<Expr> 
15:29-28:32
 A114: Exprs 
15:29-28:32
 A113: Nodes<Expr> 
15:29-28:32
 A84: LetExpr 
15:30-21:31
 A81: Nodes<Defn> 
15:34-15:54
 A58: VarDefn b1 
15:34-15:43
 A57: NameType b 
15:43-15:43
defAt: A1 @ 1:1-1:12
 A60: VarDefn b2 
15:45-15:54
 A59: NameType b 
15:54-15:54
defAt: A1 @ 1:1-1:12
 A83: Exprs 
16:33-20:35
 A82: Nodes<Expr> 
16:33-20:35
 A80: IfThenElseExpr 
16:33-20:35
 A67: BinExpr OR 
16:36-16:56
 A65: BinExpr OR 
16:36-16:50
 A63: BinExpr AND 
16:36-16:44
 A61: NameExpr b1 
16:36-16:37
defAt: A58 @ 15:34-15:43
 A62: NameExpr b2 
16:43-16:44
defAt: A60 @ 15:45-15:54
 A64: NameExpr b1 
16:49-16:50
defAt: A58 @ 15:34-15:43
 A66: NameExpr b2 
16:55-16:56
defAt: A60 @ 15:45-15:54
 A77: Exprs 
17:37-17:63
 A76: Nodes<Expr> 
17:37-17:63
 A74: BinExpr OR 
17:37-17:63
 A72: BinExpr AND 
17:37-17:54
 A70: BinExpr AND 
17:37-17:45
 A68: NameExpr b2 
17:37-17:38
defAt: A60 @ 15:45-15:54
 A69: NameExpr b1 
17:44-17:45
defAt: A58 @ 15:34-15:43
 A71: AtomExpr true 
17:51-17:54
 A73: AtomExpr false 
17:59-17:63
 A79: Exprs 
19:37-19:41
 A78: Nodes<Expr> 
19:37-19:41
 A75: AtomExpr false 
19:37-19:41
 A112: LetExpr 
22:29-28:31
 A109: Nodes<Defn> 
22:33-22:53
 A86: VarDefn b1 
22:33-22:42
 A85: NameType b 
22:42-22:42
defAt: A1 @ 1:1-1:12
 A88: VarDefn b2 
22:44-22:53
 A87: NameType b 
22:53-22:53
defAt: A1 @ 1:1-1:12
 A111: Exprs 
23:33-27:35
 A110: Nodes<Expr> 
23:33-27:35
 A108: IfThenElseExpr 
23:33-27:35
 A95: BinExpr OR 
23:36-23:56
 A93: BinExpr OR 
23:36-23:50
 A91: BinExpr AND 
23:36-23:44
 A89: NameExpr b1 
23:36-23:37
defAt: A86 @ 22:33-22:42
 A90: NameExpr b2 
23:43-23:44
defAt: A88 @ 22:44-22:53
 A92: NameExpr b1 
23:49-23:50
defAt: A86 @ 22:33-22:42
 A94: NameExpr b2 
23:55-23:56
defAt: A88 @ 22:44-22:53
 A105: Exprs 
24:37-24:63
 A104: Nodes<Expr> 
24:37-24:63
 A102: BinExpr OR 
24:37-24:63
 A100: BinExpr AND 
24:37-24:54
 A98: BinExpr AND 
24:37-24:45
 A96: NameExpr b2 
24:37-24:38
defAt: A88 @ 22:44-22:53
 A97: NameExpr b1 
24:44-24:45
defAt: A86 @ 22:33-22:42
 A99: AtomExpr true 
24:51-24:54
 A101: AtomExpr false 
24:59-24:63
 A107: Exprs 
26:37-26:41
 A106: Nodes<Expr> 
26:37-26:41
 A103: AtomExpr false 
26:37-26:41

test16.p26

var a: int
var b: int
fun main(): int =
    a = 0,
    b = 0,
    while a < 100 do
            while b < 100000 do
                b = b + 2
            end,
            a = a + 1
    end
 A37: Nodes<Defn> 
1:1-11:7
 A1: VarDefn a 
1:1-1:10
 A0: AtomType INT 
1:8-1:10
 A3: VarDefn b 
2:1-2:10
 A2: AtomType INT 
2:8-2:10
 A36: DefFunDefn main 
3:1-11:7
 A33: Nodes<ParDefn> 
 A4: AtomType INT 
3:13-3:15
 A35: Exprs 
4:5-11:7
 A34: Nodes<Expr> 
4:5-11:7
 A7: AsgnExpr 
4:5-4:9
 A5: NameExpr a 
4:5-4:5
defAt: A1 @ 1:1-1:10
 A6: AtomExpr 0 
4:9-4:9
 A10: AsgnExpr 
5:5-5:9
 A8: NameExpr b 
5:5-5:5
defAt: A3 @ 2:1-2:10
 A9: AtomExpr 0 
5:9-5:9
 A32: WhileExpr 
6:5-11:7
 A13: BinExpr LTH 
6:11-6:17
 A11: NameExpr a 
6:11-6:11
defAt: A1 @ 1:1-1:10
 A12: AtomExpr 100 
6:15-6:17
 A31: Exprs 
7:13-10:21
 A30: Nodes<Expr> 
7:13-10:21
 A24: WhileExpr 
7:13-9:15
 A16: BinExpr LTH 
7:19-7:28
 A14: NameExpr b 
7:19-7:19
defAt: A3 @ 2:1-2:10
 A15: AtomExpr 100000 
7:23-7:28
 A23: Exprs 
8:17-8:25
 A22: Nodes<Expr> 
8:17-8:25
 A21: AsgnExpr 
8:17-8:25
 A17: NameExpr b 
8:17-8:17
defAt: A3 @ 2:1-2:10
 A20: BinExpr ADD 
8:21-8:25
 A18: NameExpr b 
8:21-8:21
defAt: A3 @ 2:1-2:10
 A19: AtomExpr 2 
8:25-8:25
 A29: AsgnExpr 
10:13-10:21
 A25: NameExpr a 
10:13-10:13
defAt: A1 @ 1:1-1:10
 A28: BinExpr ADD 
10:17-10:21
 A26: NameExpr a 
10:17-10:17
defAt: A1 @ 1:1-1:10
 A27: AtomExpr 1 
10:21-10:21

test17.p26


fun h(): void = none


fun f(): void = h()



fun main():void =
    f()
 A22: Nodes<Defn> 
2:1-10:7
 A5: DefFunDefn h 
2:1-2:20
 A2: Nodes<ParDefn> 
 A0: AtomType VOID 
2:10-2:13
 A4: Exprs 
2:17-2:20
 A3: Nodes<Expr> 
2:17-2:20
 A1: AtomExpr none 
2:17-2:20
 A13: DefFunDefn f 
5:1-5:19
 A10: Nodes<ParDefn> 
 A6: AtomType VOID 
5:10-5:13
 A12: Exprs 
5:17-5:19
 A11: Nodes<Expr> 
5:17-5:19
 A9: CallExpr 
5:17-5:19
 A7: NameExpr h 
5:17-5:17
defAt: A5 @ 2:1-2:20
 A8: Nodes<Expr> 
 A21: DefFunDefn main 
9:1-10:7
 A18: Nodes<ParDefn> 
 A14: AtomType VOID 
9:12-9:15
 A20: Exprs 
10:5-10:7
 A19: Nodes<Expr> 
10:5-10:7
 A17: CallExpr 
10:5-10:7
 A15: NameExpr f 
10:5-10:5
defAt: A13 @ 5:1-5:19
 A16: Nodes<Expr> 

test18.p26


var i: int
var c: int
fun main():void =
    i = 0,
    c = 345325,
    while i < c do
        if i % 2 == 0 then
            c = c - 1
        end,
        i = i + 1
    end
 A39: Nodes<Defn> 
2:1-12:7
 A1: VarDefn i 
2:1-2:10
 A0: AtomType INT 
2:8-2:10
 A3: VarDefn c 
3:1-3:10
 A2: AtomType INT 
3:8-3:10
 A38: DefFunDefn main 
4:1-12:7
 A35: Nodes<ParDefn> 
 A4: AtomType VOID 
4:12-4:15
 A37: Exprs 
5:5-12:7
 A36: Nodes<Expr> 
5:5-12:7
 A7: AsgnExpr 
5:5-5:9
 A5: NameExpr i 
5:5-5:5
defAt: A1 @ 2:1-2:10
 A6: AtomExpr 0 
5:9-5:9
 A10: AsgnExpr 
6:5-6:14
 A8: NameExpr c 
6:5-6:5
defAt: A3 @ 3:1-3:10
 A9: AtomExpr 345325 
6:9-6:14
 A34: WhileExpr 
7:5-12:7
 A13: BinExpr LTH 
7:11-7:15
 A11: NameExpr i 
7:11-7:11
defAt: A1 @ 2:1-2:10
 A12: NameExpr c 
7:15-7:15
defAt: A3 @ 3:1-3:10
 A33: Exprs 
8:9-11:17
 A32: Nodes<Expr> 
8:9-11:17
 A26: IfThenExpr 
8:9-10:11
 A18: BinExpr EQU 
8:12-8:21
 A16: BinExpr MOD 
8:12-8:16
 A14: NameExpr i 
8:12-8:12
defAt: A1 @ 2:1-2:10
 A15: AtomExpr 2 
8:16-8:16
 A17: AtomExpr 0 
8:21-8:21
 A25: Exprs 
9:13-9:21
 A24: Nodes<Expr> 
9:13-9:21
 A23: AsgnExpr 
9:13-9:21
 A19: NameExpr c 
9:13-9:13
defAt: A3 @ 3:1-3:10
 A22: BinExpr SUB 
9:17-9:21
 A20: NameExpr c 
9:17-9:17
defAt: A3 @ 3:1-3:10
 A21: AtomExpr 1 
9:21-9:21
 A31: AsgnExpr 
11:9-11:17
 A27: NameExpr i 
11:9-11:9
defAt: A1 @ 2:1-2:10
 A30: BinExpr ADD 
11:13-11:17
 A28: NameExpr i 
11:13-11:13
defAt: A1 @ 2:1-2:10
 A29: AtomExpr 1 
11:17-11:17

test19.p26

typ i = int
typ c = char
typ b = bool

var g1 : i
var g2 : i

fun ext(a : i, bb : i) : i

fun helper(x : i) : b =
    x == 0

fun fib(n : i) : i =
    if n == 0 then
        0
    else
        if n == 1 then
            1
        else
            fib(n - 1) + fib(n - 2)
        end
    end

fun main() : i =
    let
        var local1 : i
        var local2 : i
        typ li = i
        fun inner(a : li, bb : li) : li =
            let
                var tmp : li
            in
                tmp = a + bb,
                tmp * 2
            end
    in
        g1 = 10,
        g2 = 20,
        local1 = fib(g1),
        local2 = inner(g1, g2),
        let
            var shadow : b
            var g1 : b
        in
            shadow = helper(local1),
            g1 = shadow and true or false,
            let
                var deep : i
            in
                deep = ext(local1, local2),
                if helper(deep) then
                    g2 = deep + 1
                else
                    g2 = deep - 1
                end,
                while g2 > 0 do
                    if g2 % 2 == 0 then
                        g2 = g2 - 1
                    else
                        g2 = g2 * 2 - 3
                    end
                end,
                deep
            end
        end
    end
 A204: Nodes<Defn> 
1:1-66:7
 A1: TypDefn i 
1:1-1:11
 A0: AtomType INT 
1:9-1:11
 A3: TypDefn c 
2:1-2:12
 A2: AtomType CHAR 
2:9-2:12
 A5: TypDefn b 
3:1-3:12
 A4: AtomType BOOL 
3:9-3:12
 A7: VarDefn g1 
5:1-5:10
 A6: NameType i 
5:10-5:10
defAt: A1 @ 1:1-1:11
 A9: VarDefn g2 
6:1-6:10
 A8: NameType i 
6:10-6:10
defAt: A1 @ 1:1-1:11
 A16: ExtFunDefn ext 
8:1-8:26
 A15: Nodes<ParDefn> 
8:8-8:22
 A11: ParDefn a 
8:9-8:13
 A10: NameType i 
8:13-8:13
defAt: A1 @ 1:1-1:11
 A13: ParDefn bb 
8:16-8:21
 A12: NameType i 
8:21-8:21
defAt: A1 @ 1:1-1:11
 A14: NameType i 
8:26-8:26
defAt: A1 @ 1:1-1:11
 A26: DefFunDefn helper 
10:1-11:10
 A23: Nodes<ParDefn> 
10:11-10:17
 A18: ParDefn x 
10:12-10:16
 A17: NameType i 
10:16-10:16
defAt: A1 @ 1:1-1:11
 A19: NameType b 
10:21-10:21
defAt: A5 @ 3:1-3:12
 A25: Exprs 
11:5-11:10
 A24: Nodes<Expr> 
11:5-11:10
 A22: BinExpr EQU 
11:5-11:10
 A20: NameExpr x 
11:5-11:5
defAt: A18 @ 10:12-10:16
 A21: AtomExpr 0 
11:10-11:10
 A64: DefFunDefn fib 
13:1-22:7
 A61: Nodes<ParDefn> 
13:8-13:14
 A28: ParDefn n 
13:9-13:13
 A27: NameType i 
13:13-13:13
defAt: A1 @ 1:1-1:11
 A29: NameType i 
13:18-13:18
defAt: A1 @ 1:1-1:11
 A63: Exprs 
14:5-22:7
 A62: Nodes<Expr> 
14:5-22:7
 A60: IfThenElseExpr 
14:5-22:7
 A32: BinExpr EQU 
14:8-14:13
 A30: NameExpr n 
14:8-14:8
defAt: A28 @ 13:9-13:13
 A31: AtomExpr 0 
14:13-14:13
 A57: Exprs 
15:9-15:9
 A56: Nodes<Expr> 
15:9-15:9
 A33: AtomExpr 0 
15:9-15:9
 A59: Exprs 
17:9-21:11
 A58: Nodes<Expr> 
17:9-21:11
 A55: IfThenElseExpr 
17:9-21:11
 A36: BinExpr EQU 
17:12-17:17
 A34: NameExpr n 
17:12-17:12
defAt: A28 @ 13:9-13:13
 A35: AtomExpr 1 
17:17-17:17
 A52: Exprs 
18:13-18:13
 A51: Nodes<Expr> 
18:13-18:13
 A37: AtomExpr 1 
18:13-18:13
 A54: Exprs 
20:13-20:35
 A53: Nodes<Expr> 
20:13-20:35
 A50: BinExpr ADD 
20:13-20:35
 A43: CallExpr 
20:13-20:22
 A38: NameExpr fib 
20:13-20:15
defAt: A64 @ 13:1-22:7
 A42: Nodes<Expr> 
20:16-20:22
 A41: BinExpr SUB 
20:17-20:21
 A39: NameExpr n 
20:17-20:17
defAt: A28 @ 13:9-13:13
 A40: AtomExpr 1 
20:21-20:21
 A49: CallExpr 
20:26-20:35
 A44: NameExpr fib 
20:26-20:28
defAt: A64 @ 13:1-22:7
 A48: Nodes<Expr> 
20:29-20:35
 A47: BinExpr SUB 
20:30-20:34
 A45: NameExpr n 
20:30-20:30
defAt: A28 @ 13:9-13:13
 A46: AtomExpr 2 
20:34-20:34
 A203: DefFunDefn main 
24:1-66:7
 A200: Nodes<ParDefn> 
 A65: NameType i 
24:14-24:14
defAt: A1 @ 1:1-1:11
 A202: Exprs 
25:5-66:7
 A201: Nodes<Expr> 
25:5-66:7
 A199: LetExpr 
25:5-66:7
 A196: Nodes<Defn> 
26:9-35:15
 A67: VarDefn local1 
26:9-26:22
 A66: NameType i 
26:22-26:22
defAt: A1 @ 1:1-1:11
 A69: VarDefn local2 
27:9-27:22
 A68: NameType i 
27:22-27:22
defAt: A1 @ 1:1-1:11
 A71: TypDefn li 
28:9-28:18
 A70: NameType i 
28:18-28:18
defAt: A1 @ 1:1-1:11
 A94: DefFunDefn inner 
29:9-35:15
 A91: Nodes<ParDefn> 
29:18-29:34
 A73: ParDefn a 
29:19-29:24
 A72: NameType li 
29:23-29:24
defAt: A71 @ 28:9-28:18
 A75: ParDefn bb 
29:27-29:33
 A74: NameType li 
29:32-29:33
defAt: A71 @ 28:9-28:18
 A76: NameType li 
29:38-29:39
defAt: A71 @ 28:9-28:18
 A93: Exprs 
30:13-35:15
 A92: Nodes<Expr> 
30:13-35:15
 A90: LetExpr 
30:13-35:15
 A87: Nodes<Defn> 
31:17-31:28
 A78: VarDefn tmp 
31:17-31:28
 A77: NameType li 
31:27-31:28
defAt: A71 @ 28:9-28:18
 A89: Exprs 
33:17-34:23
 A88: Nodes<Expr> 
33:17-34:23
 A83: AsgnExpr 
33:17-33:28
 A79: NameExpr tmp 
33:17-33:19
defAt: A78 @ 31:17-31:28
 A82: BinExpr ADD 
33:23-33:28
 A80: NameExpr a 
33:23-33:23
defAt: A73 @ 29:19-29:24
 A81: NameExpr bb 
33:27-33:28
defAt: A75 @ 29:27-29:33
 A86: BinExpr MUL 
34:17-34:23
 A84: NameExpr tmp 
34:17-34:19
defAt: A78 @ 31:17-31:28
 A85: AtomExpr 2 
34:23-34:23
 A198: Exprs 
37:9-65:11
 A197: Nodes<Expr> 
37:9-65:11
 A97: AsgnExpr 
37:9-37:15
 A95: NameExpr g1 
37:9-37:10
defAt: A7 @ 5:1-5:10
 A96: AtomExpr 10 
37:14-37:15
 A100: AsgnExpr 
38:9-38:15
 A98: NameExpr g2 
38:9-38:10
defAt: A9 @ 6:1-6:10
 A99: AtomExpr 20 
38:14-38:15
 A106: AsgnExpr 
39:9-39:24
 A101: NameExpr local1 
39:9-39:14
defAt: A67 @ 26:9-26:22
 A105: CallExpr 
39:18-39:24
 A102: NameExpr fib 
39:18-39:20
defAt: A64 @ 13:1-22:7
 A104: Nodes<Expr> 
39:21-39:24
 A103: NameExpr g1 
39:22-39:23
defAt: A7 @ 5:1-5:10
 A113: AsgnExpr 
40:9-40:30
 A107: NameExpr local2 
40:9-40:14
defAt: A69 @ 27:9-27:22
 A112: CallExpr 
40:18-40:30
 A108: NameExpr inner 
40:18-40:22
defAt: A94 @ 29:9-35:15
 A111: Nodes<Expr> 
40:23-40:30
 A109: NameExpr g1 
40:24-40:25
defAt: A7 @ 5:1-5:10
 A110: NameExpr g2 
40:28-40:29
defAt: A9 @ 6:1-6:10
 A195: LetExpr 
41:9-65:11
 A192: Nodes<Defn> 
42:13-43:22
 A115: VarDefn shadow 
42:13-42:26
 A114: NameType b 
42:26-42:26
defAt: A5 @ 3:1-3:12
 A117: VarDefn g1 
43:13-43:22
 A116: NameType b 
43:22-43:22
defAt: A5 @ 3:1-3:12
 A194: Exprs 
45:13-64:15
 A193: Nodes<Expr> 
45:13-64:15
 A123: AsgnExpr 
45:13-45:35
 A118: NameExpr shadow 
45:13-45:18
defAt: A115 @ 42:13-42:26
 A122: CallExpr 
45:22-45:35
 A119: NameExpr helper 
45:22-45:27
defAt: A26 @ 10:1-11:10
 A121: Nodes<Expr> 
45:28-45:35
 A120: NameExpr local1 
45:29-45:34
defAt: A67 @ 26:9-26:22
 A130: AsgnExpr 
46:13-46:41
 A124: NameExpr g1 
46:13-46:14
defAt: A117 @ 43:13-43:22
 A129: BinExpr OR 
46:18-46:41
 A127: BinExpr AND 
46:18-46:32
 A125: NameExpr shadow 
46:18-46:23
defAt: A115 @ 42:13-42:26
 A126: AtomExpr true 
46:29-46:32
 A128: AtomExpr false 
46:37-46:41
 A191: LetExpr 
47:13-64:15
 A188: Nodes<Defn> 
48:17-48:28
 A132: VarDefn deep 
48:17-48:28
 A131: NameType i 
48:28-48:28
defAt: A1 @ 1:1-1:11
 A190: Exprs 
50:17-63:20
 A189: Nodes<Expr> 
50:17-63:20
 A139: AsgnExpr 
50:17-50:42
 A133: NameExpr deep 
50:17-50:20
defAt: A132 @ 48:17-48:28
 A138: CallExpr 
50:24-50:42
 A134: NameExpr ext 
50:24-50:26
defAt: A16 @ 8:1-8:26
 A137: Nodes<Expr> 
50:27-50:42
 A135: NameExpr local1 
50:28-50:33
defAt: A67 @ 26:9-26:22
 A136: NameExpr local2 
50:36-50:41
defAt: A69 @ 27:9-27:22
 A158: IfThenElseExpr 
51:17-55:19
 A143: CallExpr 
51:20-51:31
 A140: NameExpr helper 
51:20-51:25
defAt: A26 @ 10:1-11:10
 A142: Nodes<Expr> 
51:26-51:31
 A141: NameExpr deep 
51:27-51:30
defAt: A132 @ 48:17-48:28
 A155: Exprs 
52:21-52:33
 A154: Nodes<Expr> 
52:21-52:33
 A148: AsgnExpr 
52:21-52:33
 A144: NameExpr g2 
52:21-52:22
defAt: A9 @ 6:1-6:10
 A147: BinExpr ADD 
52:26-52:33
 A145: NameExpr deep 
52:26-52:29
defAt: A132 @ 48:17-48:28
 A146: AtomExpr 1 
52:33-52:33
 A157: Exprs 
54:21-54:33
 A156: Nodes<Expr> 
54:21-54:33
 A153: AsgnExpr 
54:21-54:33
 A149: NameExpr g2 
54:21-54:22
defAt: A9 @ 6:1-6:10
 A152: BinExpr SUB 
54:26-54:33
 A150: NameExpr deep 
54:26-54:29
defAt: A132 @ 48:17-48:28
 A151: AtomExpr 1 
54:33-54:33
 A186: WhileExpr 
56:17-62:19
 A161: BinExpr GTH 
56:23-56:28
 A159: NameExpr g2 
56:23-56:24
defAt: A9 @ 6:1-6:10
 A160: AtomExpr 0 
56:28-56:28
 A185: Exprs 
57:21-61:23
 A184: Nodes<Expr> 
57:21-61:23
 A183: IfThenElseExpr 
57:21-61:23
 A166: BinExpr EQU 
57:24-57:34
 A164: BinExpr MOD 
57:24-57:29
 A162: NameExpr g2 
57:24-57:25
defAt: A9 @ 6:1-6:10
 A163: AtomExpr 2 
57:29-57:29
 A165: AtomExpr 0 
57:34-57:34
 A180: Exprs 
58:25-58:35
 A179: Nodes<Expr> 
58:25-58:35
 A171: AsgnExpr 
58:25-58:35
 A167: NameExpr g2 
58:25-58:26
defAt: A9 @ 6:1-6:10
 A170: BinExpr SUB 
58:30-58:35
 A168: NameExpr g2 
58:30-58:31
defAt: A9 @ 6:1-6:10
 A169: AtomExpr 1 
58:35-58:35
 A182: Exprs 
60:25-60:39
 A181: Nodes<Expr> 
60:25-60:39
 A178: AsgnExpr 
60:25-60:39
 A172: NameExpr g2 
60:25-60:26
defAt: A9 @ 6:1-6:10
 A177: BinExpr SUB 
60:30-60:39
 A175: BinExpr MUL 
60:30-60:35
 A173: NameExpr g2 
60:30-60:31
defAt: A9 @ 6:1-6:10
 A174: AtomExpr 2 
60:35-60:35
 A176: AtomExpr 3 
60:39-60:39
 A187: NameExpr deep 
63:17-63:20
defAt: A132 @ 48:17-48:28

test1.p26

// cikel
typ a = b
typ b = a
 A4: Nodes<Defn> 
2:1-3:9
 A1: TypDefn a 
2:1-2:9
 A0: NameType b 
2:9-2:9
defAt: A3 @ 3:1-3:9
 A3: TypDefn b 
3:1-3:9
 A2: NameType a 
3:9-3:9
defAt: A1 @ 2:1-2:9

test20.p26

typ i = int
typ c = char
typ b = bool
typ pi = ^i
typ pb = ^b

var counter : i
var flag : b
var result : i

fun ext_print(x : i) : i
fun ext_read() : i

fun is_zero(n : i) : b =
    n == 0

fun is_even(n : i) : b =
    n % 2 == 0

fun abs_val(n : i) : i =
    if n < 0 then
        0 - n
    else
        n
    end

fun max(a : i, b : i) : i =
    if a > b then
        a
    else
        b
    end

fun min(a : i, b : i) : i =
    if a < b then
        a
    else
        b
    end

fun pow(base : i, exp : i) : i =
    if is_zero(exp) then
        1
    else
        base * pow(base, exp - 1)
    end

fun gcd(a : i, b : i) : i =
    if is_zero(b) then
        a
    else
        gcd(b, a % b)
    end

fun fib(n : i) : i =
    if n == 0 then
        0
    else
        if n == 1 then
            1
        else
            fib(n - 1) + fib(n - 2)
        end
    end

fun sum_to(n : i) : i =
    if is_zero(n) then
        0
    else
        n + sum_to(n - 1)
    end

fun collatz(n : i) : i =
    if n == 1 then
        0
    else
        if is_even(n) then
            1 + collatz(n / 2)
        else
            1 + collatz(3 * n + 1)
        end
    end

fun ackermann(m : i, n : i) : i =
    if is_zero(m) then
        n + 1
    else
        if is_zero(n) then
            ackermann(m - 1, 1)
        else
            ackermann(m - 1, ackermann(m, n - 1))
        end
    end

fun digit_sum(n : i) : i =
    if n < 10 then
        n
    else
        n % 10 + digit_sum(n / 10)
    end

fun is_palindrome(n : i, rev : i) : b =
    if is_zero(n) then
        n == rev
    else
        is_palindrome(n / 10, rev * 10 + n % 10)
    end

fun count_bits(n : i) : i =
    if is_zero(n) then
        0
    else
        n % 2 + count_bits(n / 2)
    end

fun main() : i =
    let
        var a : i
        var bb : i
        var cc : i
        var dd : i
        var e : i
        var f : b
        var g : b
        typ li = i
        typ lb = b
        fun local_max(x : li, y : li) : li =
            if x > y then
                x
            else
                y
            end
        fun local_and(x : lb, y : lb) : lb =
            x and y
        fun triple(x : li) : li =
            x * 3
        fun compose(x : li) : li =
            triple(triple(x))
    in
        counter = 0,
        result = 0,
        flag = true,
        a = fib(10),
        bb = pow(2, 8),
        cc = gcd(bb, a),
        dd = sum_to(100),
        e = collatz(27),
        f = is_even(a),
        g = is_palindrome(12321, 0),
        result = local_max(a, bb),
        result = compose(result),
        counter = ackermann(3, 2),
        let
            var shadow_a : i
            var shadow_b : i
            var shadow_f : b
            var counter : i
            var result : i
            fun shadow_fib(n : i) : i =
                if n == 0 then
                    0
                else
                    if n == 1 then
                        1
                    else
                        shadow_fib(n - 1) + shadow_fib(n - 2)
                    end
                end
            fun accumulate(n : i, acc : i) : i =
                if is_zero(n) then
                    acc
                else
                    accumulate(n - 1, acc + n)
                end
        in
            shadow_a = shadow_fib(15),
            shadow_b = accumulate(50, 0),
            shadow_f = local_and(f, g),
            counter = digit_sum(shadow_a * shadow_b),
            result = min(shadow_a, shadow_b),
            while counter > 0 do
                if is_even(counter) then
                    result = result + shadow_fib(counter)
                else
                    result = result - digit_sum(counter)
                end,
                counter = counter - 1
            end,
            let
                var deep1 : i
                var deep2 : i
                var deep3 : b
                var deep4 : i
                typ di = i
                fun deep_pow(b : di, e : di) : di =
                    if is_zero(e) then
                        1
                    else
                        b * deep_pow(b, e - 1)
                    end
                fun deep_collatz(n : di) : di =
                    if n == 1 then
                        0
                    else
                        if is_even(n) then
                            1 + deep_collatz(n / 2)
                        else
                            1 + deep_collatz(3 * n + 1)
                        end
                    end
                fun toggle(x : lb) : lb =
                    if x then
                        false
                    else
                        true
                    end
            in
                deep1 = deep_pow(2, counter % 10),
                deep2 = deep_collatz(abs_val(result) + 1),
                deep3 = toggle(shadow_f),
                deep4 = max(deep1, deep2),
                flag = local_and(deep3, is_even(deep4)),
                while deep4 > 0 do
                    if is_even(deep4) then
                        if deep4 > 100 then
                            deep4 = deep4 / 2
                        else
                            deep4 = deep4 - 1
                        end
                    else
                        if is_zero(deep4 % 3) then
                            deep4 = deep4 - 3
                        else
                            deep4 = deep4 * 2 - deep4 - 1
                        end
                    end
                end,
                let
                    var ultra1 : i
                    var ultra2 : b
                    var ultra3 : i
                    fun ultra_gcd(a : i, b : i) : i =
                        if is_zero(b) then
                            a
                        else
                            ultra_gcd(b, a % b)
                        end
                    fun ultra_sum(n : i) : i =
                        if is_zero(n) then
                            0
                        else
                            n + ultra_sum(n - 1)
                        end
                    fun ultra_bits(n : i) : i =
                        if is_zero(n) then
                            0
                        else
                            n % 2 + ultra_bits(n / 2)
                        end
                in
                    ultra1 = ultra_gcd(deep1, deep2),
                    ultra2 = is_even(ultra1),
                    ultra3 = ultra_sum(ultra_bits(deep4 + ultra1)),
                    counter = ultra3 + count_bits(ultra1),
                    result = ext_print(counter),
                    flag = local_and(ultra2, deep3),
                    while ultra3 > 0 do
                        ultra1 = ultra_gcd(ultra3, ultra1 + 1),
                        ultra3 = ultra3 - 1
                    end,
                    ext_print(result),
                    ultra3
                end
            end
        end
    end
 A1068: Nodes<Defn> 
1:1-276:7
 A1: TypDefn i 
1:1-1:11
 A0: AtomType INT 
1:9-1:11
 A3: TypDefn c 
2:1-2:12
 A2: AtomType CHAR 
2:9-2:12
 A5: TypDefn b 
3:1-3:12
 A4: AtomType BOOL 
3:9-3:12
 A8: TypDefn pi 
4:1-4:11
 A7: PtrType 
4:10-4:11
 A6: NameType i 
4:11-4:11
defAt: A1 @ 1:1-1:11
 A11: TypDefn pb 
5:1-5:11
 A10: PtrType 
5:10-5:11
 A9: NameType b 
5:11-5:11
defAt: A5 @ 3:1-3:12
 A13: VarDefn counter 
7:1-7:15
 A12: NameType i 
7:15-7:15
defAt: A1 @ 1:1-1:11
 A15: VarDefn flag 
8:1-8:12
 A14: NameType b 
8:12-8:12
defAt: A5 @ 3:1-3:12
 A17: VarDefn result 
9:1-9:14
 A16: NameType i 
9:14-9:14
defAt: A1 @ 1:1-1:11
 A22: ExtFunDefn ext_print 
11:1-11:24
 A21: Nodes<ParDefn> 
11:14-11:20
 A19: ParDefn x 
11:15-11:19
 A18: NameType i 
11:19-11:19
defAt: A1 @ 1:1-1:11
 A20: NameType i 
11:24-11:24
defAt: A1 @ 1:1-1:11
 A25: ExtFunDefn ext_read 
12:1-12:18
 A24: Nodes<ParDefn> 
 A23: NameType i 
12:18-12:18
defAt: A1 @ 1:1-1:11
 A35: DefFunDefn is_zero 
14:1-15:10
 A32: Nodes<ParDefn> 
14:12-14:18
 A27: ParDefn n 
14:13-14:17
 A26: NameType i 
14:17-14:17
defAt: A1 @ 1:1-1:11
 A28: NameType b 
14:22-14:22
defAt: A5 @ 3:1-3:12
 A34: Exprs 
15:5-15:10
 A33: Nodes<Expr> 
15:5-15:10
 A31: BinExpr EQU 
15:5-15:10
 A29: NameExpr n 
15:5-15:5
defAt: A27 @ 14:13-14:17
 A30: AtomExpr 0 
15:10-15:10
 A47: DefFunDefn is_even 
17:1-18:14
 A44: Nodes<ParDefn> 
17:12-17:18
 A37: ParDefn n 
17:13-17:17
 A36: NameType i 
17:17-17:17
defAt: A1 @ 1:1-1:11
 A38: NameType b 
17:22-17:22
defAt: A5 @ 3:1-3:12
 A46: Exprs 
18:5-18:14
 A45: Nodes<Expr> 
18:5-18:14
 A43: BinExpr EQU 
18:5-18:14
 A41: BinExpr MOD 
18:5-18:9
 A39: NameExpr n 
18:5-18:5
defAt: A37 @ 17:13-17:17
 A40: AtomExpr 2 
18:9-18:9
 A42: AtomExpr 0 
18:14-18:14
 A66: DefFunDefn abs_val 
20:1-25:7
 A63: Nodes<ParDefn> 
20:12-20:18
 A49: ParDefn n 
20:13-20:17
 A48: NameType i 
20:17-20:17
defAt: A1 @ 1:1-1:11
 A50: NameType i 
20:22-20:22
defAt: A1 @ 1:1-1:11
 A65: Exprs 
21:5-25:7
 A64: Nodes<Expr> 
21:5-25:7
 A62: IfThenElseExpr 
21:5-25:7
 A53: BinExpr LTH 
21:8-21:12
 A51: NameExpr n 
21:8-21:8
defAt: A49 @ 20:13-20:17
 A52: AtomExpr 0 
21:12-21:12
 A59: Exprs 
22:9-22:13
 A58: Nodes<Expr> 
22:9-22:13
 A56: BinExpr SUB 
22:9-22:13
 A54: AtomExpr 0 
22:9-22:9
 A55: NameExpr n 
22:13-22:13
defAt: A49 @ 20:13-20:17
 A61: Exprs 
24:9-24:9
 A60: Nodes<Expr> 
24:9-24:9
 A57: NameExpr n 
24:9-24:9
defAt: A49 @ 20:13-20:17
 A85: DefFunDefn max 
27:1-32:7
 A82: Nodes<ParDefn> 
27:8-27:21
 A68: ParDefn a 
27:9-27:13
 A67: NameType i 
27:13-27:13
defAt: A1 @ 1:1-1:11
 A70: ParDefn b 
27:16-27:20
 A69: NameType i 
27:20-27:20
defAt: A1 @ 1:1-1:11
 A71: NameType i 
27:25-27:25
defAt: A1 @ 1:1-1:11
 A84: Exprs 
28:5-32:7
 A83: Nodes<Expr> 
28:5-32:7
 A81: IfThenElseExpr 
28:5-32:7
 A74: BinExpr GTH 
28:8-28:12
 A72: NameExpr a 
28:8-28:8
defAt: A68 @ 27:9-27:13
 A73: NameExpr b 
28:12-28:12
defAt: A70 @ 27:16-27:20
 A78: Exprs 
29:9-29:9
 A77: Nodes<Expr> 
29:9-29:9
 A75: NameExpr a 
29:9-29:9
defAt: A68 @ 27:9-27:13
 A80: Exprs 
31:9-31:9
 A79: Nodes<Expr> 
31:9-31:9
 A76: NameExpr b 
31:9-31:9
defAt: A70 @ 27:16-27:20
 A104: DefFunDefn min 
34:1-39:7
 A101: Nodes<ParDefn> 
34:8-34:21
 A87: ParDefn a 
34:9-34:13
 A86: NameType i 
34:13-34:13
defAt: A1 @ 1:1-1:11
 A89: ParDefn b 
34:16-34:20
 A88: NameType i 
34:20-34:20
defAt: A1 @ 1:1-1:11
 A90: NameType i 
34:25-34:25
defAt: A1 @ 1:1-1:11
 A103: Exprs 
35:5-39:7
 A102: Nodes<Expr> 
35:5-39:7
 A100: IfThenElseExpr 
35:5-39:7
 A93: BinExpr LTH 
35:8-35:12
 A91: NameExpr a 
35:8-35:8
defAt: A87 @ 34:9-34:13
 A92: NameExpr b 
35:12-35:12
defAt: A89 @ 34:16-34:20
 A97: Exprs 
36:9-36:9
 A96: Nodes<Expr> 
36:9-36:9
 A94: NameExpr a 
36:9-36:9
defAt: A87 @ 34:9-34:13
 A99: Exprs 
38:9-38:9
 A98: Nodes<Expr> 
38:9-38:9
 A95: NameExpr b 
38:9-38:9
defAt: A89 @ 34:16-34:20
 A132: DefFunDefn pow 
41:1-46:7
 A129: Nodes<ParDefn> 
41:8-41:26
 A106: ParDefn base 
41:9-41:16
 A105: NameType i 
41:16-41:16
defAt: A1 @ 1:1-1:11
 A108: ParDefn exp 
41:19-41:25
 A107: NameType i 
41:25-41:25
defAt: A1 @ 1:1-1:11
 A109: NameType i 
41:30-41:30
defAt: A1 @ 1:1-1:11
 A131: Exprs 
42:5-46:7
 A130: Nodes<Expr> 
42:5-46:7
 A128: IfThenElseExpr 
42:5-46:7
 A113: CallExpr 
42:8-42:19
 A110: NameExpr is_zero 
42:8-42:14
defAt: A35 @ 14:1-15:10
 A112: Nodes<Expr> 
42:15-42:19
 A111: NameExpr exp 
42:16-42:18
defAt: A108 @ 41:19-41:25
 A125: Exprs 
43:9-43:9
 A124: Nodes<Expr> 
43:9-43:9
 A114: AtomExpr 1 
43:9-43:9
 A127: Exprs 
45:9-45:33
 A126: Nodes<Expr> 
45:9-45:33
 A123: BinExpr MUL 
45:9-45:33
 A115: NameExpr base 
45:9-45:12
defAt: A106 @ 41:9-41:16
 A122: CallExpr 
45:16-45:33
 A116: NameExpr pow 
45:16-45:18
defAt: A132 @ 41:1-46:7
 A121: Nodes<Expr> 
45:19-45:33
 A117: NameExpr base 
45:20-45:23
defAt: A106 @ 41:9-41:16
 A120: BinExpr SUB 
45:26-45:32
 A118: NameExpr exp 
45:26-45:28
defAt: A108 @ 41:19-41:25
 A119: AtomExpr 1 
45:32-45:32
 A158: DefFunDefn gcd 
48:1-53:7
 A155: Nodes<ParDefn> 
48:8-48:21
 A134: ParDefn a 
48:9-48:13
 A133: NameType i 
48:13-48:13
defAt: A1 @ 1:1-1:11
 A136: ParDefn b 
48:16-48:20
 A135: NameType i 
48:20-48:20
defAt: A1 @ 1:1-1:11
 A137: NameType i 
48:25-48:25
defAt: A1 @ 1:1-1:11
 A157: Exprs 
49:5-53:7
 A156: Nodes<Expr> 
49:5-53:7
 A154: IfThenElseExpr 
49:5-53:7
 A141: CallExpr 
49:8-49:17
 A138: NameExpr is_zero 
49:8-49:14
defAt: A35 @ 14:1-15:10
 A140: Nodes<Expr> 
49:15-49:17
 A139: NameExpr b 
49:16-49:16
defAt: A136 @ 48:16-48:20
 A151: Exprs 
50:9-50:9
 A150: Nodes<Expr> 
50:9-50:9
 A142: NameExpr a 
50:9-50:9
defAt: A134 @ 48:9-48:13
 A153: Exprs 
52:9-52:21
 A152: Nodes<Expr> 
52:9-52:21
 A149: CallExpr 
52:9-52:21
 A143: NameExpr gcd 
52:9-52:11
defAt: A158 @ 48:1-53:7
 A148: Nodes<Expr> 
52:12-52:21
 A144: NameExpr b 
52:13-52:13
defAt: A136 @ 48:16-48:20
 A147: BinExpr MOD 
52:16-52:20
 A145: NameExpr a 
52:16-52:16
defAt: A134 @ 48:9-48:13
 A146: NameExpr b 
52:20-52:20
defAt: A136 @ 48:16-48:20
 A196: DefFunDefn fib 
55:1-64:7
 A193: Nodes<ParDefn> 
55:8-55:14
 A160: ParDefn n 
55:9-55:13
 A159: NameType i 
55:13-55:13
defAt: A1 @ 1:1-1:11
 A161: NameType i 
55:18-55:18
defAt: A1 @ 1:1-1:11
 A195: Exprs 
56:5-64:7
 A194: Nodes<Expr> 
56:5-64:7
 A192: IfThenElseExpr 
56:5-64:7
 A164: BinExpr EQU 
56:8-56:13
 A162: NameExpr n 
56:8-56:8
defAt: A160 @ 55:9-55:13
 A163: AtomExpr 0 
56:13-56:13
 A189: Exprs 
57:9-57:9
 A188: Nodes<Expr> 
57:9-57:9
 A165: AtomExpr 0 
57:9-57:9
 A191: Exprs 
59:9-63:11
 A190: Nodes<Expr> 
59:9-63:11
 A187: IfThenElseExpr 
59:9-63:11
 A168: BinExpr EQU 
59:12-59:17
 A166: NameExpr n 
59:12-59:12
defAt: A160 @ 55:9-55:13
 A167: AtomExpr 1 
59:17-59:17
 A184: Exprs 
60:13-60:13
 A183: Nodes<Expr> 
60:13-60:13
 A169: AtomExpr 1 
60:13-60:13
 A186: Exprs 
62:13-62:35
 A185: Nodes<Expr> 
62:13-62:35
 A182: BinExpr ADD 
62:13-62:35
 A175: CallExpr 
62:13-62:22
 A170: NameExpr fib 
62:13-62:15
defAt: A196 @ 55:1-64:7
 A174: Nodes<Expr> 
62:16-62:22
 A173: BinExpr SUB 
62:17-62:21
 A171: NameExpr n 
62:17-62:17
defAt: A160 @ 55:9-55:13
 A172: AtomExpr 1 
62:21-62:21
 A181: CallExpr 
62:26-62:35
 A176: NameExpr fib 
62:26-62:28
defAt: A196 @ 55:1-64:7
 A180: Nodes<Expr> 
62:29-62:35
 A179: BinExpr SUB 
62:30-62:34
 A177: NameExpr n 
62:30-62:30
defAt: A160 @ 55:9-55:13
 A178: AtomExpr 2 
62:34-62:34
 A221: DefFunDefn sum_to 
66:1-71:7
 A218: Nodes<ParDefn> 
66:11-66:17
 A198: ParDefn n 
66:12-66:16
 A197: NameType i 
66:16-66:16
defAt: A1 @ 1:1-1:11
 A199: NameType i 
66:21-66:21
defAt: A1 @ 1:1-1:11
 A220: Exprs 
67:5-71:7
 A219: Nodes<Expr> 
67:5-71:7
 A217: IfThenElseExpr 
67:5-71:7
 A203: CallExpr 
67:8-67:17
 A200: NameExpr is_zero 
67:8-67:14
defAt: A35 @ 14:1-15:10
 A202: Nodes<Expr> 
67:15-67:17
 A201: NameExpr n 
67:16-67:16
defAt: A198 @ 66:12-66:16
 A214: Exprs 
68:9-68:9
 A213: Nodes<Expr> 
68:9-68:9
 A204: AtomExpr 0 
68:9-68:9
 A216: Exprs 
70:9-70:25
 A215: Nodes<Expr> 
70:9-70:25
 A212: BinExpr ADD 
70:9-70:25
 A205: NameExpr n 
70:9-70:9
defAt: A198 @ 66:12-66:16
 A211: CallExpr 
70:13-70:25
 A206: NameExpr sum_to 
70:13-70:18
defAt: A221 @ 66:1-71:7
 A210: Nodes<Expr> 
70:19-70:25
 A209: BinExpr SUB 
70:20-70:24
 A207: NameExpr n 
70:20-70:20
defAt: A198 @ 66:12-66:16
 A208: AtomExpr 1 
70:24-70:24
 A264: DefFunDefn collatz 
73:1-82:7
 A261: Nodes<ParDefn> 
73:12-73:18
 A223: ParDefn n 
73:13-73:17
 A222: NameType i 
73:17-73:17
defAt: A1 @ 1:1-1:11
 A224: NameType i 
73:22-73:22
defAt: A1 @ 1:1-1:11
 A263: Exprs 
74:5-82:7
 A262: Nodes<Expr> 
74:5-82:7
 A260: IfThenElseExpr 
74:5-82:7
 A227: BinExpr EQU 
74:8-74:13
 A225: NameExpr n 
74:8-74:8
defAt: A223 @ 73:13-73:17
 A226: AtomExpr 1 
74:13-74:13
 A257: Exprs 
75:9-75:9
 A256: Nodes<Expr> 
75:9-75:9
 A228: AtomExpr 0 
75:9-75:9
 A259: Exprs 
77:9-81:11
 A258: Nodes<Expr> 
77:9-81:11
 A255: IfThenElseExpr 
77:9-81:11
 A232: CallExpr 
77:12-77:21
 A229: NameExpr is_even 
77:12-77:18
defAt: A47 @ 17:1-18:14
 A231: Nodes<Expr> 
77:19-77:21
 A230: NameExpr n 
77:20-77:20
defAt: A223 @ 73:13-73:17
 A252: Exprs 
78:13-78:30
 A251: Nodes<Expr> 
78:13-78:30
 A240: BinExpr ADD 
78:13-78:30
 A233: AtomExpr 1 
78:13-78:13
 A239: CallExpr 
78:17-78:30
 A234: NameExpr collatz 
78:17-78:23
defAt: A264 @ 73:1-82:7
 A238: Nodes<Expr> 
78:24-78:30
 A237: BinExpr DIV 
78:25-78:29
 A235: NameExpr n 
78:25-78:25
defAt: A223 @ 73:13-73:17
 A236: AtomExpr 2 
78:29-78:29
 A254: Exprs 
80:13-80:34
 A253: Nodes<Expr> 
80:13-80:34
 A250: BinExpr ADD 
80:13-80:34
 A241: AtomExpr 1 
80:13-80:13
 A249: CallExpr 
80:17-80:34
 A242: NameExpr collatz 
80:17-80:23
defAt: A264 @ 73:1-82:7
 A248: Nodes<Expr> 
80:24-80:34
 A247: BinExpr ADD 
80:25-80:33
 A245: BinExpr MUL 
80:25-80:29
 A243: AtomExpr 3 
80:25-80:25
 A244: NameExpr n 
80:29-80:29
defAt: A223 @ 73:13-73:17
 A246: AtomExpr 1 
80:33-80:33
 A314: DefFunDefn ackermann 
84:1-93:7
 A311: Nodes<ParDefn> 
84:14-84:27
 A266: ParDefn m 
84:15-84:19
 A265: NameType i 
84:19-84:19
defAt: A1 @ 1:1-1:11
 A268: ParDefn n 
84:22-84:26
 A267: NameType i 
84:26-84:26
defAt: A1 @ 1:1-1:11
 A269: NameType i 
84:31-84:31
defAt: A1 @ 1:1-1:11
 A313: Exprs 
85:5-93:7
 A312: Nodes<Expr> 
85:5-93:7
 A310: IfThenElseExpr 
85:5-93:7
 A273: CallExpr 
85:8-85:17
 A270: NameExpr is_zero 
85:8-85:14
defAt: A35 @ 14:1-15:10
 A272: Nodes<Expr> 
85:15-85:17
 A271: NameExpr m 
85:16-85:16
defAt: A266 @ 84:15-84:19
 A307: Exprs 
86:9-86:13
 A306: Nodes<Expr> 
86:9-86:13
 A276: BinExpr ADD 
86:9-86:13
 A274: NameExpr n 
86:9-86:9
defAt: A268 @ 84:22-84:26
 A275: AtomExpr 1 
86:13-86:13
 A309: Exprs 
88:9-92:11
 A308: Nodes<Expr> 
88:9-92:11
 A305: IfThenElseExpr 
88:9-92:11
 A280: CallExpr 
88:12-88:21
 A277: NameExpr is_zero 
88:12-88:18
defAt: A35 @ 14:1-15:10
 A279: Nodes<Expr> 
88:19-88:21
 A278: NameExpr n 
88:20-88:20
defAt: A268 @ 84:22-84:26
 A302: Exprs 
89:13-89:31
 A301: Nodes<Expr> 
89:13-89:31
 A287: CallExpr 
89:13-89:31
 A281: NameExpr ackermann 
89:13-89:21
defAt: A314 @ 84:1-93:7
 A286: Nodes<Expr> 
89:22-89:31
 A284: BinExpr SUB 
89:23-89:27
 A282: NameExpr m 
89:23-89:23
defAt: A266 @ 84:15-84:19
 A283: AtomExpr 1 
89:27-89:27
 A285: AtomExpr 1 
89:30-89:30
 A304: Exprs 
91:13-91:49
 A303: Nodes<Expr> 
91:13-91:49
 A300: CallExpr 
91:13-91:49
 A288: NameExpr ackermann 
91:13-91:21
defAt: A314 @ 84:1-93:7
 A299: Nodes<Expr> 
91:22-91:49
 A291: BinExpr SUB 
91:23-91:27
 A289: NameExpr m 
91:23-91:23
defAt: A266 @ 84:15-84:19
 A290: AtomExpr 1 
91:27-91:27
 A298: CallExpr 
91:30-91:48
 A292: NameExpr ackermann 
91:30-91:38
defAt: A314 @ 84:1-93:7
 A297: Nodes<Expr> 
91:39-91:48
 A293: NameExpr m 
91:40-91:40
defAt: A266 @ 84:15-84:19
 A296: BinExpr SUB 
91:43-91:47
 A294: NameExpr n 
91:43-91:43
defAt: A268 @ 84:22-84:26
 A295: AtomExpr 1 
91:47-91:47
 A340: DefFunDefn digit_sum 
95:1-100:7
 A337: Nodes<ParDefn> 
95:14-95:20
 A316: ParDefn n 
95:15-95:19
 A315: NameType i 
95:19-95:19
defAt: A1 @ 1:1-1:11
 A317: NameType i 
95:24-95:24
defAt: A1 @ 1:1-1:11
 A339: Exprs 
96:5-100:7
 A338: Nodes<Expr> 
96:5-100:7
 A336: IfThenElseExpr 
96:5-100:7
 A320: BinExpr LTH 
96:8-96:13
 A318: NameExpr n 
96:8-96:8
defAt: A316 @ 95:15-95:19
 A319: AtomExpr 10 
96:12-96:13
 A333: Exprs 
97:9-97:9
 A332: Nodes<Expr> 
97:9-97:9
 A321: NameExpr n 
97:9-97:9
defAt: A316 @ 95:15-95:19
 A335: Exprs 
99:9-99:34
 A334: Nodes<Expr> 
99:9-99:34
 A331: BinExpr ADD 
99:9-99:34
 A324: BinExpr MOD 
99:9-99:14
 A322: NameExpr n 
99:9-99:9
defAt: A316 @ 95:15-95:19
 A323: AtomExpr 10 
99:13-99:14
 A330: CallExpr 
99:18-99:34
 A325: NameExpr digit_sum 
99:18-99:26
defAt: A340 @ 95:1-100:7
 A329: Nodes<Expr> 
99:27-99:34
 A328: BinExpr DIV 
99:28-99:33
 A326: NameExpr n 
99:28-99:28
defAt: A316 @ 95:15-95:19
 A327: AtomExpr 10 
99:32-99:33
 A374: DefFunDefn is_palindrome 
102:1-107:7
 A371: Nodes<ParDefn> 
102:18-102:33
 A342: ParDefn n 
102:19-102:23
 A341: NameType i 
102:23-102:23
defAt: A1 @ 1:1-1:11
 A344: ParDefn rev 
102:26-102:32
 A343: NameType i 
102:32-102:32
defAt: A1 @ 1:1-1:11
 A345: NameType b 
102:37-102:37
defAt: A5 @ 3:1-3:12
 A373: Exprs 
103:5-107:7
 A372: Nodes<Expr> 
103:5-107:7
 A370: IfThenElseExpr 
103:5-107:7
 A349: CallExpr 
103:8-103:17
 A346: NameExpr is_zero 
103:8-103:14
defAt: A35 @ 14:1-15:10
 A348: Nodes<Expr> 
103:15-103:17
 A347: NameExpr n 
103:16-103:16
defAt: A342 @ 102:19-102:23
 A367: Exprs 
104:9-104:16
 A366: Nodes<Expr> 
104:9-104:16
 A352: BinExpr EQU 
104:9-104:16
 A350: NameExpr n 
104:9-104:9
defAt: A342 @ 102:19-102:23
 A351: NameExpr rev 
104:14-104:16
defAt: A344 @ 102:26-102:32
 A369: Exprs 
106:9-106:48
 A368: Nodes<Expr> 
106:9-106:48
 A365: CallExpr 
106:9-106:48
 A353: NameExpr is_palindrome 
106:9-106:21
defAt: A374 @ 102:1-107:7
 A364: Nodes<Expr> 
106:22-106:48
 A356: BinExpr DIV 
106:23-106:28
 A354: NameExpr n 
106:23-106:23
defAt: A342 @ 102:19-102:23
 A355: AtomExpr 10 
106:27-106:28
 A363: BinExpr ADD 
106:31-106:47
 A359: BinExpr MUL 
106:31-106:38
 A357: NameExpr rev 
106:31-106:33
defAt: A344 @ 102:26-102:32
 A358: AtomExpr 10 
106:37-106:38
 A362: BinExpr MOD 
106:42-106:47
 A360: NameExpr n 
106:42-106:42
defAt: A342 @ 102:19-102:23
 A361: AtomExpr 10 
106:46-106:47
 A401: DefFunDefn count_bits 
109:1-114:7
 A398: Nodes<ParDefn> 
109:15-109:21
 A376: ParDefn n 
109:16-109:20
 A375: NameType i 
109:20-109:20
defAt: A1 @ 1:1-1:11
 A377: NameType i 
109:25-109:25
defAt: A1 @ 1:1-1:11
 A400: Exprs 
110:5-114:7
 A399: Nodes<Expr> 
110:5-114:7
 A397: IfThenElseExpr 
110:5-114:7
 A381: CallExpr 
110:8-110:17
 A378: NameExpr is_zero 
110:8-110:14
defAt: A35 @ 14:1-15:10
 A380: Nodes<Expr> 
110:15-110:17
 A379: NameExpr n 
110:16-110:16
defAt: A376 @ 109:16-109:20
 A394: Exprs 
111:9-111:9
 A393: Nodes<Expr> 
111:9-111:9
 A382: AtomExpr 0 
111:9-111:9
 A396: Exprs 
113:9-113:33
 A395: Nodes<Expr> 
113:9-113:33
 A392: BinExpr ADD 
113:9-113:33
 A385: BinExpr MOD 
113:9-113:13
 A383: NameExpr n 
113:9-113:9
defAt: A376 @ 109:16-109:20
 A384: AtomExpr 2 
113:13-113:13
 A391: CallExpr 
113:17-113:33
 A386: NameExpr count_bits 
113:17-113:26
defAt: A401 @ 109:1-114:7
 A390: Nodes<Expr> 
113:27-113:33
 A389: BinExpr DIV 
113:28-113:32
 A387: NameExpr n 
113:28-113:28
defAt: A376 @ 109:16-109:20
 A388: AtomExpr 2 
113:32-113:32
 A1067: DefFunDefn main 
116:1-276:7
 A1064: Nodes<ParDefn> 
 A402: NameType i 
116:14-116:14
defAt: A1 @ 1:1-1:11
 A1066: Exprs 
117:5-276:7
 A1065: Nodes<Expr> 
117:5-276:7
 A1063: LetExpr 
117:5-276:7
 A1060: Nodes<Defn> 
118:9-138:29
 A404: VarDefn a 
118:9-118:17
 A403: NameType i 
118:17-118:17
defAt: A1 @ 1:1-1:11
 A406: VarDefn bb 
119:9-119:18
 A405: NameType i 
119:18-119:18
defAt: A1 @ 1:1-1:11
 A408: VarDefn cc 
120:9-120:18
 A407: NameType i 
120:18-120:18
defAt: A1 @ 1:1-1:11
 A410: VarDefn dd 
121:9-121:18
 A409: NameType i 
121:18-121:18
defAt: A1 @ 1:1-1:11
 A412: VarDefn e 
122:9-122:17
 A411: NameType i 
122:17-122:17
defAt: A1 @ 1:1-1:11
 A414: VarDefn f 
123:9-123:17
 A413: NameType b 
123:17-123:17
defAt: A5 @ 3:1-3:12
 A416: VarDefn g 
124:9-124:17
 A415: NameType b 
124:17-124:17
defAt: A5 @ 3:1-3:12
 A418: TypDefn li 
125:9-125:18
 A417: NameType i 
125:18-125:18
defAt: A1 @ 1:1-1:11
 A420: TypDefn lb 
126:9-126:18
 A419: NameType b 
126:18-126:18
defAt: A5 @ 3:1-3:12
 A439: DefFunDefn local_max 
127:9-132:15
 A436: Nodes<ParDefn> 
127:22-127:37
 A422: ParDefn x 
127:23-127:28
 A421: NameType li 
127:27-127:28
defAt: A418 @ 125:9-125:18
 A424: ParDefn y 
127:31-127:36
 A423: NameType li 
127:35-127:36
defAt: A418 @ 125:9-125:18
 A425: NameType li 
127:41-127:42
defAt: A418 @ 125:9-125:18
 A438: Exprs 
128:13-132:15
 A437: Nodes<Expr> 
128:13-132:15
 A435: IfThenElseExpr 
128:13-132:15
 A428: BinExpr GTH 
128:16-128:20
 A426: NameExpr x 
128:16-128:16
defAt: A422 @ 127:23-127:28
 A427: NameExpr y 
128:20-128:20
defAt: A424 @ 127:31-127:36
 A432: Exprs 
129:17-129:17
 A431: Nodes<Expr> 
129:17-129:17
 A429: NameExpr x 
129:17-129:17
defAt: A422 @ 127:23-127:28
 A434: Exprs 
131:17-131:17
 A433: Nodes<Expr> 
131:17-131:17
 A430: NameExpr y 
131:17-131:17
defAt: A424 @ 127:31-127:36
 A451: DefFunDefn local_and 
133:9-134:19
 A448: Nodes<ParDefn> 
133:22-133:37
 A441: ParDefn x 
133:23-133:28
 A440: NameType lb 
133:27-133:28
defAt: A420 @ 126:9-126:18
 A443: ParDefn y 
133:31-133:36
 A442: NameType lb 
133:35-133:36
defAt: A420 @ 126:9-126:18
 A444: NameType lb 
133:41-133:42
defAt: A420 @ 126:9-126:18
 A450: Exprs 
134:13-134:19
 A449: Nodes<Expr> 
134:13-134:19
 A447: BinExpr AND 
134:13-134:19
 A445: NameExpr x 
134:13-134:13
defAt: A441 @ 133:23-133:28
 A446: NameExpr y 
134:19-134:19
defAt: A443 @ 133:31-133:36
 A461: DefFunDefn triple 
135:9-136:17
 A458: Nodes<ParDefn> 
135:19-135:26
 A453: ParDefn x 
135:20-135:25
 A452: NameType li 
135:24-135:25
defAt: A418 @ 125:9-125:18
 A454: NameType li 
135:30-135:31
defAt: A418 @ 125:9-125:18
 A460: Exprs 
136:13-136:17
 A459: Nodes<Expr> 
136:13-136:17
 A457: BinExpr MUL 
136:13-136:17
 A455: NameExpr x 
136:13-136:13
defAt: A453 @ 135:20-135:25
 A456: AtomExpr 3 
136:17-136:17
 A475: DefFunDefn compose 
137:9-138:29
 A472: Nodes<ParDefn> 
137:20-137:27
 A463: ParDefn x 
137:21-137:26
 A462: NameType li 
137:25-137:26
defAt: A418 @ 125:9-125:18
 A464: NameType li 
137:31-137:32
defAt: A418 @ 125:9-125:18
 A474: Exprs 
138:13-138:29
 A473: Nodes<Expr> 
138:13-138:29
 A471: CallExpr 
138:13-138:29
 A465: NameExpr triple 
138:13-138:18
defAt: A461 @ 135:9-136:17
 A470: Nodes<Expr> 
138:19-138:29
 A469: CallExpr 
138:20-138:28
 A466: NameExpr triple 
138:20-138:25
defAt: A461 @ 135:9-136:17
 A468: Nodes<Expr> 
138:26-138:28
 A467: NameExpr x 
138:27-138:27
defAt: A463 @ 137:21-137:26
 A1062: Exprs 
140:9-275:11
 A1061: Nodes<Expr> 
140:9-275:11
 A478: AsgnExpr 
140:9-140:19
 A476: NameExpr counter 
140:9-140:15
defAt: A13 @ 7:1-7:15
 A477: AtomExpr 0 
140:19-140:19
 A481: AsgnExpr 
141:9-141:18
 A479: NameExpr result 
141:9-141:14
defAt: A17 @ 9:1-9:14
 A480: AtomExpr 0 
141:18-141:18
 A484: AsgnExpr 
142:9-142:19
 A482: NameExpr flag 
142:9-142:12
defAt: A15 @ 8:1-8:12
 A483: AtomExpr true 
142:16-142:19
 A490: AsgnExpr 
143:9-143:19
 A485: NameExpr a 
143:9-143:9
defAt: A404 @ 118:9-118:17
 A489: CallExpr 
143:13-143:19
 A486: NameExpr fib 
143:13-143:15
defAt: A196 @ 55:1-64:7
 A488: Nodes<Expr> 
143:16-143:19
 A487: AtomExpr 10 
143:17-143:18
 A497: AsgnExpr 
144:9-144:22
 A491: NameExpr bb 
144:9-144:10
defAt: A406 @ 119:9-119:18
 A496: CallExpr 
144:14-144:22
 A492: NameExpr pow 
144:14-144:16
defAt: A132 @ 41:1-46:7
 A495: Nodes<Expr> 
144:17-144:22
 A493: AtomExpr 2 
144:18-144:18
 A494: AtomExpr 8 
144:21-144:21
 A504: AsgnExpr 
145:9-145:23
 A498: NameExpr cc 
145:9-145:10
defAt: A408 @ 120:9-120:18
 A503: CallExpr 
145:14-145:23
 A499: NameExpr gcd 
145:14-145:16
defAt: A158 @ 48:1-53:7
 A502: Nodes<Expr> 
145:17-145:23
 A500: NameExpr bb 
145:18-145:19
defAt: A406 @ 119:9-119:18
 A501: NameExpr a 
145:22-145:22
defAt: A404 @ 118:9-118:17
 A510: AsgnExpr 
146:9-146:24
 A505: NameExpr dd 
146:9-146:10
defAt: A410 @ 121:9-121:18
 A509: CallExpr 
146:14-146:24
 A506: NameExpr sum_to 
146:14-146:19
defAt: A221 @ 66:1-71:7
 A508: Nodes<Expr> 
146:20-146:24
 A507: AtomExpr 100 
146:21-146:23
 A516: AsgnExpr 
147:9-147:23
 A511: NameExpr e 
147:9-147:9
defAt: A412 @ 122:9-122:17
 A515: CallExpr 
147:13-147:23
 A512: NameExpr collatz 
147:13-147:19
defAt: A264 @ 73:1-82:7
 A514: Nodes<Expr> 
147:20-147:23
 A513: AtomExpr 27 
147:21-147:22
 A522: AsgnExpr 
148:9-148:22
 A517: NameExpr f 
148:9-148:9
defAt: A414 @ 123:9-123:17
 A521: CallExpr 
148:13-148:22
 A518: NameExpr is_even 
148:13-148:19
defAt: A47 @ 17:1-18:14
 A520: Nodes<Expr> 
148:20-148:22
 A519: NameExpr a 
148:21-148:21
defAt: A404 @ 118:9-118:17
 A529: AsgnExpr 
149:9-149:35
 A523: NameExpr g 
149:9-149:9
defAt: A416 @ 124:9-124:17
 A528: CallExpr 
149:13-149:35
 A524: NameExpr is_palindrome 
149:13-149:25
defAt: A374 @ 102:1-107:7
 A527: Nodes<Expr> 
149:26-149:35
 A525: AtomExpr 12321 
149:27-149:31
 A526: AtomExpr 0 
149:34-149:34
 A536: AsgnExpr 
150:9-150:33
 A530: NameExpr result 
150:9-150:14
defAt: A17 @ 9:1-9:14
 A535: CallExpr 
150:18-150:33
 A531: NameExpr local_max 
150:18-150:26
defAt: A439 @ 127:9-132:15
 A534: Nodes<Expr> 
150:27-150:33
 A532: NameExpr a 
150:28-150:28
defAt: A404 @ 118:9-118:17
 A533: NameExpr bb 
150:31-150:32
defAt: A406 @ 119:9-119:18
 A542: AsgnExpr 
151:9-151:32
 A537: NameExpr result 
151:9-151:14
defAt: A17 @ 9:1-9:14
 A541: CallExpr 
151:18-151:32
 A538: NameExpr compose 
151:18-151:24
defAt: A475 @ 137:9-138:29
 A540: Nodes<Expr> 
151:25-151:32
 A539: NameExpr result 
151:26-151:31
defAt: A17 @ 9:1-9:14
 A549: AsgnExpr 
152:9-152:33
 A543: NameExpr counter 
152:9-152:15
defAt: A13 @ 7:1-7:15
 A548: CallExpr 
152:19-152:33
 A544: NameExpr ackermann 
152:19-152:27
defAt: A314 @ 84:1-93:7
 A547: Nodes<Expr> 
152:28-152:33
 A545: AtomExpr 3 
152:29-152:29
 A546: AtomExpr 2 
152:32-152:32
 A1059: LetExpr 
153:9-275:11
 A1056: Nodes<Defn> 
154:13-174:19
 A551: VarDefn shadow_a 
154:13-154:28
 A550: NameType i 
154:28-154:28
defAt: A1 @ 1:1-1:11
 A553: VarDefn shadow_b 
155:13-155:28
 A552: NameType i 
155:28-155:28
defAt: A1 @ 1:1-1:11
 A555: VarDefn shadow_f 
156:13-156:28
 A554: NameType b 
156:28-156:28
defAt: A5 @ 3:1-3:12
 A557: VarDefn counter 
157:13-157:27
 A556: NameType i 
157:27-157:27
defAt: A1 @ 1:1-1:11
 A559: VarDefn result 
158:13-158:26
 A558: NameType i 
158:26-158:26
defAt: A1 @ 1:1-1:11
 A597: DefFunDefn shadow_fib 
159:13-168:19
 A594: Nodes<ParDefn> 
159:27-159:33
 A561: ParDefn n 
159:28-159:32
 A560: NameType i 
159:32-159:32
defAt: A1 @ 1:1-1:11
 A562: NameType i 
159:37-159:37
defAt: A1 @ 1:1-1:11
 A596: Exprs 
160:17-168:19
 A595: Nodes<Expr> 
160:17-168:19
 A593: IfThenElseExpr 
160:17-168:19
 A565: BinExpr EQU 
160:20-160:25
 A563: NameExpr n 
160:20-160:20
defAt: A561 @ 159:28-159:32
 A564: AtomExpr 0 
160:25-160:25
 A590: Exprs 
161:21-161:21
 A589: Nodes<Expr> 
161:21-161:21
 A566: AtomExpr 0 
161:21-161:21
 A592: Exprs 
163:21-167:23
 A591: Nodes<Expr> 
163:21-167:23
 A588: IfThenElseExpr 
163:21-167:23
 A569: BinExpr EQU 
163:24-163:29
 A567: NameExpr n 
163:24-163:24
defAt: A561 @ 159:28-159:32
 A568: AtomExpr 1 
163:29-163:29
 A585: Exprs 
164:25-164:25
 A584: Nodes<Expr> 
164:25-164:25
 A570: AtomExpr 1 
164:25-164:25
 A587: Exprs 
166:25-166:61
 A586: Nodes<Expr> 
166:25-166:61
 A583: BinExpr ADD 
166:25-166:61
 A576: CallExpr 
166:25-166:41
 A571: NameExpr shadow_fib 
166:25-166:34
defAt: A597 @ 159:13-168:19
 A575: Nodes<Expr> 
166:35-166:41
 A574: BinExpr SUB 
166:36-166:40
 A572: NameExpr n 
166:36-166:36
defAt: A561 @ 159:28-159:32
 A573: AtomExpr 1 
166:40-166:40
 A582: CallExpr 
166:45-166:61
 A577: NameExpr shadow_fib 
166:45-166:54
defAt: A597 @ 159:13-168:19
 A581: Nodes<Expr> 
166:55-166:61
 A580: BinExpr SUB 
166:56-166:60
 A578: NameExpr n 
166:56-166:56
defAt: A561 @ 159:28-159:32
 A579: AtomExpr 2 
166:60-166:60
 A625: DefFunDefn accumulate 
169:13-174:19
 A622: Nodes<ParDefn> 
169:27-169:42
 A599: ParDefn n 
169:28-169:32
 A598: NameType i 
169:32-169:32
defAt: A1 @ 1:1-1:11
 A601: ParDefn acc 
169:35-169:41
 A600: NameType i 
169:41-169:41
defAt: A1 @ 1:1-1:11
 A602: NameType i 
169:46-169:46
defAt: A1 @ 1:1-1:11
 A624: Exprs 
170:17-174:19
 A623: Nodes<Expr> 
170:17-174:19
 A621: IfThenElseExpr 
170:17-174:19
 A606: CallExpr 
170:20-170:29
 A603: NameExpr is_zero 
170:20-170:26
defAt: A35 @ 14:1-15:10
 A605: Nodes<Expr> 
170:27-170:29
 A604: NameExpr n 
170:28-170:28
defAt: A599 @ 169:28-169:32
 A618: Exprs 
171:21-171:23
 A617: Nodes<Expr> 
171:21-171:23
 A607: NameExpr acc 
171:21-171:23
defAt: A601 @ 169:35-169:41
 A620: Exprs 
173:21-173:46
 A619: Nodes<Expr> 
173:21-173:46
 A616: CallExpr 
173:21-173:46
 A608: NameExpr accumulate 
173:21-173:30
defAt: A625 @ 169:13-174:19
 A615: Nodes<Expr> 
173:31-173:46
 A611: BinExpr SUB 
173:32-173:36
 A609: NameExpr n 
173:32-173:32
defAt: A599 @ 169:28-169:32
 A610: AtomExpr 1 
173:36-173:36
 A614: BinExpr ADD 
173:39-173:45
 A612: NameExpr acc 
173:39-173:41
defAt: A601 @ 169:35-169:41
 A613: NameExpr n 
173:45-173:45
defAt: A599 @ 169:28-169:32
 A1058: Exprs 
176:13-274:15
 A1057: Nodes<Expr> 
176:13-274:15
 A631: AsgnExpr 
176:13-176:37
 A626: NameExpr shadow_a 
176:13-176:20
defAt: A551 @ 154:13-154:28
 A630: CallExpr 
176:24-176:37
 A627: NameExpr shadow_fib 
176:24-176:33
defAt: A597 @ 159:13-168:19
 A629: Nodes<Expr> 
176:34-176:37
 A628: AtomExpr 15 
176:35-176:36
 A638: AsgnExpr 
177:13-177:40
 A632: NameExpr shadow_b 
177:13-177:20
defAt: A553 @ 155:13-155:28
 A637: CallExpr 
177:24-177:40
 A633: NameExpr accumulate 
177:24-177:33
defAt: A625 @ 169:13-174:19
 A636: Nodes<Expr> 
177:34-177:40
 A634: AtomExpr 50 
177:35-177:36
 A635: AtomExpr 0 
177:39-177:39
 A645: AsgnExpr 
178:13-178:38
 A639: NameExpr shadow_f 
178:13-178:20
defAt: A555 @ 156:13-156:28
 A644: CallExpr 
178:24-178:38
 A640: NameExpr local_and 
178:24-178:32
defAt: A451 @ 133:9-134:19
 A643: Nodes<Expr> 
178:33-178:38
 A641: NameExpr f 
178:34-178:34
defAt: A414 @ 123:9-123:17
 A642: NameExpr g 
178:37-178:37
defAt: A416 @ 124:9-124:17
 A653: AsgnExpr 
179:13-179:52
 A646: NameExpr counter 
179:13-179:19
defAt: A557 @ 157:13-157:27
 A652: CallExpr 
179:23-179:52
 A647: NameExpr digit_sum 
179:23-179:31
defAt: A340 @ 95:1-100:7
 A651: Nodes<Expr> 
179:32-179:52
 A650: BinExpr MUL 
179:33-179:51
 A648: NameExpr shadow_a 
179:33-179:40
defAt: A551 @ 154:13-154:28
 A649: NameExpr shadow_b 
179:44-179:51
defAt: A553 @ 155:13-155:28
 A660: AsgnExpr 
180:13-180:44
 A654: NameExpr result 
180:13-180:18
defAt: A559 @ 158:13-158:26
 A659: CallExpr 
180:22-180:44
 A655: NameExpr min 
180:22-180:24
defAt: A104 @ 34:1-39:7
 A658: Nodes<Expr> 
180:25-180:44
 A656: NameExpr shadow_a 
180:26-180:33
defAt: A551 @ 154:13-154:28
 A657: NameExpr shadow_b 
180:36-180:43
defAt: A553 @ 155:13-155:28
 A696: WhileExpr 
181:13-188:15
 A663: BinExpr GTH 
181:19-181:29
 A661: NameExpr counter 
181:19-181:25
defAt: A557 @ 157:13-157:27
 A662: AtomExpr 0 
181:29-181:29
 A695: Exprs 
182:17-187:37
 A694: Nodes<Expr> 
182:17-187:37
 A688: IfThenElseExpr 
182:17-186:19
 A667: CallExpr 
182:20-182:35
 A664: NameExpr is_even 
182:20-182:26
defAt: A47 @ 17:1-18:14
 A666: Nodes<Expr> 
182:27-182:35
 A665: NameExpr counter 
182:28-182:34
defAt: A557 @ 157:13-157:27
 A685: Exprs 
183:21-183:57
 A684: Nodes<Expr> 
183:21-183:57
 A675: AsgnExpr 
183:21-183:57
 A668: NameExpr result 
183:21-183:26
defAt: A559 @ 158:13-158:26
 A674: BinExpr ADD 
183:30-183:57
 A669: NameExpr result 
183:30-183:35
defAt: A559 @ 158:13-158:26
 A673: CallExpr 
183:39-183:57
 A670: NameExpr shadow_fib 
183:39-183:48
defAt: A597 @ 159:13-168:19
 A672: Nodes<Expr> 
183:49-183:57
 A671: NameExpr counter 
183:50-183:56
defAt: A557 @ 157:13-157:27
 A687: Exprs 
185:21-185:56
 A686: Nodes<Expr> 
185:21-185:56
 A683: AsgnExpr 
185:21-185:56
 A676: NameExpr result 
185:21-185:26
defAt: A559 @ 158:13-158:26
 A682: BinExpr SUB 
185:30-185:56
 A677: NameExpr result 
185:30-185:35
defAt: A559 @ 158:13-158:26
 A681: CallExpr 
185:39-185:56
 A678: NameExpr digit_sum 
185:39-185:47
defAt: A340 @ 95:1-100:7
 A680: Nodes<Expr> 
185:48-185:56
 A679: NameExpr counter 
185:49-185:55
defAt: A557 @ 157:13-157:27
 A693: AsgnExpr 
187:17-187:37
 A689: NameExpr counter 
187:17-187:23
defAt: A557 @ 157:13-157:27
 A692: BinExpr SUB 
187:27-187:37
 A690: NameExpr counter 
187:27-187:33
defAt: A557 @ 157:13-157:27
 A691: AtomExpr 1 
187:37-187:37
 A1055: LetExpr 
189:13-274:15
 A1052: Nodes<Defn> 
190:17-216:23
 A698: VarDefn deep1 
190:17-190:29
 A697: NameType i 
190:29-190:29
defAt: A1 @ 1:1-1:11
 A700: VarDefn deep2 
191:17-191:29
 A699: NameType i 
191:29-191:29
defAt: A1 @ 1:1-1:11
 A702: VarDefn deep3 
192:17-192:29
 A701: NameType b 
192:29-192:29
defAt: A5 @ 3:1-3:12
 A704: VarDefn deep4 
193:17-193:29
 A703: NameType i 
193:29-193:29
defAt: A1 @ 1:1-1:11
 A706: TypDefn di 
194:17-194:26
 A705: NameType i 
194:26-194:26
defAt: A1 @ 1:1-1:11
 A734: DefFunDefn deep_pow 
195:17-200:23
 A731: Nodes<ParDefn> 
195:29-195:44
 A708: ParDefn b 
195:30-195:35
 A707: NameType di 
195:34-195:35
defAt: A706 @ 194:17-194:26
 A710: ParDefn e 
195:38-195:43
 A709: NameType di 
195:42-195:43
defAt: A706 @ 194:17-194:26
 A711: NameType di 
195:48-195:49
defAt: A706 @ 194:17-194:26
 A733: Exprs 
196:21-200:23
 A732: Nodes<Expr> 
196:21-200:23
 A730: IfThenElseExpr 
196:21-200:23
 A715: CallExpr 
196:24-196:33
 A712: NameExpr is_zero 
196:24-196:30
defAt: A35 @ 14:1-15:10
 A714: Nodes<Expr> 
196:31-196:33
 A713: NameExpr e 
196:32-196:32
defAt: A710 @ 195:38-195:43
 A727: Exprs 
197:25-197:25
 A726: Nodes<Expr> 
197:25-197:25
 A716: AtomExpr 1 
197:25-197:25
 A729: Exprs 
199:25-199:46
 A728: Nodes<Expr> 
199:25-199:46
 A725: BinExpr MUL 
199:25-199:46
 A717: NameExpr b 
199:25-199:25
defAt: A708 @ 195:30-195:35
 A724: CallExpr 
199:29-199:46
 A718: NameExpr deep_pow 
199:29-199:36
defAt: A734 @ 195:17-200:23
 A723: Nodes<Expr> 
199:37-199:46
 A719: NameExpr b 
199:38-199:38
defAt: A708 @ 195:30-195:35
 A722: BinExpr SUB 
199:41-199:45
 A720: NameExpr e 
199:41-199:41
defAt: A710 @ 195:38-195:43
 A721: AtomExpr 1 
199:45-199:45
 A777: DefFunDefn deep_collatz 
201:17-210:23
 A774: Nodes<ParDefn> 
201:33-201:40
 A736: ParDefn n 
201:34-201:39
 A735: NameType di 
201:38-201:39
defAt: A706 @ 194:17-194:26
 A737: NameType di 
201:44-201:45
defAt: A706 @ 194:17-194:26
 A776: Exprs 
202:21-210:23
 A775: Nodes<Expr> 
202:21-210:23
 A773: IfThenElseExpr 
202:21-210:23
 A740: BinExpr EQU 
202:24-202:29
 A738: NameExpr n 
202:24-202:24
defAt: A736 @ 201:34-201:39
 A739: AtomExpr 1 
202:29-202:29
 A770: Exprs 
203:25-203:25
 A769: Nodes<Expr> 
203:25-203:25
 A741: AtomExpr 0 
203:25-203:25
 A772: Exprs 
205:25-209:27
 A771: Nodes<Expr> 
205:25-209:27
 A768: IfThenElseExpr 
205:25-209:27
 A745: CallExpr 
205:28-205:37
 A742: NameExpr is_even 
205:28-205:34
defAt: A47 @ 17:1-18:14
 A744: Nodes<Expr> 
205:35-205:37
 A743: NameExpr n 
205:36-205:36
defAt: A736 @ 201:34-201:39
 A765: Exprs 
206:29-206:51
 A764: Nodes<Expr> 
206:29-206:51
 A753: BinExpr ADD 
206:29-206:51
 A746: AtomExpr 1 
206:29-206:29
 A752: CallExpr 
206:33-206:51
 A747: NameExpr deep_collatz 
206:33-206:44
defAt: A777 @ 201:17-210:23
 A751: Nodes<Expr> 
206:45-206:51
 A750: BinExpr DIV 
206:46-206:50
 A748: NameExpr n 
206:46-206:46
defAt: A736 @ 201:34-201:39
 A749: AtomExpr 2 
206:50-206:50
 A767: Exprs 
208:29-208:55
 A766: Nodes<Expr> 
208:29-208:55
 A763: BinExpr ADD 
208:29-208:55
 A754: AtomExpr 1 
208:29-208:29
 A762: CallExpr 
208:33-208:55
 A755: NameExpr deep_collatz 
208:33-208:44
defAt: A777 @ 201:17-210:23
 A761: Nodes<Expr> 
208:45-208:55
 A760: BinExpr ADD 
208:46-208:54
 A758: BinExpr MUL 
208:46-208:50
 A756: AtomExpr 3 
208:46-208:46
 A757: NameExpr n 
208:50-208:50
defAt: A736 @ 201:34-201:39
 A759: AtomExpr 1 
208:54-208:54
 A792: DefFunDefn toggle 
211:17-216:23
 A789: Nodes<ParDefn> 
211:27-211:34
 A779: ParDefn x 
211:28-211:33
 A778: NameType lb 
211:32-211:33
defAt: A420 @ 126:9-126:18
 A780: NameType lb 
211:38-211:39
defAt: A420 @ 126:9-126:18
 A791: Exprs 
212:21-216:23
 A790: Nodes<Expr> 
212:21-216:23
 A788: IfThenElseExpr 
212:21-216:23
 A781: NameExpr x 
212:24-212:24
defAt: A779 @ 211:28-211:33
 A785: Exprs 
213:25-213:29
 A784: Nodes<Expr> 
213:25-213:29
 A782: AtomExpr false 
213:25-213:29
 A787: Exprs 
215:25-215:28
 A786: Nodes<Expr> 
215:25-215:28
 A783: AtomExpr true 
215:25-215:28
 A1054: Exprs 
218:17-273:19
 A1053: Nodes<Expr> 
218:17-273:19
 A801: AsgnExpr 
218:17-218:49
 A793: NameExpr deep1 
218:17-218:21
defAt: A698 @ 190:17-190:29
 A800: CallExpr 
218:25-218:49
 A794: NameExpr deep_pow 
218:25-218:32
defAt: A734 @ 195:17-200:23
 A799: Nodes<Expr> 
218:33-218:49
 A795: AtomExpr 2 
218:34-218:34
 A798: BinExpr MOD 
218:37-218:48
 A796: NameExpr counter 
218:37-218:43
defAt: A557 @ 157:13-157:27
 A797: AtomExpr 10 
218:47-218:48
 A812: AsgnExpr 
219:17-219:57
 A802: NameExpr deep2 
219:17-219:21
defAt: A700 @ 191:17-191:29
 A811: CallExpr 
219:25-219:57
 A803: NameExpr deep_collatz 
219:25-219:36
defAt: A777 @ 201:17-210:23
 A810: Nodes<Expr> 
219:37-219:57
 A809: BinExpr ADD 
219:38-219:56
 A807: CallExpr 
219:38-219:52
 A804: NameExpr abs_val 
219:38-219:44
defAt: A66 @ 20:1-25:7
 A806: Nodes<Expr> 
219:45-219:52
 A805: NameExpr result 
219:46-219:51
defAt: A559 @ 158:13-158:26
 A808: AtomExpr 1 
219:56-219:56
 A818: AsgnExpr 
220:17-220:40
 A813: NameExpr deep3 
220:17-220:21
defAt: A702 @ 192:17-192:29
 A817: CallExpr 
220:25-220:40
 A814: NameExpr toggle 
220:25-220:30
defAt: A792 @ 211:17-216:23
 A816: Nodes<Expr> 
220:31-220:40
 A815: NameExpr shadow_f 
220:32-220:39
defAt: A555 @ 156:13-156:28
 A825: AsgnExpr 
221:17-221:41
 A819: NameExpr deep4 
221:17-221:21
defAt: A704 @ 193:17-193:29
 A824: CallExpr 
221:25-221:41
 A820: NameExpr max 
221:25-221:27
defAt: A85 @ 27:1-32:7
 A823: Nodes<Expr> 
221:28-221:41
 A821: NameExpr deep1 
221:29-221:33
defAt: A698 @ 190:17-190:29
 A822: NameExpr deep2 
221:36-221:40
defAt: A700 @ 191:17-191:29
 A835: AsgnExpr 
222:17-222:55
 A826: NameExpr flag 
222:17-222:20
defAt: A15 @ 8:1-8:12
 A834: CallExpr 
222:24-222:55
 A827: NameExpr local_and 
222:24-222:32
defAt: A451 @ 133:9-134:19
 A833: Nodes<Expr> 
222:33-222:55
 A828: NameExpr deep3 
222:34-222:38
defAt: A702 @ 192:17-192:29
 A832: CallExpr 
222:41-222:54
 A829: NameExpr is_even 
222:41-222:47
defAt: A47 @ 17:1-18:14
 A831: Nodes<Expr> 
222:48-222:54
 A830: NameExpr deep4 
222:49-222:53
defAt: A704 @ 193:17-193:29
 A893: WhileExpr 
223:17-237:19
 A838: BinExpr GTH 
223:23-223:31
 A836: NameExpr deep4 
223:23-223:27
defAt: A704 @ 193:17-193:29
 A837: AtomExpr 0 
223:31-223:31
 A892: Exprs 
224:21-236:23
 A891: Nodes<Expr> 
224:21-236:23
 A890: IfThenElseExpr 
224:21-236:23
 A842: CallExpr 
224:24-224:37
 A839: NameExpr is_even 
224:24-224:30
defAt: A47 @ 17:1-18:14
 A841: Nodes<Expr> 
224:31-224:37
 A840: NameExpr deep4 
224:32-224:36
defAt: A704 @ 193:17-193:29
 A887: Exprs 
225:25-229:27
 A886: Nodes<Expr> 
225:25-229:27
 A860: IfThenElseExpr 
225:25-229:27
 A845: BinExpr GTH 
225:28-225:38
 A843: NameExpr deep4 
225:28-225:32
defAt: A704 @ 193:17-193:29
 A844: AtomExpr 100 
225:36-225:38
 A857: Exprs 
226:29-226:45
 A856: Nodes<Expr> 
226:29-226:45
 A850: AsgnExpr 
226:29-226:45
 A846: NameExpr deep4 
226:29-226:33
defAt: A704 @ 193:17-193:29
 A849: BinExpr DIV 
226:37-226:45
 A847: NameExpr deep4 
226:37-226:41
defAt: A704 @ 193:17-193:29
 A848: AtomExpr 2 
226:45-226:45
 A859: Exprs 
228:29-228:45
 A858: Nodes<Expr> 
228:29-228:45
 A855: AsgnExpr 
228:29-228:45
 A851: NameExpr deep4 
228:29-228:33
defAt: A704 @ 193:17-193:29
 A854: BinExpr SUB 
228:37-228:45
 A852: NameExpr deep4 
228:37-228:41
defAt: A704 @ 193:17-193:29
 A853: AtomExpr 1 
228:45-228:45
 A889: Exprs 
231:25-235:27
 A888: Nodes<Expr> 
231:25-235:27
 A885: IfThenElseExpr 
231:25-235:27
 A866: CallExpr 
231:28-231:45
 A861: NameExpr is_zero 
231:28-231:34
defAt: A35 @ 14:1-15:10
 A865: Nodes<Expr> 
231:35-231:45
 A864: BinExpr MOD 
231:36-231:44
 A862: NameExpr deep4 
231:36-231:40
defAt: A704 @ 193:17-193:29
 A863: AtomExpr 3 
231:44-231:44
 A882: Exprs 
232:29-232:45
 A881: Nodes<Expr> 
232:29-232:45
 A871: AsgnExpr 
232:29-232:45
 A867: NameExpr deep4 
232:29-232:33
defAt: A704 @ 193:17-193:29
 A870: BinExpr SUB 
232:37-232:45
 A868: NameExpr deep4 
232:37-232:41
defAt: A704 @ 193:17-193:29
 A869: AtomExpr 3 
232:45-232:45
 A884: Exprs 
234:29-234:57
 A883: Nodes<Expr> 
234:29-234:57
 A880: AsgnExpr 
234:29-234:57
 A872: NameExpr deep4 
234:29-234:33
defAt: A704 @ 193:17-193:29
 A879: BinExpr SUB 
234:37-234:57
 A877: BinExpr SUB 
234:37-234:53
 A875: BinExpr MUL 
234:37-234:45
 A873: NameExpr deep4 
234:37-234:41
defAt: A704 @ 193:17-193:29
 A874: AtomExpr 2 
234:45-234:45
 A876: NameExpr deep4 
234:49-234:53
defAt: A704 @ 193:17-193:29
 A878: AtomExpr 1 
234:57-234:57
 A1051: LetExpr 
238:17-273:19
 A1048: Nodes<Defn> 
239:21-259:27
 A895: VarDefn ultra1 
239:21-239:34
 A894: NameType i 
239:34-239:34
defAt: A1 @ 1:1-1:11
 A897: VarDefn ultra2 
240:21-240:34
 A896: NameType b 
240:34-240:34
defAt: A5 @ 3:1-3:12
 A899: VarDefn ultra3 
241:21-241:34
 A898: NameType i 
241:34-241:34
defAt: A1 @ 1:1-1:11
 A925: DefFunDefn ultra_gcd 
242:21-247:27
 A922: Nodes<ParDefn> 
242:34-242:47
 A901: ParDefn a 
242:35-242:39
 A900: NameType i 
242:39-242:39
defAt: A1 @ 1:1-1:11
 A903: ParDefn b 
242:42-242:46
 A902: NameType i 
242:46-242:46
defAt: A1 @ 1:1-1:11
 A904: NameType i 
242:51-242:51
defAt: A1 @ 1:1-1:11
 A924: Exprs 
243:25-247:27
 A923: Nodes<Expr> 
243:25-247:27
 A921: IfThenElseExpr 
243:25-247:27
 A908: CallExpr 
243:28-243:37
 A905: NameExpr is_zero 
243:28-243:34
defAt: A35 @ 14:1-15:10
 A907: Nodes<Expr> 
243:35-243:37
 A906: NameExpr b 
243:36-243:36
defAt: A903 @ 242:42-242:46
 A918: Exprs 
244:29-244:29
 A917: Nodes<Expr> 
244:29-244:29
 A909: NameExpr a 
244:29-244:29
defAt: A901 @ 242:35-242:39
 A920: Exprs 
246:29-246:47
 A919: Nodes<Expr> 
246:29-246:47
 A916: CallExpr 
246:29-246:47
 A910: NameExpr ultra_gcd 
246:29-246:37
defAt: A925 @ 242:21-247:27
 A915: Nodes<Expr> 
246:38-246:47
 A911: NameExpr b 
246:39-246:39
defAt: A903 @ 242:42-242:46
 A914: BinExpr MOD 
246:42-246:46
 A912: NameExpr a 
246:42-246:42
defAt: A901 @ 242:35-242:39
 A913: NameExpr b 
246:46-246:46
defAt: A903 @ 242:42-242:46
 A950: DefFunDefn ultra_sum 
248:21-253:27
 A947: Nodes<ParDefn> 
248:34-248:40
 A927: ParDefn n 
248:35-248:39
 A926: NameType i 
248:39-248:39
defAt: A1 @ 1:1-1:11
 A928: NameType i 
248:44-248:44
defAt: A1 @ 1:1-1:11
 A949: Exprs 
249:25-253:27
 A948: Nodes<Expr> 
249:25-253:27
 A946: IfThenElseExpr 
249:25-253:27
 A932: CallExpr 
249:28-249:37
 A929: NameExpr is_zero 
249:28-249:34
defAt: A35 @ 14:1-15:10
 A931: Nodes<Expr> 
249:35-249:37
 A930: NameExpr n 
249:36-249:36
defAt: A927 @ 248:35-248:39
 A943: Exprs 
250:29-250:29
 A942: Nodes<Expr> 
250:29-250:29
 A933: AtomExpr 0 
250:29-250:29
 A945: Exprs 
252:29-252:48
 A944: Nodes<Expr> 
252:29-252:48
 A941: BinExpr ADD 
252:29-252:48
 A934: NameExpr n 
252:29-252:29
defAt: A927 @ 248:35-248:39
 A940: CallExpr 
252:33-252:48
 A935: NameExpr ultra_sum 
252:33-252:41
defAt: A950 @ 248:21-253:27
 A939: Nodes<Expr> 
252:42-252:48
 A938: BinExpr SUB 
252:43-252:47
 A936: NameExpr n 
252:43-252:43
defAt: A927 @ 248:35-248:39
 A937: AtomExpr 1 
252:47-252:47
 A977: DefFunDefn ultra_bits 
254:21-259:27
 A974: Nodes<ParDefn> 
254:35-254:41
 A952: ParDefn n 
254:36-254:40
 A951: NameType i 
254:40-254:40
defAt: A1 @ 1:1-1:11
 A953: NameType i 
254:45-254:45
defAt: A1 @ 1:1-1:11
 A976: Exprs 
255:25-259:27
 A975: Nodes<Expr> 
255:25-259:27
 A973: IfThenElseExpr 
255:25-259:27
 A957: CallExpr 
255:28-255:37
 A954: NameExpr is_zero 
255:28-255:34
defAt: A35 @ 14:1-15:10
 A956: Nodes<Expr> 
255:35-255:37
 A955: NameExpr n 
255:36-255:36
defAt: A952 @ 254:36-254:40
 A970: Exprs 
256:29-256:29
 A969: Nodes<Expr> 
256:29-256:29
 A958: AtomExpr 0 
256:29-256:29
 A972: Exprs 
258:29-258:53
 A971: Nodes<Expr> 
258:29-258:53
 A968: BinExpr ADD 
258:29-258:53
 A961: BinExpr MOD 
258:29-258:33
 A959: NameExpr n 
258:29-258:29
defAt: A952 @ 254:36-254:40
 A960: AtomExpr 2 
258:33-258:33
 A967: CallExpr 
258:37-258:53
 A962: NameExpr ultra_bits 
258:37-258:46
defAt: A977 @ 254:21-259:27
 A966: Nodes<Expr> 
258:47-258:53
 A965: BinExpr DIV 
258:48-258:52
 A963: NameExpr n 
258:48-258:48
defAt: A952 @ 254:36-254:40
 A964: AtomExpr 2 
258:52-258:52
 A1050: Exprs 
261:21-272:26
 A1049: Nodes<Expr> 
261:21-272:26
 A984: AsgnExpr 
261:21-261:52
 A978: NameExpr ultra1 
261:21-261:26
defAt: A895 @ 239:21-239:34
 A983: CallExpr 
261:30-261:52
 A979: NameExpr ultra_gcd 
261:30-261:38
defAt: A925 @ 242:21-247:27
 A982: Nodes<Expr> 
261:39-261:52
 A980: NameExpr deep1 
261:40-261:44
defAt: A698 @ 190:17-190:29
 A981: NameExpr deep2 
261:47-261:51
defAt: A700 @ 191:17-191:29
 A990: AsgnExpr 
262:21-262:44
 A985: NameExpr ultra2 
262:21-262:26
defAt: A897 @ 240:21-240:34
 A989: CallExpr 
262:30-262:44
 A986: NameExpr is_even 
262:30-262:36
defAt: A47 @ 17:1-18:14
 A988: Nodes<Expr> 
262:37-262:44
 A987: NameExpr ultra1 
262:38-262:43
defAt: A895 @ 239:21-239:34
 A1001: AsgnExpr 
263:21-263:66
 A991: NameExpr ultra3 
263:21-263:26
defAt: A899 @ 241:21-241:34
 A1000: CallExpr 
263:30-263:66
 A992: NameExpr ultra_sum 
263:30-263:38
defAt: A950 @ 248:21-253:27
 A999: Nodes<Expr> 
263:39-263:66
 A998: CallExpr 
263:40-263:65
 A993: NameExpr ultra_bits 
263:40-263:49
defAt: A977 @ 254:21-259:27
 A997: Nodes<Expr> 
263:50-263:65
 A996: BinExpr ADD 
263:51-263:64
 A994: NameExpr deep4 
263:51-263:55
defAt: A704 @ 193:17-193:29
 A995: NameExpr ultra1 
263:59-263:64
defAt: A895 @ 239:21-239:34
 A1009: AsgnExpr 
264:21-264:57
 A1002: NameExpr counter 
264:21-264:27
defAt: A557 @ 157:13-157:27
 A1008: BinExpr ADD 
264:31-264:57
 A1003: NameExpr ultra3 
264:31-264:36
defAt: A899 @ 241:21-241:34
 A1007: CallExpr 
264:40-264:57
 A1004: NameExpr count_bits 
264:40-264:49
defAt: A401 @ 109:1-114:7
 A1006: Nodes<Expr> 
264:50-264:57
 A1005: NameExpr ultra1 
264:51-264:56
defAt: A895 @ 239:21-239:34
 A1015: AsgnExpr 
265:21-265:47
 A1010: NameExpr result 
265:21-265:26
defAt: A559 @ 158:13-158:26
 A1014: CallExpr 
265:30-265:47
 A1011: NameExpr ext_print 
265:30-265:38
defAt: A22 @ 11:1-11:24
 A1013: Nodes<Expr> 
265:39-265:47
 A1012: NameExpr counter 
265:40-265:46
defAt: A557 @ 157:13-157:27
 A1022: AsgnExpr 
266:21-266:51
 A1016: NameExpr flag 
266:21-266:24
defAt: A15 @ 8:1-8:12
 A1021: CallExpr 
266:28-266:51
 A1017: NameExpr local_and 
266:28-266:36
defAt: A451 @ 133:9-134:19
 A1020: Nodes<Expr> 
266:37-266:51
 A1018: NameExpr ultra2 
266:38-266:43
defAt: A897 @ 240:21-240:34
 A1019: NameExpr deep3 
266:46-266:50
defAt: A702 @ 192:17-192:29
 A1042: WhileExpr 
267:21-270:23
 A1025: BinExpr GTH 
267:27-267:36
 A1023: NameExpr ultra3 
267:27-267:32
defAt: A899 @ 241:21-241:34
 A1024: AtomExpr 0 
267:36-267:36
 A1041: Exprs 
268:25-269:43
 A1040: Nodes<Expr> 
268:25-269:43
 A1034: AsgnExpr 
268:25-268:62
 A1026: NameExpr ultra1 
268:25-268:30
defAt: A895 @ 239:21-239:34
 A1033: CallExpr 
268:34-268:62
 A1027: NameExpr ultra_gcd 
268:34-268:42
defAt: A925 @ 242:21-247:27
 A1032: Nodes<Expr> 
268:43-268:62
 A1028: NameExpr ultra3 
268:44-268:49
defAt: A899 @ 241:21-241:34
 A1031: BinExpr ADD 
268:52-268:61
 A1029: NameExpr ultra1 
268:52-268:57
defAt: A895 @ 239:21-239:34
 A1030: AtomExpr 1 
268:61-268:61
 A1039: AsgnExpr 
269:25-269:43
 A1035: NameExpr ultra3 
269:25-269:30
defAt: A899 @ 241:21-241:34
 A1038: BinExpr SUB 
269:34-269:43
 A1036: NameExpr ultra3 
269:34-269:39
defAt: A899 @ 241:21-241:34
 A1037: AtomExpr 1 
269:43-269:43
 A1046: CallExpr 
271:21-271:37
 A1043: NameExpr ext_print 
271:21-271:29
defAt: A22 @ 11:1-11:24
 A1045: Nodes<Expr> 
271:30-271:37
 A1044: NameExpr result 
271:31-271:36
defAt: A559 @ 158:13-158:26
 A1047: NameExpr ultra3 
272:21-272:26
defAt: A899 @ 241:21-241:34

test2.p26

// Slivnikov primer
typ a = int
fun f(x:a) : int =
    let
        typ a = char
        var y : a
    in
        (x + y, 3)
    end
 A23: Nodes<Defn> 
2:1-9:7
 A1: TypDefn a 
2:1-2:11
 A0: AtomType INT 
2:9-2:11
 A22: DefFunDefn f 
3:1-9:7
 A19: Nodes<ParDefn> 
3:6-3:10
 A3: ParDefn x 
3:7-3:9
 A2: NameType a 
3:9-3:9
defAt: A1 @ 2:1-2:11
 A4: AtomType INT 
3:14-3:16
 A21: Exprs 
4:5-9:7
 A20: Nodes<Expr> 
4:5-9:7
 A18: LetExpr 
4:5-9:7
 A15: Nodes<Defn> 
5:9-6:17
 A6: TypDefn a 
5:9-5:20
 A5: AtomType CHAR 
5:17-5:20
 A8: VarDefn y 
6:9-6:17
 A7: NameType a 
6:17-6:17
defAt: A6 @ 5:9-5:20
 A17: Exprs 
8:9-8:18
 A16: Nodes<Expr> 
8:9-8:18
 A14: Exprs 
8:9-8:18
 A13: Nodes<Expr> 
8:9-8:18
 A11: BinExpr ADD 
8:10-8:14
 A9: NameExpr x 
8:10-8:10
defAt: A3 @ 3:7-3:9
 A10: NameExpr y 
8:14-8:14
defAt: A8 @ 6:9-6:17
 A12: AtomExpr 3 
8:17-8:17

test3.p26

// Slivnikov primer
var i : int
typ s = (i:int, j:int)
typ s1 = s
typ s2 = s1
var a:s2
 A15: Nodes<Defn> 
2:1-6:8
 A1: VarDefn i 
2:1-2:11
 A0: AtomType INT 
2:9-2:11
 A8: TypDefn s 
3:1-3:22
 A7: StrType 
3:9-3:22
 A6: Nodes<CompDefn> 
3:10-3:21
 A3: CompDefn i 
3:10-3:14
 A2: AtomType INT 
3:12-3:14
 A5: CompDefn j 
3:17-3:21
 A4: AtomType INT 
3:19-3:21
 A10: TypDefn s1 
4:1-4:10
 A9: NameType s 
4:10-4:10
defAt: A8 @ 3:1-3:22
 A12: TypDefn s2 
5:1-5:11
 A11: NameType s1 
5:10-5:11
defAt: A10 @ 4:1-4:10
 A14: VarDefn a 
6:1-6:8
 A13: NameType s2 
6:7-6:8
defAt: A12 @ 5:1-5:11

test4.p26

// cikel, ampak s kazalci
typ t1 = (i:int, n: ^t2)
typ t2 = (j:int, n: ^t1)
 A16: Nodes<Defn> 
2:1-3:24
 A7: TypDefn t1 
2:1-2:24
 A6: StrType 
2:10-2:24
 A5: Nodes<CompDefn> 
2:11-2:23
 A1: CompDefn i 
2:11-2:15
 A0: AtomType INT 
2:13-2:15
 A4: CompDefn n 
2:18-2:23
 A3: PtrType 
2:21-2:23
 A2: NameType t2 
2:22-2:23
defAt: A15 @ 3:1-3:24
 A15: TypDefn t2 
3:1-3:24
 A14: StrType 
3:10-3:24
 A13: Nodes<CompDefn> 
3:11-3:23
 A9: CompDefn j 
3:11-3:15
 A8: AtomType INT 
3:13-3:15
 A12: CompDefn n 
3:18-3:23
 A11: PtrType 
3:21-3:23
 A10: NameType t1 
3:22-3:23
defAt: A7 @ 2:1-2:24

test5.p26

// ciklicne definicije
typ t1 = (i:int, n: t2)
typ t2 = (j:int, n: t1)

fun a():int = b()
fun b():int = a()
 A30: Nodes<Defn> 
2:1-6:17
 A6: TypDefn t1 
2:1-2:23
 A5: StrType 
2:10-2:23
 A4: Nodes<CompDefn> 
2:11-2:22
 A1: CompDefn i 
2:11-2:15
 A0: AtomType INT 
2:13-2:15
 A3: CompDefn n 
2:18-2:22
 A2: NameType t2 
2:21-2:22
defAt: A13 @ 3:1-3:23
 A13: TypDefn t2 
3:1-3:23
 A12: StrType 
3:10-3:23
 A11: Nodes<CompDefn> 
3:11-3:22
 A8: CompDefn j 
3:11-3:15
 A7: AtomType INT 
3:13-3:15
 A10: CompDefn n 
3:18-3:22
 A9: NameType t1 
3:21-3:22
defAt: A6 @ 2:1-2:23
 A21: DefFunDefn a 
5:1-5:17
 A18: Nodes<ParDefn> 
 A14: AtomType INT 
5:9-5:11
 A20: Exprs 
5:15-5:17
 A19: Nodes<Expr> 
5:15-5:17
 A17: CallExpr 
5:15-5:17
 A15: NameExpr b 
5:15-5:15
defAt: A29 @ 6:1-6:17
 A16: Nodes<Expr> 
 A29: DefFunDefn b 
6:1-6:17
 A26: Nodes<ParDefn> 
 A22: AtomType INT 
6:9-6:11
 A28: Exprs 
6:15-6:17
 A27: Nodes<Expr> 
6:15-6:17
 A25: CallExpr 
6:15-6:17
 A23: NameExpr a 
6:15-6:15
defAt: A21 @ 5:1-5:17
 A24: Nodes<Expr> 

test6.p26

// ciklicne definicije
typ a = b
typ b = d
typ c = a
typ d = a
 A8: Nodes<Defn> 
2:1-5:9
 A1: TypDefn a 
2:1-2:9
 A0: NameType b 
2:9-2:9
defAt: A3 @ 3:1-3:9
 A3: TypDefn b 
3:1-3:9
 A2: NameType d 
3:9-3:9
defAt: A7 @ 5:1-5:9
 A5: TypDefn c 
4:1-4:9
 A4: NameType a 
4:9-4:9
defAt: A1 @ 2:1-2:9
 A7: TypDefn d 
5:1-5:9
 A6: NameType a 
5:9-5:9
defAt: A1 @ 2:1-2:9

test7.p26

// vzajemna rekurzija
typ list = (first: int, rest:list)
 A7: Nodes<Defn> 
2:1-2:34
 A6: TypDefn list 
2:1-2:34
 A5: StrType 
2:12-2:34
 A4: Nodes<CompDefn> 
2:13-2:33
 A1: CompDefn first 
2:13-2:22
 A0: AtomType INT 
2:20-2:22
 A3: CompDefn rest 
2:25-2:33
 A2: NameType list 
2:30-2:33
defAt: A6 @ 2:1-2:34

test8.p26

fun main():bool =
    let
        typ a=int
        var c:a
    in
        c = 2,
        c * c > c + c
    end,
    let
        var c:b
        typ b=int
    in
        c = 1,
        c * c > c + c
    end
 A41: Nodes<Defn> 
1:1-15:7
 A40: DefFunDefn main 
1:1-15:7
 A37: Nodes<ParDefn> 
 A0: AtomType BOOL 
1:12-1:15
 A39: Exprs 
2:5-15:7
 A38: Nodes<Expr> 
2:5-15:7
 A18: LetExpr 
2:5-8:7
 A15: Nodes<Defn> 
3:9-4:15
 A2: TypDefn a 
3:9-3:17
 A1: AtomType INT 
3:15-3:17
 A4: VarDefn c 
4:9-4:15
 A3: NameType a 
4:15-4:15
defAt: A2 @ 3:9-3:17
 A17: Exprs 
6:9-7:21
 A16: Nodes<Expr> 
6:9-7:21
 A7: AsgnExpr 
6:9-6:13
 A5: NameExpr c 
6:9-6:9
defAt: A4 @ 4:9-4:15
 A6: AtomExpr 2 
6:13-6:13
 A14: BinExpr GTH 
7:9-7:21
 A10: BinExpr MUL 
7:9-7:13
 A8: NameExpr c 
7:9-7:9
defAt: A4 @ 4:9-4:15
 A9: NameExpr c 
7:13-7:13
defAt: A4 @ 4:9-4:15
 A13: BinExpr ADD 
7:17-7:21
 A11: NameExpr c 
7:17-7:17
defAt: A4 @ 4:9-4:15
 A12: NameExpr c 
7:21-7:21
defAt: A4 @ 4:9-4:15
 A36: LetExpr 
9:5-15:7
 A33: Nodes<Defn> 
10:9-11:17
 A20: VarDefn c 
10:9-10:15
 A19: NameType b 
10:15-10:15
defAt: A22 @ 11:9-11:17
 A22: TypDefn b 
11:9-11:17
 A21: AtomType INT 
11:15-11:17
 A35: Exprs 
13:9-14:21
 A34: Nodes<Expr> 
13:9-14:21
 A25: AsgnExpr 
13:9-13:13
 A23: NameExpr c 
13:9-13:9
defAt: A20 @ 10:9-10:15
 A24: AtomExpr 1 
13:13-13:13
 A32: BinExpr GTH 
14:9-14:21
 A28: BinExpr MUL 
14:9-14:13
 A26: NameExpr c 
14:9-14:9
defAt: A20 @ 10:9-10:15
 A27: NameExpr c 
14:13-14:13
defAt: A20 @ 10:9-10:15
 A31: BinExpr ADD 
14:17-14:21
 A29: NameExpr c 
14:17-14:17
defAt: A20 @ 10:9-10:15
 A30: NameExpr c 
14:21-14:21
defAt: A20 @ 10:9-10:15

test9.p26

// vnaprejsnje deklaracije
typ a = b
typ b = int


fun f() : int = g()
fun g() : int = 1
 A18: Nodes<Defn> 
2:1-7:17
 A1: TypDefn a 
2:1-2:9
 A0: NameType b 
2:9-2:9
defAt: A3 @ 3:1-3:11
 A3: TypDefn b 
3:1-3:11
 A2: AtomType INT 
3:9-3:11
 A11: DefFunDefn f 
6:1-6:19
 A8: Nodes<ParDefn> 
 A4: AtomType INT 
6:11-6:13
 A10: Exprs 
6:17-6:19
 A9: Nodes<Expr> 
6:17-6:19
 A7: CallExpr 
6:17-6:19
 A5: NameExpr g 
6:17-6:17
defAt: A17 @ 7:1-7:17
 A6: Nodes<Expr> 
 A17: DefFunDefn g 
7:1-7:17
 A14: Nodes<ParDefn> 
 A12: AtomType INT 
7:11-7:13
 A16: Exprs 
7:17-7:17
 A15: Nodes<Expr> 
7:17-7:17
 A13: AtomExpr 1 
7:17-7:17