Type formers for a cwf
Definition.
A cwf is said to
have dependent products
if we have
dprod
(
dpair
,
dproj
)
:
(
A
:
Ty
Γ
)
→
(
B
:
Ty
(
Γ
▹
A
))
→
Ty
Γ
:
(
a
:
Tm
Γ
A
)
×
Tm
Γ
B
[(
id
,
a
)]
≅
Tm
Γ
(
dprod
A
B
)
Definition.
A cwf is said to
have dependent functions
if we have
fun
(
lam
,
app
)
:
(
A
:
Ty
Γ
)
→
(
B
:
Ty
(
Γ
▹
A
))
→
Ty
Γ
:
Tm
(
Γ
▹
A
)
B
≅
Tm
Γ
(
fun
A
B
)
Definition.
A cwf is said to
have equality types
if we have
(
equal
)
(
refl
,
reflect
)
:
{
A
:
Ty
Γ
}
→
Ty
(
Γ
▹
A
▹
A
)
:
{
a
a
′
:
Tm
Γ
A
}
→
(
a
=
a
′
)
≅
Tm
Γ
(
equal
[(
id
,
a
,
a
′
)])