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

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

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

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) 

f: function
    with parameters
      signed int 
    returning 
      float 

f: function
    with parameters
      signed int 
    returning 
      double 

i: function
    with parameters
      float 
    returning 
      nothing 

h: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of a: signed int 
                  Expression Statement:
            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 


            with environment:
              Types:
                _0_T -> signed int 
                _1_U -> float 
              Non-types:


context has_f_and_j
    with parameters
      T: type
      U: type

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

      j: 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) 


j: function
    with parameters
      signed int 
      float 
    returning 
      float 

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) 

l: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of b: signed int 
                  Expression Statement:
            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 


            with environment:
              Types:
                _0_T -> signed int 
                _1_U -> float 
              Non-types:


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));
}
