alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 signed int (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: constant expression 3 signed int to: signed int (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is 0 alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 signed int (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: constant expression 3 signed int to: signed int (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination working on alternative: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 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 3 signed int (types: signed int ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: formal type is signed int actual type is signed int nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 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 3 signed int (types: signed int ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: formal type is signed int actual type is signed int nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 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 3 signed int (types: signed int ) Environment: nameExpr is 0 nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 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 3 signed int (types: signed int ) Environment: nameExpr is 0 nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is 0 nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): constant expression 3 signed int with designator: Name: i (types: signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): constant expression 3 signed int with designator: Name: i (types: signed int ) Environment: nameExpr is 0 nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is 0 nameExpr is f1 decl is f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int with body CompoundStmt newExpr is Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f1: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int with initializer Simple Initializer: Name: 0 returning signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is f2 decl is f2: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int with body CompoundStmt newExpr is Variable Expression: f2: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f2: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination working on alternative: Cost ( 0, 0, 0 ): Variable Expression: f2: function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int (types: pointer to function with parameters i: signed int with initializer Simple Initializer: Cast of: constant expression 3 signed int to: signed int with environment: Types: Non-types: j: pointer to signed int returning signed int signed int ) Environment: Error: No reasonable alternatives for expression Name: 0 Error: No reasonable alternatives for expression Applying untyped: Name: f1 ...to: Error: No reasonable alternatives for expression Applying untyped: Name: f1 ...to: constant expression 3 signed int Error: No reasonable alternatives for expression Applying untyped: Name: f1 ...to: constant expression 3 signed int Error: No reasonable alternatives for expression Name: 0 Error: No reasonable alternatives for expression Name: 0 with designator: Name: j Error: No reasonable alternatives for expression Name: 0 with designator: Name: j Error: No reasonable alternatives for expression Name: 0 with designator: Name: j Error: No reasonable alternatives for expression Name: 0 with designator: Name: j Error: No reasonable alternatives for expression Applying untyped: Name: f2 ...to: with designator: Tuple: Name: j Name: i