From 47c5941497831ba49aed1c054eaacf9878c77d9b Mon Sep 17 00:00:00 2001
From: arthur-adjedj <arthur.adjedj@gmail.com>
Date: Tue, 1 Nov 2022 15:07:56 +0100
Subject: [PATCH] Fix : century-old bug in the type-checker

---
 kernel/src/term.rs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/kernel/src/term.rs b/kernel/src/term.rs
index bba9d852..f12f1ad4 100644
--- a/kernel/src/term.rs
+++ b/kernel/src/term.rs
@@ -130,6 +130,7 @@ mod tests {
     // /!\ most of these tests are on ill-typed terms and should not be used for further testings
     use super::Term::*;
     use crate::term::Environment;
+    use crate::universe::UniverseLevel;
 
     #[test]
     fn simple_subst() {
@@ -334,4 +335,17 @@ mod tests {
 
         assert_eq!(Const("foo".into()).beta_reduction(&env), id_prop);
     }
+
+
+    #[test]
+    fn poly_univ_id(){
+        let id_ty = Prod(box Type(UniverseLevel::Var(0)),box Prod(box Var(1.into()),box Var(2.into())));
+        let id_te = Abs(box Type(UniverseLevel::Var(0)),box Abs(box Var(1.into()),box Var(1.into())));
+        let id_zero = Abs(box Type(0.into()),box Abs(box Var(1.into()),box Var(1.into())));
+        assert!(id_te.check(&id_ty, &Environment::new()).is_ok());
+        let env = Environment::new()
+            .insert("id".into(), id_te.clone().into(), id_ty.clone())
+            .unwrap();
+        assert!(Const("id".into(),vec![0.into()]).is_def_eq(&id_zero, &env).is_ok())
+    }
 }
-- 
GitLab