module type Engine =
sig
type goal
- type conjecture
- type metasenv = conjecture list
+ type proof
type tactic
- val goal_of_conjecture: conjecture -> goal
- val goal_mem: goal -> metasenv -> bool
+ val is_goal_closed: goal -> proof -> bool
+ val goals_of_proof: proof -> goal list
val apply_tactic:
- tactic -> metasenv -> goal ->
- metasenv * goal list * goal list
+ tactic -> proof -> goal ->
+ proof * goal list * goal list (** new proof, opened goals, closed goals *)
end
module Make (E:Engine) :
type goal_switch = Open of E.goal | Closed of E.goal
type 'a stack = 'a list
type status =
- E.metasenv * ((int * goal_switch) list * E.goal list * E.goal list) stack
+ E.proof * ((int * goal_switch) list * E.goal list * E.goal list) stack
type tactical =
| Tactic of E.tactic
| Qed
val eval: t -> status -> status
- val init: E.metasenv -> status
+ val init: E.proof -> status
end