Wp.AutoIt is always safe to apply strategies to any goal.
val array : ?priority:float -> Tactical.selection -> Strategy.strategyval choice : ?priority:float -> Tactical.selection -> Strategy.strategyval absurd : ?priority:float -> Tactical.selection -> Strategy.strategyval contrapose : ?priority:float -> Tactical.selection -> Strategy.strategyval compound : ?priority:float -> Tactical.selection -> Strategy.strategyval cut :
?priority:float ->
?modus:bool ->
Tactical.selection ->
Strategy.strategyval filter : ?priority:float -> ?anti:bool -> unit -> Strategy.strategyval havoc : ?priority:float -> Tactical.selection -> Strategy.strategyval separated : ?priority:float -> Tactical.selection -> Strategy.strategyval instance :
?priority:float ->
Tactical.selection ->
Tactical.selection list ->
Strategy.strategyval lemma :
?priority:float ->
?at:Tactical.selection ->
string ->
Tactical.selection list ->
Strategy.strategyval intuition : ?priority:float -> Tactical.selection -> Strategy.strategyval range :
?priority:float ->
Tactical.selection ->
vmin:int ->
vmax:int ->
Strategy.strategyval split : ?priority:float -> Tactical.selection -> Strategy.strategyval definition : ?priority:float -> Tactical.selection -> Strategy.strategyval compute : ?priority:float -> Tactical.selection -> Strategy.strategyval auto_split : Strategy.heuristicval auto_range : Strategy.heuristicmodule Range : sig ... endTacticals with hand-written process are not safe. However, the combinators below are guarantied to be sound.
val t_absurd : Tactical.processFind a contradiction.
val t_id : Tactical.processKeep goal unchanged.
val t_finally : string -> Tactical.processApply a description to a leaf goal. Same as t_descr "..." t_id.
val t_descr : string -> Tactical.process -> Tactical.processApply a description to each sub-goal
val t_split : ?pos:string -> ?neg:string -> Lang.F.pred -> Tactical.processSplit with p and not p.
val t_cut : ?by:string -> Lang.F.pred -> Tactical.process -> Tactical.processProve condition p and use-it as a forward hypothesis.
val t_case :
Lang.F.pred ->
Tactical.process ->
Tactical.process ->
Tactical.processCase analysis: t_case p a b applies process a under hypothesis p and process b under hypothesis not p.
val t_cases :
?complete:string ->
(Lang.F.pred * Tactical.process) list ->
Tactical.processComplete analysis: applies each process under its guard, and proves that all guards are complete.
val t_chain : Tactical.process -> Tactical.process -> Tactical.processApply second process to every goal generated by the first one.
val t_range :
Lang.F.term ->
int ->
int ->
upper:Tactical.process ->
lower:Tactical.process ->
range:Tactical.process ->
Tactical.processval t_replace :
?equal:string ->
src:Lang.F.term ->
tgt:Lang.F.term ->
Tactical.process ->
Tactical.processProve src=tgt then replace src by tgt.