@@ -173,18 +173,18 @@ elab ist info pattern opts fn tm
173 elab' ina (PResolveTC (FC "HACK" _ _)) -- for chasing parent classes
173 elab' ina (PResolveTC (FC "HACK" _ _)) -- for chasing parent classes
174 = do g <- goal; resolveTC 5 g fn ist
174 = do g <- goal; resolveTC 5 g fn ist
175 elab' ina (PResolveTC fc)
175 elab' ina (PResolveTC fc)
176− | True = do c <- getNameFrom (MN 0 "class")
176+ | True = do c <- getNameFrom (sMN 0 "class")
177 instanceArg c
177 instanceArg c
178 | otherwise = do g <- goal
178 | otherwise = do g <- goal
179 try (resolveTC 2 g fn ist)
179 try (resolveTC 2 g fn ist)
180− (do c <- getNameFrom (MN 0 "class")
180+ (do c <- getNameFrom (sMN 0 "class")
181 instanceArg c)
181 instanceArg c)
182 elab' ina (PRefl fc t)
182 elab' ina (PRefl fc t)
183− = elab' ina (PApp fc (PRef fc eqCon) [pimp (MN 0 "A") Placeholder True,
183+ = elab' ina (PApp fc (PRef fc eqCon) [pimp (sMN 0 "A") Placeholder True,
184− pimp (MN 0 "x") t False])
184+ pimp (sMN 0 "x") t False])
185 elab' ina (PEq fc l r) = elab' ina (PApp fc (PRef fc eqTy)
185 elab' ina (PEq fc l r) = elab' ina (PApp fc (PRef fc eqTy)
186− [pimp (MN 0 "A") Placeholder True,
186+ [pimp (sMN 0 "A") Placeholder True,
187− pimp (MN 0 "B") Placeholder False,
187+ pimp (sMN 0 "B") Placeholder False,
188 pexp l, pexp r])
188 pexp l, pexp r])
189 elab' ina@(_, a, inty) (PPair fc l r)
189 elab' ina@(_, a, inty) (PPair fc l r)
190 = do hnf_compute
190 = do hnf_compute
@@ -193,8 +193,8 @@ elab ist info pattern opts fn tm
193 TType _ -> elabE (True, a,inty) (PApp fc (PRef fc pairTy)
193 TType _ -> elabE (True, a,inty) (PApp fc (PRef fc pairTy)
194 [pexp l,pexp r])
194 [pexp l,pexp r])
195 _ -> elabE (True, a, inty) (PApp fc (PRef fc pairCon)
195 _ -> elabE (True, a, inty) (PApp fc (PRef fc pairCon)
196− [pimp (MN 0 "A") Placeholder True,
196+ [pimp (sMN 0 "A") Placeholder True,
197− pimp (MN 0 "B") Placeholder True,
197+ pimp (sMN 0 "B") Placeholder True,
198 pexp l, pexp r])
198 pexp l, pexp r])
199 elab' ina (PDPair fc l@(PRef _ n) t r)
199 elab' ina (PDPair fc l@(PRef _ n) t r)
200 = case t of
200 = case t of
@@ -209,12 +209,12 @@ elab ist info pattern opts fn tm
210 pexp (PLam n Placeholder r)])
210 pexp (PLam n Placeholder r)])
211 asValue = elab' ina (PApp fc (PRef fc existsCon)
211 asValue = elab' ina (PApp fc (PRef fc existsCon)
212− [pimp (MN 0 "a") t False,
212+ [pimp (sMN 0 "a") t False,
213− pimp (MN 0 "P") Placeholder True,
213+ pimp (sMN 0 "P") Placeholder True,
214 pexp l, pexp r])
214 pexp l, pexp r])
215 elab' ina (PDPair fc l t r) = elab' ina (PApp fc (PRef fc existsCon)
215 elab' ina (PDPair fc l t r) = elab' ina (PApp fc (PRef fc existsCon)
216− [pimp (MN 0 "a") t False,
216+ [pimp (sMN 0 "a") t False,
217− pimp (MN 0 "P") Placeholder True,
217+ pimp (sMN 0 "P") Placeholder True,
218 pexp l, pexp r])
218 pexp l, pexp r])
219 elab' ina (PAlternative True as)
219 elab' ina (PAlternative True as)
220 = do hnf_compute
220 = do hnf_compute
@@ -274,7 +274,7 @@ elab ist info pattern opts fn tm
274 elab' ina@(_, a, inty) (PLam n ty sc)
274 elab' ina@(_, a, inty) (PLam n ty sc)
275 = do hsin <- get_holes
275 = do hsin <- get_holes
276 ptmin <- get_term
276 ptmin <- get_term
277− tyn <- getNameFrom (MN 0 "lamty")
277+ tyn <- getNameFrom (sMN 0 "lamty")
278 checkPiGoal n
278 checkPiGoal n
279 claim tyn RType
279 claim tyn RType
280 explicit tyn
280 explicit tyn
@@ -290,9 +290,9 @@ elab ist info pattern opts fn tm
290 elabE (True, a, inty) sc
290 elabE (True, a, inty) sc
292 elab' ina@(_, a, _) (PPi _ n Placeholder sc)
292 elab' ina@(_, a, _) (PPi _ n Placeholder sc)
293− = do attack; arg n (MN 0 "ty"); elabE (True, a, True) sc; solve
293+ = do attack; arg n (sMN 0 "ty"); elabE (True, a, True) sc; solve
294 elab' ina@(_, a, _) (PPi _ n ty sc)
294 elab' ina@(_, a, _) (PPi _ n ty sc)
295− = do attack; tyn <- getNameFrom (MN 0 "ty")
295+ = do attack; tyn <- getNameFrom (sMN 0 "ty")
296 claim tyn RType
296 claim tyn RType
297 n' <- case n of
297 n' <- case n of
298 MN _ _ -> unique_hole n
298 MN _ _ -> unique_hole n
@@ -304,9 +304,9 @@ elab ist info pattern opts fn tm
305 elab' ina@(_, a, inty) (PLet n ty val sc)
305 elab' ina@(_, a, inty) (PLet n ty val sc)
306 = do attack;
306 = do attack;
307− tyn <- getNameFrom (MN 0 "letty")
307+ tyn <- getNameFrom (sMN 0 "letty")
308 claim tyn RType
308 claim tyn RType
309− valn <- getNameFrom (MN 0 "letval")
309+ valn <- getNameFrom (sMN 0 "letval")
310 claim valn (Var tyn)
310 claim valn (Var tyn)
311 explicit valn
311 explicit valn
312 letbind n (Var tyn) (Var valn)
312 letbind n (Var tyn) (Var valn)
@@ -327,9 +327,9 @@ elab ist info pattern opts fn tm
327 elab' ina@(_, a, inty) (PGoal fc r n sc) = do
327 elab' ina@(_, a, inty) (PGoal fc r n sc) = do
328 rty <- goal
328 rty <- goal
330− tyn <- getNameFrom (MN 0 "letty")
330+ tyn <- getNameFrom (sMN 0 "letty")
331 claim tyn RType
331 claim tyn RType
332− valn <- getNameFrom (MN 0 "letval")
332+ valn <- getNameFrom (sMN 0 "letval")
333 claim valn (Var tyn)
333 claim valn (Var tyn)
334 letbind n (Var tyn) (Var valn)
334 letbind n (Var tyn) (Var valn)
335 focus valn
335 focus valn
@@ -348,7 +348,7 @@ elab ist info pattern opts fn tm
348 -- new function name
348 -- new function name
349 env <- get_env
349 env <- get_env
350 argTys <- claimArgTys env args
350 argTys <- claimArgTys env args
351− fn <- getNameFrom (MN 0 "inf_fn")
351+ fn <- getNameFrom (sMN 0 "inf_fn")
352 let fty = fnTy argTys rty
352 let fty = fnTy argTys rty
353-- trace (show (ptm, map fst argTys)) $ focus fn
353-- trace (show (ptm, map fst argTys)) $ focus fn
354 -- build and defer the function application
354 -- build and defer the function application
@@ -362,8 +362,8 @@ elab ist info pattern opts fn tm
362 ans <- claimArgTys env xs
362 ans <- claimArgTys env xs
363 return ((n, (False, forget nty)) : ans)
363 return ((n, (False, forget nty)) : ans)
364 claimArgTys env (_ : xs)
364 claimArgTys env (_ : xs)
365− = do an <- getNameFrom (MN 0 "inf_argTy")
365+ = do an <- getNameFrom (sMN 0 "inf_argTy")
366− aval <- getNameFrom (MN 0 "inf_arg")
366+ aval <- getNameFrom (sMN 0 "inf_arg")
367 claim an RType
367 claim an RType
368 claim aval (Var an)
368 claim aval (Var an)
369 ans <- claimArgTys env xs
369 ans <- claimArgTys env xs
@@ -383,7 +383,7 @@ elab ist info pattern opts fn tm
383 mkN n@(NS _ _) = n
383 mkN n@(NS _ _) = n
384 mkN n@(SN _) = n
384 mkN n@(SN _) = n
385 mkN n = case namespace info of
385 mkN n = case namespace info of
386− Just xs@(_:_) -> NS n xs
386+ Just xs@(_:_) -> sNS n xs
389 elab' ina (PMatchApp fc fn)
389 elab' ina (PMatchApp fc fn)
@@ -467,7 +467,7 @@ elab ist info pattern opts fn tm
467 do attack; defer n'; solve
467 do attack; defer n'; solve
468 where mkN n@(NS _ _) = n
468 where mkN n@(NS _ _) = n
469 mkN n = case namespace info of
469 mkN n = case namespace info of
470− Just xs@(_:_) -> NS n xs
470+ Just xs@(_:_) -> sNS n xs
472 elab' ina (PProof ts) = do compute; mapM_ (runTac True ist) ts
472 elab' ina (PProof ts) = do compute; mapM_ (runTac True ist) ts
473 elab' ina (PTactics ts)
473 elab' ina (PTactics ts)
@@ -476,11 +476,11 @@ elab ist info pattern opts fn tm
476 elab' ina (PElabError e) = fail (pshow ist e)
476 elab' ina (PElabError e) = fail (pshow ist e)
477 elab' ina (PRewrite fc r sc newg)
477 elab' ina (PRewrite fc r sc newg)
478 = do attack
478 = do attack
479− tyn <- getNameFrom (MN 0 "rty")
479+ tyn <- getNameFrom (sMN 0 "rty")
480 claim tyn RType
480 claim tyn RType
481− valn <- getNameFrom (MN 0 "rval")
481+ valn <- getNameFrom (sMN 0 "rval")
482 claim valn (Var tyn)
482 claim valn (Var tyn)
483− letn <- getNameFrom (MN 0 "rewrite_rule")
483+ letn <- getNameFrom (sMN 0 "rewrite_rule")
484 letbind letn (Var tyn) (Var valn)
484 letbind letn (Var tyn) (Var valn)
485 focus valn
485 focus valn
486 elab' ina r
486 elab' ina r
@@ -495,11 +495,11 @@ elab ist info pattern opts fn tm
496 where doEquiv t sc =
496 where doEquiv t sc =
497 do attack
497 do attack
498− tyn <- getNameFrom (MN 0 "ety")
498+ tyn <- getNameFrom (sMN 0 "ety")
499 claim tyn RType
499 claim tyn RType
500− valn <- getNameFrom (MN 0 "eqval")
500+ valn <- getNameFrom (sMN 0 "eqval")
501 claim valn (Var tyn)
501 claim valn (Var tyn)
502− letn <- getNameFrom (MN 0 "equiv_val")
502+ letn <- getNameFrom (sMN 0 "equiv_val")
503 letbind letn (Var tyn) (Var valn)
503 letbind letn (Var tyn) (Var valn)
504 focus tyn
504 focus tyn
505 elab' ina t
505 elab' ina t
@@ -509,10 +509,10 @@ elab ist info pattern opts fn tm
510 elab' ina@(_, a, inty) c@(PCase fc scr opts)
510 elab' ina@(_, a, inty) c@(PCase fc scr opts)
511 = do attack
511 = do attack
512− tyn <- getNameFrom (MN 0 "scty")
512+ tyn <- getNameFrom (sMN 0 "scty")
513 claim tyn RType
513 claim tyn RType
514− valn <- getNameFrom (MN 0 "scval")
514+ valn <- getNameFrom (sMN 0 "scval")
515− scvn <- getNameFrom (MN 0 "scvar")
515+ scvn <- getNameFrom (sMN 0 "scvar")
516 claim valn (Var tyn)
516 claim valn (Var tyn)
517 letbind scvn (Var tyn) (Var valn)
517 letbind scvn (Var tyn) (Var valn)
518 focus valn
518 focus valn
@@ -538,7 +538,7 @@ elab ist info pattern opts fn tm
538-- mkCaseName (MN i x) = MN i (x ++ "_case")
538-- mkCaseName (MN i x) = MN i (x ++ "_case")
539 mkN n@(NS _ _) = n
539 mkN n@(NS _ _) = n
540 mkN n = case namespace info of
540 mkN n = case namespace info of
541− Just xs@(_:_) -> NS n xs
541+ Just xs@(_:_) -> sNS n xs
543 elab' ina (PUnifyLog t) = do unifyLog True
543 elab' ina (PUnifyLog t) = do unifyLog True
544 elab' ina t
544 elab' ina t
@@ -618,8 +618,8 @@ elab ist info pattern opts fn tm
618 = elabArgs ina failed fc r ns args
618 = elabArgs ina failed fc r ns args
619 elabArgs ina failed fc r (n:ns) ((lazy, t) : args)
619 elabArgs ina failed fc r (n:ns) ((lazy, t) : args)
620 | lazy && not pattern
620 | lazy && not pattern
621− = do elabArg n (PApp bi (PRef bi (UN "lazy"))
621+ = do elabArg n (PApp bi (PRef bi (sUN "lazy"))
622− [pimp (UN "a") Placeholder True,
622+ [pimp (sUN "a") Placeholder True,
623 pexp t]);
623 pexp t]);
624 | otherwise = elabArg n t
624 | otherwise = elabArg n t
625 where elabArg n t
625 where elabArg n t
@@ -699,9 +699,9 @@ findInstances ist t
699 | otherwise = []
699 | otherwise = []
701trivial' ist
701trivial' ist
702− = trivial (elab ist toplevel False [] (MN 0 "tac")) ist
702+ = trivial (elab ist toplevel False [] (sMN 0 "tac")) ist
703proofSearch' ist top n hints
703proofSearch' ist top n hints
704− = proofSearch (elab ist toplevel False [] (MN 0 "tac")) top n hints ist
704+ = proofSearch (elab ist toplevel False [] (sMN 0 "tac")) top n hints ist
707resolveTC :: Int -> Term -> Name -> IState -> ElabD ()
707resolveTC :: Int -> Term -> Name -> IState -> ElabD ()
@@ -737,12 +737,15 @@ resolveTC depth topg fn ist
738 -- HACK! Rather than giving a special name, better to have some kind
738 -- HACK! Rather than giving a special name, better to have some kind
739 -- of flag in ClassInfo structure
739 -- of flag in ClassInfo structure
740− chaser (UN ('@':'@':_)) = True -- old way
741+ | ('@':'@':_) <- str nm = True -- old way
741 chaser (SN (ParentN _ _)) = True
742 chaser (SN (ParentN _ _)) = True
742 chaser (NS n _) = chaser n
743 chaser (NS n _) = chaser n
743 chaser _ = False
744 chaser _ = False
746+ numclass = sNS (sUN "Num") ["Classes","Prelude"]
745− needsDefault t num@(P _ (NS (UN "Num") ["Classes","Prelude"]) _) [P Bound a _]
748+ needsDefault t num@(P _ nc _) [P Bound a _] | nc == numclass
746 = do focus a
749 = do focus a
747 fill (RConstant (AType (ATInt ITBig))) -- default Integer
750 fill (RConstant (AType (ATInt ITBig))) -- default Integer
@@ -830,7 +833,7 @@ runTac autoSolve ist tac
831 bname (Bind n _ _) = Just n
834 bname (Bind n _ _) = Just n
832 bname _ = Nothing
835 bname _ = Nothing
833− runT (Exact tm) = do elab ist toplevel False [] (MN 0 "tac") tm
836+ runT (Exact tm) = do elab ist toplevel False [] (sMN 0 "tac") tm
834 when autoSolve solveAll
837 when autoSolve solveAll
835 runT (MatchRefine fn)
838 runT (MatchRefine fn)
836 = do fnimps <-
839 = do fnimps <-
@@ -870,27 +873,27 @@ runTac autoSolve ist tac
870 when autoSolve solveAll
873 when autoSolve solveAll
871 runT (Equiv tm) -- let bind tm, then
874 runT (Equiv tm) -- let bind tm, then
872 = do attack
875 = do attack
873− tyn <- getNameFrom (MN 0 "ety")
876+ tyn <- getNameFrom (sMN 0 "ety")
874 claim tyn RType
877 claim tyn RType
875− valn <- getNameFrom (MN 0 "eqval")
878+ valn <- getNameFrom (sMN 0 "eqval")
876 claim valn (Var tyn)
879 claim valn (Var tyn)
877− letn <- getNameFrom (MN 0 "equiv_val")
880+ letn <- getNameFrom (sMN 0 "equiv_val")
878 letbind letn (Var tyn) (Var valn)
881 letbind letn (Var tyn) (Var valn)
879 focus tyn
882 focus tyn
880− elab ist toplevel False [] (MN 0 "tac") tm
883+ elab ist toplevel False [] (sMN 0 "tac") tm
881 focus valn
884 focus valn
882 when autoSolve solveAll
885 when autoSolve solveAll
883 runT (Rewrite tm) -- to elaborate tm, let bind it, then rewrite by that
886 runT (Rewrite tm) -- to elaborate tm, let bind it, then rewrite by that
884 = do attack; -- (h:_) <- get_holes
887 = do attack; -- (h:_) <- get_holes
885− tyn <- getNameFrom (MN 0 "rty")
888+ tyn <- getNameFrom (sMN 0 "rty")
886 -- start_unify h
889 -- start_unify h
887 claim tyn RType
890 claim tyn RType
888− valn <- getNameFrom (MN 0 "rval")
891+ valn <- getNameFrom (sMN 0 "rval")
889 claim valn (Var tyn)
892 claim valn (Var tyn)
890− letn <- getNameFrom (MN 0 "rewrite_rule")
893+ letn <- getNameFrom (sMN 0 "rewrite_rule")
891 letbind letn (Var tyn) (Var valn)
894 letbind letn (Var tyn) (Var valn)
892 focus valn
895 focus valn
893− elab ist toplevel False [] (MN 0 "tac") tm
896+ elab ist toplevel False [] (sMN 0 "tac") tm
894 rewrite (Var letn)
897 rewrite (Var letn)
895 when autoSolve solveAll
898 when autoSolve solveAll
896 runT (Induction nm)
899 runT (Induction nm)
@@ -898,27 +901,27 @@ runTac autoSolve ist tac
898 when autoSolve solveAll
901 when autoSolve solveAll
899 runT (LetTac n tm)
902 runT (LetTac n tm)
900 = do attack
903 = do attack
901− tyn <- getNameFrom (MN 0 "letty")
904+ tyn <- getNameFrom (sMN 0 "letty")
902 claim tyn RType
905 claim tyn RType
903− valn <- getNameFrom (MN 0 "letval")
906+ valn <- getNameFrom (sMN 0 "letval")
904 claim valn (Var tyn)
907 claim valn (Var tyn)
905 letn <- unique_hole n
908 letn <- unique_hole n
906 letbind letn (Var tyn) (Var valn)
909 letbind letn (Var tyn) (Var valn)
907 focus valn
910 focus valn
908− elab ist toplevel False [] (MN 0 "tac") tm
911+ elab ist toplevel False [] (sMN 0 "tac") tm
909 when autoSolve solveAll
912 when autoSolve solveAll
910 runT (LetTacTy n ty tm)
913 runT (LetTacTy n ty tm)
911 = do attack
914 = do attack
912− tyn <- getNameFrom (MN 0 "letty")
915+ tyn <- getNameFrom (sMN 0 "letty")
913 claim tyn RType
916 claim tyn RType
914− valn <- getNameFrom (MN 0 "letval")
917+ valn <- getNameFrom (sMN 0 "letval")
915 claim valn (Var tyn)
918 claim valn (Var tyn)
916 letn <- unique_hole n
919 letn <- unique_hole n
917 letbind letn (Var tyn) (Var valn)
920 letbind letn (Var tyn) (Var valn)
918 focus tyn
921 focus tyn
919− elab ist toplevel False [] (MN 0 "tac") ty
922+ elab ist toplevel False [] (sMN 0 "tac") ty
920 focus valn
923 focus valn
921− elab ist toplevel False [] (MN 0 "tac") tm
924+ elab ist toplevel False [] (sMN 0 "tac") tm
922 when autoSolve solveAll
925 when autoSolve solveAll
923 runT Compute = compute
926 runT Compute = compute
924 runT Trivial = do trivial' ist; when autoSolve solveAll
927 runT Trivial = do trivial' ist; when autoSolve solveAll
@@ -931,16 +934,16 @@ runTac autoSolve ist tac
931 runT (ApplyTactic tm) = do tenv <- get_env -- store the environment
934 runT (ApplyTactic tm) = do tenv <- get_env -- store the environment
932 tgoal <- goal -- store the goal
935 tgoal <- goal -- store the goal
933 attack -- let f : List (TTName, Binder TT) -> TT -> Tactic = tm in ...
936 attack -- let f : List (TTName, Binder TT) -> TT -> Tactic = tm in ...
934− script <- getNameFrom (MN 0 "script")
937+ script <- getNameFrom (sMN 0 "script")
935 claim script scriptTy
938 claim script scriptTy
936− scriptvar <- getNameFrom (MN 0 "scriptvar" )
939+ scriptvar <- getNameFrom (sMN 0 "scriptvar" )
937 letbind scriptvar scriptTy (Var script)
940 letbind scriptvar scriptTy (Var script)
938 focus script
941 focus script
939− elab ist toplevel False [] (MN 0 "tac") tm
942+ elab ist toplevel False [] (sMN 0 "tac") tm
940 (script', _) <- get_type_val (Var scriptvar)
943 (script', _) <- get_type_val (Var scriptvar)
941 -- now that we have the script apply
944 -- now that we have the script apply
942 -- it to the reflected goal and context
945 -- it to the reflected goal and context
943− restac <- getNameFrom (MN 0 "restac")
946+ restac <- getNameFrom (sMN 0 "restac")
944 claim restac tacticTy
947 claim restac tacticTy
945 focus restac
948 focus restac
946 fill (raw_apply (forget script')
949 fill (raw_apply (forget script')
@@ -954,27 +957,27 @@ runTac autoSolve ist tac
954 let tactic = normalise ctxt env restac'
957 let tactic = normalise ctxt env restac'
955 runReflected tactic
958 runReflected tactic
956 where tacticTy = Var (reflm "Tactic")
959 where tacticTy = Var (reflm "Tactic")
957− listTy = Var (NS (UN "List") ["List", "Prelude"])
960+ listTy = Var (sNS (sUN "List") ["List", "Prelude"])
958− scriptTy = (RBind (UN "__pi_arg")
961+ scriptTy = (RBind (sUN "__pi_arg")
959 (Pi (RApp listTy envTupleType))
962 (Pi (RApp listTy envTupleType))
960− (RBind (UN "__pi_arg1")
963+ (RBind (sUN "__pi_arg1")
961 (Pi (Var $ reflm "TT")) tacticTy))
964 (Pi (Var $ reflm "TT")) tacticTy))
962 runT (ByReflection tm) -- run the reflection function 'tm' on the
965 runT (ByReflection tm) -- run the reflection function 'tm' on the
963 -- goal, then apply the resulting reflected Tactic
966 -- goal, then apply the resulting reflected Tactic
964 = do tgoal <- goal
967 = do tgoal <- goal
966− script <- getNameFrom (MN 0 "script")
969+ script <- getNameFrom (sMN 0 "script")
967 claim script scriptTy
970 claim script scriptTy
968− scriptvar <- getNameFrom (MN 0 "scriptvar" )
971+ scriptvar <- getNameFrom (sMN 0 "scriptvar" )
969 letbind scriptvar scriptTy (Var script)
972 letbind scriptvar scriptTy (Var script)
970 focus script
973 focus script
971 ptm <- get_term
974 ptm <- get_term
972− elab ist toplevel False [] (MN 0 "tac")
975+ elab ist toplevel False [] (sMN 0 "tac")
973 (PApp emptyFC tm [pexp (delabTy' ist [] tgoal True True)])
976 (PApp emptyFC tm [pexp (delabTy' ist [] tgoal True True)])
974 (script', _) <- get_type_val (Var scriptvar)
977 (script', _) <- get_type_val (Var scriptvar)
975 -- now that we have the script apply
978 -- now that we have the script apply
976 -- it to the reflected goal
979 -- it to the reflected goal
977− restac <- getNameFrom (MN 0 "restac")
980+ restac <- getNameFrom (sMN 0 "restac")
978 claim restac tacticTy
981 claim restac tacticTy
979 focus restac
982 focus restac
980 fill (forget script')
983 fill (forget script')
@@ -990,28 +993,28 @@ runTac autoSolve ist tac
990 scriptTy = tacticTy
993 scriptTy = tacticTy
992 runT (Reflect v) = do attack -- let x = reflect v in ...
995 runT (Reflect v) = do attack -- let x = reflect v in ...
993− tyn <- getNameFrom (MN 0 "letty")
996+ tyn <- getNameFrom (sMN 0 "letty")
994 claim tyn RType
997 claim tyn RType
995− valn <- getNameFrom (MN 0 "letval")
998+ valn <- getNameFrom (sMN 0 "letval")
996 claim valn (Var tyn)
999 claim valn (Var tyn)
997− letn <- getNameFrom (MN 0 "letvar")
1000+ letn <- getNameFrom (sMN 0 "letvar")
998 letbind letn (Var tyn) (Var valn)
1001 letbind letn (Var tyn) (Var valn)
999 focus valn
1002 focus valn
1000− elab ist toplevel False [] (MN 0 "tac") v
1003+ elab ist toplevel False [] (sMN 0 "tac") v
1001 (value, _) <- get_type_val (Var letn)
1004 (value, _) <- get_type_val (Var letn)
1002 ctxt <- get_context
1005 ctxt <- get_context
1003 env <- get_env
1006 env <- get_env
1004 let value' = hnf ctxt env value
1007 let value' = hnf ctxt env value
1005 runTac autoSolve ist (Exact $ PQuote (reflect value'))
1008 runTac autoSolve ist (Exact $ PQuote (reflect value'))
1006 runT (Fill v) = do attack -- let x = fill x in ...
1009 runT (Fill v) = do attack -- let x = fill x in ...
1007− tyn <- getNameFrom (MN 0 "letty")
1010+ tyn <- getNameFrom (sMN 0 "letty")
1008 claim tyn RType
1011 claim tyn RType
1009− valn <- getNameFrom (MN 0 "letval")
1012+ valn <- getNameFrom (sMN 0 "letval")
1010 claim valn (Var tyn)
1013 claim valn (Var tyn)
1011− letn <- getNameFrom (MN 0 "letvar")
1014+ letn <- getNameFrom (sMN 0 "letvar")
1012 letbind letn (Var tyn) (Var valn)
1015 letbind letn (Var tyn) (Var valn)
1013 focus valn
1016 focus valn
1014− elab ist toplevel False [] (MN 0 "tac") v
1017+ elab ist toplevel False [] (sMN 0 "tac") v
1015 (value, _) <- get_type_val (Var letn)
1018 (value, _) <- get_type_val (Var letn)
1016 ctxt <- get_context
1019 ctxt <- get_context
1017 env <- get_env
1020 env <- get_env
@@ -1021,7 +1024,7 @@ runTac autoSolve ist tac
1021 runT (GoalType n tac) = do g <- goal
1024 runT (GoalType n tac) = do g <- goal
1022 case unApply g of
1025 case unApply g of
1023 (P _ n' _, _) ->
1026 (P _ n' _, _) ->
1024− if nsroot n' == UN n
1027+ if nsroot n' == sUN n
1025 then runT tac
1028 then runT tac
1026 else fail "Wrong goal type"
1029 else fail "Wrong goal type"
1027 _ -> fail "Wrong goal type"
1030 _ -> fail "Wrong goal type"
@@ -1034,7 +1037,7 @@ runTac autoSolve ist tac
1035-- | Prefix a name with the "Language.Reflection" namespace
1038-- | Prefix a name with the "Language.Reflection" namespace
1036reflm :: String -> Name
1039reflm :: String -> Name
1037−reflm n = NS (UN n) ["Reflection", "Language"]
1040+reflm n = sNS (sUN n) ["Reflection", "Language"]
1040-- | Reify tactics from their reflected representation
1043-- | Reify tactics from their reflected representation
@@ -1056,7 +1059,7 @@ reifyApp ist t [l, r] | t == reflm "Seq" = liftM2 TSeq (reify ist l) (reify ist
1056reifyApp ist t [Constant (Str n), x]
1059reifyApp ist t [Constant (Str n), x]
1057 | t == reflm "GoalType" = liftM (GoalType n) (reify ist x)
1060 | t == reflm "GoalType" = liftM (GoalType n) (reify ist x)
1058reifyApp _ t [Constant (Str n)]
1061reifyApp _ t [Constant (Str n)]
1059− | t == reflm "Intro" = return $ Intro [UN n]
1062+ | t == reflm "Intro" = return $ Intro [sUN n]
1060reifyApp ist t [t']
1063reifyApp ist t [t']
1061 | t == reflm "ApplyTactic" = liftM (ApplyTactic . delab ist) (reifyTT t')
1064 | t == reflm "ApplyTactic" = liftM (ApplyTactic . delab ist) (reifyTT t')
1062reifyApp ist t [t']
1065reifyApp ist t [t']
@@ -1147,13 +1150,13 @@ reifyTTName t = fail ("Unknown reflection term name: " ++ show t)
1148reifyTTNameApp :: Name -> [Term] -> ElabD Name
1151reifyTTNameApp :: Name -> [Term] -> ElabD Name
1149reifyTTNameApp t [Constant (Str n)]
1152reifyTTNameApp t [Constant (Str n)]
1150− | t == reflm "UN" = return $ UN n
1153+ | t == reflm "UN" = return $ sUN n
1151reifyTTNameApp t [n, ns]
1154reifyTTNameApp t [n, ns]
1152 | t == reflm "NS" = do n' <- reifyTTName n
1155 | t == reflm "NS" = do n' <- reifyTTName n
1153 ns' <- reifyTTNamespace ns
1156 ns' <- reifyTTNamespace ns
1154− return $ NS n' ns'
1157+ return $ sNS n' ns'
1155reifyTTNameApp t [Constant (I i), Constant (Str n)]
1158reifyTTNameApp t [Constant (I i), Constant (Str n)]
1156− | t == reflm "MN" = return $ MN i n
1159+ | t == reflm "MN" = return $ sMN i n
1157reifyTTNameApp t []
1160reifyTTNameApp t []
1158 | t == reflm "NErased" = return NErased
1161 | t == reflm "NErased" = return NErased
1159reifyTTNameApp t args = fail ("Unknown reflection term name: " ++ show (t, args))
1162reifyTTNameApp t args = fail ("Unknown reflection term name: " ++ show (t, args))
@@ -1162,9 +1165,9 @@ reifyTTNamespace :: Term -> ElabD [String]
1162reifyTTNamespace t@(App _ _)
1165reifyTTNamespace t@(App _ _)
1163 = case unApply t of
1166 = case unApply t of
1164 (P _ f _, [Constant StrType])
1167 (P _ f _, [Constant StrType])
1165− | f == NS (UN "Nil") ["List", "Prelude"] -> return []
1168+ | f == sNS (sUN "Nil") ["List", "Prelude"] -> return []
1166 (P _ f _, [Constant StrType, Constant (Str n), ns])
1169 (P _ f _, [Constant StrType, Constant (Str n), ns])
1167− | f == NS (UN "::") ["List", "Prelude"] -> liftM (n:) (reifyTTNamespace ns)
1170+ | f == sNS (sUN "::") ["List", "Prelude"] -> liftM (n:) (reifyTTNamespace ns)
1168 _ -> fail ("Unknown reflection namespace arg: " ++ show t)
1171 _ -> fail ("Unknown reflection namespace arg: " ++ show t)
1169reifyTTNamespace t = fail ("Unknown reflection namespace arg: " ++ show t)
1172reifyTTNamespace t = fail ("Unknown reflection namespace arg: " ++ show t)
@@ -1286,19 +1289,19 @@ reflectNameType (TCon x y)
1286 = reflCall "TCon" [RConstant (I x), RConstant (I y)]
1289 = reflCall "TCon" [RConstant (I x), RConstant (I y)]
1288reflectName :: Name -> Raw
1291reflectName :: Name -> Raw
1289−reflectName (UN str)
1292+reflectName (UN s)
1290− = reflCall "UN" [RConstant (Str str)]
1293+ = reflCall "UN" [RConstant (Str (str s))]
1291reflectName (NS n ns)
1294reflectName (NS n ns)
1292 = reflCall "NS" [ reflectName n
1295 = reflCall "NS" [ reflectName n
1293 , foldr (\ n s ->
1296 , foldr (\ n s ->
1294− raw_apply ( Var $ NS (UN "::") ["List", "Prelude"] )
1297+ raw_apply ( Var $ sNS (sUN "::") ["List", "Prelude"] )
1295 [ RConstant StrType, RConstant (Str n), s ])
1298 [ RConstant StrType, RConstant (Str n), s ])
1296− ( raw_apply ( Var $ NS (UN "Nil") ["List", "Prelude"] )
1299+ ( raw_apply ( Var $ sNS (sUN "Nil") ["List", "Prelude"] )
1297 [ RConstant StrType ])
1300 [ RConstant StrType ])
1298− ns
1301+ (map str ns)
1300reflectName (MN i n)
1303reflectName (MN i n)
1301− = reflCall "MN" [RConstant (I i), RConstant (Str n)]
1304+ = reflCall "MN" [RConstant (I i), RConstant (Str (str n))]
1302reflectName (NErased) = Var (reflm "NErased")
1305reflectName (NErased) = Var (reflm "NErased")
1303reflectName n = Var (reflm "NErased") -- special name, not yet implemented
1306reflectName n = Var (reflm "NErased") -- special name, not yet implemented
@@ -1355,7 +1358,7 @@ reflectEnv = foldr consToEnvList emptyEnvList
1356 consToEnvList :: (Name, Binder Term) -> Raw -> Raw
1359 consToEnvList :: (Name, Binder Term) -> Raw -> Raw
1357 consToEnvList (n, b) l
1360 consToEnvList (n, b) l
1358− = raw_apply (Var (NS (UN "::") ["List", "Prelude"]))
1361+ = raw_apply (Var (sNS (sUN "::") ["List", "Prelude"]))
1359 [ envTupleType
1362 [ envTupleType
1360 , raw_apply (Var pairCon) [ (Var $ reflm "TTName")
1363 , raw_apply (Var pairCon) [ (Var $ reflm "TTName")
1361 , (RApp (Var $ reflm "Binder")
1364 , (RApp (Var $ reflm "Binder")
@@ -1367,19 +1370,19 @@ reflectEnv = foldr consToEnvList emptyEnvList
1369 emptyEnvList :: Raw
1372 emptyEnvList :: Raw
1370− emptyEnvList = raw_apply (Var (NS (UN "Nil") ["List", "Prelude"]))
1373+ emptyEnvList = raw_apply (Var (sNS (sUN "Nil") ["List", "Prelude"]))
1371 [envTupleType]
1374 [envTupleType]
1373-- | Reflect an error into the internal datatype of Idris -- TODO
1376-- | Reflect an error into the internal datatype of Idris -- TODO
1374rawBool :: Bool -> Raw
1377rawBool :: Bool -> Raw
1375−rawBool True = Var (NS (UN "True") ["Bool", "Prelude"])
1378+rawBool True = Var (sNS (sUN "True") ["Bool", "Prelude"])
1376−rawBool False = Var (NS (UN "False") ["Bool", "Prelude"])
1379+rawBool False = Var (sNS (sUN "False") ["Bool", "Prelude"])
1378rawNil :: Raw -> Raw
1381rawNil :: Raw -> Raw
1379−rawNil ty = raw_apply (Var (NS (UN "Nil") ["List", "Prelude"])) [ty]
1382+rawNil ty = raw_apply (Var (sNS (sUN "Nil") ["List", "Prelude"])) [ty]
1381rawCons :: Raw -> Raw -> Raw -> Raw
1384rawCons :: Raw -> Raw -> Raw -> Raw
1382−rawCons ty hd tl = raw_apply (Var (NS (UN "::") ["List", "Prelude"])) [ty, hd, tl]
1385+rawCons ty hd tl = raw_apply (Var (sNS (sUN "::") ["List", "Prelude"])) [ty, hd, tl]
1384rawList :: Raw -> [Raw] -> Raw
1387rawList :: Raw -> [Raw] -> Raw
1385rawList ty = foldr (rawCons ty) (rawNil ty)
1388rawList ty = foldr (rawCons ty) (rawNil ty)
@@ -1445,7 +1448,7 @@ reflectErr (NotInjective t1 t2 t3) =
1445reflectErr (CantResolve t) = raw_apply (Var $ reflErrName "CantResolve") [reflect t]
1448reflectErr (CantResolve t) = raw_apply (Var $ reflErrName "CantResolve") [reflect t]
1446reflectErr (CantResolveAlts ss) =
1449reflectErr (CantResolveAlts ss) =
1447 raw_apply (Var $ reflErrName "CantResolve")
1450 raw_apply (Var $ reflErrName "CantResolve")
1448− [rawList (Var $ (UN "String")) (map (RConstant . Str) ss)]
1451+ [rawList (Var $ (sUN "String")) (map (RConstant . Str) ss)]
1449reflectErr (IncompleteTerm t) = raw_apply (Var $ reflErrName "IncompleteTerm") [reflect t]
1452reflectErr (IncompleteTerm t) = raw_apply (Var $ reflErrName "IncompleteTerm") [reflect t]
1450reflectErr UniverseError = Var $ reflErrName "UniverseError"
1453reflectErr UniverseError = Var $ reflErrName "UniverseError"
1451reflectErr ProgramLineComment = Var $ reflErrName "ProgramLineComment"
1454reflectErr ProgramLineComment = Var $ reflErrName "ProgramLineComment"
@@ -1470,7 +1473,7 @@ reflectErr (ProviderError str) =
1470 raw_apply (Var $ reflErrName "ProviderError") [RConstant (Str str)]
1473 raw_apply (Var $ reflErrName "ProviderError") [RConstant (Str str)]
1471reflectErr (LoadingFailed str err) =
1474reflectErr (LoadingFailed str err) =
1472 raw_apply (Var $ reflErrName "LoadingFailed") [RConstant (Str str)]
1475 raw_apply (Var $ reflErrName "LoadingFailed") [RConstant (Str str)]
1473−reflectErr x = raw_apply (Var (NS (UN "Msg") ["Errors", "Reflection", "Language"])) [RConstant . Str $ "Default reflection: " ++ show x]
1476+reflectErr x = raw_apply (Var (sNS (sUN "Msg") ["Errors", "Reflection", "Language"])) [RConstant . Str $ "Default reflection: " ++ show x]
1475withErrorReflection :: Idris a -> Idris a
1478withErrorReflection :: Idris a -> Idris a
1476withErrorReflection x = idrisCatch x (\ e -> handle e >>= ierror)
1479withErrorReflection x = idrisCatch x (\ e -> handle e >>= ierror)
@@ -1504,11 +1507,12 @@ withErrorReflection x = idrisCatch x (\ e -> handle e >>= ierror)
1504 parts -> ReflectionError errorparts e
1507 parts -> ReflectionError errorparts e
1506 fromTTMaybe :: Term -> Maybe Term -- WARNING: Assumes the term has type Maybe a
1509 fromTTMaybe :: Term -> Maybe Term -- WARNING: Assumes the term has type Maybe a
1507− fromTTMaybe (App (App (P (DCon _ _) (NS (UN "Just") _) _) ty) tm) = Just tm
1510+ fromTTMaybe (App (App (P (DCon _ _) (NS (UN just) _) _) ty) tm)
1511+ | just == txt "Just" = Just tm
1508 fromTTMaybe x = Nothing
1512 fromTTMaybe x = Nothing
1510reflErrName :: String -> Name
1514reflErrName :: String -> Name
1511−reflErrName n = NS (UN n) ["Errors", "Reflection", "Language"]
1515+reflErrName n = sNS (sUN n) ["Errors", "Reflection", "Language"]
1513reifyReportPart :: Term -> Idris ErrorReportPart
1517reifyReportPart :: Term -> Idris ErrorReportPart
1514reifyReportPart (App (P (DCon _ _) n _) (Constant (Str msg))) | n == reflErrName "TextPart" =
1518reifyReportPart (App (P (DCon _ _) n _) (Constant (Str msg))) | n == reflErrName "TextPart" =