@@ -61,7 +61,7 @@ get_type :: Raw -> Elab Type
6161get_type tm = do ctxt <- get_context
6262 env <- get_env
6363 (val, ty) <- lift $ check ctxt env tm
64− return (vToP ty)
64+ return (finalise ty)
6565
6666-- given a desired hole name, return a unique hole name
6767unique_hole :: Name -> Elab Name
@@ -119,6 +119,9 @@ intro n = processTactic' (Intro n)
119119forall :: Name -> Raw -> Elab ()
120120forall n t = processTactic' (Forall n t)
121121
122+patvar :: Name -> Raw -> Elab ()
123+patvar n t = processTactic' (PatVar n t)
124+
122125focus :: Name -> Elab ()
123126focus n = processTactic' (Focus n)
124127
@@ -134,17 +137,17 @@ qed = processTactic' QED
134137prepare_apply :: Raw -> [Bool] -> Elab [Name]
135138prepare_apply fn imps =
136139 do ty <- get_type fn
137− let claims = getArgs ty imps
138− mapM doClaim claims
140+ -- let claims = getArgs ty imps
141+ doClaims ty imps []
139142 where
140− getArgs (Bind n (Pi t) sc) (i : is) = (n, t, i):getArgs sc is
141− getArgs t i = []
142−
143− doClaim (n', t, i) =
143+ doClaims (Bind n' (Pi t) sc) (i : is) claims =
144144 do n <- unique_hole n'
145+ let sc' = instantiate (P Bound n t) sc
145146 claim n (forget t)
146147 when i (movelast n)
147− return n
148+ doClaims sc' is (n : claims)
149+ doClaims t [] claims = return (reverse claims)
150+ doClaims _ _ _ = fail "Wrong number of arguments"
148151
149152apply :: Raw -> [Bool] -> Elab ()
150153apply fn imps =