From 8dae8880f9bf3bf0363378b56c9d67e2529c0fb0 Mon Sep 17 00:00:00 2001 From: Steve Dunham Date: Tue, 20 May 2025 21:36:52 -0700 Subject: [PATCH] Remove unnecessary IORef for meta context --- bootstrap/newt.js | 66 ++++++++++++++++++---------------------- src/Lib/Elab.newt | 50 ++++++++++++++++-------------- src/Lib/ProcessDecl.newt | 6 ++-- src/Lib/TopContext.newt | 2 +- src/Lib/Types.newt | 5 ++- src/Main.newt | 7 ++--- 6 files changed, 66 insertions(+), 70 deletions(-) diff --git a/bootstrap/newt.js b/bootstrap/newt.js index 1727902..c51009f 100644 --- a/bootstrap/newt.js +++ b/bootstrap/newt.js @@ -100,10 +100,7 @@ const Prelude_Prelude_Add$20Prim_Int = Prelude_MkAdd(null, ( eta ) => (( eta1 ) const Prelude__$2B_ = ( a$$0, _$$1 ) => (_$$1.h1); const Lib_Prettier_TEXT = ( h0 ) => ({ tag: "TEXT", h0: h0 }); const Prelude_Nothing = ( h0 ) => ({ tag: "Nothing", h0: h0 }); -const Prelude_LT = "LT"; -const Prelude_EQ = "EQ"; -const Prelude_GT = "GT"; -const Prelude_jsCompare = (_, a, b) => a == b ? Prelude_EQ : a < b ? Prelude_LT : Prelude_GT; +const Prelude_jsCompare = (_, a, b) => a == b ? "EQ" : a < b ? "LT" : "GT"; const Prelude_Prelude_Ord$20Prim_Int$2Ccompare = ( _$$0, _$$1 ) => (Prelude_jsCompare(null, _$$0, _$$1)); const Prelude_MkOrd = ( h0, h1 ) => ({ tag: "MkOrd", h0: h0, h1: h1 }); const Prelude_Prelude_Ord$20Prim_Int = Prelude_MkOrd(null, ( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_Int$2Ccompare(eta, eta1)))); @@ -604,9 +601,8 @@ const Lib_Common_showError_go$27 = ( _, _1, _2, _3, _4, _$$5, _$$6 ) => (bouncer const Lib_Common_REC_showError_go = ( arg ) => { const _sc$$0 = arg.h7; switch (_sc$$0.tag) { case "_::_": { const sc$$11 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(arg.h6)(Lib_Common_fcLine(arg.h2)); switch (sc$$11) { case "False": { const sc$$12 = Prelude__$3C_(null, Prelude_Prelude_Ord$20Prim_Int, Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(Lib_Common_fcLine(arg.h2))(3), arg.h6); switch (sc$$12) { case "False": return { tag: "Lib.Common.showError.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(arg.h6)(1), h7: _sc$$0.h2 }; case "True": return { tag: "return", h0: Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" ")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(_sc$$0.h1)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("\n")(Lib_Common_showError_go(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(arg.h6)(1), _sc$$0.h2)))) }; } break; } case "True": return { tag: "return", h0: Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" ")(_sc$$0.h1))("\n "))(Prelude_replicate(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(Lib_Common_fcCol(arg.h2)), " ")))("^\n") }; } break; } case "Nil": return { tag: "return", h0: "" }; } }; const Lib_Common_showError_go = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => (bouncer(Lib_Common_REC_showError_go, { tag: "Lib.Common.showError.go", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _$$6, h7: _$$7 })); const Lib_Common_showError = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Postpone": return Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$1.h0)))(": Postpone "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))(" "))(_$$1.h2))("\n"))(Lib_Common_showError_go(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, 0, Prelude_lines(_$$0))); case "E": return Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$1.h0)))(": "))(_$$1.h1))("\n"))(Lib_Common_showError_go$27(_$$0, _$$1, _$$1.h0, _$$1.h1, null, 0, Prelude_lines(_$$0))); } }; -const Prelude_for_ = ( t$$0, f$$1, _$$2, appf$$3, a$$4, b$$5, _$$6, _$$7 ) => (Prelude__$3C$2A$3E_(null, appf$$3)(null)(null)(Prelude_return(null, appf$$3)(null)(( eta ) => (Prelude_const(null, null, "MkUnit", eta))))(Prelude_traverse(null, _$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6))); const Lib_Types__errors = ( _$$0 ) => (_$$0.h7); -const Main_showErrors = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top))), ( $$sc ) => { switch ($$sc.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for_(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, $$sc, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError(_$$1, err)))), ( _ ) => (Node_exitFailure(null, "Compile failed"))); } })))); +const Main_showErrors = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top))), ( $$sc ) => { switch ($$sc.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, eta)), ( eta ) => (Lib_Common_showError(_$$1, eta)), eta)))($$sc), ( _ ) => (Node_exitFailure(null, "Compile failed"))); } })))); const Lib_Types__metaCtx = ( _$$0 ) => (_$$0.h5); const Lib_Types__hints = ( _$$0 ) => (_$$0.h2); const Lib_Types_MkTop = ( h0, h1, h2, h3, h4, h5, h6, h7, h8 ) => ({ tag: "MkTop", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7, h8: h8 }); @@ -640,7 +636,7 @@ const Lib_Types_VRef = ( h0, h1, h2 ) => ({ tag: "VRef", h0: h0, h1: h1, h2: const Lib_Types_VMeta = ( h0, h1, h2 ) => ({ tag: "VMeta", h0: h0, h1: h1, h2: h2 }); const Prelude_getAt$27 = ( a$$0, _$$1, _$$2 ) => (Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_$$1), _$$2)); const Lib_Types__modMetaCtx = ( _$$0 ) => (_$$0.h2); -const Lib_Types_lookupMeta = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(mc)); switch (sc$$5.tag) { case "Nothing": { const sc$$7 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), _$$0.h0, Lib_Types__modules(top)); switch (sc$$7.tag) { case "Nothing": return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("missing module: ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h0)))("")); case "Just": { const sc$$10 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(Lib_Types__modMetaCtx(sc$$7.h1))); switch (sc$$10.tag) { case "Nothing": return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("missing meta: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))("")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$10.h1); } break; } } break; } case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$5.h1); } })))); +const Lib_Types_lookupMeta = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(Lib_Types__metaCtx(top))); switch (sc$$4.tag) { case "Nothing": { const sc$$6 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), _$$0.h0, Lib_Types__modules(top)); switch (sc$$6.tag) { case "Nothing": return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("missing module: ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h0)))("")); case "Just": { const sc$$9 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(Lib_Types__modMetaCtx(sc$$6.h1))); switch (sc$$9.tag) { case "Nothing": return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("missing meta: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))("")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$9.h1); } break; } } break; } case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$4.h1); } })); const Lib_Types_MkClosure = ( h0, h1 ) => ({ tag: "MkClosure", h0: h0, h1: h1 }); const Lib_Types_VLam = ( h0, h1, h2, h3, h4 ) => ({ tag: "VLam", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Types_VU = ( h0 ) => ({ tag: "VU", h0: h0 }); @@ -685,32 +681,22 @@ const Lib_Elab_unifySpine = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { switch (_$$2) const Lib_Elab_unify_unifyRest_unifyRef = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => { switch (_$$7.tag) { case "VRef": switch (_$$6.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_tryEval(_, _$$6), ( $$sc ) => { switch ($$sc.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_tryEval(_, _$$7), ( $$sc1 ) => { switch ($$sc1.tag) { case "Nothing": { const sc$$20 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$6.h1)(_$$7.h1); switch (sc$$20) { case "False": return Lib_Types_error(null, _$$6.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("vref mismatch ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))("")); case "True": return Lib_Elab_unifySpine(_, _1, Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$6.h1)(_$$7.h1), _$$6.h2, _$$7.h2); } break; } case "Just": return Lib_Elab_unify(_, _1, _$$6, $$sc1.h1); } }); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tryEval ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" to "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$sc.h1)))(""))), ( _6 ) => (Lib_Elab_unify(_, _1, $$sc.h1, _$$7))); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expand ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" =?= %ref "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$7.h1)))(""))), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$13 = Lib_TopContext_lookup(_$$7.h1, top); switch (sc$$13.tag) { case "Just": { const _sc$$0 = sc$$13.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Fn": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$1.h0), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(vtm, _$$7.h2), ( appvtm ) => (Lib_Elab_unify(_, _1, _$$6, appvtm))))); default: return Lib_Types_error(null, _$$7.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("unify failed ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(" (no Fn :: Nil)\n env is "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_)))("")); } break; } default: return Lib_Types_error(null, _$$7.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("unify failed ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(" (no Fn :: Nil)\n env is "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_)))("")); } }))); } break; default: switch (_$$6.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expand %ref ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$6.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$6.h2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(""))), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$13 = Lib_TopContext_lookup(_$$6.h1, top); switch (sc$$13.tag) { case "Just": { const _sc$$0 = sc$$13.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Fn": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$1.h0), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(vtm, _$$6.h2), ( tmsp ) => (Lib_Elab_unify(_, _1, tmsp, _$$7))))); default: return Lib_Types_error(null, _$$6.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("unify failed ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" (no Fn :: Nil) =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))("\n env is "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_)))("")); } break; } default: return Lib_Types_error(null, _$$6.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("unify failed ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$6)))(" (no Fn :: Nil) =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))("\n env is "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_)))("")); } }))); default: return Lib_Elab_unify_unifyRest(_, _1, _2, _3, _4, _$$6, _$$7); } break; } }; const Lib_Elab_unify_unifyRest_unifyRef_unifyVar = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8 ) => { switch (_$$8.tag) { case "VVar": switch (_$$7.tag) { case "VVar": { const sc$$15 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$7.h1)(_$$8.h1); switch (sc$$15) { case "False": return Lib_Types_error(null, _$$7.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Failed to unify ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(" and "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$8)))("")); case "True": return Lib_Elab_unifySpine(_, _1, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$7.h1)(_$$8.h1), _$$7.h2, _$$8.h2); } break; } default: { const _sc$$0 = _$$8.h2; switch (_sc$$0.tag) { case "Lin": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_tryEval(_, _$$7), ( vt ) => { switch (vt.tag) { case "Nothing": return Lib_Types_error(null, _$$8.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Failed to unify ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(" and "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$8)))("")); case "Just": return Lib_Elab_unify(_, _1, vt.h1, _$$8); } }); default: return Lib_Elab_unify_unifyRest_unifyRef(_, _1, _2, _3, _4, _5, _$$7, _$$8); } break; } } break; default: switch (_$$7.tag) { case "VVar": { const _sc$$0 = _$$7.h2; switch (_sc$$0.tag) { case "Lin": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_tryEval(_, _$$8), ( vu ) => { switch (vu.tag) { case "Nothing": return Lib_Types_error(null, _$$7.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Failed to unify ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$7)))(" and "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$8)))("")); case "Just": return Lib_Elab_unify(_, _1, _$$7, vu.h1); } }); default: return Lib_Elab_unify_unifyRest_unifyRef(_, _1, _2, _3, _4, _5, _$$7, _$$8); } break; } default: return Lib_Elab_unify_unifyRest_unifyRef(_, _1, _2, _3, _4, _5, _$$7, _$$8); } break; } }; const Lib_Elab_unify_unifyRest_unifyRef_unifyVar_unifyLam = ( _, _1, _2, _3, _4, _5, _6, _7, _$$8, _$$9 ) => { switch (_$$9.tag) { case "VLam": switch (_$$8.tag) { case "VLam": { const fresh = Lib_Types_VVar(_$$8.h0, Prelude_length$27(null, _), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$8.h4, fresh), ( vappt ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$9.h4, fresh), ( vappt$27 ) => (Lib_Elab_unify(Prelude__$3A$3A_(null, fresh, _), _1, vappt, vappt$27))))); break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ETA ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$8)))(""))), ( _8 ) => { const fresh = Lib_Types_VVar(_$$9.h0, Prelude_length$27(null, _), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vapp(_$$8, fresh), ( vappt ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$9.h4, fresh), ( vappt$27 ) => (Lib_Elab_unify(Prelude__$3A$3A_(null, fresh, _), _1, vappt, vappt$27))))); }); } break; default: switch (_$$8.tag) { case "VLam": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ETA' ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$9)))(""))), ( _8 ) => { const fresh = Lib_Types_VVar(_$$8.h0, Prelude_length$27(null, _), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$8.h4, fresh), ( appt ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vapp(_$$9, fresh), ( vappt$27 ) => (Lib_Elab_unify(Prelude__$3A$3A_(null, fresh, _), _1, appt, vappt$27))))); }); default: return Lib_Elab_unify_unifyRest_unifyRef_unifyVar(_, _1, _2, _3, _4, _5, _6, _$$8, _$$9); } break; } }; -const Lib_Types__autos = ( _$$0 ) => (_$$0.h1); -const Lib_Types__bds = ( _$$0 ) => (_$$0.h3); -const Lib_Elab_REC_makeSpine = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "Defined": return { tag: "Lib.Elab.makeSpine", h0: Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), h1: _sc$$0.h2 }; case "Bound": return { tag: "return", h0: Prelude__$3A$3C_(null, Lib_Elab_makeSpine(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), _sc$$0.h2), Lib_Types_VVar(Lib_Common_emptyFC, Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), Prelude_Lin(null))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Lin(null) }; } }; -const Lib_Elab_makeSpine = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_makeSpine, { tag: "Lib.Elab.makeSpine", h0: _$$0, h1: _$$1 })); -const Prelude_zip = ( a$$0, b$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "_::_": switch (_$$2.tag) { case "_::_": return Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$2.h1, _$$3.h1), Prelude_zip(null, null, _$$2.h2, _$$3.h2)); default: return Prelude_Nil(null); } break; default: return Prelude_Nil(null); } }; -const Lib_Types_names = ( _$$0 ) => (Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0))); -const Lib_Elab_REC_isCandidate = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "Pi": { const _sc$$1 = _sc$$0.h2; switch (_sc$$1) { case "Explicit": return { tag: "return", h0: "False" }; default: return { tag: "Lib.Elab.isCandidate", h0: arg.h0, h1: _sc$$0.h5 }; } break; } case "App": return { tag: "Lib.Elab.isCandidate", h0: arg.h0, h1: _sc$$0.h1 }; case "Ref": { const _sc$$1 = arg.h0; switch (_sc$$1.tag) { case "VRef": return { tag: "return", h0: Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$1.h1)(_sc$$0.h1) }; default: return { tag: "return", h0: "False" }; } break; } default: return { tag: "return", h0: "False" }; } }; -const Lib_Elab_isCandidate = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_isCandidate, { tag: "Lib.Elab.isCandidate", h0: _$$0, h1: _$$1 })); -const Lib_Elab_contextMatches_go = ( _, _1, _2, _$$3 ) => { switch (_$$3.tag) { case "_::_": { const _sc$$0 = _$$3.h1; const _sc$$1 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( type ) => { const sc$$16 = Lib_Elab_isCandidate(_1, type); switch (sc$$16) { case "False": return Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY context ")(_sc$$1.h2))(" : "))(Lib_Elab_rpprint(Lib_Types_names(_), type)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_1)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_1), _, _1, _sc$$1.h3), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$0.h2), ( tm ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, Prelude__$2C_(null, null, tm, _sc$$1.h3), eta)), Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2)))))))))))), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_1)))(" "))(Lib_Elab_rpprint(Lib_Types_names(_), type)))(" "))(Lib_Common_showError("", err)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _4 ) => (Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2))))))))))); } }); break; } case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)); } }; -const Lib_Elab_contextMatches = ( _$$0, _$$1 ) => (Lib_Elab_contextMatches_go(_$$0, _$$1, null, Prelude_zip(null, null, Lib_Types__env(_$$0), Lib_Types__types(_$$0)))); -const Lib_Elab_trySolveAuto = ( _$$0 ) => { switch (_$$0.tag) { case "Unsolved": { const _sc$$0 = _$$0.h4; switch (_sc$$0) { case "AutoSolve": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRYAUTO solving ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0.h1)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$0.h3)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_$$0.h2), _$$0.h3), ( x ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", x), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("AUTO ---> ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_contextMatches(_$$0.h2, ty), ( $$sc ) => { switch ($$sc.tag) { case "_::_": { const _sc$$1 = $$sc.h1; const _sc$$2 = $$sc.h2; switch (_sc$$2.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(ty), _$$0.h2, ty, _sc$$1.h3), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", _sc$$1.h2), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLUTION ")(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" evaled to "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(""))), ( _3 ) => { const sp = Lib_Elab_makeSpine(Lib_Types__lvl(_$$0.h2), Lib_Types__bds(_$$0.h2)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solve(Lib_Types__env(_$$0.h2), _$$0.h1, sp, val), ( _4 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("True"))); }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Lib_Prettier_render(90, Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Lib_Types_pprint(Prelude_Nil(null), eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)))($$sc)))))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } break; } case "Nil": switch (ty.tag) { case "VRef": { const cands = Prelude_fromMaybe(null, Prelude_Nil(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, ty.h1, Lib_Types__hints(top))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_findMatches(_$$0.h2, ty, cands), ( $$sc1 ) => { switch ($$sc1.tag) { case "_::_": { const _sc$$1 = $$sc1.h2; switch (_sc$$1.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0.h2, Lib_Syntax_RVar(_$$0.h0, $$sc1.h1), ty), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", tm), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLUTION ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" evaled to "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(""))), ( _2 ) => { const sp = Lib_Elab_makeSpine(Lib_Types__lvl(_$$0.h2), Lib_Types__bds(_$$0.h2)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solve(Lib_Types__env(_$$0.h2), _$$0.h1, sp, val), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("True"))); }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))($$sc1)))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))($$sc1)))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } }); break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } break; } }))))))))))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } }; -const Lib_Elab_REC_checkAutos_usesMeta = ( arg ) => { const _sc$$0 = arg.h12; switch (_sc$$0.tag) { case "App": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "Meta": { const sc$$18 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$1.h1)(arg.h0); switch (sc$$18) { case "False": return { tag: "Lib.Elab.checkAutos.usesMeta", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: arg.h8, h9: arg.h9, h10: arg.h10, h11: arg.h11, h12: _sc$$0.h2 }; case "True": return { tag: "return", h0: "True" }; } break; } default: return { tag: "Lib.Elab.checkAutos.usesMeta", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: arg.h8, h9: arg.h9, h10: arg.h10, h11: arg.h11, h12: _sc$$0.h2 }; } break; } default: return { tag: "return", h0: "False" }; } }; -const Lib_Elab_checkAutos_usesMeta = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _$$12 ) => (bouncer(Lib_Elab_REC_checkAutos_usesMeta, { tag: "Lib.Elab.checkAutos.usesMeta", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _6, h7: _7, h8: _8, h9: _9, h10: _10, h11: _11, h12: _$$12 })); -const Lib_Elab_REC_checkAutos = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "Unsolved": { const _sc$$2 = _sc$$1.h4; switch (_sc$$2) { case "AutoSolve": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_sc$$1.h2), _sc$$1.h3), ( ty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Lib_Elab_checkAutos_usesMeta(arg.h0, arg.h1, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, _sc$$1.h0, _sc$$1.h1, _sc$$1.h2, _sc$$1.h3, _sc$$1.h4, _sc$$1.h5, null, ty$27), ( _ ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Lib_Elab_trySolveAuto(_sc$$0.h1)))), ( _ ) => (Lib_Elab_checkAutos(arg.h0, _sc$$0.h2))))) }; default: return { tag: "Lib.Elab.checkAutos", h0: arg.h0, h1: _sc$$0.h2 }; } break; } default: return { tag: "Lib.Elab.checkAutos", h0: arg.h0, h1: _sc$$0.h2 }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit") }; } }; -const Lib_Elab_checkAutos = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_checkAutos, { tag: "Lib.Elab.checkAutos", h0: _$$0, h1: _$$1 })); const Lib_Types_MkMc = ( h0, h1, h2, h3 ) => ({ tag: "MkMc", h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Types_Unsolved = ( h0, h1, h2, h3, h4, h5 ) => ({ tag: "Unsolved", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5 }); const Lib_Types__mcmode = ( _$$0 ) => (_$$0.h3); const Lib_Types__next = ( _$$0 ) => (_$$0.h2); const Lib_Types_MC = ( h0, h1, h2, h3 ) => ({ tag: "MC", h0: h0, h1: h1, h2: h2, h3: h3 }); +const Lib_Types__autos = ( _$$0 ) => (_$$0.h1); const Prelude_REC_filter = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const sc$$6 = arg.h1(_sc$$0.h1); switch (sc$$6) { case "False": return { tag: "Prelude.filter", h0: null, h1: arg.h1, h2: _sc$$0.h2 }; case "True": return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Prelude_filter(null, arg.h1, _sc$$0.h2)) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nil(null) }; } }; const Prelude_filter = ( a$$0, _$$1, _$$2 ) => (bouncer(Prelude_REC_filter, { tag: "Prelude.filter", h0: a$$0, h1: _$$1, h2: _$$2 })); -const Lib_Elab_updateMeta = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(mc)); switch (sc$$4.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, _$$1(sc$$4.h1), ( me ) => { let autos; switch (me.tag) { case "Solved": { autos = Prelude_filter(null, ( eta ) => (Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$0, eta)), Lib_Types__autos(mc)); break; } default: { autos = Lib_Types__autos(mc); break; } } return Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), Lib_Types_MC(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, me, Lib_Types__metas(mc)), autos, Lib_Types__next(mc), Lib_Types__mcmode(mc))); }); } })))); -const Lib_Elab_addConstraint = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$6 = Lib_Types__mcmode(mc); switch (sc$$6) { case "CheckAll": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case "OutOfScope": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" out of scope")); case "Solved": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$case.h1)))(" already solved [addConstraint]")); case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Add constraint m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Unsolved($$case.h0, $$case.h1, $$case.h2, $$case.h3, $$case.h4, Prelude__$3A$3A_(null, Lib_Types_MkMc(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_$$3), _$$0, _$$2, _$$3), $$case.h5))))); } }), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc1 ) => (Lib_Elab_checkAutos(_$$1, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, eta, eta1))), Lib_Types__metas(mc1), eta)), Lib_Types__autos(mc1))))))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); } })))); -const Lib_Elab_maybeCheck = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$3 = Lib_Types__mcmode(mc); switch (sc$$3) { case "NoCheck": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "CheckFirst": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), ( mc1 ) => (Lib_Types_MC(Lib_Types__metas(mc1), Lib_Types__autos(mc1), Lib_Types__next(mc1), "NoCheck"))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, _$$0, ( _1 ) => (Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), ( mc1 ) => (Lib_Types_MC(Lib_Types__metas(mc1), Lib_Types__autos(mc1), Lib_Types__next(mc1), "CheckFirst"))))))); case "CheckAll": return _$$0; } })))); +const Lib_Elab_updateMeta = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(mc)); switch (sc$$4.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, _$$1(sc$$4.h1), ( me ) => { let autos; switch (me.tag) { case "Solved": { autos = Prelude_filter(null, ( eta ) => (Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$0, eta)), Lib_Types__autos(mc)); break; } default: { autos = Lib_Types__autos(mc); break; } } return Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Lib_Types__modules($$ru), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types_MC(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, me, Lib_Types__metas(mc)), autos, Lib_Types__next(mc), Lib_Types__mcmode(mc)), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))); }); } })); +const Lib_Elab_addConstraint = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const sc$$6 = Lib_Types__mcmode(mc); switch (sc$$6) { case "CheckAll": return Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case "OutOfScope": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" out of scope")); case "Solved": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$case.h1)))(" already solved [addConstraint]")); case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Add constraint m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Unsolved($$case.h0, $$case.h1, $$case.h2, $$case.h3, $$case.h4, Prelude__$3A$3A_(null, Lib_Types_MkMc(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_$$3), _$$0, _$$2, _$$3), $$case.h5))))); } }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); } })); +const Prelude_for_ = ( t$$0, f$$1, _$$2, appf$$3, a$$4, b$$5, _$$6, _$$7 ) => (Prelude__$3C$2A$3E_(null, appf$$3)(null)(null)(Prelude_return(null, appf$$3)(null)(( eta ) => (Prelude_const(null, null, "MkUnit", eta))))(Prelude_traverse(null, _$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6))); +const Lib_Elab_setMetaMode = ( _$$0 ) => (Lib_Types_modifyTop(( top ) => (Lib_Types_MkTop(Lib_Types__modules(top), Lib_Types__imported(top), Lib_Types__hints(top), Lib_Types__ns(top), Lib_Types__defs(top), Lib_Types_MC(Lib_Types__metas(Lib_Types__metaCtx(top)), Lib_Types__autos(Lib_Types__metaCtx(top)), Lib_Types__next(Lib_Types__metaCtx(top)), _$$0), Lib_Types__verbose(top), Lib_Types__errors(top), Lib_Types__ops(top))))); +const Lib_Elab_maybeCheck = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const sc$$3 = Lib_Types__mcmode(mc); switch (sc$$3) { case "NoCheck": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "CheckFirst": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_setMetaMode("NoCheck"), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, _$$0, ( _1 ) => (Lib_Elab_setMetaMode("CheckFirst"))))); case "CheckAll": return _$$0; } })); const Lib_Types_Solved = ( h0, h1, h2 ) => ({ tag: "Solved", h0: h0, h1: h1, h2: h2 }); +const Lib_Types__bds = ( _$$0 ) => (_$$0.h3); +const Prelude_zip = ( a$$0, b$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "_::_": switch (_$$2.tag) { case "_::_": return Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$2.h1, _$$3.h1), Prelude_zip(null, null, _$$2.h2, _$$3.h2)); default: return Prelude_Nil(null); } break; default: return Prelude_Nil(null); } }; const Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case "Defined": switch (_$$0) { case "Defined": return "True"; default: return "False"; } break; case "Bound": switch (_$$0) { case "Bound": return "True"; default: return "False"; } break; } }; const Lib_Types_Prelude_Eq$20Lib_Types_BD = Prelude_MkEq(null, ( eta ) => (( eta1 ) => (Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_(eta, eta1)))); const Lib_Elab__boundNames = ( _$$0 ) => (Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_snd(null, null, eta)))(Prelude_filter(null, ( x ) => (Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_BD)(Prelude_fst(null, null, x))("Bound")), Prelude_zip(null, null, Lib_Types__bds(_$$0), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0)))))); @@ -732,7 +718,7 @@ const Lib_Types_Prelude_Show$20Lib_Types_MetaEntry$2Cshow = ( _$$0 ) => { switch const Lib_Types_Prelude_Show$20Lib_Types_MetaEntry = Prelude_MkShow(null, Lib_Types_Prelude_Show$20Lib_Types_MetaEntry$2Cshow); const Prelude_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case 0: switch (_$$0) { case 0: return "True"; default: return "False"; } break; default: { const x = (_$$1) - (1); switch (_$$0) { case 0: return "False"; default: { const x1 = (_$$0) - (1); return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prelude_Nat)(x1)(x); break; } } break; } } }; const Prelude_Prelude_Eq$20Prelude_Nat = Prelude_MkEq(null, ( eta ) => (( eta1 ) => (Prelude_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_(eta, eta1)))); -const Lib_Elab_solve = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_lookupMeta(_$$1), ( $$sc ) => { switch ($$sc.tag) { case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLVE ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaKind)($$sc.h4)))(" lvl "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, _$$0))))(" sp "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _ ) => { const size = Prelude_length(null, Prelude_filter(null, ( x ) => (Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_BD)(x)("Bound")), Lib_Types__bds($$sc.h2))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" size is "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(size)))(" sps "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))))(""))), ( _1 ) => { const sc$$15 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))(size); switch (sc$$15) { case "True": { const l = Prelude_length$27(null, _$$0); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaEntry)($$sc)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_invert(l, _$$2), ( ren ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(l, _$$3), ( hack ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBN", hack), ( t ) => (Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_rename(_$$1, ren, l, t), ( tm ) => { const tm1 = Lib_Elab_lams(Data_SnocList_snoclen(null, _$$2), Prelude_reverse(null)(Lib_Elab__boundNames($$sc.h2)), tm); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", tm1), ( soln ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case "OutOfScope": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" out of scope")); case "Solved": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" already solved! [solve2]")); case "Unsolved": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Solved($$case.h0, $$case.h1, soln)); } }), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_maybeCheck(Prelude_for_(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, $$sc.h5, ( $$case ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(soln, $$case.h2), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("discharge l=")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, $$case.h1))))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$case.h3)))(""))), ( _4 ) => (Lib_Elab_unify($$case.h1, "UNormal", val, $$case.h3)))))))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"))))))))))); }), ( $$case ) => { switch ($$case.tag) { case "Postpone": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONSTRAINT2 m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$case.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(t)))(""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, t))); default: return Lib_Types_throwError(null, $$case); } }))))))))); break; } default: { const l = Prelude_length$27(null, _$$0); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" ("))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(") applied to "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))))(" args instead of "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(size)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONSTRAINT m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))))); break; } } }); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_$$3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" already solved! [solve]")); } })); +const Lib_Elab_solve = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_lookupMeta(_$$1), ( $$sc ) => { switch ($$sc.tag) { case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLVE ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaKind)($$sc.h4)))(" lvl "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, _$$0))))(" sp "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _ ) => { const size = Prelude_length(null, Prelude_filter(null, ( x ) => (Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_BD)(x)("Bound")), Lib_Types__bds($$sc.h2))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" size is "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(size)))(" sps "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))))(""))), ( _1 ) => { const sc$$15 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))(size); switch (sc$$15) { case "True": { const l = Prelude_length$27(null, _$$0); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaEntry)($$sc)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_invert(l, _$$2), ( ren ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(l, _$$3), ( hack ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBN", hack), ( t ) => (Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_rename(_$$1, ren, l, t), ( tm ) => { const tm1 = Lib_Elab_lams(Data_SnocList_snoclen(null, _$$2), Prelude_reverse(null)(Lib_Elab__boundNames($$sc.h2)), tm); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", tm1), ( soln ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case "OutOfScope": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" out of scope")); case "Solved": return Lib_Types_error$27(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" already solved! [solve2]")); case "Unsolved": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Solved($$case.h0, $$case.h1, soln)); } }), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_maybeCheck(Prelude_for_(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, $$sc.h5, ( $$case ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(soln, $$case.h2), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("discharge l=")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, $$case.h1))))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$case.h3)))(""))), ( _4 ) => (Lib_Elab_unify($$case.h1, "UNormal", val, $$case.h3)))))))), ( _4 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"))))))))); }), ( $$case ) => { switch ($$case.tag) { case "Postpone": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONSTRAINT2 m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$case.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(t)))(""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, t))); default: return Lib_Types_throwError(null, $$case); } }))))))))); break; } default: { const l = Prelude_length$27(null, _$$0); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" ("))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(") applied to "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(Data_SnocList_snoclen(null, _$$2))))(" args instead of "))(Prelude_show(null, Prelude_Prelude_Show$20Prelude_Nat)(size)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONSTRAINT m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)($$sc.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2)))(" =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$3)))(""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))))); break; } } }); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_$$3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" already solved! [solve]")); } })); const Prelude__$3E$3E_ = ( m$$0, a$$1, b$$2, _$$3, _$$4, _$$5 ) => (Prelude_bind(null, _$$3)(null)(null)(_$$4)(( _ ) => (_$$5))); const Prelude_Prelude_Ord$20Prelude_Nat$2Ccompare = ( _$$0, _$$1 ) => { switch (_$$1) { case 0: switch (_$$0) { case 0: return "EQ"; default: return "GT"; } break; default: { const x = (_$$1) - (1); switch (_$$0) { case 0: return "LT"; default: { const x1 = (_$$0) - (1); return Prelude_compare(null, Prelude_Prelude_Ord$20Prelude_Nat)(x1)(x); break; } } break; } } }; const Prelude_Prelude_Ord$20Prelude_Nat = Prelude_MkOrd(null, ( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prelude_Nat$2Ccompare(eta, eta1)))); @@ -754,9 +740,10 @@ const Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause$2Cshow = ( _$$0 ) => { s const Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause = Prelude_MkShow(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause$2Cshow); const Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case "RUpdateRec": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "RUpdateRec", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause))(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw))(_$$0.h2), Prelude_Nil(null))))); case "RAs": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "RAs", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); case "RWhere": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Where", Prelude__$3A$3A_(null, "FIXME", Prelude_Nil(null)))); case "RIf": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "If", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h3), Prelude_Nil(null)))))); case "RDo": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "DO", Prelude__$3A$3A_(null, "FIXME", Prelude_Nil(null)))); case "RHole": return "?"; case "RImplicit": return "_"; case "RCase": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Case", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_RCaseAlt))(_$$0.h2), Prelude_Nil(null))))); case "RLit": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "RLit", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Literal)(_$$0.h1), Prelude_Nil(null)))); case "RAnn": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "RAnn", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); case "RLet": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Let", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, " : ", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, " = ", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h3), Prelude__$3A$3A_(null, " in ", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h4), Prelude_Nil(null)))))))))); case "RPi": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Pi", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h3), Prelude_Nil(null)))))); case "RU": return "U"; case "RApp": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "App", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_$$0.h3), Prelude_Nil(null)))))); case "RLam": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Lam", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); case "RVar": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "RVar", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude_Nil(null)))); } }; const Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw = Prelude_MkShow(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow); +const Lib_Types_names = ( _$$0 ) => (Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0))); const Lib_Elab_REC_freshMeta_applyBDs = ( arg ) => { const _sc$$0 = arg.h7; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "Defined": return { tag: "Lib.Elab.freshMeta.applyBDs", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(arg.h5), h6: arg.h6, h7: _sc$$0.h2 }; case "Bound": return { tag: "return", h0: Lib_Types_App(Lib_Common_emptyFC, Lib_Elab_freshMeta_applyBDs(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(arg.h5), arg.h6, _sc$$0.h2), Lib_Types_Bnd(Lib_Common_emptyFC, arg.h5)) }; } break; } case "Nil": return { tag: "return", h0: arg.h6 }; } }; const Lib_Elab_freshMeta_applyBDs = ( _, _1, _2, _3, _4, _$$5, _$$6, _$$7 ) => (bouncer(Lib_Elab_REC_freshMeta_applyBDs, { tag: "Lib.Elab.freshMeta.applyBDs", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _$$5, h6: _$$6, h7: _$$7 })); -const Lib_Elab_freshMeta = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("fresh meta ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Types__next(mc))))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$2)))(" ("))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaKind)(_$$3)))(")"))), ( _ ) => { const qn = Lib_Common_QN(Lib_Types__ns(top), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("$m")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Types__next(mc))))("")); const newmeta = Lib_Types_Unsolved(_$$1, qn, _$$0, _$$2, _$$3, Prelude_Nil(null)); let autos; switch (_$$3) { case "AutoSolve": { autos = Prelude__$3A$3A_(null, qn, Lib_Types__autos(mc)); break; } default: { autos = Lib_Types__autos(mc); break; } } return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), Lib_Types_MC(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, qn, newmeta, Lib_Types__metas(mc)), autos, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Types__next(mc)), Lib_Types__mcmode(mc))), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Elab_freshMeta_applyBDs(_$$0, _$$1, _$$2, _$$3, null, 0, Lib_Types_Meta(_$$1, qn), Lib_Types__bds(_$$0))))); })))))); +const Lib_Elab_freshMeta = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("fresh meta ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Types__next(mc))))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$2)))(" ("))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaKind)(_$$3)))(")"))), ( _ ) => { const qn = Lib_Common_QN(Lib_Types__ns(top), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("$m")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Types__next(mc))))("")); const newmeta = Lib_Types_Unsolved(_$$1, qn, _$$0, _$$2, _$$3, Prelude_Nil(null)); let autos; switch (_$$3) { case "AutoSolve": { autos = Prelude__$3A$3A_(null, qn, Lib_Types__autos(mc)); break; } default: { autos = Lib_Types__autos(mc); break; } } return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top1 ) => (Lib_Types_MkTop(Lib_Types__modules(top1), Lib_Types__imported(top1), Lib_Types__hints(top1), Lib_Types__ns(top1), Lib_Types__defs(top1), Lib_Types_MC(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, qn, newmeta, Lib_Types__metas(mc)), autos, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Types__next(mc)), Lib_Types__mcmode(mc)), Lib_Types__verbose(top1), Lib_Types__errors(top1), Lib_Types__ops(top1)))), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Elab_freshMeta_applyBDs(_$$0, _$$1, _$$2, _$$3, null, 0, Lib_Types_Meta(_$$1, qn), Lib_Types__bds(_$$0))))); }); })); const Lib_Elab_insert = ( ctx$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_forceMeta(_$$2), ( ty$27 ) => { switch (ty$27.tag) { case "VPi": { const _sc$$0 = ty$27.h2; switch (_sc$$0) { case "Auto": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_freshMeta(ctx$$0, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), ty$27.h4, "AutoSolve"), ( m ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("INSERT Auto ")(Lib_Elab_rpprint(Lib_Types_names(ctx$$0), m)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty$27.h4)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TM ")(Lib_Elab_rpprint(Lib_Types_names(ctx$$0), _$$1)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(ctx$$0), "CBN", m), ( mv ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(ty$27.h5, mv), ( bapp ) => (Lib_Elab_insert(ctx$$0, Lib_Types_App(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), _$$1, m), bapp))))))))))); case "Implicit": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_freshMeta(ctx$$0, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), ty$27.h4, "Normal"), ( m ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("INSERT ")(Lib_Elab_rpprint(Lib_Types_names(ctx$$0), m)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty$27.h4)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TM ")(Lib_Elab_rpprint(Lib_Types_names(ctx$$0), _$$1)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(ctx$$0), "CBN", m), ( mv ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(ty$27.h5, mv), ( bapp ) => (Lib_Elab_insert(ctx$$0, Lib_Types_App(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), _$$1, m), bapp))))))))))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _$$1, ty$27)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _$$1, ty$27)); } })); const Lib_Types_Prelude_Show$20Lib_Types_ConInfo$2Cshow = ( _$$0 ) => { switch (_$$0) { case "EnumCon": return "[E]"; case "ZeroCon": return "[Z]"; case "SuccCon": return "[S]"; case "NormalCon": return ""; } }; const Lib_Types_Prelude_Show$20Lib_Types_ConInfo = Prelude_MkShow(null, Lib_Types_Prelude_Show$20Lib_Types_ConInfo$2Cshow); @@ -854,16 +841,23 @@ const Prelude_REC_nub = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) const Prelude_nub = ( a$$0, _$$1, _$$2 ) => (bouncer(Prelude_REC_nub, { tag: "Prelude.nub", h0: a$$0, h1: _$$1, h2: _$$2 })); const Lib_Elab_buildLitCases = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { const lits = Prelude_nub(null, Lib_Types_Prelude_Eq$20Lib_Types_Literal, Lib_Elab_getLits(_$$3, Lib_Elab__clauses(_$$1))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_buildLitCase(_$$0, _$$1, _$$2, _$$3, _$$4, eta)))(lits), ( alts ) => { const defclauses = Prelude_filter(null, ( eta ) => (Lib_Elab_buildLitCases_isDefault(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)), Lib_Elab__clauses(_$$1)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, defclauses))(0), ( _ ) => (Lib_Types_error(null, _$$2, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no default for literal slot on ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$3)))("")))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(_$$0, Lib_Elab_MkProb(defclauses, Lib_Elab__ty(_$$1))), ( tm ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(alts)(Prelude__$3A$3A_(null, Lib_Types_CaseDefault(tm), Prelude_Nil(null)))))))); }); }; const Lib_Elab_litTyName = ( _$$0 ) => { switch (_$$0.tag) { case "LChar": return Lib_Elab_charType; case "LInt": return Lib_Elab_intType; case "LString": return Lib_Elab_stringType; } }; +const Lib_Elab_REC_makeSpine = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "Defined": return { tag: "Lib.Elab.makeSpine", h0: Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), h1: _sc$$0.h2 }; case "Bound": return { tag: "return", h0: Prelude__$3A$3C_(null, Lib_Elab_makeSpine(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), _sc$$0.h2), Lib_Types_VVar(Lib_Common_emptyFC, Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arg.h0)(1), Prelude_Lin(null))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Lin(null) }; } }; +const Lib_Elab_makeSpine = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_makeSpine, { tag: "Lib.Elab.makeSpine", h0: _$$0, h1: _$$1 })); +const Lib_Elab_REC_isCandidate = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "Pi": { const _sc$$1 = _sc$$0.h2; switch (_sc$$1) { case "Explicit": return { tag: "return", h0: "False" }; default: return { tag: "Lib.Elab.isCandidate", h0: arg.h0, h1: _sc$$0.h5 }; } break; } case "App": return { tag: "Lib.Elab.isCandidate", h0: arg.h0, h1: _sc$$0.h1 }; case "Ref": { const _sc$$1 = arg.h0; switch (_sc$$1.tag) { case "VRef": return { tag: "return", h0: Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$1.h1)(_sc$$0.h1) }; default: return { tag: "return", h0: "False" }; } break; } default: return { tag: "return", h0: "False" }; } }; +const Lib_Elab_isCandidate = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_isCandidate, { tag: "Lib.Elab.isCandidate", h0: _$$0, h1: _$$1 })); +const Lib_Elab_contextMatches_go = ( _, _1, _2, _$$3 ) => { switch (_$$3.tag) { case "_::_": { const _sc$$0 = _$$3.h1; const _sc$$1 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( type ) => { const sc$$16 = Lib_Elab_isCandidate(_1, type); switch (sc$$16) { case "False": return Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY context ")(_sc$$1.h2))(" : "))(Lib_Elab_rpprint(Lib_Types_names(_), type)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_1)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(_1), _, _1, _sc$$1.h3), ( _4 ) => { const mc$27 = Lib_Types__metaCtx(top); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Lib_Types__modules($$ru), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), mc, Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$0.h2), ( tm ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, Prelude__$2C_(null, null, tm, _sc$$1.h3), eta)), Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2)))))); }))), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_1)))(" "))(Lib_Elab_rpprint(Lib_Types_names(_), type)))(" "))(Lib_Common_showError("", err)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Lib_Types__modules($$ru), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), mc, Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _4 ) => (Lib_Elab_contextMatches_go(_, _1, _2, _$$3.h2))))))); }); } }); break; } case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)); } }; +const Lib_Elab_contextMatches = ( _$$0, _$$1 ) => (Lib_Elab_contextMatches_go(_$$0, _$$1, null, Prelude_zip(null, null, Lib_Types__env(_$$0), Lib_Types__types(_$$0)))); +const Lib_Elab_trySolveAuto = ( _$$0 ) => { switch (_$$0.tag) { case "Unsolved": { const _sc$$0 = _$$0.h4; switch (_sc$$0) { case "AutoSolve": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRYAUTO solving ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0.h1)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$0.h3)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_$$0.h2), _$$0.h3), ( x ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", x), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("AUTO ---> ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_contextMatches(_$$0.h2, ty), ( $$sc ) => { switch ($$sc.tag) { case "_::_": { const _sc$$1 = $$sc.h1; const _sc$$2 = $$sc.h2; switch (_sc$$2.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(ty), _$$0.h2, ty, _sc$$1.h3), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", _sc$$1.h2), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLUTION ")(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" evaled to "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(""))), ( _3 ) => { const sp = Lib_Elab_makeSpine(Lib_Types__lvl(_$$0.h2), Lib_Types__bds(_$$0.h2)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solve(Lib_Types__env(_$$0.h2), _$$0.h1, sp, val), ( _4 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("True"))); }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Lib_Prettier_render(90, Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Lib_Types_pprint(Prelude_Nil(null), eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)))($$sc)))))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } break; } case "Nil": switch (ty.tag) { case "VRef": { const cands = Prelude_fromMaybe(null, Prelude_Nil(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, ty.h1, Lib_Types__hints(top))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_findMatches(_$$0.h2, ty, cands), ( $$sc1 ) => { switch ($$sc1.tag) { case "_::_": { const _sc$$1 = $$sc1.h2; switch (_sc$$1.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0.h2, Lib_Syntax_RVar(_$$0.h0, $$sc1.h1), ty), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0.h2), "CBN", tm), ( val ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SOLUTION ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" evaled to "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(val)))(""))), ( _2 ) => { const sp = Lib_Elab_makeSpine(Lib_Types__lvl(_$$0.h2), Lib_Types__bds(_$$0.h2)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solve(Lib_Types__env(_$$0.h2), _$$0.h1, sp, val), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("True"))); }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))($$sc1)))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("FAILED to solve ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(", matches: "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))($$sc1)))(""))), ( _2 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"))); } }); break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } break; } }))))))))))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } }; const Lib_Elab_solveAutos_isAuto_run = ( _, _1, _$$2 ) => { switch (_$$2.tag) { case "_::_": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_trySolveAuto(_$$2.h1), ( res ) => { switch (res) { case "False": return Lib_Elab_solveAutos_isAuto_run(_, _1, _$$2.h2); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("True"); } }); case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("False"); } }; const Lib_Elab_solveAutos_isAuto = ( _, _$$1 ) => { switch (_$$1.tag) { case "Unsolved": { const _sc$$0 = _$$1.h4; switch (_sc$$0) { case "AutoSolve": return "True"; default: return "False"; } break; } default: return "False"; } }; -const Lib_Elab_solveAutos = Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const autos = Prelude_filter(null, ( eta ) => (Lib_Elab_solveAutos_isAuto(null, eta)), Prelude_mapMaybe(null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, eta, eta1))), Lib_Types__metas(mc), eta)), Lib_Types__autos(mc))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos_isAuto_run(null, null, autos), ( res ) => { switch (res) { case "False": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "True": return Lib_Elab_solveAutos; } }); }))); +const Lib_Elab_solveAutos = Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const autos = Prelude_filter(null, ( eta ) => (Lib_Elab_solveAutos_isAuto(null, eta)), Prelude_mapMaybe(null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, eta, eta1))), Lib_Types__metas(mc), eta)), Lib_Types__autos(mc))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos_isAuto_run(null, null, autos), ( res ) => { switch (res) { case "False": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "True": return Lib_Elab_solveAutos; } }); }); const Lib_Elab_REC_lookupName_go = ( arg ) => { const _sc$$0 = arg.h4; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$12 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h2)(arg.h1); switch (sc$$12) { case "False": return { tag: "Lib.Elab.lookupName.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(arg.h3), h4: _sc$$0.h2 }; case "True": return { tag: "return", h0: Prelude_Just(null, Prelude__$2C_(null, null, Lib_Types_Bnd(Lib_Common_emptyFC, arg.h3), _sc$$1.h3)) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nothing(null) }; } }; const Lib_Elab_lookupName_go = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Lib_Elab_REC_lookupName_go, { tag: "Lib.Elab.lookupName.go", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); const Lib_Elab_lookupName = ( _$$0, _$$1 ) => (Lib_Elab_lookupName_go(_$$0, _$$1, null, 0, Lib_Types__types(_$$0))); const Lib_Elab_REC_findSplit = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "PatLit": return { tag: "return", h0: Prelude_Just(null, _sc$$0.h1) }; case "PatCon": return { tag: "return", h0: Prelude_Just(null, _sc$$0.h1) }; default: return { tag: "Lib.Elab.findSplit", h0: _sc$$0.h2 }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nothing(null) }; } }; const Lib_Elab_findSplit = ( _$$0 ) => (bouncer(Lib_Elab_REC_findSplit, { tag: "Lib.Elab.findSplit", h0: _$$0 })); const Lib_Elab_introClause = ( _$$0, _$$1, _$$2 ) => { const _sc$$0 = _$$2.h2; switch (_sc$$0.tag) { case "_::_": { const sc$$10 = Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit)(_$$1)(Lib_Syntax_getIcit(_sc$$0.h1)); switch (sc$$10) { case "False": { const sc$$11 = Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit)(_$$1)("Implicit"); switch (sc$$11) { case "False": { const sc$$12 = Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit)(_$$1)("Auto"); switch (sc$$12) { case "False": return Lib_Types_error(null, _$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Explicit arg and ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(Lib_Syntax_getIcit(_sc$$0.h1))))(" pattern "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$0.h1)))("")); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(_$$2.h0, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, Lib_Syntax_PatWild(_$$2.h0, "Auto")), _$$2.h1), Prelude__$3A$3A_(null, _sc$$0.h1, _sc$$0.h2), _$$2.h3)); } break; } case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(_$$2.h0, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, Lib_Syntax_PatWild(_$$2.h0, "Implicit")), _$$2.h1), Prelude__$3A$3A_(null, _sc$$0.h1, _sc$$0.h2), _$$2.h3)); } break; } case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(_$$2.h0, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, _sc$$0.h1), _$$2.h1), _sc$$0.h2, _$$2.h3)); } break; } case "Nil": switch (_$$1) { case "Auto": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(_$$2.h0, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, Lib_Syntax_PatWild(_$$2.h0, "Auto")), _$$2.h1), Prelude_Nil(null), _$$2.h3)); case "Implicit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(_$$2.h0, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, Lib_Syntax_PatWild(_$$2.h0, "Implicit")), _$$2.h1), Prelude_Nil(null), _$$2.h3)); default: return Lib_Types_error(null, _$$2.h0, "Clause size doesn't match"); } break; } }; -const Lib_Elab_buildTree = ( _$$0, _$$1 ) => { const _sc$$0 = _$$1.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = _sc$$1.h2; switch (_sc$$2.tag) { case "_::_": { const _sc$$3 = _$$1.h1; switch (_sc$$3.tag) { case "VPi": { const l = Prelude_length$27(null, Lib_Types__env(_$$0)); const nm = Lib_Elab_fresh(_$$0, _sc$$3.h1); const ctx$27 = Lib_Types_extend(_$$0, nm, _sc$$3.h4); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_introClause(nm, _sc$$3.h2, eta)))(Lib_Elab__clauses(_$$1)), ( clauses ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$3.h5, Lib_Types_VVar(_sc$$1.h0, l, Prelude_Lin(null))), ( vb ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_Types_Lam(_sc$$1.h0, nm, _sc$$3.h2, _sc$$3.h3, eta)), Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, vb))))))); break; } default: return Lib_Types_error(null, _sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Extra pattern variables ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern))(_sc$$1.h2)))("")); } break; } case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("buildTree ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_String, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)))(_sc$$1.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_sc$$1.h3)))(""))), ( _ ) => { const sc$$13 = Lib_Elab_findSplit(_sc$$1.h1); switch (sc$$13.tag) { case "Just": { const _sc$$3 = sc$$13.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SPLIT on ")(_sc$$3.h2))(" because "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))(" "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3))))(""))), ( _1 ) => { const sc$$21 = Lib_Elab_lookupName(_$$0, _sc$$3.h2); switch (sc$$21.tag) { case "Just": { const _sc$$4 = sc$$21.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_unlet(Lib_Types__env(_$$0), _sc$$4.h3), ( eta ) => (Lib_Eval_forceType(Lib_Types__env(_$$0), eta))), ( scty$27 ) => { switch (scty$27.tag) { case "VMeta": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_lookupMeta(scty$27.h1), ( meta ) => { switch (meta.tag) { case "OutOfScope": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(scty$27); case "Solved": return Lib_Eval_forceType(Lib_Types__env(_$$0), scty$27); case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos, ( _2 ) => (Lib_Eval_forceType(Lib_Types__env(_$$0), scty$27))))))); } }), ( scty$271 ) => { const _sc$$5 = _sc$$3.h3; switch (_sc$$5.tag) { case "PatLit": { const tyname = Lib_Elab_litTyName(_sc$$5.h1); switch (scty$271.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, scty$271.h1, tyname), ( _2 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); } break; } case "PatCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("EXP ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" -> "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_getConstructors(_$$0, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(_sc$$3.h2, Lib_Elab__clauses(_$$1)); const sc$$39 = Prelude_partition(null, ( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, eta, eta1))), matched, eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)), cons); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_filterM(null, ( eta ) => (Lib_Elab_checkCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(cons))))(" matched "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(matched)))(" miss "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(sc$$39.h3)))(" miss' "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(miss$27)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)))(sc$$39.h2), ( alts ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("GOTALTS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_CaseAlt)))(alts)))(""))), ( _4 ) => { const alts$27 = Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, alts$27))(0), ( _5 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no alts for ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))("")))), ( _5 ) => { switch (miss$27.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildDefault(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(miss$27)), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_snoc(null, alts$27, $$sc))))); } }); }))))))); }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal error - tried to split on ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))("")); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(scty$27), ( scty$271 ) => { const _sc$$5 = _sc$$3.h3; switch (_sc$$5.tag) { case "PatLit": { const tyname = Lib_Elab_litTyName(_sc$$5.h1); switch (scty$271.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, scty$271.h1, tyname), ( _2 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); } break; } case "PatCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("EXP ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" -> "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_getConstructors(_$$0, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(_sc$$3.h2, Lib_Elab__clauses(_$$1)); const sc$$39 = Prelude_partition(null, ( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, eta, eta1))), matched, eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)), cons); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_filterM(null, ( eta ) => (Lib_Elab_checkCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(cons))))(" matched "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(matched)))(" miss "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(sc$$39.h3)))(" miss' "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(miss$27)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)))(sc$$39.h2), ( alts ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("GOTALTS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_CaseAlt)))(alts)))(""))), ( _4 ) => { const alts$27 = Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, alts$27))(0), ( _5 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no alts for ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))("")))), ( _5 ) => { switch (miss$27.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildDefault(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(miss$27)), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_snoc(null, alts$27, $$sc))))); } }); }))))))); }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal error - tried to split on ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))("")); } }); } }); break; } default: return Lib_Types_error(null, _sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: can't find ")(_sc$$3.h2))(" in environment")); } }); break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("checkDone ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_String, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)))(_sc$$1.h1)))(""))), ( _1 ) => (Lib_Elab_checkDone(_$$0, _sc$$1.h1, _sc$$1.h3, _$$1.h1))); } }); } break; } case "Nil": return Lib_Types_error(null, Lib_Common_emptyFC, "no clauses"); } }; +const Lib_Elab_buildTree = ( _$$0, _$$1 ) => { const _sc$$0 = _$$1.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = _sc$$1.h2; switch (_sc$$2.tag) { case "_::_": { const _sc$$3 = _$$1.h1; switch (_sc$$3.tag) { case "VPi": { const l = Prelude_length$27(null, Lib_Types__env(_$$0)); const nm = Lib_Elab_fresh(_$$0, _sc$$3.h1); const ctx$27 = Lib_Types_extend(_$$0, nm, _sc$$3.h4); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_introClause(nm, _sc$$3.h2, eta)))(Lib_Elab__clauses(_$$1)), ( clauses ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$3.h5, Lib_Types_VVar(_sc$$1.h0, l, Prelude_Lin(null))), ( vb ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_Types_Lam(_sc$$1.h0, nm, _sc$$3.h2, _sc$$3.h3, eta)), Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, vb))))))); break; } default: return Lib_Types_error(null, _sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Extra pattern variables ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern))(_sc$$1.h2)))("")); } break; } case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("buildTree ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_String, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)))(_sc$$1.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_sc$$1.h3)))(""))), ( _ ) => { const sc$$13 = Lib_Elab_findSplit(_sc$$1.h1); switch (sc$$13.tag) { case "Just": { const _sc$$3 = sc$$13.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SPLIT on ")(_sc$$3.h2))(" because "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))(" "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3))))(""))), ( _1 ) => { const sc$$21 = Lib_Elab_lookupName(_$$0, _sc$$3.h2); switch (sc$$21.tag) { case "Just": { const _sc$$4 = sc$$21.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_unlet(Lib_Types__env(_$$0), _sc$$4.h3), ( eta ) => (Lib_Eval_forceType(Lib_Types__env(_$$0), eta))), ( scty$27 ) => { switch (scty$27.tag) { case "VMeta": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_lookupMeta(scty$27.h1), ( meta ) => { switch (meta.tag) { case "OutOfScope": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(scty$27); case "Solved": return Lib_Eval_forceType(Lib_Types__env(_$$0), scty$27); case "Unsolved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos, ( _2 ) => (Lib_Eval_forceType(Lib_Types__env(_$$0), scty$27))); } }), ( scty$271 ) => { const _sc$$5 = _sc$$3.h3; switch (_sc$$5.tag) { case "PatLit": { const tyname = Lib_Elab_litTyName(_sc$$5.h1); switch (scty$271.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, scty$271.h1, tyname), ( _2 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); } break; } case "PatCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("EXP ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" -> "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_getConstructors(_$$0, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(_sc$$3.h2, Lib_Elab__clauses(_$$1)); const sc$$39 = Prelude_partition(null, ( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, eta, eta1))), matched, eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)), cons); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_filterM(null, ( eta ) => (Lib_Elab_checkCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(cons))))(" matched "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(matched)))(" miss "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(sc$$39.h3)))(" miss' "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(miss$27)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)))(sc$$39.h2), ( alts ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("GOTALTS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_CaseAlt)))(alts)))(""))), ( _4 ) => { const alts$27 = Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, alts$27))(0), ( _5 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no alts for ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))("")))), ( _5 ) => { switch (miss$27.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildDefault(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(miss$27)), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_snoc(null, alts$27, $$sc))))); } }); }))))))); }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal error - tried to split on ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))("")); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(scty$27), ( scty$271 ) => { const _sc$$5 = _sc$$3.h3; switch (_sc$$5.tag) { case "PatLit": { const tyname = Lib_Elab_litTyName(_sc$$5.h1); switch (scty$271.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, scty$271.h1, tyname), ( _2 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" and got "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(tyname)))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildLitCases(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, _sc$$4.h3), ( alts ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, alts)))))); } break; } case "PatCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("EXP ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$4.h3)))(" -> "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_getConstructors(_$$0, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(_sc$$3.h2, Lib_Elab__clauses(_$$1)); const sc$$39 = Prelude_partition(null, ( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_flip(null, null, null, ( eta ) => (( eta1 ) => (Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, eta, eta1))), matched, eta)), ( eta ) => (Prelude_fst(null, null, eta)), eta)), cons); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_filterM(null, ( eta ) => (Lib_Elab_checkCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CONS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(cons))))(" matched "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(matched)))(" miss "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(sc$$39.h3)))(" miss' "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm))))(miss$27)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, _sc$$3.h2, scty$271, eta)))(sc$$39.h2), ( alts ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("GOTALTS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_CaseAlt)))(alts)))(""))), ( _4 ) => { const alts$27 = Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, alts$27))(0), ( _5 ) => (Lib_Types_error(null, _sc$$5.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no alts for ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty$271)))("")))), ( _5 ) => { switch (miss$27.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), alts))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildDefault(_$$0, _$$1, _sc$$5.h0, _sc$$3.h2, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(miss$27)), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Case(_sc$$5.h0, _sc$$4.h2, Prelude_snoc(null, alts$27, $$sc))))); } }); }))))))); }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_sc$$3.h3), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal error - tried to split on ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)(_sc$$3.h3)))("")); } }); } }); break; } default: return Lib_Types_error(null, _sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: can't find ")(_sc$$3.h2))(" in environment")); } }); break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("checkDone ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Prelude_Prelude_Show$20Prim_String, Lib_Syntax_Prelude_Show$20Lib_Syntax_Pattern)))(_sc$$1.h1)))(""))), ( _1 ) => (Lib_Elab_checkDone(_$$0, _sc$$1.h1, _sc$$1.h3, _$$1.h1))); } }); } break; } case "Nil": return Lib_Types_error(null, Lib_Common_emptyFC, "no clauses"); } }; const Lib_Types_withPos = ( _$$0, _$$1 ) => (Lib_Types_MkCtx(_$$0.h0, _$$0.h1, _$$0.h2, _$$0.h3, _$$1)); const Lib_Syntax_PatCon = ( h0, h1, h2, h3, h4 ) => ({ tag: "PatCon", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Syntax_PatLit = ( h0, h1 ) => ({ tag: "PatLit", h0: h0, h1: h1 }); @@ -898,7 +892,7 @@ const Lib_Util_MkBinder = ( h0, h1, h2, h3, h4 ) => ({ tag: "MkBinder", h0: h0, const Lib_Util_REC_splitTele_go = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "Pi": return { tag: "Lib.Util.splitTele.go", h0: arg.h0, h1: Prelude__$3A$3A_(null, Lib_Util_MkBinder(_sc$$0.h0, _sc$$0.h1, _sc$$0.h2, _sc$$0.h3, _sc$$0.h4), arg.h1), h2: _sc$$0.h5 }; default: return { tag: "return", h0: Prelude__$2C_(null, null, arg.h2, Prelude_reverse(null)(arg.h1)) }; } }; const Lib_Util_splitTele_go = ( _, _$$1, _$$2 ) => (bouncer(Lib_Util_REC_splitTele_go, { tag: "Lib.Util.splitTele.go", h0: _, h1: _$$1, h2: _$$2 })); const Lib_Util_splitTele = ( eta ) => (Lib_Util_splitTele_go(null, Prelude_Nil(null), eta)); -const Lib_Elab_REC_findMatches = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$10 = Lib_Elab_isCandidate(arg.h1, _sc$$1.h3); switch (sc$$10) { case "False": return { tag: "Lib.Elab.findMatches", h0: arg.h0, h1: arg.h1, h2: _sc$$0.h2 }; case "True": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const fc = Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(arg.h1); return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h2)))(" : "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h3)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _ ) => { const _sc$$2 = _sc$$1.h2; const sc$$18 = Lib_Util_splitTele(_sc$$1.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), ( mc1 ) => (Lib_Types_MC(Lib_Types__metas(mc1), Lib_Types__autos(mc1), Lib_Types__next(mc1), "CheckFirst"))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, _sc$$2.h1), arg.h1), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Found ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _3 ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, _sc$$2.h1, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2)))))))))); }), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(" "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h3)))(" "))(Lib_Common_showError("", err)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2))))))); }))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)) }; } }; +const Lib_Elab_REC_findMatches = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$10 = Lib_Elab_isCandidate(arg.h1, _sc$$1.h3); switch (sc$$10) { case "False": return { tag: "Lib.Elab.findMatches", h0: arg.h0, h1: arg.h1, h2: _sc$$0.h2 }; case "True": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const fc = Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(arg.h1); return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h2)))(" : "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h3)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _ ) => { const _sc$$2 = _sc$$1.h2; const sc$$18 = Lib_Util_splitTele(_sc$$1.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_setMetaMode("CheckFirst"), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, _sc$$2.h1), arg.h1), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Found ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Lib_Types__modules($$ru), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), mc, Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _3 ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, _sc$$2.h1, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2)))))))))); }), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(" "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h3)))(" "))(Lib_Common_showError("", err)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Lib_Types__modules($$ru), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), mc, Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2))))))); }) }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)) }; } }; const Lib_Elab_findMatches = ( _$$0, _$$1, _$$2 ) => (bouncer(Lib_Elab_REC_findMatches, { tag: "Lib.Elab.findMatches", h0: _$$0, h1: _$$1, h2: _$$2 })); const Lib_ProcessDecl_dumpEnv_isVar = ( _, _1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "VVar": { const _sc$$0 = _$$3.h2; switch (_sc$$0.tag) { case "Lin": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$2)(_$$3.h1); default: return "False"; } break; } default: return "False"; } }; const Lib_ProcessDecl_dumpEnv_isVar_go = ( _, _1, _2, _$$3, _$$4, _$$5, _$$6 ) => { switch (_$$5.tag) { case "_::_": { const _sc$$0 = _$$5.h1; const _sc$$1 = _sc$$0.h3; const sc$$18 = Lib_ProcessDecl_dumpEnv_isVar(_, _1, _$$4, _sc$$0.h2); switch (sc$$18) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$0.h2), ( v$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _1, _2, _$$3, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(_$$4), _$$5.h2, Prelude__$3A$3A_(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" ")(_sc$$1.h2))(" = "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, v$27))))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, ty$27))))(""), _$$6)))))); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _1, _2, _$$3, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(_$$4), _$$5.h2, Prelude__$3A$3A_(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" ")(_sc$$1.h2))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, ty$27))))(""), _$$6)))); } break; } case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$6); } }; @@ -933,9 +927,9 @@ const Lib_Eval_zonk = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case " const Lib_Types_mkCtx = ( _$$0 ) => (Lib_Types_MkCtx(0, Prelude_Nil(null), Prelude_Nil(null), Prelude_Nil(null), _$$0)); const Lib_Types__fc = ( _$$0 ) => (_$$0.h0); const Lib_ProcessDecl_checkAlreadyDef = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$3 = Lib_TopContext_lookupRaw(_$$1, top); switch (sc$$3.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Lib_Types_error(null, _$$0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$1)))(" is already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$3.h1))))("")); } })); -const Lib_ProcessDecl_processTypeSig = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(_$$1, eta)))(_$$2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), ty), ( ty1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TypeSig ")(Data_String_unwords(_$$2)))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty1))))(""))), ( _2 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$2, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1, ty1, Lib_Types_Axiom, Prelude_Nil(null)))))))))))))))))))); +const Lib_ProcessDecl_processTypeSig = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(_$$1, eta)))(_$$2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), ty), ( ty1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TypeSig ")(Data_String_unwords(_$$2)))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty1))))(""))), ( _2 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$2, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1, ty1, Lib_Types_Axiom, Prelude_Nil(null))))))))))))); })))); const Lib_TopContext_updateDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$5.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" not declared")); case "Just": { const _sc$$0 = sc$$5.h1; return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_sc$$0.h0, _$$0, _$$2, _$$3, _sc$$0.h4), $$case.h4); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, $$case.h3, defs, $$case.h5, $$case.h6, $$case.h7, $$case.h8); }); break; } } })); -const Lib_ProcessDecl_processDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Def ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$8 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$8.tag) { case "Nothing": return Lib_Types_throwError(null, Lib_Common_E(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No declaration for ")(_$$2))(""))); case "Just": { const _sc$$0 = sc$$8.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check ")(_$$2))(" at "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( vty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$2))(" vty is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(vty)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(Lib_Elab_makeClause)(_$$3), ( clauses$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(Lib_Types_mkCtx(_sc$$0.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos, ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), tm), ( tm$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("NF\n")(Lib_Prettier_render(80, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(""))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Add def ")(_$$2))(" "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _6 ) => (Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _sc$$0.h0, _sc$$0.h2, Lib_Types_Fn(tm$27)))))))))))))))))))); default: return Lib_Types_throwError(null, Lib_Common_E(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$2))(" already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$8.h1))))(""))); } break; } } })))))))); +const Lib_ProcessDecl_processDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Def ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); const sc$$8 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$8.tag) { case "Nothing": return Lib_Types_throwError(null, Lib_Common_E(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No declaration for ")(_$$2))(""))); case "Just": { const _sc$$0 = sc$$8.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check ")(_$$2))(" at "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( vty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$2))(" vty is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(vty)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(Lib_Elab_makeClause)(_$$3), ( clauses$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(Lib_Types_mkCtx(_sc$$0.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos, ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), tm), ( tm$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("NF\n")(Lib_Prettier_render(80, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(""))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Add def ")(_$$2))(" "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _6 ) => (Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _sc$$0.h0, _sc$$0.h2, Lib_Types_Fn(tm$27)))))))))))))))))))); default: return Lib_Types_throwError(null, Lib_Common_E(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$2))(" already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$8.h1))))(""))); } break; } } })))))); const Lib_Eval_nfv = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBV", _$$1), ( eta ) => (Lib_Eval_quote(Prelude_length$27(null, _$$0), eta)))); const Lib_Eval_nf = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBN", _$$1), ( eta ) => (Lib_Eval_quote(Prelude_length$27(null, _$$0), eta)))); const Lib_ProcessDecl_processCheck = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("----- DCheck")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_info(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$2)))(" at "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$3)))("")), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( ty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" got type ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", ty$27), ( vty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$2, vty), ( res ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" got ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), res))))("")), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_nf(Prelude_Nil(null), res), ( norm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" NF ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), norm))))("")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_nfv(Prelude_Nil(null), res), ( norm1 ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" NFV ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), norm1))))(""))))))))))))))))))))))))); @@ -953,7 +947,7 @@ const Prelude_Prelude_Applicative$20Prelude_Maybe = Prelude_MkApplicative(null, const Lib_ProcessDecl_populateConInfo = ( _$$0 ) => { const sc$$5 = Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Prelude_Prelude_Applicative$20Prelude_Maybe)(( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum(_$$0, null, null, eta)))(_$$0); switch (sc$$5.tag) { case "Nothing": switch (_$$0.tag) { case "_::_": { const _sc$$0 = _$$0.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h2; switch (_sc$$1.tag) { case "Nil": { const sc$$15 = Prelude_find(null, ( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero_isSucc(_$$0, null, null, null, null, eta)), _$$0); switch (sc$$15.tag) { case "Just": { const sc$$18 = Prelude_find(null, ( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero(_$$0, null, null, null, eta)), _$$0); switch (sc$$18.tag) { case "Just": return Prelude__$3A$3A_(null, Lib_ProcessDecl_populateConInfo_setInfo(_$$0, null, sc$$18.h1, "ZeroCon"), Prelude__$3A$3A_(null, Lib_ProcessDecl_populateConInfo_setInfo(_$$0, null, sc$$15.h1, "SuccCon"), Prelude_Nil(null))); default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; case "Just": return sc$$5.h1; } }; const Lib_Elab_getArity = ( _$$0 ) => { switch (_$$0.tag) { case "Pi": return Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Elab_getArity(_$$0.h5)); default: return 0; } }; const Lib_ProcessDecl_processData_binderName = ( _, _1, _2, _3, _4, _5, _$$6 ) => (_$$6.h1); -const Lib_ProcessDecl_processData = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Data ")(_$$2))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( tyty ) => { const sc$$12 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$12.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_Axiom, Prelude_Nil(null)), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); case "Just": { const _sc$$0 = sc$$12.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", tyty), ( tyty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( type$27 ) => (Lib_Elab_unifyCatch(_$$1, Lib_Types_mkCtx(_$$1), tyty$27, type$27))))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(" already declared")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); } break; } } })))))))))); +const Lib_ProcessDecl_processData = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Data ")(_$$2))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mc = Lib_Types__metaCtx(top); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( tyty ) => { const sc$$12 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$12.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_Axiom, Prelude_Nil(null)), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); case "Just": { const _sc$$0 = sc$$12.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", tyty), ( tyty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( type$27 ) => (Lib_Elab_unifyCatch(_$$1, Lib_Types_mkCtx(_$$1), tyty$27, type$27))))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(" already declared")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _5 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$2)), ( _6 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); } break; } } }); })))))); const Lib_Syntax_wrap = ( _$$0, _$$1 ) => { switch (_$$0) { case "Auto": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("{{"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text("}}"))); case "Explicit": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text(")"))); case "Implicit": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("{"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text("}"))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par = ( _, _1, _$$2, _$$3, _$$4 ) => { const sc$$5 = Prelude__$3C_(null, Prelude_Prelude_Ord$20Prim_Int, _$$3, _$$2); switch (sc$$5) { case "False": return _$$4; case "True": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$4)(Lib_Prettier_text(")"))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Types_Literal$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case "LChar": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Char)(_$$0.h0)); case "LInt": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h0)); case "LString": return Lib_Prettier_text(_$$0.h0); } }; @@ -1263,7 +1257,7 @@ const Node_readFile = (fn) => (w) => { return Prelude_MkIORes(null, result, w) }; const Lib_Types_emptyModCtx = ( _$$0 ) => (Lib_Types_MkModCtx(_$$0, Data_SortedMap_EmptyMap(null, null), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "NoCheck"), Data_SortedMap_EmptyMap(null, null))); -const Main_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modns = Prelude_snoc(null, _$$3.h0, _$$3.h1); const name = Prelude_joinBy(".", modns); const sc$$10 = Data_SortedMap_lookupMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types__modules(top)); switch (sc$$10.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types_emptyModCtx(""), Lib_Types__modules(top)), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _ ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy("/", Prelude__$3A$3A_(null, _$$1, _$$3.h0)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("/")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(_$$3.h1)(".newt"))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Node_readFile(fn)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$19 = Lib_Tokenizer_tokenise(fn, $$sc.h2); switch (sc$$19.tag) { case "Right": { const sc$$23 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseModHeader, Lib_Types__ops(top), sc$$19.h2); switch (sc$$23.tag) { case "Right": { const _sc$$0 = sc$$23.h2; const _sc$$1 = _sc$$0.h2; const _sc$$2 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("scan imports for module ")(_sc$$1.h3))(""))), ( _1 ) => { const ns = Prelude_split(_sc$$1.h3, "."); const sc$$41 = Data_List1_unsnoc(null, Data_List1_split1(_sc$$1.h3, ".")); const sc$$46 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$3)(Lib_Common_QN(sc$$41.h2, sc$$41.h3)); switch (sc$$46) { case "True": { const sc$$47 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseImports, _sc$$2.h2, _sc$$2.h3); switch (sc$$47.tag) { case "Right": { const _sc$$3 = sc$$47.h2; const _sc$$4 = _sc$$3.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _sc$$3.h2, ( $$case ) => { const sc$$63 = Data_List1_unsnoc(null, Data_List1_split1($$case.h1, ".")); const qname = Lib_Common_QN(sc$$63.h2, sc$$63.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(null, Prelude_Prelude_Eq$20Prim_String, $$case.h1, _$$2), ( _2 ) => (Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("import loop ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(name)))(" -> "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$case.h1)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule($$case.h0, _$$1, Prelude__$3A$3A_(null, name, _$$2), qname), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_split($$case.h1, ".")))))); }), ( imported ) => { const imported1 = Prelude_snoc(null, imported, Main_primNS); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_checksum($$sc.h2)), ( srcSum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_moduleHash(srcSum, imported1), ( csum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("module ")(_sc$$1.h3))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_loadModule(_$$3, csum), ( $$sc1 ) => { switch ($$sc1.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("MODNS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(modns)))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_parseDecls(fn, Lib_Types__ops(top2), _sc$$4.h3, Prelude_Lin(null)), ( $$sc2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll")), ( freshMC ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top4 ) => (Lib_Types_MkTop(Lib_Types__modules(top4), imported1, Data_SortedMap_EmptyMap(null, null), modns, Data_SortedMap_EmptyMap(null, null), freshMC, Lib_Types__verbose(top4), Lib_Types__errors(top4), $$sc2.h3))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, imported1, ( ns1 ) => { const sc$$80 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), ns1, Lib_Types__modules(top3)); switch (sc$$80.tag) { case "Just": return Main_importHints(Data_SortedMap_listValues(null, null, Lib_Types__modDefs(sc$$80.h1))); default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("namespace ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(ns1)))(" missing")); } }), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Main_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, null, ns, eta)))(Lib_Elab_collectDecl($$sc2.h2)), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top4)), ( mc ) => { const mod = Lib_Types_MkModCtx(csum, Lib_Types__defs(top4), mc, Lib_Types__ops(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( errors ) => { const sc$$86 = Prelude__$26$26_(Prelude__$2F$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String), _$$2, Prelude_Nil(null)), Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, errors))(0)); switch (sc$$86) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(mc)))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for_(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, $$sc3, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError($$sc.h2, err)))), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(mc)))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for_(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, $$sc3, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError($$sc.h2, err)))), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); } }); }))))))))))))))))))))); case "Just": { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, $$sc1.h1, Lib_Types__modules(top1)); const ops = Data_SortedMap_foldMap(null, null, Prelude_Prelude_Ord$20Prim_String, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Lib_Types__ops(top1), Data_SortedMap_toList(null, null, Lib_Types__ctxOps($$sc1.h1))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), ops))), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); break; } } }))))))))); }); break; } case "Left": { const _sc$$3 = sc$$47.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$3.h2)); break; } } break; } default: return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$1.h2)))(": module name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$1.h3)))(" doesn't match file name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(fn)))("")); } }); break; } case "Left": { const _sc$$0 = sc$$23.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$0.h2)); break; } } break; } case "Left": return Node_exitFailure(null, Lib_Common_showError($$sc.h2, sc$$19.h2)); } break; } case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$0)))(": error reading "))(fn))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }); }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(""); } })); +const Main_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modns = Prelude_snoc(null, _$$3.h0, _$$3.h1); const name = Prelude_joinBy(".", modns); const sc$$10 = Data_SortedMap_lookupMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types__modules(top)); switch (sc$$10.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types_emptyModCtx(""), Lib_Types__modules(top)), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _ ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy("/", Prelude__$3A$3A_(null, _$$1, _$$3.h0)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("/")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(_$$3.h1)(".newt"))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Node_readFile(fn)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$19 = Lib_Tokenizer_tokenise(fn, $$sc.h2); switch (sc$$19.tag) { case "Right": { const sc$$23 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseModHeader, Lib_Types__ops(top), sc$$19.h2); switch (sc$$23.tag) { case "Right": { const _sc$$0 = sc$$23.h2; const _sc$$1 = _sc$$0.h2; const _sc$$2 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("scan imports for module ")(_sc$$1.h3))(""))), ( _1 ) => { const ns = Prelude_split(_sc$$1.h3, "."); const sc$$41 = Data_List1_unsnoc(null, Data_List1_split1(_sc$$1.h3, ".")); const sc$$46 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$3)(Lib_Common_QN(sc$$41.h2, sc$$41.h3)); switch (sc$$46) { case "True": { const sc$$47 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseImports, _sc$$2.h2, _sc$$2.h3); switch (sc$$47.tag) { case "Right": { const _sc$$3 = sc$$47.h2; const _sc$$4 = _sc$$3.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _sc$$3.h2, ( $$case ) => { const sc$$63 = Data_List1_unsnoc(null, Data_List1_split1($$case.h1, ".")); const qname = Lib_Common_QN(sc$$63.h2, sc$$63.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(null, Prelude_Prelude_Eq$20Prim_String, $$case.h1, _$$2), ( _2 ) => (Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("import loop ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(name)))(" -> "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$case.h1)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule($$case.h0, _$$1, Prelude__$3A$3A_(null, name, _$$2), qname), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_split($$case.h1, ".")))))); }), ( imported ) => { const imported1 = Prelude_snoc(null, imported, Main_primNS); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_checksum($$sc.h2)), ( srcSum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_moduleHash(srcSum, imported1), ( csum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("module ")(_sc$$1.h3))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_loadModule(_$$3, csum), ( $$sc1 ) => { switch ($$sc1.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("MODNS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(modns)))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_parseDecls(fn, Lib_Types__ops(top2), _sc$$4.h3, Prelude_Lin(null)), ( $$sc2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top3 ) => { const freshMC = Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll"); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top4 ) => (Lib_Types_MkTop(Lib_Types__modules(top4), imported1, Data_SortedMap_EmptyMap(null, null), modns, Data_SortedMap_EmptyMap(null, null), freshMC, Lib_Types__verbose(top4), Lib_Types__errors(top4), $$sc2.h3))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, imported1, ( ns1 ) => { const sc$$80 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), ns1, Lib_Types__modules(top3)); switch (sc$$80.tag) { case "Just": return Main_importHints(Data_SortedMap_listValues(null, null, Lib_Types__modDefs(sc$$80.h1))); default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("namespace ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(ns1)))(" missing")); } }), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Main_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, null, ns, eta)))(Lib_Elab_collectDecl($$sc2.h2)), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top4 ) => { const mod = Lib_Types_MkModCtx(csum, Lib_Types__defs(top4), Lib_Types__metaCtx(top4), Lib_Types__ops(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( errors ) => { const sc$$85 = Prelude__$26$26_(Prelude__$2F$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String), _$$2, Prelude_Nil(null)), Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, errors))(0)); switch (sc$$85) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, eta)), ( eta ) => (Lib_Common_showError($$sc.h2, eta)), eta)))($$sc3), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, eta)), ( eta ) => (Lib_Common_showError($$sc.h2, eta)), eta)))($$sc3), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); } }); }))))))))); }))))))); case "Just": { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, $$sc1.h1, Lib_Types__modules(top1)); const ops = Data_SortedMap_foldMap(null, null, Prelude_Prelude_Ord$20Prim_String, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Lib_Types__ops(top1), Data_SortedMap_toList(null, null, Lib_Types__ctxOps($$sc1.h1))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), ops))), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); break; } } }))))))))); }); break; } case "Left": { const _sc$$3 = sc$$47.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$3.h2)); break; } } break; } default: return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$1.h2)))(": module name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$1.h3)))(" doesn't match file name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(fn)))("")); } }); break; } case "Left": { const _sc$$0 = sc$$23.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$0.h2)); break; } } break; } case "Left": return Node_exitFailure(null, Lib_Common_showError($$sc.h2, sc$$19.h2)); } break; } case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$0)))(": error reading "))(fn))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }); }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(""); } })); const Lib_Util_REC_getBaseDir_baseDir = ( arg ) => { const _sc$$0 = arg.h4; switch (_sc$$0.tag) { case "_:<_": { const _sc$$1 = arg.h3; switch (_sc$$1.tag) { case "_:<_": { const sc$$11 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h2)(_sc$$0.h2); switch (sc$$11) { case "False": return { tag: "return", h0: Prelude_Left(null, null, "module path doesn't match directory") }; case "True": return { tag: "Lib.Util.getBaseDir.baseDir", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$1.h1, h4: _sc$$0.h1 }; } break; } case "Lin": return { tag: "return", h0: Prelude_Left(null, null, "module path doesn't match directory") }; } break; } case "Lin": return { tag: "return", h0: Prelude_Right(null, null, Prelude_joinBy("/", Prelude__$3C$3E$3E_(null, arg.h3, Prelude_Nil(null)))) }; } }; const Lib_Util_getBaseDir_baseDir = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Lib_Util_REC_getBaseDir_baseDir, { tag: "Lib.Util.getBaseDir.baseDir", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); const Prelude_mapFst = ( a$$0, b$$1, c$$2, f$$3, _$$4, _$$5, _$$6 ) => (Prelude_bimap(null, _$$4)(null)(null)(null)(null)(_$$5)(( eta ) => (Prelude_id(null, eta)))(_$$6)); @@ -1276,6 +1270,6 @@ const Main_cmdLine = ( _$$0 ) => (bouncer(Main_REC_cmdLine, { tag: "Main.cmdLine const Node_getArgs = (w) => Prelude_MkIORes(null, Prelude_arrayToList(null, process.argv.slice(1)), w); const Main_main$27 = Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Node_getArgs), ( $$sc ) => { switch ($$sc.tag) { case "_::_": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine($$sc.h2), ( $$sc1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(Main_processFile)($$sc1.h3), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(null, Prelude_Prelude_Eq$20Prim_String, "--top", $$sc.h2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_jsonTopContext, ( json ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TOP:")(Lib_Common_renderJson(json)))("")))))), ( _1 ) => { const _sc$$0 = $$sc1.h2; switch (_sc$$0.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Main_writeSource(_sc$$0.h1); } }))))); default: return Lib_Types_error(null, Lib_Common_emptyFC, "error reading args"); } }); const Prelude_List = ( h0 ) => ({ tag: "List", h0: h0 }); -const Lib_TopContext_emptyTop = ( io, _, _1 ) => (Prelude__$3E$3E$3D_(null, null, null, _, Data_IORef_newIORef(null, null, _1, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll")), ( mcctx ) => (Prelude__$3E$3E$3D_(null, null, null, _, Data_IORef_newIORef(null, null, _1, Prelude_the(Prelude_List(null), Prelude_Nil(null))), ( errs ) => (Prelude_pure(null, _)(null)(Lib_Types_MkTop(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), mcctx, 0, errs, Data_SortedMap_EmptyMap(null, null)))))))); -const Main_main = Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_TopContext_emptyTop(null, Prelude_Prelude_Monad$20Prelude_IO, Prelude_Prelude_HasIO$20Prelude_IO), ( ctx ) => (Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_Types__runM(null, Main_main$27)(ctx), ( $$sc ) => { switch ($$sc.tag) { case "Right": return Prelude_putStrLn(null, Prelude_Prelude_HasIO$20Prelude_IO, "done"); case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Common_Error)($$sc.h2))))(": "))(Lib_Types_errorMsg($$sc.h2)))("")); } }))); +const Lib_TopContext_emptyTop = (( ) => { const mcctx = Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll"); return ( io ) => (( _ ) => (( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, _, Data_IORef_newIORef(null, null, _1, Prelude_the(Prelude_List(null), Prelude_Nil(null))), ( errs ) => (Prelude_pure(null, _)(null)(Lib_Types_MkTop(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), mcctx, 0, errs, Data_SortedMap_EmptyMap(null, null)))))))); })(); +const Main_main = Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_TopContext_emptyTop(null)(Prelude_Prelude_Monad$20Prelude_IO)(Prelude_Prelude_HasIO$20Prelude_IO), ( ctx ) => (Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_Types__runM(null, Main_main$27)(ctx), ( $$sc ) => { switch ($$sc.tag) { case "Right": return Prelude_putStrLn(null, Prelude_Prelude_HasIO$20Prelude_IO, "done"); case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Common_Error)($$sc.h2))))(": "))(Lib_Types_errorMsg($$sc.h2)))("")); } }))); Main_main(); \ No newline at end of file diff --git a/src/Lib/Elab.newt b/src/Lib/Elab.newt index 8168937..6c057de 100644 --- a/src/Lib/Elab.newt +++ b/src/Lib/Elab.newt @@ -113,6 +113,10 @@ isCandidate (VRef _ nm _) (Ref fc nm') = nm == nm' isCandidate ty (App fc t u) = isCandidate ty t isCandidate _ _ = False +setMetaMode : MetaMode → M Unit +-- ideally we could do metaCtx.mcmode := CheckFirst +setMetaMode mcmode = modifyTop $ \top => [ metaCtx := [mcmode := mcmode] (top.metaCtx) ] top + findMatches : Context -> Val -> List (QName × Tm) -> M (List String) findMatches ctx ty Nil = pure Nil findMatches ctx ty ((name, type) :: xs) = do @@ -120,7 +124,8 @@ findMatches ctx ty ((name, type) :: xs) = do | False => findMatches ctx ty xs top <- getTop - mc <- readIORef top.metaCtx + -- save context + let mc = top.metaCtx catchError (do -- TODO sort out the FC here let fc = getFC ty @@ -128,14 +133,14 @@ findMatches ctx ty ((name, type) :: xs) = do -- This check is solving metas, so we save mc below in case we want this solution let (QN ns nm) = name let (cod, tele) = splitTele type - modifyIORef top.metaCtx $ \ mc => MC mc.metas mc.autos mc.next CheckFirst + setMetaMode CheckFirst tm <- check ctx (RVar fc nm) ty debug $ \ _ => "Found \{rpprint Nil tm} for \{show ty}" - writeIORef top.metaCtx mc + modifyTop [ metaCtx := mc ] (_::_ nm) <$> findMatches ctx ty xs) (\ err => do debug $ \ _ => "No match \{show ty} \{rpprint Nil type} \{showError "" err}" - writeIORef top.metaCtx mc + modifyTop [ metaCtx := mc ] findMatches ctx ty xs) contextMatches : Context -> Val -> M (List (Tm × Val)) @@ -147,17 +152,17 @@ contextMatches ctx ty = go (zip ctx.env ctx.types) type <- quote ctx.lvl vty let (True) = isCandidate ty type | False => go xs top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx catchError(do debug $ \ _ => "TRY context \{nm} : \{rpprint (names ctx) type} for \{show ty}" unifyCatch (getFC ty) ctx ty vty - mc' <- readIORef top.metaCtx - writeIORef top.metaCtx mc + let mc' = top.metaCtx + modifyTop [ metaCtx := mc] tm <- quote ctx.lvl tm (_::_ (tm, vty)) <$> go xs) (\ err => do debug $ \ _ => "No match \{show ty} \{rpprint (names ctx) type} \{showError "" err}" - writeIORef top.metaCtx mc + modifyTop [ metaCtx := mc] go xs) getArity : Tm -> Int @@ -211,7 +216,7 @@ trySolveAuto _ = pure False solveAutos : M Unit solveAutos = do top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx let autos = filter isAuto $ mapMaybe (flip lookupMap' mc.metas) mc.autos res <- run autos if res then solveAutos else pure MkUnit @@ -231,13 +236,13 @@ solveAutos = do updateMeta : QName -> (MetaEntry -> M MetaEntry) -> M Unit updateMeta ix f = do top <- getTop - mc <- readIORef {M} top.metaCtx + let mc = top.metaCtx let (Just me) = lookupMap' ix mc.metas | Nothing => pure MkUnit me <- f me let autos = case me of Solved _ _ _ => filter (_/=_ ix) mc.autos _ => mc.autos - writeIORef top.metaCtx $ MC (updateMap ix me mc.metas) autos mc.next mc.mcmode + modifyTop [ metaCtx := MC (updateMap ix me mc.metas) autos mc.next mc.mcmode ] checkAutos : QName -> List MetaEntry -> M Unit checkAutos ix Nil = pure MkUnit @@ -255,7 +260,7 @@ checkAutos ix (_ :: rest) = checkAutos ix rest addConstraint : Env -> QName -> SnocList Val -> Val -> M Unit addConstraint env ix sp tm = do top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx let (CheckAll) = mc.mcmode | _ => pure MkUnit updateMeta ix $ \case (Unsolved pos k a b c cons) => do @@ -263,8 +268,10 @@ addConstraint env ix sp tm = do pure (Unsolved pos k a b c (MkMc (getFC tm) env sp tm :: cons)) (Solved _ k tm) => error' "Meta \{show k} already solved [addConstraint]" (OutOfScope) => error' "Meta \{show ix} out of scope" - mc <- readIORef top.metaCtx - checkAutos ix $ mapMaybe (flip lookupMap' mc.metas) mc.autos + -- I broke this while dropping IORef and it seemed to have no effect + -- top <- getTop + -- let mc = top.metaCtx + -- checkAutos ix $ mapMaybe (flip lookupMap' mc.metas) mc.autos -- return renaming, the position is the new VVar invert : Int -> SnocList Val -> M (List Int) @@ -349,13 +356,13 @@ ctx.boundNames = map snd $ filter (\x => fst x == Bound) $ zip ctx.bds (map fst maybeCheck : M Unit -> M Unit maybeCheck action = do top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx case mc.mcmode of CheckAll => action CheckFirst => do - modifyIORef top.metaCtx $ \ mc => MC mc.metas mc.autos mc.next NoCheck + setMetaMode NoCheck action - modifyIORef top.metaCtx $ \ mc => MC mc.metas mc.autos mc.next CheckFirst + setMetaMode CheckFirst NoCheck => pure MkUnit solve env m sp t = do @@ -392,7 +399,6 @@ solve env m sp t = do val <- vappSpine soln sp debug $ \ _ => "discharge l=\{show $ length' env} \{(show val)} =?= \{(show rhs)}" unify env UNormal val rhs - mc <- readIORef top.metaCtx pure MkUnit ) @@ -579,7 +585,7 @@ unifyCatch fc ctx ty' ty = do freshMeta : Context -> FC -> Val -> MetaKind -> M Tm freshMeta ctx fc ty kind = do top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx debug $ \ _ => "fresh meta \{show mc.next} : \{show ty} (\{show kind})" -- need the ns here -- we were fudging this for v1 @@ -588,7 +594,7 @@ freshMeta ctx fc ty kind = do let autos = case kind of AutoSolve => qn :: mc.autos _ => mc.autos - writeIORef top.metaCtx $ MC (updateMap qn newmeta mc.metas) autos (1 + mc.next) mc.mcmode + modifyTop $ \top => [metaCtx := MC (updateMap qn newmeta mc.metas) autos (1 + mc.next) mc.mcmode ] top -- infinite loop - keeps trying Ord a => Ord (a \x a) -- when (kind == AutoSolve) $ \ _ => ignore $ trySolveAuto newmeta pure $ applyBDs 0 (Meta fc qn) ctx.bds @@ -1213,9 +1219,7 @@ buildTree ctx prob@(MkProb ((MkClause fc constraints Nil expr) :: cs) ty) = do case meta of (Solved _ k t) => forceType ctx.env scty' (Unsolved _ k xs _ _ _) => do - top <- getTop - mc <- readIORef top.metaCtx - -- TODO - only hit the relevant ones + -- TODO - only check the relevant autos solveAutos forceType ctx.env scty' OutOfScope => pure scty' diff --git a/src/Lib/ProcessDecl.newt b/src/Lib/ProcessDecl.newt index 8beb3c7..38dfdfa 100644 --- a/src/Lib/ProcessDecl.newt +++ b/src/Lib/ProcessDecl.newt @@ -106,7 +106,7 @@ processTypeSig ns fc names tm = do log 1 $ \ _ => "-----" top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx -- let mstart = length' mc.metas traverse (checkAlreadyDef fc) names ty <- check (mkCtx fc) tm (VU fc) @@ -143,7 +143,7 @@ processDef ns fc nm clauses = do log 1 $ \ _ => "-----" log 1 $ \ _ => "Def \{show nm}" top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx let (Just entry) = lookupRaw nm top | Nothing => throwError $ E fc "No declaration for \{nm}" let (MkEntry fc name ty Axiom _) = entry @@ -412,7 +412,7 @@ processData ns fc nm ty cons = do log 1 $ \ _ => "-----" log 1 $ \ _ => "Data \{nm}" top <- getTop - mc <- readIORef top.metaCtx + let mc = top.metaCtx tyty <- check (mkCtx fc) ty (VU fc) case lookupRaw nm top of Just (MkEntry _ name type Axiom _) => do diff --git a/src/Lib/TopContext.newt b/src/Lib/TopContext.newt index 2f46902..e4a2dc2 100644 --- a/src/Lib/TopContext.newt +++ b/src/Lib/TopContext.newt @@ -42,7 +42,7 @@ instance Show TopContext where -- TODO need to get class dependencies working emptyTop : ∀ io. {{Monad io}} {{HasIO io}} -> io TopContext emptyTop = do - mcctx <- newIORef (MC EmptyMap Nil 0 CheckAll) + let mcctx = MC EmptyMap Nil 0 CheckAll errs <- newIORef $ the (List Error) Nil pure $ MkTop EmptyMap Nil EmptyMap Nil EmptyMap mcctx 0 errs EmptyMap diff --git a/src/Lib/Types.newt b/src/Lib/Types.newt index 7c41260..ec254b6 100644 --- a/src/Lib/Types.newt +++ b/src/Lib/Types.newt @@ -392,7 +392,7 @@ record TopContext where -- current module ns : List String defs : SortedMap QName TopEntry - metaCtx : IORef MetaContext + metaCtx : MetaContext -- Global values verbose : Int -- command line flag @@ -548,8 +548,7 @@ error' msg = throwError $ E emptyFC msg lookupMeta : QName -> M MetaEntry lookupMeta ix@(QN ns nm) = do top <- getTop - mc <- readIORef {M} top.metaCtx - case lookupMap' ix mc.metas of + case lookupMap' ix top.metaCtx.metas of Just meta => pure meta Nothing => case lookupMap' ns top.modules of Nothing => diff --git a/src/Main.newt b/src/Main.newt index 59c6d3b..060e723 100644 --- a/src/Main.newt +++ b/src/Main.newt @@ -154,7 +154,7 @@ processModule importFC base stk qn@(QN ns nm) = do (decls, ops) <- parseDecls fn top.ops toks Lin top <- getTop - freshMC <- newIORef (MC EmptyMap Nil 0 CheckAll) + let freshMC = MC EmptyMap Nil 0 CheckAll -- set imported, mod, freshMC, ops before processing modifyTop (\ top => MkTop top.modules imported EmptyMap modns EmptyMap freshMC top.verbose top.errors ops) for imported $ \ ns => do @@ -166,9 +166,8 @@ processModule importFC base stk qn@(QN ns nm) = do -- update modules with result, leave the rest of context in case this is top file top <- getTop - mc <- readIORef top.metaCtx - let mod = MkModCtx csum top.defs mc top.ops + let mod = MkModCtx csum top.defs top.metaCtx top.ops errors <- liftIO {M} $ readIORef top.errors if stk /= Nil && length' errors == 0 then dumpModule qn src mod @@ -181,7 +180,7 @@ processModule importFC base stk qn@(QN ns nm) = do | errors => do traverse (putStrLn ∘ showError src) errors exitFailure "Compile failed" - logMetas $ reverse $ listValues mc.metas + logMetas $ reverse $ listValues top.metaCtx.metas pure src where tryProcessDecl : List String -> Decl -> M Unit