**** New globals: {b:b, d:d, g:g, i:i, i1:i1, i2:i2, i4:i4, i8:i8, n:r8, r4:r4, r8:r8, s:s, t:t, u1:u1, u2:u2, u4:u4, u8:u8, v:v}

> ToIA(g)
ToIA(g) : i?
*** Error: (5,6) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : ToIA(Error(ErrBadType_Src_Dst))
###
> ToIA(s)
ToIA(s) : i?
Binder : ToIA(s)
###
> ToIA(n)
ToIA(n) : i?
Binder : ToIA(n)
###
> ToIA(r8)
ToIA(r8) : i?
Binder : ToIA(r8)
###
> ToIA(r4)
ToIA(r4) : i?
Binder : ToIA(r4)
###
> ToIA(v)
ToIA(v) : i
Binder : ToIA*(Unit<i>(v))
Reducer: 0
###
> ToIA(b)
ToIA(b) : i
Binder : ToIA*(b)
Reducer: Num<i>(b)
###
> ToIA(d)
ToIA(d) : i
Binder : ToIA*(d)
Reducer: Num<i>(Date.TotalTicks(d))
###
> ToIA(t)
ToIA(t) : i
Binder : ToIA*(t)
Reducer: Num<i>(Time.TotalTicks(t))
###
> ToIA(i)
ToIA(i) : i
Binder : ToIA*(i)
Reducer: i
###
> ToIA(i8)
ToIA(i8) : i
Binder : ToIA*(i8)
Reducer: Num<i>(i8)
###
> ToIA(i4)
ToIA(i4) : i
Binder : ToIA*(i4)
Reducer: Num<i>(i4)
###
> ToIA(i2)
ToIA(i2) : i
Binder : ToIA*(i2)
Reducer: Num<i>(i2)
###
> ToIA(i1)
ToIA(i1) : i
Binder : ToIA*(i1)
Reducer: Num<i>(i1)
###
> ToIA(u8)
ToIA(u8) : i
Binder : ToIA*(u8)
Reducer: Num<i>(u8)
###
> ToIA(u4)
ToIA(u4) : i
Binder : ToIA*(u4)
Reducer: Num<i>(u4)
###
> ToIA(u2)
ToIA(u2) : i
Binder : ToIA*(u2)
Reducer: Num<i>(u2)
###
> ToIA(u1)
ToIA(u1) : i
Binder : ToIA*(u1)
Reducer: Num<i>(u1)
###

**** New globals: {o:o, qb:b?, qd:d?, qi:i?, qi1:i1?, qi2:i2?, qi4:i4?, qi8:i8?, qn:r8?, qr4:r4?, qr8:r8?, qt:t?, qu1:u1?, qu2:u2?, qu4:u4?, qu8:u8?}

> ToIA(qn)
ToIA(qn) : i?
Binder : Guard(?1: qn, ToIA(?1))
###
> ToIA(qr8)
ToIA(qr8) : i?
Binder : Guard(?1: qr8, ToIA(?1))
###
> ToIA(qr4)
ToIA(qr4) : i?
Binder : Guard(?1: qr4, ToIA(?1))
###
> ToIA(o)
ToIA(o) : i?
Binder : Guard(?1: o, ToIA*(Unit<i>(?1)))
Reducer: null
###
> ToIA(qb)
ToIA(qb) : i?
Binder : Guard(?1: qb, ToIA*(?1))
Reducer: Guard(?1: qb, Num<i>(?1))
###
> ToIA(qd)
ToIA(qd) : i?
Binder : Guard(?1: qd, ToIA*(?1))
Reducer: Guard(?1: qd, Num<i>(Date.TotalTicks(?1)))
###
> ToIA(qt)
ToIA(qt) : i?
Binder : Guard(?1: qt, ToIA*(?1))
Reducer: Guard(?1: qt, Num<i>(Time.TotalTicks(?1)))
###
> ToIA(qi)
ToIA(qi) : i?
Binder : Guard(?1: qi, ToIA*(?1))
Reducer: qi
###
> ToIA(qi8)
ToIA(qi8) : i?
Binder : Guard(?1: qi8, ToIA*(?1))
Reducer: Guard(?1: qi8, Num<i>(?1))
###
> ToIA(qi4)
ToIA(qi4) : i?
Binder : Guard(?1: qi4, ToIA*(?1))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qi2)
ToIA(qi2) : i?
Binder : Guard(?1: qi2, ToIA*(?1))
Reducer: Guard(?1: qi2, Num<i>(?1))
###
> ToIA(qi1)
ToIA(qi1) : i?
Binder : Guard(?1: qi1, ToIA*(?1))
Reducer: Guard(?1: qi1, Num<i>(?1))
###
> ToIA(qu8)
ToIA(qu8) : i?
Binder : Guard(?1: qu8, ToIA*(?1))
Reducer: Guard(?1: qu8, Num<i>(?1))
###
> ToIA(qu4)
ToIA(qu4) : i?
Binder : Guard(?1: qu4, ToIA*(?1))
Reducer: Guard(?1: qu4, Num<i>(?1))
###
> ToIA(qu2)
ToIA(qu2) : i?
Binder : Guard(?1: qu2, ToIA*(?1))
Reducer: Guard(?1: qu2, Num<i>(?1))
###
> ToIA(qu1)
ToIA(qu1) : i?
Binder : Guard(?1: qu1, ToIA*(?1))
Reducer: Guard(?1: qu1, Num<i>(?1))
###

