nameExpr is ?*?
decl is ?*?: function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

newExpr is Variable Expression: ?*?: function
    with parameters
      signed int 
      signed int 
    returning 
      signed int 


decl is ?*?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: ?*?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?*?: function
    with parameters
      signed int 
      signed int 
    returning 
      signed int 

(types:
    pointer to function
        with parameters
          signed int 
          signed int 
        returning 
          signed int 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?*?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    lvalue pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is t
decl is t: instance of type T (not function type) 
newExpr is Variable Expression: t: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

nameExpr is t
decl is t: instance of type T (not function type) 
newExpr is Variable Expression: t: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?*?: function
            with parameters
              signed int 
              signed int 
            returning 
              signed int 

(types:
            pointer to function
                with parameters
                  signed int 
                  signed int 
                returning 
                  signed int 

)
        Environment: 
formal type is signed int 
actual type is lvalue instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?*?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            lvalue pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

)
        Environment: 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Variable Expression: t: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: t: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Variable Expression: t: instance of type T (not function type) 

                  Variable Expression: t: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?*?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: t: instance of type T (not function type) 

      Variable Expression: t: instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: ?*?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is square
decl is square: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?*?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    t: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: ?*?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: square: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?*?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


decl is square: pointer to function
  with parameters
    instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

