@@ -59,19 +59,19 @@ rebuildEnv xs (Drop rest) (y :: env) = y :: rebuildEnv xs rest env
59---- The Effect EDSL itself ----
59---- The Effect EDSL itself ----
61-- some proof automation
61-- some proof automation
62−findEffElem : Nat -> Tactic -- Nat is maximum search depth
62+findEffElem : Nat -> List (TTName, Binder TT) -> Tactic -- Nat is maximum search depth
63−findEffElem O = Refine "Here" `Seq` Solve
63+findEffElem O ctxt = Refine "Here" `Seq` Solve
64−findEffElem (S n) = GoalType "EffElem"
64+findEffElem (S n) ctxt = GoalType "EffElem"
65 (Try (Refine "Here" `Seq` Solve)
65 (Try (Refine "Here" `Seq` Solve)
66− (Refine "There" `Seq` (Solve `Seq` findEffElem n)))
66+ (Refine "There" `Seq` (Solve `Seq` findEffElem n ctxt)))
68−findSubList : Nat -> Tactic
68+findSubList : Nat -> List (TTName, Binder TT) -> Tactic
69−findSubList O = Refine "SubNil" `Seq` Solve
69+findSubList O ctxt = Refine "SubNil" `Seq` Solve
70−findSubList (S n)
70+findSubList (S n) ctxt
71 = GoalType "SubList"
71 = GoalType "SubList"
72 (Try (Refine "subListId" `Seq` Solve)
72 (Try (Refine "subListId" `Seq` Solve)
73 ((Try (Refine "Keep" `Seq` Solve)
73 ((Try (Refine "Keep" `Seq` Solve)
74− (Refine "Drop" `Seq` Solve)) `Seq` findSubList n))
74+ (Refine "Drop" `Seq` Solve)) `Seq` findSubList n ctxt))
76updateResTy : (xs : List EFFECT) -> EffElem e a xs -> e a b t ->
76updateResTy : (xs : List EFFECT) -> EffElem e a xs -> e a b t ->
77 List EFFECT
77 List EFFECT
@@ -116,14 +116,14 @@ data EffM : (m : Type -> Type) ->
116-- Eff : List (EFFECT m) -> Type -> Type
116-- Eff : List (EFFECT m) -> Type -> Type
119−lift' : {default tactics { reflect findSubList 100; solve; }
119+lift' : {default tactics { applyTactic findSubList 100; solve; }
120 prf : SubList ys xs} ->
120 prf : SubList ys xs} ->
121 EffM m ys ys' t -> EffM m xs (updateWith ys' xs prf) t
121 EffM m ys ys' t -> EffM m xs (updateWith ys' xs prf) t
122lift' {prf} e = lift prf e
122lift' {prf} e = lift prf e
125effect' : {a, b: _} -> {e : Effect} ->
125effect' : {a, b: _} -> {e : Effect} ->
126− {default tactics { reflect findEffElem 100; solve; }
126+ {default tactics { applyTactic findEffElem 100; solve; }
127 prf : EffElem e a xs} ->
127 prf : EffElem e a xs} ->
128 (eff : e a b t) ->
128 (eff : e a b t) ->
129 EffM m xs (updateResTy xs prf eff) t
129 EffM m xs (updateResTy xs prf eff) t