---
tags: violet
---
# sigma type
只能檢查不能推導,對應的 check case 是
```lean=
check (.pair x y) (.sigma x a b) =>
x <- check x a
-- b 是 closure
y <- check y (b.apply x)
return .pair x y
```
- [x] parser 解析 pair 語法, e.g. `(1, 2)`
- [x] parser 解析 Sigma type 語法, e.g. `(x : Nat) ** Nat`
- [x] parser 解析 Product 語法 (non-dependent Sigma 的語法糖)
- [x] check 引入規則