Dependent type and path-dependent type