newExpr is Variable Expression: square: pointer to function
    with parameters
      instance of type U (not function type) 
    returning 
      instance of type U (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: square: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?*?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to forall
          _0_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _0_T (not function type) 
                    instance of type _0_T (not function type) 
                  returning 
                    instance of type _0_T (not function type) 

              ?*?: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                    instance of type _0_T (not function type) 
                  returning 
                    instance of type _0_T (not function type) 


        function
        with parameters
          t: instance of type _0_T (not function type) 
        returning 
          instance of type _0_T (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function
    with parameters
      instance of type U (not function type) 
    returning 
      instance of type U (not function type) 

(types:
    lvalue pointer to function
        with parameters
          instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is square
decl is square: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?*?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    t: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: ?*?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: square: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?*?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


decl is square: pointer to function
  with parameters
    instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

newExpr is Variable Expression: square: pointer to function
    with parameters
      instance of type U (not function type) 
    returning 
      instance of type U (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: square: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?*?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to forall
          _1_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _1_T (not function type) 
                    instance of type _1_T (not function type) 
                  returning 
                    instance of type _1_T (not function type) 

              ?*?: pointer to function
                  with parameters
                    instance of type _1_T (not function type) 
                    instance of type _1_T (not function type) 
                  returning 
                    instance of type _1_T (not function type) 


        function
        with parameters
          t: instance of type _1_T (not function type) 
        returning 
          instance of type _1_T (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function
    with parameters
      instance of type U (not function type) 
    returning 
      instance of type U (not function type) 

(types:
    lvalue pointer to function
        with parameters
          instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is u
decl is u: instance of type U (not function type) 
newExpr is Variable Expression: u: instance of type U (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
(types:
    lvalue instance of type U (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
(types:
    lvalue instance of type U (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: square: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                  ?*?: pointer to function
                      with parameters
                        instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              t: instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to forall
                  _1_T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _1_T (not function type) 
                            instance of type _1_T (not function type) 
                          returning 
                            instance of type _1_T (not function type) 

                      ?*?: pointer to function
                          with parameters
                            instance of type _1_T (not function type) 
                            instance of type _1_T (not function type) 
                          returning 
                            instance of type _1_T (not function type) 


                function
                with parameters
                  t: instance of type _1_T (not function type) 
                returning 
                  instance of type _1_T (not function type) 

)
        Environment: 
formal type is instance of type _1_T (not function type) 
actual type is lvalue instance of type U (not function type) 
need assertions:
?*?: pointer to function
          with parameters
            instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)?=?: pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?*?: pointer to function
  with parameters
    instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?*?: function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: square: pointer to function
            with parameters
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

(types:
            lvalue pointer to function
                with parameters
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 

)
        Environment: 
formal type is instance of type U (not function type) 
actual type is lvalue instance of type U (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Variable Expression: u: instance of type U (not function type) 
--- results are
        lvalue instance of type U (not function type) 

converting lvalue instance of type U (not function type) 
 to instance of type U (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type U (not function type) 
actuals are:
                  Variable Expression: u: instance of type U (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: square: pointer to function
      with parameters
        instance of type U (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: u: instance of type U (not function type) 

(types:
    instance of type U (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Application of
  Variable Expression: square: pointer to function
      with parameters
        instance of type U (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: u: instance of type U (not function type) 

(types:
    instance of type U (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: square: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                  ?*?: pointer to function
                      with parameters
                        instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              t: instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to forall
                  _0_T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _0_T (not function type) 
                            instance of type _0_T (not function type) 
                          returning 
                            instance of type _0_T (not function type) 

                      ?*?: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                            instance of type _0_T (not function type) 
                          returning 
                            instance of type _0_T (not function type) 


                function
                with parameters
                  t: instance of type _0_T (not function type) 
                returning 
                  instance of type _0_T (not function type) 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is instance of type U (not function type) 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 
(used)?*?: pointer to function
          with parameters
            instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

inferRecursive: candidate is ?=?: pointer to function
  with parameters
    pointer to instance of type U (not function type) 
    instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    pointer to instance of type U (not function type) 
    instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

success!
satisfying assertion 12 ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with declaration 23 ?=?: pointer to function
  with parameters
    pointer to instance of type U (not function type) 
    instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

inferRecursive: assertion is ?*?: pointer to function
  with parameters
    instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 

inferRecursive: candidate is ?*?: function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: square: pointer to function
            with parameters
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

(types:
            lvalue pointer to function
                with parameters
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 

)
        Environment: 
formal type is instance of type U (not function type) 
actual type is instance of type U (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Application of
          Variable Expression: square: pointer to function
              with parameters
                instance of type U (not function type) 
              returning 
                instance of type U (not function type) 

        to arguments
                      Variable Expression: u: instance of type U (not function type) 

--- results are
        instance of type U (not function type) 

converting instance of type U (not function type) 
 to instance of type U (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type U (not function type) 
actuals are:
                  Application of
            Variable Expression: square: pointer to function
                with parameters
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 

          to arguments
                          Variable Expression: u: instance of type U (not function type) 


bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: square: pointer to function
      with parameters
        instance of type U (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Application of
      Variable Expression: square: pointer to function
          with parameters
            instance of type U (not function type) 
          returning 
            instance of type U (not function type) 

    to arguments
              Variable Expression: u: instance of type U (not function type) 


(types:
    instance of type U (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: square: pointer to function
        with parameters
          instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

  to arguments
          Application of
        Variable Expression: square: pointer to function
            with parameters
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

      to arguments
                  Variable Expression: u: instance of type U (not function type) 



to:
  instance of type U (not function type) 
(types:
    instance of type U (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is quad
decl is quad: forall
    U: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type U (not function type) 
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

        square: pointer to function
            with parameters
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 


  function
  with parameters
    u: instance of type U (not function type) 
  returning 
    instance of type U (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: square: pointer to function
        with parameters
          instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

  to arguments
          Application of
        Variable Expression: square: pointer to function
            with parameters
              instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

      to arguments
                  Variable Expression: u: instance of type U (not function type) 



to:
  instance of type U (not function type) 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: quad: forall
      U: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type U (not function type) 
                instance of type U (not function type) 
              returning 
                instance of type U (not function type) 

          square: pointer to function
              with parameters
                instance of type U (not function type) 
              returning 
                instance of type U (not function type) 


    function
    with parameters
      u: instance of type U (not function type) 
    returning 
      instance of type U (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: quad: forall
      U: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type U (not function type) 
                instance of type U (not function type) 
              returning 
                instance of type U (not function type) 

          square: pointer to function
              with parameters
                instance of type U (not function type) 
              returning 
                instance of type U (not function type) 


    function
    with parameters
      u: instance of type U (not function type) 
    returning 
      instance of type U (not function type) 

(types:
    pointer to forall
          _0_U: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _0_U (not function type) 
                    instance of type _0_U (not function type) 
                  returning 
                    instance of type _0_U (not function type) 

              square: pointer to function
                  with parameters
                    instance of type _0_U (not function type) 
                  returning 
                    instance of type _0_U (not function type) 


        function
        with parameters
          u: instance of type _0_U (not function type) 
        returning 
          instance of type _0_U (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
    signed int 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: quad: forall
              U: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type U (not function type) 
                        instance of type U (not function type) 
                      returning 
                        instance of type U (not function type) 

                  square: pointer to function
                      with parameters
                        instance of type U (not function type) 
                      returning 
                        instance of type U (not function type) 


            function
            with parameters
              u: instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

(types:
            pointer to forall
                  _0_U: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _0_U (not function type) 
                            instance of type _0_U (not function type) 
                          returning 
                            instance of type _0_U (not function type) 

                      square: pointer to function
                          with parameters
                            instance of type _0_U (not function type) 
                          returning 
                            instance of type _0_U (not function type) 


                function
                with parameters
                  u: instance of type _0_U (not function type) 
                returning 
                  instance of type _0_U (not function type) 

)
        Environment: 
formal type is instance of type _0_U (not function type) 
actual type is signed int 
need assertions:
square: pointer to function
          with parameters
            instance of type _0_U (not function type) 
          returning 
            instance of type _0_U (not function type) 
(used)?=?: pointer to function
          with parameters
            pointer to instance of type _0_U (not function type) 
            instance of type _0_U (not function type) 
          returning 
            instance of type _0_U (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is square: pointer to function
  with parameters
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 

inferRecursive: candidate is square: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?*?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    t: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: ?*?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



unifying pointer to function
  with parameters
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 
 with pointer to forall
    _1_T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type _1_T (not function type) 
              instance of type _1_T (not function type) 
            returning 
              instance of type _1_T (not function type) 

        ?*?: pointer to function
            with parameters
              instance of type _1_T (not function type) 
              instance of type _1_T (not function type) 
            returning 
              instance of type _1_T (not function type) 


  function
  with parameters
    t: instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

success!
satisfying assertion 26 square: pointer to function
  with parameters
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 
 with declaration 19 square: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?*?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    t: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: ?*?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 23 ?=?: pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 
 with declaration 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

recursing with new set:
?*?: pointer to function
          with parameters
            instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)?=?: pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)inferRecursive: assertion is ?*?: pointer to function
  with parameters
    instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?*?: function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 16 ?*?: pointer to function
  with parameters
    instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with declaration 8 ?*?: function
  with parameters
    signed int 
    signed int 
  returning 
    signed int 

inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 12 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with declaration 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

actual expression:
constant expression 7 signed int --- results are
        signed int 

converting signed int 
 to instance of type _0_U (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            pointer to instance of type _0_U (not function type) 
            instance of type _0_U (not function type) 
          returning 
            instance of type _0_U (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to forall
            _1_T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type _1_T (not function type) 
                      instance of type _1_T (not function type) 
                    returning 
                      instance of type _1_T (not function type) 

                ?*?: pointer to function
                    with parameters
                      instance of type _1_T (not function type) 
                      instance of type _1_T (not function type) 
                    returning 
                      instance of type _1_T (not function type) 


          function
          with parameters
            t: instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

 to pointer to function
          with parameters
            instance of type _0_U (not function type) 
          returning 
            instance of type _0_U (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        u: instance of type _0_U (not function type) 
actuals are:
        constant expression 7 signed int 
bindings are:
        ( _0_U _1_T ) -> signed int  (no widening)
cost of conversion is:( 0, 20, 0 )
alternatives before prune:
Cost ( 0, 20, 0 ): Application of
  Variable Expression: quad: forall
        U: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type U (not function type) 
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 

            square: pointer to function
                with parameters
                  instance of type U (not function type) 
                returning 
                  instance of type U (not function type) 


      function
      with parameters
        u: instance of type U (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
  constant expression 7 signed int 
with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

  ?*?: function
    with parameters
      signed int 
      signed int 
    returning 
      signed int 

  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

  square: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?*?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    instance of type _0_U (not function type) 
)
Environment:   ( _0_U _1_T ) -> signed int  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: quad: forall
          U: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type U (not function type) 
                    instance of type U (not function type) 
                  returning 
                    instance of type U (not function type) 

              square: pointer to function
                  with parameters
                    instance of type U (not function type) 
                  returning 
                    instance of type U (not function type) 


        function
        with parameters
          u: instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

  to arguments
    constant expression 7 signed int 
  with inferred parameters:
    ?=?: function
      with parameters
        pointer to signed int 
        signed int 
      returning 
        signed int 

    ?*?: function
      with parameters
        signed int 
        signed int 
      returning 
        signed int 

    ?=?: function
      with parameters
        pointer to signed int 
        signed int 
      returning 
        signed int 

    square: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

            ?*?: pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        t: instance of type T (not function type) 
      returning 
        instance of type T (not function type) 


to:
  nothing
(types:
)
Environment:   ( _0_U _1_T ) -> signed int  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
int ___operator_assign__Fi_Pii_(int *, int );
int ___operator_multiply__Fi_ii_(int , int );
void __square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(void (*_adapterF2tT_2tT2tT_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_multiply__PF2tT_2tT2tT_)(), void *_retparm, void *__t__2tT){
    _adapterF2tT_2tT2tT_(___operator_multiply__PF2tT_2tT2tT_, _retparm, __t__2tT, __t__2tT);
    return ;
}
void __quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(void (*_adapterF2tU_2tU_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__square__PF2tU_2tU_)(), void *_retparm, void *__u__2tU){
    void *_temp0;
    (_temp0=__builtin_alloca(U));
    _adapterF2tU_2tU_(__square__PF2tU_2tU_, _retparm, (_adapterF2tU_2tU_(__square__PF2tU_2tU_, _temp0, __u__2tU) , _temp0));
    return ;
}
void __f__F__(){
    int _thunk0(int _p0){
        int _temp1;
        void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
            ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
        }
        void _adapterFi_ii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
            ((*((int *)_ret))=((int (*)(int , int ))_adaptee)((*((int *)_p0)), (*((int *)_p1))));
        }
        return (__square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(_adapterFi_ii_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_multiply__Fi_ii_), (&_temp1), (&_p0)) , _temp1);
    }
    int _temp2;
    int _temp3;
    (_temp3=7);
    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
    }
    void _adapterFi_i_(void (*_adaptee)(), void *_ret, void *_p0){
        ((*((int *)_ret))=((int (*)(int ))_adaptee)((*((int *)_p0))));
    }
    (__quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(_adapterFi_i_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())(&_thunk0)), (&_temp2), (&_temp3)) , _temp2);
}
