nameExpr is i
decl is i: function
  with parameters
    float 
  returning 
    nothing 

newExpr is Variable Expression: i: function
    with parameters
      float 
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: i: function
    with parameters
      float 
    returning 
      nothing 

(types:
    pointer to function
        with parameters
          float 
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is g
decl is g: 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) 


    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) 

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


  function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type U (not function type) 

newExpr is Variable Expression: g: 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) 


      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) 

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


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type U (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: g: 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) 


      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) 

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


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type U (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) 


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

              f: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                  returning 
                    instance of type _1_U (not function type) 


        function
        with parameters
          instance of type _0_T (not function type) 
        returning 
          instance of type _1_U (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is a
decl is a: signed int 
newExpr is Variable Expression: a: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
(types:
    lvalue signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
(types:
    lvalue signed int 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: g: 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) 


              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) 

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


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type U (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) 


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

                      f: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                          returning 
                            instance of type _1_U (not function type) 


                function
                with parameters
                  instance of type _0_T (not function type) 
                returning 
                  instance of type _1_U (not function type) 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is lvalue signed int 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _1_U (not function type) 
            instance of type _1_U (not function type) 
          returning 
            instance of type _1_U (not function type) 
(used)f: pointer to function
          with parameters
            instance of type _0_T (not function type) 
          returning 
            instance of type _1_U (not function type) 
(used)?=?: 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)============= 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 _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 

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

unifying pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to double 
    double 
  returning 
    double 

success!
satisfying assertion 20 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 12 ?=?: function
  with parameters
    pointer to double 
    double 
  returning 
    double 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    double 

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

success!
satisfying assertion 23 f: pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 32 f: function
  with parameters
    signed int 
  returning 
    double 

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 double 
    double 
  returning 
    double 

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 double 
    double 
  returning 
    double 

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

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 float 
    float 
  returning 
    float 

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 

success!
satisfying assertion 16 ?=?: 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 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    float 

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

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

unifying pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to float 
    float 
  returning 
    float 

success!
satisfying assertion 20 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 8 ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    double 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    float 

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

success!
satisfying assertion 23 f: pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 29 f: function
  with parameters
    signed int 
  returning 
    float 

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 double 
    double 
  returning 
    double 

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 double 
    double 
  returning 
    double 

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

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 float 
    float 
  returning 
    float 

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 

success!
satisfying assertion 16 ?=?: 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 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    double 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    float 

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

actual expression:
        Variable Expression: a: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _0_T (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 _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to double 
            double 
          returning 
            double 

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

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            signed int 
          returning 
            double 

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

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _0_T (not function type) 
actuals are:
                  Variable Expression: a: signed int 

bindings are:
        ( _0_T ) -> signed int 
        ( _1_U ) -> double  (no widening)
cost of conversion is:( 0, 9, 0 )
actual expression:
        Variable Expression: a: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _0_T (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 _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to float 
            float 
          returning 
            float 

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

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            signed int 
          returning 
            float 

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

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _0_T (not function type) 
actuals are:
                  Variable Expression: a: signed int 

bindings are:
        ( _0_T ) -> signed int 
        ( _1_U ) -> float  (no widening)
cost of conversion is:( 0, 9, 0 )
alternatives before prune:
Cost ( 0, 9, 0 ): Application of
  Variable Expression: g: 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) 


        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) 

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: a: signed int 

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

  ?=?: function
    with parameters
      pointer to double 
      double 
    returning 
      double 

  f: function
    with parameters
      signed int 
    returning 
      double 

(types:
    instance of type _1_U (not function type) 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> double  (no widening)


Cost ( 0, 9, 0 ): Application of
  Variable Expression: g: 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) 


        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) 

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: a: signed int 

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

  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

  f: function
    with parameters
      signed int 
    returning 
      float 

(types:
    instance of type _1_U (not function type) 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> float  (no widening)


there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 9, 0 ): Application of
  Variable Expression: g: 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) 


        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) 

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: a: signed int 

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

  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

  f: function
    with parameters
      signed int 
    returning 
      float 

(types:
    float 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> float  (no widening)


Cost ( 0, 9, 0 ): Application of
  Variable Expression: g: 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) 


        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) 

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: a: signed int 

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

  ?=?: function
    with parameters
      pointer to double 
      double 
    returning 
      double 

  f: function
    with parameters
      signed int 
    returning 
      double 

(types:
    double 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> double  (no widening)


working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: i: function
            with parameters
              float 
            returning 
              nothing 

(types:
            pointer to function
                with parameters
                  float 
                returning 
                  nothing 

)
        Environment: 
formal type is float 
actual type is float 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
formal type is float 
actual type is double 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Application of
          Variable Expression: g: 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) 


                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) 

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


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type U (not function type) 

        to arguments
                      Variable Expression: a: signed int 

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

          ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

          f: function
            with parameters
              signed int 
            returning 
              float 

--- results are
        float 

converting float 
 to float 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        float 
actuals are:
                  Application of
            Variable Expression: g: 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) 


                  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) 

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


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type U (not function type) 

          to arguments
                          Variable Expression: a: signed int 

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

            ?=?: function
              with parameters
                pointer to float 
                float 
              returning 
                float 

            f: function
              with parameters
                signed int 
              returning 
                float 


