Just  as the function space constructor is generalized
from 
 to 
, so too can the product
constructor be generalized to 
, where B
can depend on x.
For example, given the declarations
 and 
, 
 is a type in 
.
The formation rule for dependent types becomes the following.
The introduction rules change as follows.
The term ``over 
'' is needed in order to specify the substitution
of 
 in T.