**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22] },
    { Sub: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Mul: Ten<r8>(12)<1> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121] },
    { Divide: Ten<r8>(12)<1> [NaN, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] },
    { Min: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 2, 4, 6]
           [4, 6, 8, 10]
           [8, 10, 12, 14]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [-4, -4, -4, -4]
           [-8, -8, -8, -8]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 4, 9]
           [0, 5, 12, 21]
           [0, 9, 20, 33]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 1, 1, 1]
           [0, 0.2, 0.3333333333333333, 0.42857142857142855]
           [0, 0.1111111111111111, 0.2, 0.2727272727272727]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [0, 2, 4, 6] },
    { Sub: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Mul: Ten<r8>(4)<1> [0, 1, 4, 9] },
    { Divide: Ten<r8>(4)<1> [NaN, 1, 1, 1] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>(12)<1> [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] },
    { Sub: Ten<r8>(12)<1> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] },
    { Mul: Ten<r8>(12)<1> [-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11] },
    { Divide: Ten<r8>(12)<1> [-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11] },
    { Min: Ten<r8>(12)<1> [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Sub: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Mul: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Divide: Ten<r8>(12)<1> [NaN, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Min: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>(12)<1> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] },
    { Sub: Ten<r8>(12)<1> [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] },
    { Mul: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Divide: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Min: Ten<r8>(12)<1> [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] },
    { Max: Ten<r8>(12)<1> [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>(12)<1> [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] },
    { Sub: Ten<r8>(12)<1> [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6] },
    { Mul: Ten<r8>(12)<1> [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] },
    { Divide: Ten<r8>(12)<1> [0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.2] },
    { Min: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5] },
    { Max: Ten<r8>(12)<1> [5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [5, 6, 7, 8]
           [5, 6, 7, 8]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-5, -4, -3, -2]
           [-5, -4, -3, -2]
           [-5, -4, -3, -2]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [0, 5, 10, 15]
           [0, 5, 10, 15]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 0.2, 0.4, 0.6]
           [0, 0.2, 0.4, 0.6]
           [0, 0.2, 0.4, 0.6]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Sub: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Mul: Ten<r8>(12)<1> [NaN, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Divide: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Min: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Max: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Sub: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Mul: Ten<r8>(12)<1> [NaN, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Divide: Ten<r8>(12)<1> [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Min: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Sub: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Mul: Ten<r8>(12)<1> [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Divide: Ten<r8>(12)<1> [NaN, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Min: Ten<r8>(12)<1> [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Sub: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Mul: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Divide: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Min: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Max: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 2, 4, 6]
           [4, 6, 8, 10]
           [8, 10, 12, 14]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [4, 4, 4, 4]
           [8, 8, 8, 8]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 4, 9]
           [0, 5, 12, 21]
           [0, 9, 20, 33]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 1, 1, 1]
           [∞, 5, 3, 2.3333333333333335]
           [∞, 9, 5, 3.6666666666666665]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*,*]) to ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 2, 4, 6]
           [8, 10, 12, 14]
           [16, 18, 20, 22]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 4, 9]
           [16, 25, 36, 49]
           [64, 81, 100, 121]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 2, 4, 6]
           [4, 6, 8, 10]
           [8, 10, 12, 14]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [4, 4, 4, 4]
           [8, 8, 8, 8]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 4, 9]
           [0, 5, 12, 21]
           [0, 9, 20, 33]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 1, 1, 1]
           [∞, 5, 3, 2.3333333333333335]
           [∞, 9, 5, 3.6666666666666665]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(3,0)<0,0> [] },
    { Sub: Ten<r8>(3,0)<0,0> [] },
    { Mul: Ten<r8>(3,0)<0,0> [] },
    { Divide: Ten<r8>(3,0)<0,0> [] },
    { Min: Ten<r8>(3,0)<0,0> [] },
    { Max: Ten<r8>(3,0)<0,0> [] })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>(3,4)<4,1>
          [[-1, 0, 1, 2]
           [3, 4, 5, 6]
           [7, 8, 9, 10]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[1, 2, 3, 4]
           [5, 6, 7, 8]
           [9, 10, 11, 12]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[-0, -1, -2, -3]
           [-4, -5, -6, -7]
           [-8, -9, -10, -11]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[-0, -1, -2, -3]
           [-4, -5, -6, -7]
           [-8, -9, -10, -11]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-1, -1, -1, -1]
           [-1, -1, -1, -1]
           [-1, -1, -1, -1]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>(3,4)<4,1>
          [[1, 2, 3, 4]
           [5, 6, 7, 8]
           [9, 10, 11, 12]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-1, 0, 1, 2]
           [3, 4, 5, 6]
           [7, 8, 9, 10]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[1, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [9, 10, 11, 12]
           [13, 14, 15, 16]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-5, -4, -3, -2]
           [-1, 0, 1, 2]
           [3, 4, 5, 6]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [20, 25, 30, 35]
           [40, 45, 50, 55]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 0.2, 0.4, 0.6]
           [0.8, 1, 1.2, 1.4]
           [1.6, 1.8, 2, 2.2]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*,*]) to ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [9, 10, 11, 12]
           [13, 14, 15, 16]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-5, -4, -3, -2]
           [-1, 0, 1, 2]
           [3, 4, 5, 6]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [20, 25, 30, 35]
           [40, 45, 50, 55]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 0.2, 0.4, 0.6]
           [0.8, 1, 1.2, 1.4]
           [1.6, 1.8, 2, 2.2]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[NaN, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[NaN, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(4)<1> [0, 2, 4, 6] },
    { Sub: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Mul: Ten<r8>(4)<1> [0, 1, 4, 9] },
    { Divide: Ten<r8>(4)<1> [NaN, 1, 1, 1] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 2, 4, 6]
           [4, 6, 8, 10]
           [8, 10, 12, 14]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [-4, -4, -4, -4]
           [-8, -8, -8, -8]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 4, 9]
           [0, 5, 12, 21]
           [0, 9, 20, 33]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 1, 1, 1]
           [0, 0.2, 0.3333333333333333, 0.42857142857142855]
           [0, 0.1111111111111111, 0.2, 0.2727272727272727]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [0, 2, 4, 6] },
    { Sub: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Mul: Ten<r8>(4)<1> [0, 1, 4, 9] },
    { Divide: Ten<r8>(4)<1> [NaN, 1, 1, 1] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>(4)<1> [-1, 0, 1, 2] },
    { Sub: Ten<r8>(4)<1> [1, 2, 3, 4] },
    { Mul: Ten<r8>(4)<1> [-0, -1, -2, -3] },
    { Divide: Ten<r8>(4)<1> [-0, -1, -2, -3] },
    { Min: Ten<r8>(4)<1> [-1, -1, -1, -1] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Sub: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Mul: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Divide: Ten<r8>(4)<1> [NaN, ∞, ∞, ∞] },
    { Min: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>(4)<1> [1, 2, 3, 4] },
    { Sub: Ten<r8>(4)<1> [-1, 0, 1, 2] },
    { Mul: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Divide: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Min: Ten<r8>(4)<1> [0, 1, 1, 1] },
    { Max: Ten<r8>(4)<1> [1, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>(4)<1> [5, 6, 7, 8] },
    { Sub: Ten<r8>(4)<1> [-5, -4, -3, -2] },
    { Mul: Ten<r8>(4)<1> [0, 5, 10, 15] },
    { Divide: Ten<r8>(4)<1> [0, 0.2, 0.4, 0.6] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [5, 5, 5, 5] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [5, 6, 7, 8]
           [5, 6, 7, 8]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-5, -4, -3, -2]
           [-5, -4, -3, -2]
           [-5, -4, -3, -2]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [0, 5, 10, 15]
           [0, 5, 10, 15]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[0, 0.2, 0.4, 0.6]
           [0, 0.2, 0.4, 0.6]
           [0, 0.2, 0.4, 0.6]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] },
    { Sub: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Mul: Ten<r8>(4)<1> [NaN, ∞, ∞, ∞] },
    { Divide: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Sub: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] },
    { Mul: Ten<r8>(4)<1> [NaN, -∞, -∞, -∞] },
    { Divide: Ten<r8>(4)<1> [-0, -0, -0, -0] },
    { Min: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Sub: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Mul: Ten<r8>(4)<1> [-0, -0, -0, -0] },
    { Divide: Ten<r8>(4)<1> [NaN, -∞, -∞, -∞] },
    { Min: Ten<r8>(4)<1> [-0, -0, -0, -0] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(4)<1> [0, 1, 2, 3] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Sub: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Mul: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Divide: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Min: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Max: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,0)<0,0> [] },
    { Sub: Ten<r8>(3,0)<0,0> [] },
    { Mul: Ten<r8>(3,0)<0,0> [] },
    { Divide: Ten<r8>(3,0)<0,0> [] },
    { Min: Ten<r8>(3,0)<0,0> [] },
    { Max: Ten<r8>(3,0)<0,0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[*]) to ({'  T':r8[*]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*], U:r8[*,*]) to ({'  T':r8[*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,0)<0,0> [] },
    { Sub: Ten<r8>(3,0)<0,0> [] },
    { Mul: Ten<r8>(3,0)<0,0> [] },
    { Divide: Ten<r8>(3,0)<0,0> [] },
    { Min: Ten<r8>(3,0)<0,0> [] },
    { Max: Ten<r8>(3,0)<0,0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[*], U:r8[]) to ({'  T':r8[*]}, {'  U':r8[]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(0)<0> [] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] },
    { Sub: Ten<r8>(12)<1> [-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12] },
    { Mul: Ten<r8>(12)<1> [-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11] },
    { Divide: Ten<r8>(12)<1> [-∞, -1, -0.5, -0.3333333333333333, -0.25, -0.2, -0.16666666666666666, -0.14285714285714285, -0.125, -0.1111111111111111, -0.1, -0.09090909090909091] },
    { Min: Ten<r8>(12)<1> [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[-1, 0, 1, 2]
           [3, 4, 5, 6]
           [7, 8, 9, 10]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-1, -2, -3, -4]
           [-5, -6, -7, -8]
           [-9, -10, -11, -12]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[-0, -1, -2, -3]
           [-4, -5, -6, -7]
           [-8, -9, -10, -11]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[-∞, -1, -0.5, -0.3333333333333333]
           [-0.25, -0.2, -0.16666666666666666, -0.14285714285714285]
           [-0.125, -0.1111111111111111, -0.1, -0.09090909090909091]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-1, -1, -1, -1]
           [-1, -1, -1, -1]
           [-1, -1, -1, -1]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [-1, 0, 1, 2] },
    { Sub: Ten<r8>(4)<1> [-1, -2, -3, -4] },
    { Mul: Ten<r8>(4)<1> [-0, -1, -2, -3] },
    { Divide: Ten<r8>(4)<1> [-∞, -1, -0.5, -0.3333333333333333] },
    { Min: Ten<r8>(4)<1> [-1, -1, -1, -1] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [-2] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [1] },
    { Divide: Ten<r8>()<> [1] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [-1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [-1] },
    { Sub: Ten<r8>()<> [-1] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [0] },
    { Sub: Ten<r8>()<> [-2] },
    { Mul: Ten<r8>()<> [-1] },
    { Divide: Ten<r8>()<> [-1] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [4] },
    { Sub: Ten<r8>()<> [-6] },
    { Mul: Ten<r8>()<> [-5] },
    { Divide: Ten<r8>()<> [-0.2] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[4, 4, 4, 4]
           [4, 4, 4, 4]
           [4, 4, 4, 4]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-6, -6, -6, -6]
           [-6, -6, -6, -6]
           [-6, -6, -6, -6]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-5, -5, -5, -5]
           [-5, -5, -5, -5]
           [-5, -5, -5, -5]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-0.2, -0.2, -0.2, -0.2]
           [-0.2, -0.2, -0.2, -0.2]
           [-0.2, -0.2, -0.2, -0.2]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-1, -1, -1, -1]
           [-1, -1, -1, -1]
           [-1, -1, -1, -1]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [-1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [-1] },
    { Sub: Ten<r8>()<> [-1] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [-0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-1] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Sub: Ten<r8>(12)<1> [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11] },
    { Mul: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Divide: Ten<r8>(12)<1> [NaN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Min: Ten<r8>(12)<1> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[0, -1, -2, -3]
           [-4, -5, -6, -7]
           [-8, -9, -10, -11]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Sub: Ten<r8>(4)<1> [0, -1, -2, -3] },
    { Mul: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Divide: Ten<r8>(4)<1> [NaN, 0, 0, 0] },
    { Min: Ten<r8>(4)<1> [0, 0, 0, 0] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [-1] },
    { Sub: Ten<r8>()<> [1] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [0] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [1] },
    { Sub: Ten<r8>()<> [-1] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [5] },
    { Sub: Ten<r8>()<> [-5] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-5, -5, -5, -5]
           [-5, -5, -5, -5]
           [-5, -5, -5, -5]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [0] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [0] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] },
    { Sub: Ten<r8>(12)<1> [1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10] },
    { Mul: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Divide: Ten<r8>(12)<1> [∞, 1, 0.5, 0.3333333333333333, 0.25, 0.2, 0.16666666666666666, 0.14285714285714285, 0.125, 0.1111111111111111, 0.1, 0.09090909090909091] },
    { Min: Ten<r8>(12)<1> [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] },
    { Max: Ten<r8>(12)<1> [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[1, 2, 3, 4]
           [5, 6, 7, 8]
           [9, 10, 11, 12]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[1, 0, -1, -2]
           [-3, -4, -5, -6]
           [-7, -8, -9, -10]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, 1, 0.5, 0.3333333333333333]
           [0.25, 0.2, 0.16666666666666666, 0.14285714285714285]
           [0.125, 0.1111111111111111, 0.1, 0.09090909090909091]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[1, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [1, 2, 3, 4] },
    { Sub: Ten<r8>(4)<1> [1, 0, -1, -2] },
    { Mul: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Divide: Ten<r8>(4)<1> [∞, 1, 0.5, 0.3333333333333333] },
    { Min: Ten<r8>(4)<1> [0, 1, 1, 1] },
    { Max: Ten<r8>(4)<1> [1, 1, 2, 3] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [0] },
    { Sub: Ten<r8>()<> [2] },
    { Mul: Ten<r8>()<> [-1] },
    { Divide: Ten<r8>()<> [-1] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [1] },
    { Sub: Ten<r8>()<> [1] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [2] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [1] },
    { Divide: Ten<r8>()<> [1] },
    { Min: Ten<r8>()<> [1] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [6] },
    { Sub: Ten<r8>()<> [-4] },
    { Mul: Ten<r8>()<> [5] },
    { Divide: Ten<r8>()<> [0.2] },
    { Min: Ten<r8>()<> [1] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[6, 6, 6, 6]
           [6, 6, 6, 6]
           [6, 6, 6, 6]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-4, -4, -4, -4]
           [-4, -4, -4, -4]
           [-4, -4, -4, -4]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[0.2, 0.2, 0.2, 0.2]
           [0.2, 0.2, 0.2, 0.2]
           [0.2, 0.2, 0.2, 0.2]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[1, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [1] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [1] },
    { Sub: Ten<r8>()<> [1] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [1] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] },
    { Sub: Ten<r8>(12)<1> [5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6] },
    { Mul: Ten<r8>(12)<1> [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] },
    { Divide: Ten<r8>(12)<1> [∞, 5, 2.5, 1.6666666666666667, 1.25, 1, 0.8333333333333334, 0.7142857142857143, 0.625, 0.5555555555555556, 0.5, 0.45454545454545453] },
    { Min: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5] },
    { Max: Ten<r8>(12)<1> [5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [9, 10, 11, 12]
           [13, 14, 15, 16]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[5, 4, 3, 2]
           [1, 0, -1, -2]
           [-3, -4, -5, -6]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [20, 25, 30, 35]
           [40, 45, 50, 55]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, 5, 2.5, 1.6666666666666667]
           [1.25, 1, 0.8333333333333334, 0.7142857142857143]
           [0.625, 0.5555555555555556, 0.5, 0.45454545454545453]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [5, 6, 7, 8] },
    { Sub: Ten<r8>(4)<1> [5, 4, 3, 2] },
    { Mul: Ten<r8>(4)<1> [0, 5, 10, 15] },
    { Divide: Ten<r8>(4)<1> [∞, 5, 2.5, 1.6666666666666667] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [5, 5, 5, 5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [4] },
    { Sub: Ten<r8>()<> [6] },
    { Mul: Ten<r8>()<> [-5] },
    { Divide: Ten<r8>()<> [-5] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [5] },
    { Sub: Ten<r8>()<> [5] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [6] },
    { Sub: Ten<r8>()<> [4] },
    { Mul: Ten<r8>()<> [5] },
    { Divide: Ten<r8>()<> [5] },
    { Min: Ten<r8>()<> [1] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [10] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [25] },
    { Divide: Ten<r8>()<> [1] },
    { Min: Ten<r8>()<> [5] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[10, 10, 10, 10]
           [10, 10, 10, 10]
           [10, 10, 10, 10]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[25, 25, 25, 25]
           [25, 25, 25, 25]
           [25, 25, 25, 25]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[1, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [5] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [5] },
    { Sub: Ten<r8>()<> [5] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [5] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [5, 6, 7, 8]
           [5, 6, 7, 8]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[5, 4, 3, 2]
           [5, 4, 3, 2]
           [5, 4, 3, 2]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [0, 5, 10, 15]
           [0, 5, 10, 15]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, 5, 2.5, 1.6666666666666667]
           [∞, 5, 2.5, 1.6666666666666667]
           [∞, 5, 2.5, 1.6666666666666667]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*,*]) to ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [9, 10, 11, 12]
           [13, 14, 15, 16]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[5, 4, 3, 2]
           [1, 0, -1, -2]
           [-3, -4, -5, -6]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [20, 25, 30, 35]
           [40, 45, 50, 55]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, 5, 2.5, 1.6666666666666667]
           [1.25, 1, 0.8333333333333334, 0.7142857142857143]
           [0.625, 0.5555555555555556, 0.5, 0.45454545454545453]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(3,4)<4,1>
          [[5, 6, 7, 8]
           [5, 6, 7, 8]
           [5, 6, 7, 8]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[5, 4, 3, 2]
           [5, 4, 3, 2]
           [5, 4, 3, 2]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[0, 5, 10, 15]
           [0, 5, 10, 15]
           [0, 5, 10, 15]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, 5, 2.5, 1.6666666666666667]
           [∞, 5, 2.5, 1.6666666666666667]
           [∞, 5, 2.5, 1.6666666666666667]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [0, 1, 2, 3]
           [0, 1, 2, 3]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*]) to ({'  T':r8[*,*]}, {'  U':r8[*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(3,0)<0,0> [] },
    { Sub: Ten<r8>(3,0)<0,0> [] },
    { Mul: Ten<r8>(3,0)<0,0> [] },
    { Divide: Ten<r8>(3,0)<0,0> [] },
    { Min: Ten<r8>(3,0)<0,0> [] },
    { Max: Ten<r8>(3,0)<0,0> [] })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>(3,4)<0,0>
          [[4, 4, 4, 4]
           [4, 4, 4, 4]
           [4, 4, 4, 4]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[6, 6, 6, 6]
           [6, 6, 6, 6]
           [6, 6, 6, 6]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-5, -5, -5, -5]
           [-5, -5, -5, -5]
           [-5, -5, -5, -5]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-5, -5, -5, -5]
           [-5, -5, -5, -5]
           [-5, -5, -5, -5]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-1, -1, -1, -1]
           [-1, -1, -1, -1]
           [-1, -1, -1, -1]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>(3,4)<0,0>
          [[6, 6, 6, 6]
           [6, 6, 6, 6]
           [6, 6, 6, 6]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[4, 4, 4, 4]
           [4, 4, 4, 4]
           [4, 4, 4, 4]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[1, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>(3,4)<0,0>
          [[10, 10, 10, 10]
           [10, 10, 10, 10]
           [10, 10, 10, 10]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[25, 25, 25, 25]
           [25, 25, 25, 25]
           [25, 25, 25, 25]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[1, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[*,*]) to ({'  T':r8[*,*]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[10, 10, 10, 10]
           [10, 10, 10, 10]
           [10, 10, 10, 10]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[25, 25, 25, 25]
           [25, 25, 25, 25]
           [25, 25, 25, 25]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[1, 1, 1, 1]
           [1, 1, 1, 1]
           [1, 1, 1, 1]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[0, 0, 0, 0]
           [0, 0, 0, 0]
           [0, 0, 0, 0]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[*,*]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[*,*], U:r8[]) to ({'  T':r8[*,*]}, {'  U':r8[]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Sub: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Mul: Ten<r8>(12)<1> [NaN, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Divide: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] },
    { Min: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Max: Ten<r8>(12)<1> [∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[NaN, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] },
    { Sub: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] },
    { Mul: Ten<r8>(4)<1> [NaN, ∞, ∞, ∞] },
    { Divide: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] },
    { Min: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Max: Ten<r8>(4)<1> [∞, ∞, ∞, ∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [0] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [1] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [5] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]
           [∞, ∞, ∞, ∞]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [∞] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [∞] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Sub: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Mul: Ten<r8>(12)<1> [NaN, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Divide: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Min: Ten<r8>(12)<1> [-∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞, -∞] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[NaN, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Sub: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Mul: Ten<r8>(4)<1> [NaN, -∞, -∞, -∞] },
    { Divide: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Min: Ten<r8>(4)<1> [-∞, -∞, -∞, -∞] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [-1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [-∞] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]
           [-∞, -∞, -∞, -∞]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [-∞] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [∞] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [-∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [∞] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [-0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-∞] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Sub: Ten<r8>(12)<1> [-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11] },
    { Mul: Ten<r8>(12)<1> [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Divide: Ten<r8>(12)<1> [NaN, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Min: Ten<r8>(12)<1> [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0] },
    { Max: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Sub: Ten<r8>(3,4)<4,1>
          [[-0, -1, -2, -3]
           [-4, -5, -6, -7]
           [-8, -9, -10, -11]]
    },
    { Mul: Ten<r8>(3,4)<4,1>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Divide: Ten<r8>(3,4)<4,1>
          [[NaN, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Min: Ten<r8>(3,4)<4,1>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Max: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Sub: Ten<r8>(4)<1> [-0, -1, -2, -3] },
    { Mul: Ten<r8>(4)<1> [-0, -0, -0, -0] },
    { Divide: Ten<r8>(4)<1> [NaN, -0, -0, -0] },
    { Min: Ten<r8>(4)<1> [-0, -0, -0, -0] },
    { Max: Ten<r8>(4)<1> [0, 1, 2, 3] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [-1] },
    { Sub: Ten<r8>()<> [1] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [-1] },
    { Max: Ten<r8>()<> [-0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [0] },
    { Sub: Ten<r8>()<> [-0] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [1] },
    { Sub: Ten<r8>()<> [-1] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [1] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [5] },
    { Sub: Ten<r8>()<> [-5] },
    { Mul: Ten<r8>()<> [-0] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [5] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[-5, -5, -5, -5]
           [-5, -5, -5, -5]
           [-5, -5, -5, -5]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[-0, -0, -0, -0]
           [-0, -0, -0, -0]
           [-0, -0, -0, -0]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [∞] },
    { Sub: Ten<r8>()<> [-∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [-0] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [∞] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [-∞] },
    { Sub: Ten<r8>()<> [∞] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [0] },
    { Min: Ten<r8>()<> [-∞] },
    { Max: Ten<r8>()<> [-0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [-0] },
    { Sub: Ten<r8>()<> [0] },
    { Mul: Ten<r8>()<> [0] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [-0] },
    { Max: Ten<r8>()<> [-0] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [-0] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>(12)<1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] },
    { Add: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Sub: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Mul: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Divide: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Min: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] },
    { Max: Ten<r8>(12)<0> [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>(3,4)<4,1>
          [[0, 1, 2, 3]
           [4, 5, 6, 7]
           [8, 9, 10, 11]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>(4)<1> [0, 1, 2, 3] },
    { Add: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Sub: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Mul: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Divide: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Min: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] },
    { Max: Ten<r8>(4)<0> [NaN, NaN, NaN, NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*])}):({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]}))
Func sig: (T:r8[], U:r8[*]) to ({'  T':r8[]}, {'  U':r8[*]}, {Add:r8[*]}, {Sub:r8[*]}, {Mul:r8[*]}, {Divide:r8[*]}, {Min:r8[*]}, {Max:r8[*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>(0)<0> [] },
    { Add: Ten<r8>(0)<0> [] },
    { Sub: Ten<r8>(0)<0> [] },
    { Mul: Ten<r8>(0)<0> [] },
    { Divide: Ten<r8>(0)<0> [] },
    { Min: Ten<r8>(0)<0> [] },
    { Max: Ten<r8>(0)<0> [] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [-1] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [0] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [1] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [5] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[*,*]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[*,*])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[*,*])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[*,*])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[*,*])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[*,*])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[*,*])}):({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]}))
Func sig: (T:r8[], U:r8[*,*]) to ({'  T':r8[]}, {'  U':r8[*,*]}, {Add:r8[*,*]}, {Sub:r8[*,*]}, {Mul:r8[*,*]}, {Divide:r8[*,*]}, {Min:r8[*,*]}, {Max:r8[*,*]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>(3,4)<0,0>
          [[5, 5, 5, 5]
           [5, 5, 5, 5]
           [5, 5, 5, 5]]
    },
    { Add: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Sub: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Mul: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Divide: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Min: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    },
    { Max: Ten<r8>(3,4)<0,0>
          [[NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]
           [NaN, NaN, NaN, NaN]]
    })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [∞] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [-∞] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [-0] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###

**** New definitions: T, type: r8[]
**** New definitions: U, type: r8[]

> ({'  T': T }, {'  U': U }, {'Add': T->Add(U) }, {'Sub': T->Sub(U) }, {'Mul': T->Mul(U) }, {'Divide': T->Divide(U) }, {'Min': T->Min(U) }, {'Max': T->Max(U) })
({ '  T' : T }, { '  U' : U }, { 'Add' : T->Add(U) }, { 'Sub' : T->Sub(U) }, { 'Mul' : T->Mul(U) }, { 'Divide' : T->Divide(U) }, { 'Min' : T->Min(U) }, { 'Max' : T->Max(U) }) : ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
BndKind:Tuple, Type:({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}), Bnd:(({  T:Global(T)}, {  U:Global(U)}, {Add:Call(∂.Tensor.Add(Global(T), Global(U)):r8[])}, {Sub:Call(∂.Tensor.Sub(Global(T), Global(U)):r8[])}, {Mul:Call(∂.Tensor.Mul(Global(T), Global(U)):r8[])}, {Divide:Call(∂.Tensor.Divide(Global(T), Global(U)):r8[])}, {Min:Call(∂.Tensor.Min(Global(T), Global(U)):r8[])}, {Max:Call(∂.Tensor.Max(Global(T), Global(U)):r8[])}):({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]}))
Func sig: (T:r8[], U:r8[]) to ({'  T':r8[]}, {'  U':r8[]}, {Add:r8[]}, {Sub:r8[]}, {Mul:r8[]}, {Divide:r8[]}, {Min:r8[]}, {Max:r8[]})
Type: ({Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>},{Ten<r8>}), Value: (
    {   T: Ten<r8>()<> [NaN] },
    {   U: Ten<r8>()<> [NaN] },
    { Add: Ten<r8>()<> [NaN] },
    { Sub: Ten<r8>()<> [NaN] },
    { Mul: Ten<r8>()<> [NaN] },
    { Divide: Ten<r8>()<> [NaN] },
    { Min: Ten<r8>()<> [NaN] },
    { Max: Ten<r8>()<> [NaN] })
###