bindings are:
        ( _0_T ) -> signed int  (no widening)
        ( _1_U ) -> float  (no widening)
cost of conversion is:( 0, 0, 0 )
actual expression:
        Application of
          Variable Expression: g: 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) 


                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) 

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


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type U (not function type) 

        to arguments
                      Variable Expression: a: signed int 

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

          ?=?: function
            with parameters
              pointer to double 
              double 
            returning 
              double 

          f: function
            with parameters
              signed int 
            returning 
              double 

--- results are
        double 

converting double 
 to float 
cost is( 1, 0, 0 )
Case +++++++++++++
formals are:
        float 
actuals are:
                  Cast of:
            Application of
              Variable Expression: g: 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) 


                    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) 

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


                  function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type U (not function type) 

            to arguments
                              Variable Expression: a: signed int 

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

              ?=?: function
                with parameters
                  pointer to double 
                  double 
                returning 
                  double 

              f: function
                with parameters
                  signed int 
                returning 
                  double 


          to:
            float 

bindings are:
        ( _0_T ) -> signed int  (no widening)
        ( _1_U ) -> double  (no widening)
cost of conversion is:( 1, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: i: function
      with parameters
        float 
      returning 
        nothing 

to arguments
      Application of
      Variable Expression: g: 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) 


            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) 

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


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type U (not function type) 

    to arguments
              Variable Expression: a: signed int 

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

      ?=?: function
        with parameters
          pointer to float 
          float 
        returning 
          float 

      f: function
        with parameters
          signed int 
        returning 
          float 


(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)
  ( _1_U ) -> float  (no widening)


Cost ( 1, 0, 0 ): Application of
  Variable Expression: i: function
      with parameters
        float 
      returning 
        nothing 

to arguments
      Cast of:
      Application of
        Variable Expression: g: 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) 


              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) 

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


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type U (not function type) 

      to arguments
                  Variable Expression: a: signed int 

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

        ?=?: function
          with parameters
            pointer to double 
            double 
          returning 
            double 

        f: function
          with parameters
            signed int 
          returning 
            double 


    to:
      float 

(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)
  ( _1_U ) -> double  (no widening)


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: i: function
        with parameters
          float 
        returning 
          nothing 

  to arguments
          Application of
        Variable Expression: g: 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) 


              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) 

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


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type U (not function type) 

      to arguments
                  Variable Expression: a: signed int 

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

        ?=?: function
          with parameters
            pointer to float 
            float 
          returning 
            float 

        f: function
          with parameters
            signed int 
          returning 
            float 



to:
  nothing
(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)
  ( _1_U ) -> float  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is i
decl is i: function
  with parameters
    float 
  returning 
    nothing 

newExpr is Variable Expression: i: function
    with parameters
      float 
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: i: function
    with parameters
      float 
    returning 
      nothing 

(types:
    pointer to function
        with parameters
          float 
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is k
decl is k: 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) 


    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) 

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

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


  function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type U (not function type) 

newExpr is Variable Expression: k: 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) 


      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) 

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

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


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type U (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: k: 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) 


      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) 

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

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


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type U (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) 


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

              f: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                  returning 
                    instance of type _1_U (not function type) 

              j: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                    instance of type _1_U (not function type) 
                  returning 
                    instance of type _1_U (not function type) 


        function
        with parameters
          instance of type _0_T (not function type) 
        returning 
          instance of type _1_U (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is b
decl is b: signed int 
newExpr is Variable Expression: b: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
(types:
    lvalue signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
(types:
    lvalue signed int 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: k: 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) 


              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) 

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

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


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type U (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) 


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

                      f: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                          returning 
                            instance of type _1_U (not function type) 

                      j: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                            instance of type _1_U (not function type) 
                          returning 
                            instance of type _1_U (not function type) 


                function
                with parameters
                  instance of type _0_T (not function type) 
                returning 
                  instance of type _1_U (not function type) 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is lvalue signed int 
need assertions:
j: pointer to function
          with parameters
            instance of type _0_T (not function type) 
            instance of type _1_U (not function type) 
          returning 
            instance of type _1_U (not function type) 
(used)f: pointer to function
          with parameters
            instance of type _0_T (not function type) 
          returning 
            instance of type _1_U (not function type) 
(used)?=?: pointer to function
          with parameters
            pointer to instance of type _1_U (not function type) 
            instance of type _1_U (not function type) 
          returning 
            instance of type _1_U (not function type) 
(used)?=?: 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)============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is j: pointer to function
  with parameters
    instance of type _0_T (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 

inferRecursive: candidate is j: function
  with parameters
    signed int 
    float 
  returning 
    float 

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

success!
satisfying assertion 62 j: pointer to function
  with parameters
    instance of type _0_T (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 47 j: function
  with parameters
    signed int 
    float 
  returning 
    float 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    double 

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

inferRecursive: candidate is f: function
  with parameters
    signed int 
  returning 
    float 

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

success!
satisfying assertion 58 f: pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 29 f: function
  with parameters
    signed int 
  returning 
    float 

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

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

unifying pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to double 
    double 
  returning 
    double 

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

unifying pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to float 
    float 
  returning 
    float 

success!
satisfying assertion 55 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with declaration 8 ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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 double 
    double 
  returning 
    double 

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 double 
    double 
  returning 
    double 

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

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 float 
    float 
  returning 
    float 

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 

success!
satisfying assertion 51 ?=?: 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 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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_U (not function type) 
    instance of type _1_U (not function type) 
  returning 
    instance of type _1_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

actual expression:
        Variable Expression: b: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _0_T (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 _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to float 
            float 
          returning 
            float 

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

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            signed int 
          returning 
            float 

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

cost of conversion is ( 0, 0, 0 )

converting pointer to function
          with parameters
            signed int 
            float 
          returning 
            float 

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

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _0_T (not function type) 
actuals are:
                  Variable Expression: b: signed int 

bindings are:
        ( _0_T ) -> signed int 
        ( _1_U ) -> float  (no widening)
cost of conversion is:( 0, 12, 0 )
alternatives before prune:
Cost ( 0, 12, 0 ): Application of
  Variable Expression: k: 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) 


        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) 

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

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: b: signed int 

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

  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

  f: function
    with parameters
      signed int 
    returning 
      float 

  j: function
    with parameters
      signed int 
      float 
    returning 
      float 

(types:
    instance of type _1_U (not function type) 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> float  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 12, 0 ): Application of
  Variable Expression: k: 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) 


        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) 

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

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


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Variable Expression: b: signed int 

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

  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

  f: function
    with parameters
      signed int 
    returning 
      float 

  j: function
    with parameters
      signed int 
      float 
    returning 
      float 

