val declare :
descriptor:descriptor ->
name:string ->
pp:(Format.formatter -> 'a -> unit) ->
init:(unit -> 'a) ->
clause_compilation_is_over:('a -> 'a) ->
?goal_compilation_begins:('a -> 'a) ->
compilation_is_over:('a -> 'a option) ->
execution_is_over:('a -> 'a option) ->
unit ->
'a componentval end_clause_compilation : t -> tval begin_goal_compilation : t -> tval end_compilation : t -> tval end_execution : t -> tval update_return : 'a component -> t -> ('a -> 'a * 'b) -> t * 'b