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