@@ -81,7 +81,10 @@ build ist info pattern opts fn tm
8181buildTC :: IState -> ElabInfo -> Bool -> FnOpts -> Name -> PTerm ->
8282 ElabD (Term, [(Name, (Int, Maybe Name, Type))], [PDecl])
8383buildTC ist info pattern opts fn tm
84− = do elab ist info pattern opts fn tm
84+ = do -- set name supply to begin after highest index in tm
85+ let ns = allNamesIn tm
86+ initNextNameFrom ns
87+ elab ist info pattern opts fn tm
8588 probs <- get_probs
8689 tm <- get_term
8790 case probs of
@@ -171,18 +174,18 @@ elab ist info pattern opts fn tm
171174 elab' ina (PResolveTC (FC "HACK" _ _)) -- for chasing parent classes
172175 = do g <- goal; resolveTC 5 g fn ist
173176 elab' ina (PResolveTC fc)
174− | True = do c <- unique_hole (MN 0 "class")
177+ | True = do c <- getNameFrom (MN 0 "class")
175178 instanceArg c
176179 | otherwise = do g <- goal
177180 try (resolveTC 2 g fn ist)
178− (do c <- unique_hole (MN 0 "class")
181+ (do c <- getNameFrom (MN 0 "class")
179182 instanceArg c)
180183 elab' ina (PRefl fc t)
181− = elab' ina (PApp fc (PRef fc eqCon) [pimp (MN 0 "a") Placeholder True,
184+ = elab' ina (PApp fc (PRef fc eqCon) [pimp (MN 0 "A") Placeholder True,
182185 pimp (MN 0 "x") t False])
183186 elab' ina (PEq fc l r) = elab' ina (PApp fc (PRef fc eqTy)
184− [pimp (MN 0 "a") Placeholder True,
185− pimp (MN 0 "b") Placeholder False,
187+ [pimp (MN 0 "A") Placeholder True,
188+ pimp (MN 0 "B") Placeholder False,
186189 pexp l, pexp r])
187190 elab' ina@(_, a, inty) (PPair fc l r)
188191 = do hnf_compute
@@ -272,7 +275,7 @@ elab ist info pattern opts fn tm
272275 elab' ina@(_, a, inty) (PLam n ty sc)
273276 = do hsin <- get_holes
274277 ptmin <- get_term
275− tyn <- unique_hole (MN 0 "lamty")
278+ tyn <- getNameFrom (MN 0 "lamty")
276279 checkPiGoal n
277280 claim tyn RType
278281 explicit tyn
@@ -290,7 +293,7 @@ elab ist info pattern opts fn tm
290293 elab' ina@(_, a, _) (PPi _ n Placeholder sc)
291294 = do attack; arg n (MN 0 "ty"); elabE (True, a, True) sc; solve
292295 elab' ina@(_, a, _) (PPi _ n ty sc)
293− = do attack; tyn <- unique_hole (MN 0 "ty")
296+ = do attack; tyn <- getNameFrom (MN 0 "ty")
294297 claim tyn RType
295298 n' <- case n of
296299 MN _ _ -> unique_hole n
@@ -302,9 +305,9 @@ elab ist info pattern opts fn tm
302305 solve
303306 elab' ina@(_, a, inty) (PLet n ty val sc)
304307 = do attack;
305− tyn <- unique_hole (MN 0 "letty")
308+ tyn <- getNameFrom (MN 0 "letty")
306309 claim tyn RType
307− valn <- unique_hole (MN 0 "letval")
310+ valn <- getNameFrom (MN 0 "letval")
308311 claim valn (Var tyn)
309312 explicit valn
310313 letbind n (Var tyn) (Var valn)
@@ -325,9 +328,9 @@ elab ist info pattern opts fn tm
325328 elab' ina@(_, a, inty) (PGoal fc r n sc) = do
326329 rty <- goal
327330 attack
328− tyn <- unique_hole (MN 0 "letty")
331+ tyn <- getNameFrom (MN 0 "letty")
329332 claim tyn RType
330− valn <- unique_hole (MN 0 "letval")
333+ valn <- getNameFrom (MN 0 "letval")
331334 claim valn (Var tyn)
332335 letbind n (Var tyn) (Var valn)
333336 focus valn
@@ -346,7 +349,7 @@ elab ist info pattern opts fn tm
346349 -- new function name
347350 env <- get_env
348351 argTys <- claimArgTys env args
349− fn <- unique_hole (MN 0 "inf_fn")
352+ fn <- getNameFrom (MN 0 "inf_fn")
350353 let fty = fnTy argTys rty
351354-- trace (show (ptm, map fst argTys)) $ focus fn
352355 -- build and defer the function application
@@ -360,8 +363,8 @@ elab ist info pattern opts fn tm
360363 ans <- claimArgTys env xs
361364 return ((n, (False, forget nty)) : ans)
362365 claimArgTys env (_ : xs)
363− = do an <- unique_hole (MN 0 "inf_argTy")
364− aval <- unique_hole (MN 0 "inf_arg")
366+ = do an <- getNameFrom (MN 0 "inf_argTy")
367+ aval <- getNameFrom (MN 0 "inf_arg")
365368 claim an RType
366369 claim aval (Var an)
367370 ans <- claimArgTys env xs
@@ -394,16 +397,12 @@ elab ist info pattern opts fn tm
394397 | isTConName f (tt_ctxt ist) && pattern && not reflect && not inty
395398 = lift $ tfail (Msg "Typecase is not allowed")
396399 -- if f is local, just do a simple_app
397− elab' (ina, g, inty) tm@(PApp fc (PRef _ f) args')
398− = do let args = {- case lookupCtxt f (inblock info) of
399− Just ps -> (map (pexp . (PRef fc)) ps ++ args')
400− _ -> -} args'
401−-- newtm <- mkSpecialised ist fc f (map getTm args') tm
402− env <- get_env
403− if (f `elem` map fst env && length args' == 1)
400+ elab' (ina, g, inty) tm@(PApp fc (PRef _ f) args)
401+ = do env <- get_env
402+ if (f `elem` map fst env && length args == 1)
404403 then -- simple app, as below
405404 do simple_app (elabE (ina, g, inty) (PRef fc f))
406− (elabE (True, g, inty) (getTm (head args')))
405+ (elabE (True, g, inty) (getTm (head args)))
407406 (show tm)
408407 solve
409408 else
@@ -416,7 +415,7 @@ elab ist info pattern opts fn tm
416415 -- we can unify with them
417416 case lookupCtxt f (idris_classes ist) of
418417 [] -> return ()
419− _ -> mapM_ setInjective (map getTm args')
418+ _ -> mapM_ setInjective (map getTm args)
420419 ctxt <- get_context
421420 let guarded = isConName f ctxt
422421 ns <- apply (Var f) (map isph args)
@@ -429,7 +428,7 @@ elab ist info pattern opts fn tm
429428 (zip ns args)
430429 elabArgs (ina || not isinf, guarded, inty)
431430 [] fc False ns' (map (\x -> (lazyarg x, getTm x)) eargs)
432− mkSpecialised ist fc f (map getTm args') tm
431+ mkSpecialised ist fc f (map getTm args) tm
433432 solve
434433 ptm <- get_term
435434 ivs' <- get_instances
@@ -478,11 +477,11 @@ elab ist info pattern opts fn tm
478477 elab' ina (PElabError e) = fail (pshow ist e)
479478 elab' ina (PRewrite fc r sc newg)
480479 = do attack
481− tyn <- unique_hole (MN 0 "rty")
480+ tyn <- getNameFrom (MN 0 "rty")
482481 claim tyn RType
483− valn <- unique_hole (MN 0 "rval")
482+ valn <- getNameFrom (MN 0 "rval")
484483 claim valn (Var tyn)
485− letn <- unique_hole (MN 0 "rewrite_rule")
484+ letn <- getNameFrom (MN 0 "rewrite_rule")
486485 letbind letn (Var tyn) (Var valn)
487486 focus valn
488487 elab' ina r
@@ -497,11 +496,11 @@ elab ist info pattern opts fn tm
497496 solve
498497 where doEquiv t sc =
499498 do attack
500− tyn <- unique_hole (MN 0 "ety")
499+ tyn <- getNameFrom (MN 0 "ety")
501500 claim tyn RType
502− valn <- unique_hole (MN 0 "eqval")
501+ valn <- getNameFrom (MN 0 "eqval")
503502 claim valn (Var tyn)
504− letn <- unique_hole (MN 0 "equiv_val")
503+ letn <- getNameFrom (MN 0 "equiv_val")
505504 letbind letn (Var tyn) (Var valn)
506505 focus tyn
507506 elab' ina t
@@ -511,10 +510,10 @@ elab ist info pattern opts fn tm
511510 solve
512511 elab' ina@(_, a, inty) c@(PCase fc scr opts)
513512 = do attack
514− tyn <- unique_hole (MN 0 "scty")
513+ tyn <- getNameFrom (MN 0 "scty")
515514 claim tyn RType
516− valn <- unique_hole (MN 0 "scval")
517− scvn <- unique_hole (MN 0 "scvar")
515+ valn <- getNameFrom (MN 0 "scval")
516+ scvn <- getNameFrom (MN 0 "scvar")
518517 claim valn (Var tyn)
519518 letbind scvn (Var tyn) (Var valn)
520519 focus valn
@@ -872,11 +871,11 @@ runTac autoSolve ist tac
872871 when autoSolve solveAll
873872 runT (Equiv tm) -- let bind tm, then
874873 = do attack
875− tyn <- unique_hole (MN 0 "ety")
874+ tyn <- getNameFrom (MN 0 "ety")
876875 claim tyn RType
877− valn <- unique_hole (MN 0 "eqval")
876+ valn <- getNameFrom (MN 0 "eqval")
878877 claim valn (Var tyn)
879− letn <- unique_hole (MN 0 "equiv_val")
878+ letn <- getNameFrom (MN 0 "equiv_val")
880879 letbind letn (Var tyn) (Var valn)
881880 focus tyn
882881 elab ist toplevel False [] (MN 0 "tac") tm
@@ -884,12 +883,12 @@ runTac autoSolve ist tac
884883 when autoSolve solveAll
885884 runT (Rewrite tm) -- to elaborate tm, let bind it, then rewrite by that
886885 = do attack; -- (h:_) <- get_holes
887− tyn <- unique_hole (MN 0 "rty")
886+ tyn <- getNameFrom (MN 0 "rty")
888887 -- start_unify h
889888 claim tyn RType
890− valn <- unique_hole (MN 0 "rval")
889+ valn <- getNameFrom (MN 0 "rval")
891890 claim valn (Var tyn)
892− letn <- unique_hole (MN 0 "rewrite_rule")
891+ letn <- getNameFrom (MN 0 "rewrite_rule")
893892 letbind letn (Var tyn) (Var valn)
894893 focus valn
895894 elab ist toplevel False [] (MN 0 "tac") tm
@@ -900,9 +899,9 @@ runTac autoSolve ist tac
900899 when autoSolve solveAll
901900 runT (LetTac n tm)
902901 = do attack
903− tyn <- unique_hole (MN 0 "letty")
902+ tyn <- getNameFrom (MN 0 "letty")
904903 claim tyn RType
905− valn <- unique_hole (MN 0 "letval")
904+ valn <- getNameFrom (MN 0 "letval")
906905 claim valn (Var tyn)
907906 letn <- unique_hole n
908907 letbind letn (Var tyn) (Var valn)
@@ -911,9 +910,9 @@ runTac autoSolve ist tac
911910 when autoSolve solveAll
912911 runT (LetTacTy n ty tm)
913912 = do attack
914− tyn <- unique_hole (MN 0 "letty")
913+ tyn <- getNameFrom (MN 0 "letty")
915914 claim tyn RType
916− valn <- unique_hole (MN 0 "letval")
915+ valn <- getNameFrom (MN 0 "letval")
917916 claim valn (Var tyn)
918917 letn <- unique_hole n
919918 letbind letn (Var tyn) (Var valn)
@@ -933,16 +932,16 @@ runTac autoSolve ist tac
933932 runT (ApplyTactic tm) = do tenv <- get_env -- store the environment
934933 tgoal <- goal -- store the goal
935934 attack -- let f : List (TTName, Binder TT) -> TT -> Tactic = tm in ...
936− script <- unique_hole (MN 0 "script")
935+ script <- getNameFrom (MN 0 "script")
937936 claim script scriptTy
938− scriptvar <- unique_hole (MN 0 "scriptvar" )
937+ scriptvar <- getNameFrom (MN 0 "scriptvar" )
939938 letbind scriptvar scriptTy (Var script)
940939 focus script
941940 elab ist toplevel False [] (MN 0 "tac") tm
942941 (script', _) <- get_type_val (Var scriptvar)
943942 -- now that we have the script apply
944943 -- it to the reflected goal and context
945− restac <- unique_hole (MN 0 "restac")
944+ restac <- getNameFrom (MN 0 "restac")
946945 claim restac tacticTy
947946 focus restac
948947 fill (raw_apply (forget script')
@@ -965,9 +964,9 @@ runTac autoSolve ist tac
965964 -- goal, then apply the resulting reflected Tactic
966965 = do tgoal <- goal
967966 attack
968− script <- unique_hole (MN 0 "script")
967+ script <- getNameFrom (MN 0 "script")
969968 claim script scriptTy
970− scriptvar <- unique_hole (MN 0 "scriptvar" )
969+ scriptvar <- getNameFrom (MN 0 "scriptvar" )
971970 letbind scriptvar scriptTy (Var script)
972971 focus script
973972 ptm <- get_term
@@ -976,7 +975,7 @@ runTac autoSolve ist tac
976975 (script', _) <- get_type_val (Var scriptvar)
977976 -- now that we have the script apply
978977 -- it to the reflected goal
979− restac <- unique_hole (MN 0 "restac")
978+ restac <- getNameFrom (MN 0 "restac")
980979 claim restac tacticTy
981980 focus restac
982981 fill (forget script')
@@ -992,11 +991,11 @@ runTac autoSolve ist tac
992991 scriptTy = tacticTy
993992
994993 runT (Reflect v) = do attack -- let x = reflect v in ...
995− tyn <- unique_hole (MN 0 "letty")
994+ tyn <- getNameFrom (MN 0 "letty")
996995 claim tyn RType
997− valn <- unique_hole (MN 0 "letval")
996+ valn <- getNameFrom (MN 0 "letval")
998997 claim valn (Var tyn)
999− letn <- unique_hole (MN 0 "letvar")
998+ letn <- getNameFrom (MN 0 "letvar")
1000999 letbind letn (Var tyn) (Var valn)
10011000 focus valn
10021001 elab ist toplevel False [] (MN 0 "tac") v
@@ -1006,11 +1005,11 @@ runTac autoSolve ist tac
10061005 let value' = hnf ctxt env value
10071006 runTac autoSolve ist (Exact $ PQuote (reflect value'))
10081007 runT (Fill v) = do attack -- let x = fill x in ...
1009− tyn <- unique_hole (MN 0 "letty")
1008+ tyn <- getNameFrom (MN 0 "letty")
10101009 claim tyn RType
1011− valn <- unique_hole (MN 0 "letval")
1010+ valn <- getNameFrom (MN 0 "letval")
10121011 claim valn (Var tyn)
1013− letn <- unique_hole (MN 0 "letvar")
1012+ letn <- getNameFrom (MN 0 "letvar")
10141013 letbind letn (Var tyn) (Var valn)
10151014 focus valn
10161015 elab ist toplevel False [] (MN 0 "tac") v