**** New globals: {b:b, i8:i8, ia:i, n:i8, r4:r4, r8:r8, s:i8*, t:s, u4:u4, u8:u8}

> Range(n)
Range(n) : i8*
Binder : (0, *) Range(n)
###
> Range(3)
Range(3) : i8*
Binder : (3, 3) Range(3)
###
> Range(n, n)
Range(n, n) : i8*
Binder : (0, *) Range(n, n)
###
> Range(3, 10)
Range(3, 10) : i8*
Binder : (7, 7) Range(3, 10)
###
> Range(3, 3)
Range(3, 3) : i8*
Binder : (0, 0) Range(3, 3)
###
> Range(3, 2)
Range(3, 2) : i8*
Binder : (0, 0) Range(3, 2)
###
> Range(3, n)
Range(3, n) : i8*
Binder : (0, *) Range(3, n)
###
> Range(n, n, n)
Range(n, n, n) : i8*
Binder : (0, *) Range(n, n, n)
###
> Range(3, 10, 2)
Range(3, 10, 2) : i8*
Binder : (4, 4) Range(3, 10, 2)
###
> Range(10, 3, -2)
Range(10, 3, -2) : i8*
Binder : (4, 4) Range(10, 3, -2)
###
> Range(3, 10, 0)
Range(3, 10, 0) : i8*
Binder : (0, 0) Range(3, 10, 0)
###
> Range(3, n, 1)
Range(3, n, 1) : i8*
Binder : (0, *) Range(3, n, 1)
###
> Range(3, n, n)
Range(3, n, n) : i8*
Binder : (0, *) Range(3, n, n)
###
> Range(3, 10, n)
Range(3, 10, n) : i8*
Binder : (0, *) Range(3, 10, n)
###
> Sequence(n)
Sequence(n) : i8*
Binder : (0, *) Sequence(n)
###
> Sequence(3)
Sequence(3) : i8*
Binder : (3, 3) Sequence(3)
###
> Sequence(0)
Sequence(0) : i8*
Binder : (0, 0) Sequence(0)
Reducer: (0, 0) null
###
> Sequence(-3)
Sequence(-3) : i8*
Binder : (0, 0) Sequence(-3)
Reducer: (0, 0) null
###
> Sequence(n, n)
Sequence(n, n) : i8*
Binder : (0, *) Sequence(n, n)
###
> Sequence(3, 10)
Sequence(3, 10) : i8*
Binder : (3, 3) Sequence(3, 10)
###
> Sequence(3, 3)
Sequence(3, 3) : i8*
Binder : (3, 3) Sequence(3, 3)
###
> Sequence(3, 2)
Sequence(3, 2) : i8*
Binder : (3, 3) Sequence(3, 2)
###
> Sequence(3, n)
Sequence(3, n) : i8*
Binder : (3, 3) Sequence(3, n)
###
> Sequence(n, n, n)
Sequence(n, n, n) : i8*
Binder : (0, *) Sequence(n, n, n)
###
> Sequence(3, 10, 2)
Sequence(3, 10, 2) : i8*
Binder : (3, 3) Sequence(3, 10, 2)
###
> Sequence(10, 3, -2)
Sequence(10, 3, -2) : i8*
Binder : (10, 10) Sequence(10, 3, -2)
###
> Sequence(3, 10, 0)
Sequence(3, 10, 0) : i8*
Binder : (3, 3) Sequence(3, 10, 0)
###
> Sequence(3, n, 1)
Sequence(3, n, 1) : i8*
Binder : (3, 3) Sequence(3, n, 1)
###
> Sequence(3, n, n)
Sequence(3, n, n) : i8*
Binder : (3, 3) Sequence(3, n, n)
###
> Sequence(3, 10, n)
Sequence(3, 10, n) : i8*
Binder : (3, 3) Sequence(3, 10, n)
###
> Sequence(n, ia)
Sequence(n, ia) : i*
Binder : (0, *) Sequence(n, ia)
###
> Sequence(3, ia)
Sequence(3, ia) : i*
Binder : (3, 3) Sequence(3, ia)
###
> Sequence(n, u4)
Sequence(n, u4) : i8*
Binder : (0, *) Sequence(n, Num<i8>(u4))
###
> Sequence(3, u4)
Sequence(3, u4) : i8*
Binder : (3, 3) Sequence(3, Num<i8>(u4))
###
> Sequence(n, u8)
Sequence(n, u8) : u8*
Binder : (0, *) Sequence(n, u8)
###
> Sequence(3, u8)
Sequence(3, u8) : u8*
Binder : (3, 3) Sequence(3, u8)
###
> Sequence(n, r8)
Sequence(n, r8) : r8*
Binder : (0, *) Sequence(n, r8)
###
> Sequence(3, r8)
Sequence(3, r8) : r8*
Binder : (3, 3) Sequence(3, r8)
###
> Sequence(n, r8)
Sequence(n, r8) : r8*
Binder : (0, *) Sequence(n, r8)
###
> Sequence(3, t)
Sequence(3, t) : i8*
*** Error: (12,13) Node: t, Message: Invalid operand type: cannot convert type 's' to 'i8'
Binder : (3, 3) Sequence(3, Error(ErrBadType_Src_Dst))
###
> Sequence(n, t)
Sequence(n, t) : i8*
*** Error: (12,13) Node: t, Message: Invalid operand type: cannot convert type 's' to 'i8'
Binder : (0, *) Sequence(n, Error(ErrBadType_Src_Dst))
###
> Sequence(3, t, r8)
Sequence(3, t, r8) : r8*
*** Error: (12,13) Node: t, Message: Invalid operand type: cannot convert type 's' to 'r8'
Binder : (3, 3) Sequence(3, Error(ErrBadType_Src_Dst), r8)
###
> Sequence(n, t, r8)
Sequence(n, t, r8) : r8*
*** Error: (12,13) Node: t, Message: Invalid operand type: cannot convert type 's' to 'r8'
Binder : (0, *) Sequence(n, Error(ErrBadType_Src_Dst), r8)
###
> Sequence(n, ia, r8)
Sequence(n, ia, r8) : r8*
Binder : (0, *) Sequence(n, Num<r8>(ia), r8)
###
> Sequence(n, r8, ia)
Sequence(n, r8, ia) : r8*
Binder : (0, *) Sequence(n, r8, Num<r8>(ia))
###
> Sequence(n, u8, i8)
Sequence(n, u8, i8) : i8*
*** Warning: (12,14) Node: u8, Message: Conversion from unsigned to signed integer can reinterpret large values as negative
Binder : (0, *) Sequence(n, Num<i8>(u8), i8)
###
> Sequence(n, i8, u8)
Sequence(n, i8, u8) : i8*
*** Warning: (16,18) Node: u8, Message: Conversion from unsigned to signed integer can reinterpret large values as negative
Binder : (0, *) Sequence(n, i8, Num<i8>(u8))
###
> Sequence(n, u4, i8)
Sequence(n, u4, i8) : i8*
Binder : (0, *) Sequence(n, Num<i8>(u4), i8)
###
> Sequence(n, r4, i8)
Sequence(n, r4, i8) : r8*
Binder : (0, *) Sequence(n, Num<r8>(r4), Num<r8>(i8))
###
> Repeat("hi", n)
Repeat("hi", n) : s*
Binder : (0, *) Repeat("hi", n)
###
> Repeat("hi", 10)
Repeat("hi", 10) : s*
Binder : (10, 10) Repeat("hi", 10)
###
> Repeat("hi", 0)
Repeat("hi", 0) : s*
Binder : (0, 0) Repeat("hi", 0)
###
> Repeat("hi", -5)
Repeat("hi", -5) : s*
Binder : (0, 0) Repeat("hi", -5)
###
> ForEach(s, it * it)
ForEach(s, it * it) : i8*
Binder : (0, *) ForEach(*1: s, Mul(*1, *1))
###
> ForEach(Range(5), it * it)
ForEach(Range(5), it * it) : i8*
Binder : (5, 5) ForEach(*1: Range(5), Mul(*1, *1))
###
> ForEach(x:Range(5), y:Range(5, 15), x * y)
ForEach(x : Range(5), y : Range(5, 15), x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5), *2: Range(5, 15), Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEach(y:Range(5, 15), x:Range(5), x * y)
ForEach(y : Range(5, 15), x : Range(5), x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5, 15), *2: Range(5), Mul(*2, *1))
Reducer: (5, 5) ForEach(*1: Range(5, 10), *2: Range(5), Mul(*2, *1))
###
> ForEach(x:Range(5), y:s, x * y)
ForEach(x : Range(5), y : s, x * y) : i8*
Binder : (0, 5) ForEach(*1: Range(5), *2: s, Mul(*1, *2))
###
> ForEach(y:s, x:Range(5), x * y)
ForEach(y : s, x : Range(5), x * y) : i8*
Binder : (0, 5) ForEach(*1: s, *2: Range(5), Mul(*2, *1))
###
> ForEachIf(Range(5), true, it * it)
ForEachIf(Range(5), true, it * it) : i8*
Binder : (5, 5) ForEachIf*(*1: Range(5), true, Mul(*1, *1))
Reducer: (5, 5) ForEach(*1: Range(5), Mul(*1, *1))
###
> ForEach(Range(5), [if] true, it * it)
ForEach(Range(5), [if] true, it * it) : i8*
Binder : (5, 5) ForEach(*1: Range(5), [if] true, Mul(*1, *1))
Reducer: (5, 5) ForEach(*1: Range(5), Mul(*1, *1))
###
> ForEachIf(Range(5), false, it * it)
ForEachIf(Range(5), false, it * it) : i8*
Binder : (0, 0) ForEachIf*(*1: Range(5), false, Mul(*1, *1))
Reducer: (0, 0) null
###
> ForEach(Range(5), [if] false, it * it)
ForEach(Range(5), [if] false, it * it) : i8*
Binder : (0, 0) ForEach(*1: Range(5), [if] false, Mul(*1, *1))
Reducer: (0, 0) null
###
> ForEachIf(Range(5), it > 3, it * it)
ForEachIf(Range(5), it $> 3, it * it) : i8*
Binder : (0, 5) ForEachIf*(*1: Range(5), *1 @> 3, Mul(*1, *1))
Reducer: (0, 5) ForEach(*1: Range(5), [if] *1 @> 3, Mul(*1, *1))
###
> ForEach(Range(5), [if] it > 3, it * it)
ForEach(Range(5), [if] it $> 3, it * it) : i8*
Binder : (0, 5) ForEach(*1: Range(5), [if] *1 @> 3, Mul(*1, *1))
###
> ForEachWhile(Range(5), true, it * it)
ForEachWhile(Range(5), true, it * it) : i8*
Binder : (5, 5) ForEachWhile*(*1: Range(5), true, Mul(*1, *1))
Reducer: (5, 5) ForEach(*1: Range(5), Mul(*1, *1))
###
> ForEach(Range(5), [while] true, it * it)
ForEach(Range(5), [while] true, it * it) : i8*
Binder : (5, 5) ForEach(*1: Range(5), [while] true, Mul(*1, *1))
Reducer: (5, 5) ForEach(*1: Range(5), Mul(*1, *1))
###
> ForEachWhile(Range(5), false, it * it)
ForEachWhile(Range(5), false, it * it) : i8*
Binder : (0, 0) ForEachWhile*(*1: Range(5), false, Mul(*1, *1))
Reducer: (0, 0) null
###
> ForEach(Range(5), [while] false, it * it)
ForEach(Range(5), [while] false, it * it) : i8*
Binder : (0, 0) ForEach(*1: Range(5), [while] false, Mul(*1, *1))
Reducer: (0, 0) null
###
> ForEachWhile(Range(5), it > 3, it * it)
ForEachWhile(Range(5), it $> 3, it * it) : i8*
Binder : (0, 5) ForEachWhile*(*1: Range(5), *1 @> 3, Mul(*1, *1))
Reducer: (0, 5) ForEach(*1: Range(5), [while] *1 @> 3, Mul(*1, *1))
###
> ForEach(Range(5), [while] it > 3, it * it)
ForEach(Range(5), [while] it $> 3, it * it) : i8*
Binder : (0, 5) ForEach(*1: Range(5), [while] *1 @> 3, Mul(*1, *1))
###
> ForEachIf(x:Range(5), y:Range(5, 15), true, x * y)
ForEachIf(x : Range(5), y : Range(5, 15), true, x * y) : i8*
Binder : (5, 5) ForEachIf*(*1: Range(5), *2: Range(5, 15), true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEachIf(x:If(7 < 5, Range(3), Range(5)), y: Range(5, 15), true, x * y)
ForEachIf(x : If(7 $< 5, Range(3), Range(5)), y : Range(5, 15), true, x * y) : i8*
Binder : (3, 5) ForEachIf*(*1: If*(7 @< 5, Range(3), Range(5)), *2: Range(5, 15), true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEachIf(x:If(7 < 5, s ++ Range(3), Range(5)), y:s ++ Range(5, 15), true, x * y)
ForEachIf(x : If(7 $< 5, s ++ Range(3), Range(5)), y : s ++ Range(5, 15), true, x * y) : i8*
Binder : (3, *) ForEachIf*(*1: If*(7 @< 5, SeqConcat(s, Range(3)), Range(5)), *2: SeqConcat(s, Range(5, 15)), true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: SeqConcat(s, Range(5, 15)), Mul(*1, *2))
###
> ForEach(x:Range(5), y:Range(5, 15), [if] true, x * y)
ForEach(x : Range(5), y : Range(5, 15), [if] true, x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5), *2: Range(5, 15), [if] true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEach(x:If(7 < 5, Range(3), Range(5)), y: Range(5, 15), [if] true, x * y)
ForEach(x : If(7 $< 5, Range(3), Range(5)), y : Range(5, 15), [if] true, x * y) : i8*
Binder : (3, 5) ForEach(*1: If*(7 @< 5, Range(3), Range(5)), *2: Range(5, 15), [if] true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEach(x:If(7 < 5, s ++ Range(3), Range(5)), y:s ++ Range(5, 15), [if] true, x * y)
ForEach(x : If(7 $< 5, s ++ Range(3), Range(5)), y : s ++ Range(5, 15), [if] true, x * y) : i8*
Binder : (3, *) ForEach(*1: If*(7 @< 5, SeqConcat(s, Range(3)), Range(5)), *2: SeqConcat(s, Range(5, 15)), [if] true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: SeqConcat(s, Range(5, 15)), Mul(*1, *2))
###
> ForEachIf(y:Range(5, 15), x:Range(5), true, x * y)
ForEachIf(y : Range(5, 15), x : Range(5), true, x * y) : i8*
Binder : (5, 5) ForEachIf*(*1: Range(5, 15), *2: Range(5), true, Mul(*2, *1))
Reducer: (5, 5) ForEach(*1: Range(5, 10), *2: Range(5), Mul(*2, *1))
###
> ForEach(y:Range(5, 15), x:Range(5), [if] true, x * y)
ForEach(y : Range(5, 15), x : Range(5), [if] true, x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5, 15), *2: Range(5), [if] true, Mul(*2, *1))
Reducer: (5, 5) ForEach(*1: Range(5, 10), *2: Range(5), Mul(*2, *1))
###
> ForEachIf(x:Range(5), y:Range(5, 15), false, x * y)
ForEachIf(x : Range(5), y : Range(5, 15), false, x * y) : i8*
Binder : (0, 0) ForEachIf*(*1: Range(5), *2: Range(5, 15), false, Mul(*1, *2))
Reducer: (0, 0) null
###
> ForEach(x:Range(5), y:Range(5, 15), [if] false, x * y)
ForEach(x : Range(5), y : Range(5, 15), [if] false, x * y) : i8*
Binder : (0, 0) ForEach(*1: Range(5), *2: Range(5, 15), [if] false, Mul(*1, *2))
Reducer: (0, 0) null
###
> ForEachIf(y:Range(5, 15), x:Range(5), false, x * y)
ForEachIf(y : Range(5, 15), x : Range(5), false, x * y) : i8*
Binder : (0, 0) ForEachIf*(*1: Range(5, 15), *2: Range(5), false, Mul(*2, *1))
Reducer: (0, 0) null
###
> ForEach(y:Range(5, 15), x:Range(5), [if] false, x * y)
ForEach(y : Range(5, 15), x : Range(5), [if] false, x * y) : i8*
Binder : (0, 0) ForEach(*1: Range(5, 15), *2: Range(5), [if] false, Mul(*2, *1))
Reducer: (0, 0) null
###
> ForEachIf(x:Range(5), y:Range(5, 15), x + y < 10, x * y)
ForEachIf(x : Range(5), y : Range(5, 15), x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEachIf*(*1: Range(5), *2: Range(5, 15), Add(*1, *2) @< 10, Mul(*1, *2))
Reducer: (0, 5) ForEach(*1: Range(5), *2: Range(5, 10), [if] Add(*1, *2) @< 10, Mul(*1, *2))
###
> ForEach(x:Range(5), y:Range(5, 15), [if] x + y < 10, x * y)
ForEach(x : Range(5), y : Range(5, 15), [if] x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEach(*1: Range(5), *2: Range(5, 15), [if] Add(*1, *2) @< 10, Mul(*1, *2))
Reducer: (0, 5) ForEach(*1: Range(5), *2: Range(5, 10), [if] Add(*1, *2) @< 10, Mul(*1, *2))
###
> ForEachIf(y:Range(5, 15), x:Range(5), x + y < 10, x * y)
ForEachIf(y : Range(5, 15), x : Range(5), x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEachIf*(*1: Range(5, 15), *2: Range(5), Add(*2, *1) @< 10, Mul(*2, *1))
Reducer: (0, 5) ForEach(*1: Range(5, 10), *2: Range(5), [if] Add(*2, *1) @< 10, Mul(*2, *1))
###
> ForEach(y:Range(5, 15), x:Range(5), [if] x + y < 10, x * y)
ForEach(y : Range(5, 15), x : Range(5), [if] x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEach(*1: Range(5, 15), *2: Range(5), [if] Add(*2, *1) @< 10, Mul(*2, *1))
Reducer: (0, 5) ForEach(*1: Range(5, 10), *2: Range(5), [if] Add(*2, *1) @< 10, Mul(*2, *1))
###
> ForEachWhile(x:Range(5), y:Range(5, 15), true, x * y)
ForEachWhile(x : Range(5), y : Range(5, 15), true, x * y) : i8*
Binder : (5, 5) ForEachWhile*(*1: Range(5), *2: Range(5, 15), true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEachWhile(x:Range(10)->Drop(5)->Drop(2, [if] it > 2), y: Range(5, 15), true, x * y)
ForEachWhile(x : Range(10)->Drop(5)->Drop(2, [if] it $> 2), y : Range(5, 15), true, x * y) : i8*
Binder : (3, 5) ForEachWhile*(*2: Drop(*1: Drop(Range(10), 5), 2, [if] *1 @> 2), *3: Range(5, 15), true, Mul(*2, *3))
Reducer: (3, 5) ForEach(*2: Drop(*1: Drop(Range(10), 5), 2, [if] *1 @> 2), *3: Range(5, 10), Mul(*2, *3))
###
> ForEachWhile(x:If(7 < 5, s ++ Range(3), Range(5)), y:s ++ Range(5, 15), true, x * y)
ForEachWhile(x : If(7 $< 5, s ++ Range(3), Range(5)), y : s ++ Range(5, 15), true, x * y) : i8*
Binder : (3, *) ForEachWhile*(*1: If*(7 @< 5, SeqConcat(s, Range(3)), Range(5)), *2: SeqConcat(s, Range(5, 15)), true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: SeqConcat(s, Range(5, 15)), Mul(*1, *2))
###
> ForEach(x:Range(5), y:Range(5, 15), [while] true, x * y)
ForEach(x : Range(5), y : Range(5, 15), [while] true, x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5), *2: Range(5, 15), [while] true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: Range(5, 10), Mul(*1, *2))
###
> ForEach(x:Range(10)->Drop(5)->Drop(2, [if] it > 2), y: Range(5, 15), [while] true, x * y)
ForEach(x : Range(10)->Drop(5)->Drop(2, [if] it $> 2), y : Range(5, 15), [while] true, x * y) : i8*
Binder : (3, 5) ForEach(*2: Drop(*1: Drop(Range(10), 5), 2, [if] *1 @> 2), *3: Range(5, 15), [while] true, Mul(*2, *3))
Reducer: (3, 5) ForEach(*2: Drop(*1: Drop(Range(10), 5), 2, [if] *1 @> 2), *3: Range(5, 10), Mul(*2, *3))
###
> ForEach(x:If(7 < 5, s ++ Range(3), Range(5)), y:s ++ Range(5, 15), [while] true, x * y)
ForEach(x : If(7 $< 5, s ++ Range(3), Range(5)), y : s ++ Range(5, 15), [while] true, x * y) : i8*
Binder : (3, *) ForEach(*1: If*(7 @< 5, SeqConcat(s, Range(3)), Range(5)), *2: SeqConcat(s, Range(5, 15)), [while] true, Mul(*1, *2))
Reducer: (5, 5) ForEach(*1: Range(5), *2: SeqConcat(s, Range(5, 15)), Mul(*1, *2))
###
> ForEachWhile(y:Range(5, 15), x:Range(5), true, x * y)
ForEachWhile(y : Range(5, 15), x : Range(5), true, x * y) : i8*
Binder : (5, 5) ForEachWhile*(*1: Range(5, 15), *2: Range(5), true, Mul(*2, *1))
Reducer: (5, 5) ForEach(*1: Range(5, 10), *2: Range(5), Mul(*2, *1))
###
> ForEach(y:Range(5, 15), x:Range(5), [while] true, x * y)
ForEach(y : Range(5, 15), x : Range(5), [while] true, x * y) : i8*
Binder : (5, 5) ForEach(*1: Range(5, 15), *2: Range(5), [while] true, Mul(*2, *1))
Reducer: (5, 5) ForEach(*1: Range(5, 10), *2: Range(5), Mul(*2, *1))
###
> ForEachWhile(x:Range(5), y:Range(5, 15), false, x * y)
ForEachWhile(x : Range(5), y : Range(5, 15), false, x * y) : i8*
Binder : (0, 0) ForEachWhile*(*1: Range(5), *2: Range(5, 15), false, Mul(*1, *2))
Reducer: (0, 0) null
###
> ForEach(x:Range(5), y:Range(5, 15), [while] false, x * y)
ForEach(x : Range(5), y : Range(5, 15), [while] false, x * y) : i8*
Binder : (0, 0) ForEach(*1: Range(5), *2: Range(5, 15), [while] false, Mul(*1, *2))
Reducer: (0, 0) null
###
> ForEachWhile(y:Range(5, 15), x:Range(5), false, x * y)
ForEachWhile(y : Range(5, 15), x : Range(5), false, x * y) : i8*
Binder : (0, 0) ForEachWhile*(*1: Range(5, 15), *2: Range(5), false, Mul(*2, *1))
Reducer: (0, 0) null
###
> ForEach(y:Range(5, 15), x:Range(5), [while] false, x * y)
ForEach(y : Range(5, 15), x : Range(5), [while] false, x * y) : i8*
Binder : (0, 0) ForEach(*1: Range(5, 15), *2: Range(5), [while] false, Mul(*2, *1))
Reducer: (0, 0) null
###
> ForEachWhile(x:Range(5), y:Range(5, 15), x + y < 10, x * y)
ForEachWhile(x : Range(5), y : Range(5, 15), x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEachWhile*(*1: Range(5), *2: Range(5, 15), Add(*1, *2) @< 10, Mul(*1, *2))
Reducer: (0, 5) ForEach(*1: Range(5), *2: Range(5, 10), [while] Add(*1, *2) @< 10, Mul(*1, *2))
###
> ForEach(x:Range(5), y:Range(5, 15), [while] x + y < 10, x * y)
ForEach(x : Range(5), y : Range(5, 15), [while] x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEach(*1: Range(5), *2: Range(5, 15), [while] Add(*1, *2) @< 10, Mul(*1, *2))
Reducer: (0, 5) ForEach(*1: Range(5), *2: Range(5, 10), [while] Add(*1, *2) @< 10, Mul(*1, *2))
###
> ForEachWhile(y:Range(5, 15), x:Range(5), x + y < 10, x * y)
ForEachWhile(y : Range(5, 15), x : Range(5), x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEachWhile*(*1: Range(5, 15), *2: Range(5), Add(*2, *1) @< 10, Mul(*2, *1))
Reducer: (0, 5) ForEach(*1: Range(5, 10), *2: Range(5), [while] Add(*2, *1) @< 10, Mul(*2, *1))
###
> ForEach(y:Range(5, 15), x:Range(5), [while] x + y < 10, x * y)
ForEach(y : Range(5, 15), x : Range(5), [while] x + y $< 10, x * y) : i8*
Binder : (0, 5) ForEach(*1: Range(5, 15), *2: Range(5), [while] Add(*2, *1) @< 10, Mul(*2, *1))
Reducer: (0, 5) ForEach(*1: Range(5, 10), *2: Range(5), [while] Add(*2, *1) @< 10, Mul(*2, *1))
###
> Generate(n, it * it)
Generate(n, it * it) : i8*
Binder : (0, *) Generate(^1: n, Mul(^1, ^1))
###
> Generate(5, it * it)
Generate(5, it * it) : i8*
Binder : (5, 5) Generate(^1: 5, Mul(^1, ^1))
###
> Generate(-1, it * it)
Generate(-1, it * it) : i8*
Binder : (0, 0) Generate(^1: -1, Mul(^1, ^1))
Reducer: (0, 0) null
###
> Generate(0, it * it)
Generate(0, it * it) : i8*
Binder : (0, 0) Generate(^1: 0, Mul(^1, ^1))
Reducer: (0, 0) null
###
> Generate(x:n, y:n, x + y)
Generate(x : n, y : n, x + y) : i8*
Binder : (0, *) Generate(^1: n, %2: n, Add(^1, %2))
###
> Generate(x:5, y:n, x + y)
Generate(x : 5, y : n, x + y) : i8*
Binder : (5, 5) Generate(^1: 5, %2: n, Add(^1, %2))
###
> Generate(x:-1, y:n, x + y)
Generate(x : -1, y : n, x + y) : i8*
Binder : (0, 0) Generate(^1: -1, %2: n, Add(^1, %2))
Reducer: (0, 0) null
###
> Generate(x:0, y:n, x + y)
Generate(x : 0, y : n, x + y) : i8*
Binder : (0, 0) Generate(^1: 0, %2: n, Add(^1, %2))
Reducer: (0, 0) null
###
> Generate(x:n, y:n, x + y, y - 1)
Generate(x : n, y : n, x + y, y - 1) : i8*
Binder : (0, *) Generate(^1: n, %2: n, Add(^1, %2), Add(%2, [-] 1))
###
> Generate(x:5, y:n, x + y, y - 1)
Generate(x : 5, y : n, x + y, y - 1) : i8*
Binder : (5, 5) Generate(^1: 5, %2: n, Add(^1, %2), Add(%2, [-] 1))
###
> Generate(x:-1, y:n, x + y, y - 1)
Generate(x : -1, y : n, x + y, y - 1) : i8*
Binder : (0, 0) Generate(^1: -1, %2: n, Add(^1, %2), Add(%2, [-] 1))
Reducer: (0, 0) null
###
> Generate(x:0, y:n, x + y, y - 1)
Generate(x : 0, y : n, x + y, y - 1) : i8*
Binder : (0, 0) Generate(^1: 0, %2: n, Add(^1, %2), Add(%2, [-] 1))
Reducer: (0, 0) null
###
> Sort(s)
Sort(s) : i8*
Binder : (0, *) Sort(s)
###
> Sort(Range(20))
Sort(Range(20)) : i8*
Binder : (20, 20) Sort(Range(20))
###
> Sort(Range(5) + s)
Sort(Range(5) + s) : i8*
Binder : (0, 5) Sort(ForEach(*1: Range(5), *2: s, Add(*1, *2)))
###
> Sort(Range(5) ++ s)
Sort(Range(5) ++ s) : i8*
Binder : (5, *) Sort(SeqConcat(Range(5), s))
###
> Sort(Take(s, 5))
Sort(Take(s, 5)) : i8*
Binder : (0, 5) Sort(Take(s, 5))
###
> Distinct(s)
Distinct(s) : i8*
Binder : (0, *) Distinct(s)
###
> Distinct(Range(20))
Distinct(Range(20)) : i8*
Binder : (1, 20) Distinct(Range(20))
###
> Distinct(Range(5) + s)
Distinct(Range(5) + s) : i8*
Binder : (0, 5) Distinct(ForEach(*1: Range(5), *2: s, Add(*1, *2)))
###
> Distinct(Range(5) ++ s)
Distinct(Range(5) ++ s) : i8*
Binder : (1, *) Distinct(SeqConcat(Range(5), s))
###
> Distinct(Take(s, 5))
Distinct(Take(s, 5)) : i8*
Binder : (0, 5) Distinct(Take(s, 5))
###
> ScanX(a:s, b:0, a + b)
ScanX(a : s, b : 0, a + b) : i8*
Binder : (1, *) ScanX(*1: s, %2: 0, Add(*1, %2))
###
> ScanX(a:Range(10), b:0, a + b)
ScanX(a : Range(10), b : 0, a + b) : i8*
Binder : (11, 11) ScanX(*1: Range(10), %2: 0, Add(*1, %2))
###
> ScanZ(a:s, b:0, a + b)
ScanZ(a : s, b : 0, a + b) : i8*
Binder : (0, *) ScanZ(*1: s, %2: 0, Add(*1, %2))
###
> ScanZ(a:Range(10), b:0, a + b)
ScanZ(a : Range(10), b : 0, a + b) : i8*
Binder : (10, 10) ScanZ(*1: Range(10), %2: 0, Add(*1, %2))
###
