Define the following terms formally, and describe their usageduring program optimization correspondingly:

Available expressions.

Reaching definitions.

Live variables.