nameExpr is ?*? decl is ?*?: function with parameters signed int signed int returning signed int newExpr is Variable Expression: ?*?: function with parameters signed int signed int returning signed int decl is ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) newExpr is Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?*?: function with parameters signed int signed int returning signed int (types: pointer to function with parameters signed int signed int returning signed int ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) (types: lvalue pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination nameExpr is t decl is t: instance of type T (not function type) newExpr is Variable Expression: t: instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) (types: lvalue instance of type T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) (types: lvalue instance of type T (not function type) ) Environment: nameExpr is t decl is t: instance of type T (not function type) newExpr is Variable Expression: t: instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) (types: lvalue instance of type T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) (types: lvalue instance of type T (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?*?: function with parameters signed int signed int returning signed int (types: pointer to function with parameters signed int signed int returning signed int ) Environment: formal type is signed int actual type is lvalue instance of type T (not function type) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) (types: lvalue pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ) Environment: formal type is instance of type T (not function type) actual type is lvalue instance of type T (not function type) formal type is instance of type T (not function type) actual type is lvalue instance of type T (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Variable Expression: t: instance of type T (not function type) --- results are lvalue instance of type T (not function type) converting lvalue instance of type T (not function type) to instance of type T (not function type) cost is( 0, 0, 0 ) actual expression: Variable Expression: t: instance of type T (not function type) --- results are lvalue instance of type T (not function type) converting lvalue instance of type T (not function type) to instance of type T (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type T (not function type) instance of type T (not function type) actuals are: Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) (types: instance of type T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) to: instance of type T (not function type) (types: instance of type T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is square decl is square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Cast of: Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) to: instance of type T (not function type) with environment: Types: Non-types: newExpr is Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) decl is square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) newExpr is Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) ?*?: pointer to function with parameters instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters t: instance of type _0_T (not function type) returning instance of type _0_T (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) (types: lvalue pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination nameExpr is square decl is square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Cast of: Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) to: instance of type T (not function type) with environment: Types: Non-types: newExpr is Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) decl is square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) newExpr is Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters t: instance of type _1_T (not function type) returning instance of type _1_T (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) (types: lvalue pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination nameExpr is u decl is u: instance of type U (not function type) newExpr is Variable Expression: u: instance of type U (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) (types: lvalue instance of type U (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) (types: lvalue instance of type U (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters t: instance of type _1_T (not function type) returning instance of type _1_T (not function type) ) Environment: formal type is instance of type _1_T (not function type) actual type is lvalue instance of type U (not function type) need assertions: ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?*?: function with parameters signed int signed int returning signed int unifying pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters signed int signed int returning signed int working on alternative: Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) (types: lvalue pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) ) Environment: formal type is instance of type U (not function type) actual type is lvalue instance of type U (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Variable Expression: u: instance of type U (not function type) --- results are lvalue instance of type U (not function type) converting lvalue instance of type U (not function type) to instance of type U (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type U (not function type) actuals are: Variable Expression: u: instance of type U (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) (types: instance of type U (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) (types: instance of type U (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) ?*?: pointer to function with parameters instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters t: instance of type _0_T (not function type) returning instance of type _0_T (not function type) ) Environment: formal type is instance of type _0_T (not function type) actual type is instance of type U (not function type) need assertions: ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) (used)?*?: pointer to function with parameters instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int inferRecursive: candidate is ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) success! satisfying assertion 12 ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with declaration 23 ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) inferRecursive: assertion is ?*?: pointer to function with parameters instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) inferRecursive: candidate is ?*?: function with parameters signed int signed int returning signed int unifying pointer to function with parameters instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters signed int signed int returning signed int working on alternative: Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) (types: lvalue pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) ) Environment: formal type is instance of type U (not function type) actual type is instance of type U (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) --- results are instance of type U (not function type) converting instance of type U (not function type) to instance of type U (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type U (not function type) actuals are: Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) (types: instance of type U (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) to: instance of type U (not function type) (types: instance of type U (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is quad decl is quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) with body CompoundStmt Return Statement, returning: Cast of: Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Application of Variable Expression: square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) to arguments Variable Expression: u: instance of type U (not function type) to: instance of type U (not function type) with environment: Types: Non-types: newExpr is Variable Expression: quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) (types: pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) square: pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters u: instance of type _0_U (not function type) returning instance of type _0_U (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 7 signed int (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): constant expression 7 signed int (types: signed int ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) (types: pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) square: pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters u: instance of type _0_U (not function type) returning instance of type _0_U (not function type) ) Environment: formal type is instance of type _0_U (not function type) actual type is signed int need assertions: square: pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) (used)?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) (used)============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is square: pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) inferRecursive: candidate is square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Cast of: Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) to: instance of type T (not function type) with environment: Types: Non-types: unifying pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) with pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters t: instance of type _1_T (not function type) returning instance of type _1_T (not function type) success! satisfying assertion 26 square: pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) with declaration 19 square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Cast of: Application of Variable Expression: ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: t: instance of type T (not function type) Variable Expression: t: instance of type T (not function type) to: instance of type T (not function type) with environment: Types: Non-types: inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int success! satisfying assertion 23 ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) with declaration 4 ?=?: function with parameters pointer to signed int signed int returning signed int recursing with new set: ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)inferRecursive: assertion is ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?*?: function with parameters signed int signed int returning signed int unifying pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters signed int signed int returning signed int success! satisfying assertion 16 ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with declaration 8 ?*?: function with parameters signed int signed int returning signed int inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int success! satisfying assertion 12 ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with declaration 4 ?=?: function with parameters pointer to signed int signed int returning signed int actual expression: constant expression 7 signed int --- results are signed int converting signed int to instance of type _0_U (not function type) cost is( 0, 0, 0 ) converting pointer to function with parameters pointer to signed int signed int returning signed int to pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) cost of conversion is ( 0, 0, 0 ) converting pointer to function with parameters signed int signed int returning signed int to pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) cost of conversion is ( 0, 0, 0 ) converting pointer to function with parameters pointer to signed int signed int returning signed int to pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) cost of conversion is ( 0, 0, 0 ) converting pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) ?*?: pointer to function with parameters instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters t: instance of type _1_T (not function type) returning instance of type _1_T (not function type) to pointer to function with parameters instance of type _0_U (not function type) returning instance of type _0_U (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: u: instance of type _0_U (not function type) actuals are: constant expression 7 signed int bindings are: ( _0_U _1_T ) -> signed int (no widening) cost of conversion is:( 0, 20, 0 ) alternatives before prune: Cost ( 0, 20, 0 ): Application of Variable Expression: quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) to arguments constant expression 7 signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int ?*?: function with parameters signed int signed int returning signed int ?=?: function with parameters pointer to signed int signed int returning signed int square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) (types: instance of type _0_U (not function type) ) Environment: ( _0_U _1_T ) -> signed int (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 1 ): Cast of: Application of Variable Expression: quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) to arguments constant expression 7 signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int ?*?: function with parameters signed int signed int returning signed int ?=?: function with parameters pointer to signed int signed int returning signed int square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) to: nothing (types: ) Environment: ( _0_U _1_T ) -> signed int (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination int ___operator_assign__Fi_Pii_(int *, int ); int ___operator_multiply__Fi_ii_(int , int ); void __square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(void (*_adapterF2tT_2tT2tT_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_multiply__PF2tT_2tT2tT_)(), void *_retparm, void *__t__2tT){ _adapterF2tT_2tT2tT_(___operator_multiply__PF2tT_2tT2tT_, _retparm, __t__2tT, __t__2tT); return ; } void __quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(void (*_adapterF2tU_2tU_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__square__PF2tU_2tU_)(), void *_retparm, void *__u__2tU){ void *_temp0; (_temp0=__builtin_alloca(U)); _adapterF2tU_2tU_(__square__PF2tU_2tU_, _retparm, (_adapterF2tU_2tU_(__square__PF2tU_2tU_, _temp0, __u__2tU) , _temp0)); return ; } void __f__F__(){ int _thunk0(int _p0){ int _temp1; void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){ ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1)))); } void _adapterFi_ii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){ ((*((int *)_ret))=((int (*)(int , int ))_adaptee)((*((int *)_p0)), (*((int *)_p1)))); } return (__square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(_adapterFi_ii_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_multiply__Fi_ii_), (&_temp1), (&_p0)) , _temp1); } int _temp2; int _temp3; (_temp3=7); void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){ ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1)))); } void _adapterFi_i_(void (*_adaptee)(), void *_ret, void *_p0){ ((*((int *)_ret))=((int (*)(int ))_adaptee)((*((int *)_p0)))); } (__quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(_adapterFi_i_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())(&_thunk0)), (&_temp2), (&_temp3)) , _temp2); }