(types:
    float 
)
Environment:   ( _0_T ) -> signed int 
  ( _1_U ) -> float  (no widening)


working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: i: function
            with parameters
              float 
            returning 
              nothing 

(types:
            pointer to function
                with parameters
                  float 
                returning 
                  nothing 

)
        Environment: 
formal type is float 
actual type is float 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Application of
          Variable Expression: k: 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) 


                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) 

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

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


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type U (not function type) 

        to arguments
                      Variable Expression: b: signed int 

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

          ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

          f: function
            with parameters
              signed int 
            returning 
              float 

          j: function
            with parameters
              signed int 
              float 
            returning 
              float 

--- results are
        float 

converting float 
 to float 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        float 
actuals are:
                  Application of
            Variable Expression: k: 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) 


                  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) 

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

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


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type U (not function type) 

          to arguments
                          Variable Expression: b: signed int 

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

            ?=?: function
              with parameters
                pointer to float 
                float 
              returning 
                float 

            f: function
              with parameters
                signed int 
              returning 
                float 

            j: function
              with parameters
                signed int 
                float 
              returning 
                float 


bindings are:
        ( _0_T ) -> signed int  (no widening)
        ( _1_U ) -> float  (no widening)
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: i: function
      with parameters
        float 
      returning 
        nothing 

to arguments
      Application of
      Variable Expression: k: 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) 


            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) 

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

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


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type U (not function type) 

    to arguments
              Variable Expression: b: signed int 

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

      ?=?: function
        with parameters
          pointer to float 
          float 
        returning 
          float 

      f: function
        with parameters
          signed int 
        returning 
          float 

      j: function
        with parameters
          signed int 
          float 
        returning 
          float 


(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)
  ( _1_U ) -> float  (no widening)


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: i: function
        with parameters
          float 
        returning 
          nothing 

  to arguments
          Application of
        Variable Expression: k: 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) 


              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) 

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

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


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type U (not function type) 

      to arguments
                  Variable Expression: b: signed int 

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

        ?=?: function
          with parameters
            pointer to float 
            float 
          returning 
            float 

        f: function
          with parameters
            signed int 
          returning 
            float 

        j: function
          with parameters
            signed int 
            float 
          returning 
            float 



to:
  nothing
(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)
  ( _1_U ) -> float  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
int ___operator_assign__Fi_Pii_(int *, int );
float ___operator_assign__Ff_Pff_(float *, float );
double ___operator_assign__Fd_Pdd_(double *, double );
void __g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void *, void *);
float __f__Ff_i_(int );
double __f__Fd_i_(int );
void __i__F_f_(float );
void __h__F__(){
    int __a__i;
    float _temp0;
    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
    }
    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
    }
    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
    }
    __i__F_f_((__g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(_adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), (&_temp0), (&__a__i)) , _temp0));
}
;
float __j__Ff_if_(int , float );
void __k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(void (*_adapterF2tU_2tT2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void (*__j__PF2tU_2tT2tU_)(), void *, void *);
void __l__F__(){
    int __b__i;
    float _temp1;
    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
    }
    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
    }
    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
    }
    void _adapterFf_if_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((float *)_ret))=((float (*)(int , float ))_adaptee)((*((int *)_p0)), (*((float *)_p1))));
    }
    __i__F_f_((__k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(_adapterFf_if_, _adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), ((void (*)())__j__Ff_if_), (&_temp1), (&__b__i)) , _temp1));
}
