type ('term, 'lazy_term, 'reduction, 'ident) tactic =
| Absurd of loc * 'term
| Apply of loc * 'term
+ | ApplyS of loc * 'term
| Assumption of loc
| Auto of loc * int option * int option * string option * string option
(* depth, width, paramodulation, full *) (* ALB *)
function
| Absurd (_, term) -> "absurd" ^ term_pp term
| Apply (_, term) -> "apply " ^ term_pp term
+ | ApplyS (_, term) -> "applyS " ^ term_pp term
| Auto (_,_,_,Some kind,_) -> "auto " ^ kind
| Auto _ -> "auto"
| Assumption _ -> "assumption"
match ast with
| GrafiteAst.Absurd (_, term) -> Tactics.absurd term
| GrafiteAst.Apply (_, term) -> Tactics.apply term
+ | GrafiteAst.ApplyS (_, term) ->
+ Tactics.applyS ~term ~dbd:(LibraryDb.instance ())
| GrafiteAst.Assumption _ -> Tactics.assumption
| GrafiteAst.Auto (_,depth,width,paramodulation,full) ->
AutoTactic.auto_tac ?depth ?width ?paramodulation ?full
| GrafiteAst.Apply (loc, term) ->
let metasenv,cic = disambiguate_term context metasenv term in
metasenv,GrafiteAst.Apply (loc, cic)
+ | GrafiteAst.ApplyS (loc, term) ->
+ let metasenv,cic = disambiguate_term context metasenv term in
+ metasenv,GrafiteAst.ApplyS (loc, cic)
| GrafiteAst.Assumption loc ->
metasenv,GrafiteAst.Assumption loc
| GrafiteAst.Auto (loc,depth,width,paramodulation,full) ->
GrafiteAst.Absurd (loc, t)
| IDENT "apply"; t = tactic_term ->
GrafiteAst.Apply (loc, t)
+ | IDENT "applyS"; t = tactic_term ->
+ GrafiteAst.ApplyS (loc, t)
| IDENT "assumption" ->
GrafiteAst.Assumption loc
| IDENT "auto";