diff --git a/lib/Quox/Typechecker.idr b/lib/Quox/Typechecker.idr index 9d337d4..1c2199b 100644 --- a/lib/Quox/Typechecker.idr +++ b/lib/Quox/Typechecker.idr @@ -196,12 +196,15 @@ mutual check' ctx sg (DLam body) ty = do (ty, l, r) <- expectEq !ask ctx ty + let ctx' = extendDim body.name ctx + ty = ty.term + body = body.term -- if Ψ, i | Γ ⊢ σ · t ⇐ A ⊳ Σ - qout <- checkC (extendDim body.name ctx) sg body.term ty.term - -- if Ψ | Γ ⊢ t‹0› = l : A‹0› - equal ctx ty.zero body.zero l - -- if Ψ | Γ ⊢ t‹1› = r : A‹1› - equal ctx ty.one body.one r + qout <- checkC ctx' sg body ty + -- if Ψ, i, i = 0 | Γ ⊢ t = l : A + equal (eqDim (BV 0) (K Zero) ctx') ty body (dweakT 1 l) + -- if Ψ, i, i = 1 | Γ ⊢ t = r : A + equal (eqDim (BV 0) (K One) ctx') ty body (dweakT 1 r) -- then Ψ | Γ ⊢ σ · (δ i ⇒ t) ⇐ Eq [i ⇒ A] l r ⊳ Σ pure qout