**** New globals: {g:g, i:i, i4:i4, o:o, qi:i?, qi4:i4?, qr8:r8?, r8:r8, v:v}

> ToIA(v)
ToIA(v) : i
Binder : ToIA*(Unit<i>(v))
Reducer: 0
###
> ToIA(v, v)
ToIA(v, v) : i
*** Warning: (8,9) Node: v, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(Unit<i>(v), Unit<i>(v))
Reducer: 0
###
> ToIA(v, o)
ToIA(v, o) : i
*** Warning: (8,9) Node: o, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(Unit<i>(v), null)
Reducer: 0
###
> ToIA(v, qi4)
ToIA(v, qi4) : i
*** Warning: (8,11) Node: qi4, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(Unit<i>(v), Guard(?1: qi4, Num<i>(?1)))
Reducer: 0
###
> ToIA(v, i4)
ToIA(v, i4) : i
*** Warning: (8,10) Node: i4, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(Unit<i>(v), Num<i>(i4))
Reducer: 0
###
> ToIA(i4)
ToIA(i4) : i
Binder : ToIA*(i4)
Reducer: Num<i>(i4)
###
> ToIA(i4, v)
ToIA(i4, v) : i
*** Warning: (9,10) Node: v, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(i4, Unit<i>(v))
Reducer: Num<i>(i4)
###
> ToIA(i4, o)
ToIA(i4, o) : i
*** Warning: (9,10) Node: o, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(i4, null)
Reducer: Num<i>(i4)
###
> ToIA(i4, qi4)
ToIA(i4, qi4) : i
*** Warning: (9,12) Node: qi4, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(i4, Guard(?1: qi4, Num<i>(?1)))
Reducer: Num<i>(i4)
###
> ToIA(i4, i4)
ToIA(i4, i4) : i
*** Warning: (9,11) Node: i4, Message: Second argument of 'ToIA' is not used
Binder : ToIA*(i4, Num<i>(i4))
Reducer: Num<i>(i4)
###
> ToIA(r8)
ToIA(r8) : i?
Binder : ToIA(r8)
###
> ToIA(r8, v)
ToIA(r8, v) : i
Binder : ToIA(r8, Unit<i>(v))
Reducer: ToIA(r8, 0)
###
> ToIA(r8, o)
ToIA(r8, o) : i?
Binder : ToIA(r8, null)
###
> ToIA(r8, qi4)
ToIA(r8, qi4) : i?
Binder : ToIA(r8, Guard(?1: qi4, Num<i>(?1)))
###
> ToIA(r8, i4)
ToIA(r8, i4) : i
Binder : ToIA(r8, Num<i>(i4))
###
> ToIA(o)
ToIA(o) : i?
Binder : Guard(?1: o, ToIA*(Unit<i>(?1)))
Reducer: null
###
> ToIA(o, v)
ToIA(o, v) : i?
*** Warning: (8,9) Node: v, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: o, ToIA*(Unit<i>(?1), Unit<i>(v)))
Reducer: null
###
> ToIA(o, o)
ToIA(o, o) : i?
*** Warning: (8,9) Node: o, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: o, ToIA*(Unit<i>(?1), null))
Reducer: null
###
> ToIA(o, qi4)
ToIA(o, qi4) : i?
*** Warning: (8,11) Node: qi4, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: o, ToIA*(Unit<i>(?1), Guard(?2: qi4, Num<i>(?2))))
Reducer: null
###
> ToIA(o, i4)
ToIA(o, i4) : i?
*** Warning: (8,10) Node: i4, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: o, ToIA*(Unit<i>(?1), Num<i>(i4)))
Reducer: null
###
> ToIA(qi4)
ToIA(qi4) : i?
Binder : Guard(?1: qi4, ToIA*(?1))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qi4, v)
ToIA(qi4, v) : i?
*** Warning: (10,11) Node: v, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: qi4, ToIA*(?1, Unit<i>(v)))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qi4, o)
ToIA(qi4, o) : i?
*** Warning: (10,11) Node: o, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: qi4, ToIA*(?1, null))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qi4, qi4)
ToIA(qi4, qi4) : i?
*** Warning: (10,13) Node: qi4, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: qi4, ToIA*(?1, Guard(?2: qi4, Num<i>(?2))))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qi4, i4)
ToIA(qi4, i4) : i?
*** Warning: (10,12) Node: i4, Message: Second argument of 'ToIA' is not used
Binder : Guard(?1: qi4, ToIA*(?1, Num<i>(i4)))
Reducer: Guard(?1: qi4, Num<i>(?1))
###
> ToIA(qr8)
ToIA(qr8) : i?
Binder : Guard(?1: qr8, ToIA(?1))
###
> ToIA(qr8, v)
ToIA(qr8, v) : i?
Binder : Guard(?1: qr8, ToIA(?1, Unit<i>(v)))
Reducer: Guard(?1: qr8, ToIA(?1, 0))
###
> ToIA(qr8, o)
ToIA(qr8, o) : i?
Binder : Guard(?1: qr8, ToIA(?1, null))
###
> ToIA(qr8, qi4)
ToIA(qr8, qi4) : i?
Binder : Guard(?1: qr8, ToIA(?1, Guard(?2: qi4, Num<i>(?2))))
###
> ToIA(qr8, i4)
ToIA(qr8, i4) : i?
Binder : Guard(?1: qr8, ToIA(?1, Num<i>(i4)))
###
> To(g, qi)
To(g, qi) : i?
*** Error: (3,4) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : To*(Error(ErrBadType_Src_Dst), qi)
Reducer: ToIA(Error(ErrBadType_Src_Dst), qi)
###
> To(g, i)
To(g, i) : i
*** Error: (3,4) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : To*(Error(ErrBadType_Src_Dst), i)
Reducer: ToIA(Error(ErrBadType_Src_Dst), i)
###
> To(v, qi)
To(v, qi) : i
*** Warning: (6,8) Node: qi, Message: Second argument of 'To' is not used
Binder : To*(Unit<i>(v), qi)
Reducer: 0
###
> To(v, i)
To(v, i) : i
*** Warning: (6,7) Node: i, Message: Second argument of 'To' is not used
Binder : To*(Unit<i>(v), i)
Reducer: 0
###
> To(r8, qi)
To(r8, qi) : i?
Binder : To*(r8, qi)
Reducer: ToIA(r8, qi)
###
> To(r8, i)
To(r8, i) : i
Binder : To*(r8, i)
Reducer: ToIA(r8, i)
###
> To(o, qi)
To(o, qi) : i?
*** Warning: (6,8) Node: qi, Message: Second argument of 'To' is not used
Binder : Guard(?1: o, To*(Unit<i>(?1), qi))
Reducer: null
###
> To(o, i)
To(o, i) : i?
*** Warning: (6,7) Node: i, Message: Second argument of 'To' is not used
Binder : Guard(?1: o, To*(Unit<i>(?1), i))
Reducer: null
###
> To(qr8, qi)
To(qr8, qi) : i?
Binder : Guard(?1: qr8, To*(?1, qi))
Reducer: Guard(?1: qr8, ToIA(?1, qi))
###
> To(qr8, i)
To(qr8, i) : i?
Binder : Guard(?1: qr8, To*(?1, i))
Reducer: Guard(?1: qr8, ToIA(?1, i))
###

