Replace hardcoded universe levels with a proper level language and constraint solving
This commit is contained in:
+4
-4
@@ -67,7 +67,7 @@ mutual
|
||||
let vy ← eval env y
|
||||
let vp ← eval env p
|
||||
vIdElim vm vr vy vp
|
||||
| _, .univ i => pure (.univ i)
|
||||
| _, .univ i => pure (.univ i.normalise)
|
||||
| env, .letE _ t u => do
|
||||
let vt ← eval env t
|
||||
eval (vt :: env) u
|
||||
@@ -187,7 +187,7 @@ mutual
|
||||
let qu ← quote l u
|
||||
pure (.id qa qt qu)
|
||||
| _, .refl => pure .refl
|
||||
| _, .univ i => pure (.univ i)
|
||||
| _, .univ i => pure (.univ i.normalise)
|
||||
end
|
||||
|
||||
private def andThen (lhs : EvalM Bool) (rhs : Unit → EvalM Bool) : EvalM Bool := do
|
||||
@@ -239,7 +239,7 @@ mutual
|
||||
| _, _, _ => pure false
|
||||
|
||||
partial def conv : Lvl → Val → Val → EvalM Bool
|
||||
| _, .univ i, .univ j => pure (i == j)
|
||||
| _, .univ i, .univ j => Level.eqv i j
|
||||
| l, .pi a c, .pi a' c' =>
|
||||
andThen (conv l a a') fun _ => do
|
||||
let b ← cApp c (.neu (.var l))
|
||||
@@ -299,7 +299,7 @@ mutual
|
||||
end
|
||||
|
||||
partial def sub : Lvl → Val → Val → EvalM Bool
|
||||
| _, .univ i, .univ j => pure (i <= j)
|
||||
| _, .univ i, .univ j => Level.leq i j
|
||||
| l, .pi a c, .pi a' c' =>
|
||||
andThen (sub l a' a) fun _ => do
|
||||
let b ← cApp c (.neu (.var l))
|
||||
|
||||
Reference in New Issue
Block a user