@@ -22,6 +22,10 @@ data Prim = Prim { p_name :: Name,
2222ty [] x = Constant x
2323ty (t:ts) x = Bind (MN 0 "T") (Pi (Constant t)) (ty ts x)
2424
25+believeTy = Bind (UN "a") (Pi (Set (UVar (-2))))
26+ (Bind (UN "b") (Pi (Set (UVar (-2))))
27+ (Bind (UN "x") (Pi (V 1)) (V 1)))
28+
2529type ETm = E.Term
2630type EOp = E.Op
2731
@@ -160,9 +164,15 @@ primitives =
160164 Prim (UN "prim__strIndex") (ty [StrType, IType] ChType) 2 (p_strIndex)
161165 ([E.name "x", E.name "i"], strIndex (fun "x") (fun "i")),
162166 Prim (UN "prim__strRev") (ty [StrType] StrType) 1 (p_strRev)
163− ([E.name "x"], strRev (fun "x"))
167+ ([E.name "x"], strRev (fun "x")),
168+
169+ Prim (UN "prim__believe_me") believeTy 3 (p_believeMe)
170+ ([E.name "a", E.name "b", E.name "x"], fun "x")
164171 ]
165172
173+p_believeMe [_,_,x] = Just x
174+p_believeMe _ = Nothing
175+
166176iBin op [VConstant (I x), VConstant (I y)] = Just $ VConstant (I (op x y))
167177iBin _ _ = Nothing
168178