**** New globals: {b:b*, d:d*, g:g*, i:i*, i1:i1*, i2:i2*, i4:i4*, i8:i8*, n:r8*, r4:r4*, r8:r8*, s:s*, t:t*, u1:u1*, u2:u2*, u4:u4*, u8:u8*}

> ToIA(g)
ToIA(g) : i?*
*** Error: (5,6) Node: g, Message: Invalid operand type: cannot convert type 'g' to 's'
Binder : ForEach(*1: g, ToIA(Error(ErrBadType_Src_Dst)))
###
> ToIA(s)
ToIA(s) : i?*
Binder : ForEach(*1: s, ToIA(*1))
###
> ToIA(n)
ToIA(n) : i?*
Binder : ForEach(*1: n, ToIA(*1))
###
> ToIA(r8)
ToIA(r8) : i?*
Binder : ForEach(*1: r8, ToIA(*1))
###
> ToIA(r4)
ToIA(r4) : i?*
Binder : ForEach(*1: r4, ToIA(*1))
###
> ToIA(b)
ToIA(b) : i*
Binder : ForEach(*1: b, ToIA*(*1))
Reducer: ForEach(*1: b, Num<i>(*1))
###
> ToIA(d)
ToIA(d) : i*
Binder : ForEach(*1: d, ToIA*(*1))
Reducer: ForEach(*1: d, Num<i>(Date.TotalTicks(*1)))
###
> ToIA(t)
ToIA(t) : i*
Binder : ForEach(*1: t, ToIA*(*1))
Reducer: ForEach(*1: t, Num<i>(Time.TotalTicks(*1)))
###
> ToIA(i)
ToIA(i) : i*
Binder : ForEach(*1: i, ToIA*(*1))
Reducer: i
###
> ToIA(i8)
ToIA(i8) : i*
Binder : ForEach(*1: i8, ToIA*(*1))
Reducer: ForEach(*1: i8, Num<i>(*1))
###
> ToIA(i4)
ToIA(i4) : i*
Binder : ForEach(*1: i4, ToIA*(*1))
Reducer: ForEach(*1: i4, Num<i>(*1))
###
> ToIA(i2)
ToIA(i2) : i*
Binder : ForEach(*1: i2, ToIA*(*1))
Reducer: ForEach(*1: i2, Num<i>(*1))
###
> ToIA(i1)
ToIA(i1) : i*
Binder : ForEach(*1: i1, ToIA*(*1))
Reducer: ForEach(*1: i1, Num<i>(*1))
###
> ToIA(u8)
ToIA(u8) : i*
Binder : ForEach(*1: u8, ToIA*(*1))
Reducer: ForEach(*1: u8, Num<i>(*1))
###
> ToIA(u4)
ToIA(u4) : i*
Binder : ForEach(*1: u4, ToIA*(*1))
Reducer: ForEach(*1: u4, Num<i>(*1))
###
> ToIA(u2)
ToIA(u2) : i*
Binder : ForEach(*1: u2, ToIA*(*1))
Reducer: ForEach(*1: u2, Num<i>(*1))
###
> ToIA(u1)
ToIA(u1) : i*
Binder : ForEach(*1: u1, ToIA*(*1))
Reducer: ForEach(*1: u1, Num<i>(*1))
###

**** New globals: {o:o*, qb:b?*, qd:d?*, qi:i?*, qi1:i1?*, qi2:i2?*, qi4:i4?*, qi8:i8?*, qn:r8?*, qr4:r4?*, qr8:r8?*, qt:t?*, qu1:u1?*, qu2:u2?*, qu4:u4?*, qu8:u8?*}

> ToIA(qn)
ToIA(qn) : i?*
Binder : ForEach(*1: qn, Guard(?2: *1, ToIA(?2)))
###
> ToIA(qr8)
ToIA(qr8) : i?*
Binder : ForEach(*1: qr8, Guard(?2: *1, ToIA(?2)))
###
> ToIA(qr4)
ToIA(qr4) : i?*
Binder : ForEach(*1: qr4, Guard(?2: *1, ToIA(?2)))
###
> ToIA(o)
ToIA(o) : i?*
Binder : ForEach(*1: o, Guard(?2: *1, ToIA*(Unit<i>(?2))))
Reducer: ForEach(*1: o, null)
###
> ToIA(qb)
ToIA(qb) : i?*
Binder : ForEach(*1: qb, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qb, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qd)
ToIA(qd) : i?*
Binder : ForEach(*1: qd, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qd, Guard(?2: *1, Num<i>(Date.TotalTicks(?2))))
###
> ToIA(qt)
ToIA(qt) : i?*
Binder : ForEach(*1: qt, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qt, Guard(?2: *1, Num<i>(Time.TotalTicks(?2))))
###
> ToIA(qi)
ToIA(qi) : i?*
Binder : ForEach(*1: qi, Guard(?2: *1, ToIA*(?2)))
Reducer: qi
###
> ToIA(qi8)
ToIA(qi8) : i?*
Binder : ForEach(*1: qi8, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qi8, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qi4)
ToIA(qi4) : i?*
Binder : ForEach(*1: qi4, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qi4, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qi2)
ToIA(qi2) : i?*
Binder : ForEach(*1: qi2, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qi2, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qi1)
ToIA(qi1) : i?*
Binder : ForEach(*1: qi1, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qi1, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qu8)
ToIA(qu8) : i?*
Binder : ForEach(*1: qu8, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qu8, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qu4)
ToIA(qu4) : i?*
Binder : ForEach(*1: qu4, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qu4, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qu2)
ToIA(qu2) : i?*
Binder : ForEach(*1: qu2, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qu2, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(qu1)
ToIA(qu1) : i?*
Binder : ForEach(*1: qu1, Guard(?2: *1, ToIA*(?2)))
Reducer: ForEach(*1: qu1, Guard(?2: *1, Num<i>(?2)))
###
> ToIA(3.14)
ToIA(3.14) : i?
Binder : ToIA(3.14)
Reducer: Opt<i?>(3)
###
> ToIA(1/0)
ToIA(1 / 0) : i?
Binder : ToIA(Mul(1, [/] 0))
Reducer: null
###
> ToIA(3.14, null)
ToIA(3.14, null) : i?
Binder : ToIA(3.14, null)
Reducer: Opt<i?>(3)
###
> ToIA(1/0,  null)
ToIA(1 / 0, null) : i?
Binder : ToIA(Mul(1, [/] 0), null)
Reducer: null
###
> ToIA(3.14, Null(5))
ToIA(3.14, Null(5)) : i?
Binder : ToIA(3.14, Guard(?1: DefOpt*(5), Num<i>(?1)))
Reducer: Opt<i?>(3)
###
> ToIA(3.14, Opt (5))
ToIA(3.14, Opt(5)) : i?
Binder : ToIA(3.14, Guard(?1: Opt*(5), Num<i>(?1)))
Reducer: Opt<i?>(3)
###
> ToIA(1/0,  Null(5))
ToIA(1 / 0, Null(5)) : i?
Binder : ToIA(Mul(1, [/] 0), Guard(?1: DefOpt*(5), Num<i>(?1)))
Reducer: null
###
> ToIA(1/0,  Opt (5))
ToIA(1 / 0, Opt(5)) : i?
Binder : ToIA(Mul(1, [/] 0), Guard(?1: Opt*(5), Num<i>(?1)))
Reducer: Opt<i?>(5)
###
> ToIA(3.14, 5)
ToIA(3.14, 5) : i
Binder : ToIA(3.14, 5)
Reducer: 3
###
> ToIA(Null(3.14))
ToIA(Null(3.14)) : i?
Binder : Guard(?1: DefOpt*(3.14), ToIA(?1))
Reducer: null
###
> ToIA(Opt (3.14))
ToIA(Opt(3.14)) : i?
Binder : Guard(?1: Opt*(3.14), ToIA(?1))
Reducer: Opt<i?>(3)
###
> ToIA(Opt (1/0 ))
ToIA(Opt(1 / 0)) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToIA(?1))
Reducer: null
###
> ToIA(Null(3.14), null)
ToIA(Null(3.14), null) : i?
Binder : Guard(?1: DefOpt*(3.14), ToIA(?1, null))
Reducer: null
###
> ToIA(Opt (3.14), null)
ToIA(Opt(3.14), null) : i?
Binder : Guard(?1: Opt*(3.14), ToIA(?1, null))
Reducer: Opt<i?>(3)
###
> ToIA(Opt (1/0 ), null)
ToIA(Opt(1 / 0), null) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToIA(?1, null))
Reducer: null
###
> ToIA(Null(3.14), Null(5))
ToIA(Null(3.14), Null(5)) : i?
Binder : Guard(?1: DefOpt*(3.14), ToIA(?1, Guard(?2: DefOpt*(5), Num<i>(?2))))
Reducer: null
###
> ToIA(Null(3.14), Opt (5))
ToIA(Null(3.14), Opt(5)) : i?
Binder : Guard(?1: DefOpt*(3.14), ToIA(?1, Guard(?2: Opt*(5), Num<i>(?2))))
Reducer: null
###
> ToIA(Opt (3.14), Null(5))
ToIA(Opt(3.14), Null(5)) : i?
Binder : Guard(?1: Opt*(3.14), ToIA(?1, Guard(?2: DefOpt*(5), Num<i>(?2))))
Reducer: Opt<i?>(3)
###
> ToIA(Opt (3.14), Opt (5))
ToIA(Opt(3.14), Opt(5)) : i?
Binder : Guard(?1: Opt*(3.14), ToIA(?1, Guard(?2: Opt*(5), Num<i>(?2))))
Reducer: Opt<i?>(3)
###
> ToIA(Opt (1/0 ), Null(5))
ToIA(Opt(1 / 0), Null(5)) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToIA(?1, Guard(?2: DefOpt*(5), Num<i>(?2))))
Reducer: null
###
> ToIA(Opt (1/0 ), Opt (5))
ToIA(Opt(1 / 0), Opt(5)) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToIA(?1, Guard(?2: Opt*(5), Num<i>(?2))))
Reducer: Opt<i?>(5)
###
> ToIA(Null(3.14), 5)
ToIA(Null(3.14), 5) : i?
Binder : Guard(?1: DefOpt*(3.14), ToIA(?1, 5))
Reducer: null
###
> ToIA(Opt (3.14), 5)
ToIA(Opt(3.14), 5) : i?
Binder : Guard(?1: Opt*(3.14), ToIA(?1, 5))
Reducer: Opt<i?>(3)
###
> ToIA(Opt (1/0 ), 5)
ToIA(Opt(1 / 0), 5) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), ToIA(?1, 5))
Reducer: Opt<i?>(5)
###
> To(3.14, Null(5ia))
To(3.14, Null(5)) : i?
Binder : To*(3.14, DefOpt*(5))
Reducer: Opt<i?>(3)
###
> To(3.14, Opt (5ia))
To(3.14, Opt(5)) : i?
Binder : To*(3.14, Opt*(5))
Reducer: Opt<i?>(3)
###
> To(1/0,  Null(5ia))
To(1 / 0, Null(5)) : i?
Binder : To*(Mul(1, [/] 0), DefOpt*(5))
Reducer: null
###
> To(1/0,  Opt (5ia))
To(1 / 0, Opt(5)) : i?
Binder : To*(Mul(1, [/] 0), Opt*(5))
Reducer: Opt<i?>(5)
###
> To(3.14, 5ia)
To(3.14, 5) : i
Binder : To*(3.14, 5)
Reducer: 3
###
> To(1/0,  5ia)
To(1 / 0, 5) : i
Binder : To*(Mul(1, [/] 0), 5)
Reducer: 5
###
> To(Null(3.14), Null(5ia))
To(Null(3.14), Null(5)) : i?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, DefOpt*(5)))
Reducer: null
###
> To(Null(3.14), Opt (5ia))
To(Null(3.14), Opt(5)) : i?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, Opt*(5)))
Reducer: null
###
> To(Opt (3.14), Null(5ia))
To(Opt(3.14), Null(5)) : i?
Binder : Guard(?1: Opt*(3.14), To*(?1, DefOpt*(5)))
Reducer: Opt<i?>(3)
###
> To(Opt (3.14), Opt (5ia))
To(Opt(3.14), Opt(5)) : i?
Binder : Guard(?1: Opt*(3.14), To*(?1, Opt*(5)))
Reducer: Opt<i?>(3)
###
> To(Opt (1/0 ), Null(5ia))
To(Opt(1 / 0), Null(5)) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, DefOpt*(5)))
Reducer: null
###
> To(Opt (1/0 ), Opt (5ia))
To(Opt(1 / 0), Opt(5)) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, Opt*(5)))
Reducer: Opt<i?>(5)
###
> To(Null(3.14), 5ia)
To(Null(3.14), 5) : i?
Binder : Guard(?1: DefOpt*(3.14), To*(?1, 5))
Reducer: null
###
> To(Opt (3.14), 5ia)
To(Opt(3.14), 5) : i?
Binder : Guard(?1: Opt*(3.14), To*(?1, 5))
Reducer: Opt<i?>(3)
###
> To(Opt (1/0 ), 5ia)
To(Opt(1 / 0), 5) : i?
Binder : Guard(?1: Opt*(Mul(1, [/] 0)), To*(?1, 5))
Reducer: Opt<i?>(5)
###
> ToIA(false)
ToIA(false) : i
Binder : ToIA*(false)
Reducer: 0
###
> ToIA(true)
ToIA(true) : i
Binder : ToIA*(true)
Reducer: 1
###
> ToIA(-9223372036854775808i8)
ToIA(-9223372036854775808) : i
Binder : ToIA*(-9223372036854775808)
Reducer: -9223372036854775808
###
> ToIA(18446744073709551615u8)
ToIA(18446744073709551615) : i
Binder : ToIA*(18446744073709551615)
Reducer: 18446744073709551615
###
> ToIA(123456789012345678901234567890ia)
ToIA(123456789012345678901234567890) : i
Binder : ToIA*(123456789012345678901234567890)
Reducer: 123456789012345678901234567890
###
> ToIA(-1/0)
ToIA(-1 / 0) : i?
Binder : ToIA(Mul(-1, [/] 0))
Reducer: null
###
> ToIA(1/0)
ToIA(1 / 0) : i?
Binder : ToIA(Mul(1, [/] 0))
Reducer: null
###
> ToIA(0/0)
ToIA(0 / 0) : i?
Binder : ToIA(Mul(0, [/] 0))
Reducer: null
###
> To(-1/0, 5ia)
To(-1 / 0, 5) : i
Binder : To*(Mul(-1, [/] 0), 5)
Reducer: 5
###
> To(1/0, 5ia)
To(1 / 0, 5) : i
Binder : To*(Mul(1, [/] 0), 5)
Reducer: 5
###
> ToIA(0/0, 5ia)
ToIA(0 / 0, 5) : i
Binder : ToIA(Mul(0, [/] 0), 5)
Reducer: 5
###
> ToIA(-0x1FFFFFFFFFFFFF * 2.0 ^ 971)
ToIA(-9007199254740991 * 2^971) : i?
Binder : ToIA(Mul(-9007199254740991, Power(2, 971)))
Reducer: Opt<i?>(-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368)
###
> ToIA(CastR4(-0xFFFFFF  * 2.0 ^ 104))
ToIA(CastR4(-16777215 * 2^104)) : i?
Binder : ToIA(CastR4(Mul(-16777215, Power(2, 104))))
Reducer: Opt<i?>(-340282346638528859811704183484516925440)
###
> ToIA(-0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToIA(-9007199254740991 * 2^-53) : i?
Binder : ToIA(Mul(-9007199254740991, Power(2, -53)))
Reducer: Opt<i?>(0)
###
> ToIA(CastR4(-0x7FFFFF  * 2.0 ^ -23))
ToIA(CastR4(-8388607 * 2^-23)) : i?
Binder : ToIA(CastR4(Mul(-8388607, Power(2, -23))))
Reducer: Opt<i?>(0)
###
> ToIA(CastR4( 0x7FFFFF  * 2.0 ^ -23))
ToIA(CastR4(8388607 * 2^-23)) : i?
Binder : ToIA(CastR4(Mul(8388607, Power(2, -23))))
Reducer: Opt<i?>(0)
###
> ToIA( 0x1FFFFFFFFFFFFF * 2.0 ^ -53)
ToIA(9007199254740991 * 2^-53) : i?
Binder : ToIA(Mul(9007199254740991, Power(2, -53)))
Reducer: Opt<i?>(0)
###
> ToIA(CastR4( 0xFFFFFF  * 2.0 ^ 104))
ToIA(CastR4(16777215 * 2^104)) : i?
Binder : ToIA(CastR4(Mul(16777215, Power(2, 104))))
Reducer: Opt<i?>(340282346638528859811704183484516925440)
###
> ToIA( 0x1FFFFFFFFFFFFF * 2.0 ^ 971)
ToIA(9007199254740991 * 2^971) : i?
Binder : ToIA(Mul(9007199254740991, Power(2, 971)))
Reducer: Opt<i?>(179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368)
###
> ToIA("")
ToIA("") : i?
Binder : ToIA("")
Reducer: null
###
> ToIA(" ")
ToIA(" ") : i?
Binder : ToIA(" ")
Reducer: null
###
> ToIA("(-0)")
ToIA("(-0)") : i?
Binder : ToIA("(-0)")
Reducer: null
###
> ToIA(" ( 123  ) ")
ToIA(" ( 123  ) ") : i?
Binder : ToIA(" ( 123  ) ")
Reducer: null
###
> To("", 5ia)
To("", 5) : i
Binder : To*("", 5)
Reducer: 5
###
> To(" ", 5ia)
To(" ", 5) : i
Binder : To*(" ", 5)
Reducer: 5
###
> ToIA("(-0)", 5)
ToIA("(-0)", 5) : i
Binder : ToIA("(-0)", 5)
Reducer: 5
###
> ToIA(" ( 123  ) ", 5)
ToIA(" ( 123  ) ", 5) : i
Binder : ToIA(" ( 123  ) ", 5)
Reducer: 5
###
> ToIA("false")
ToIA("false") : i?
Binder : ToIA("false")
Reducer: null
###
> ToIA("true")
ToIA("true") : i?
Binder : ToIA("true")
Reducer: null
###
> To("false", 5ia)
To("false", 5) : i
Binder : To*("false", 5)
Reducer: 5
###
> ToIA("true", 5ia)
ToIA("true", 5) : i
Binder : ToIA("true", 5)
Reducer: 5
###
> ToIA("1 234")
ToIA("1 234") : i?
Binder : ToIA("1 234")
Reducer: null
###
> To("1 234", 5ia)
To("1 234", 5) : i
Binder : To*("1 234", 5)
Reducer: 5
###
> ToIA("-0")
ToIA("-0") : i?
Binder : ToIA("-0")
Reducer: Opt<i?>(0)
###
> ToIA("(0)")
ToIA("(0)") : i?
Binder : ToIA("(0)")
Reducer: Opt<i?>(0)
###
> ToIA("12,345 ")
ToIA("12,345 ") : i?
Binder : ToIA("12,345 ")
Reducer: Opt<i?>(12345)
###
> ToIA(" (123) ")
ToIA(" (123) ") : i?
Binder : ToIA(" (123) ")
Reducer: Opt<i?>(-123)
###
> ToIA("-0.0")
ToIA("-0.0") : i?
Binder : ToIA("-0.0")
Reducer: null
###
> ToIA("12.34", 56)
ToIA("12.34", 56) : i
Binder : ToIA("12.34", 56)
Reducer: 56
###
> ToIA("2e20")
ToIA("2e20") : i?
Binder : ToIA("2e20")
Reducer: null
###
> ToIA("∞")
ToIA("∞") : i?
Binder : ToIA("∞")
Reducer: null
###
> ToIA("-∞")
ToIA("-∞") : i?
Binder : ToIA("-∞")
Reducer: null
###
> ToIA("Infinity")
ToIA("Infinity") : i?
Binder : ToIA("Infinity")
Reducer: null
###
> ToIA("-Infinity")
ToIA("-Infinity") : i?
Binder : ToIA("-Infinity")
Reducer: null
###
> ToIA("NaN")
ToIA("NaN") : i?
Binder : ToIA("NaN")
Reducer: null
###
> To("-0.0", 5ia)
To("-0.0", 5) : i
Binder : To*("-0.0", 5)
Reducer: 5
###
> To("12.34", 5ia)
To("12.34", 5) : i
Binder : To*("12.34", 5)
Reducer: 5
###
> To("2e20", 5ia)
To("2e20", 5) : i
Binder : To*("2e20", 5)
Reducer: 5
###
> To("∞", 5ia)
To("∞", 5) : i
Binder : To*("∞", 5)
Reducer: 5
###
> ToIA("-∞", 5ia)
ToIA("-∞", 5) : i
Binder : ToIA("-∞", 5)
Reducer: 5
###
> ToIA("Infinity", 5ia)
ToIA("Infinity", 5) : i
Binder : ToIA("Infinity", 5)
Reducer: 5
###
> ToIA("-Infinity", 5ia)
ToIA("-Infinity", 5) : i
Binder : ToIA("-Infinity", 5)
Reducer: 5
###
> ToIA("NaN", 5ia)
ToIA("NaN", 5) : i
Binder : ToIA("NaN", 5)
Reducer: 5
###
