sig
val parallel_toss : (int * string) Pervasives.ref
type ('a, 'b) abstract_game_tree =
Terminal of Arena.game_state * int * 'b
| Leaf of Arena.game_state * int * 'a
| Node of Arena.game_state * int * 'a *
(Arena.move * ('a, 'b) GameTree.abstract_game_tree) array
val str_abstract :
?upto:int ->
?struc:bool ->
?depth:int ->
('a -> string) ->
('b -> string) -> ('a, 'b) GameTree.abstract_game_tree -> string
val size : ('a, 'b) GameTree.abstract_game_tree -> int
val player : ('a, 'b) GameTree.abstract_game_tree -> int
val state : ('a, 'b) GameTree.abstract_game_tree -> Arena.game_state
val init_abstract :
Arena.game ->
Arena.game_state ->
(Arena.game -> Arena.game_state -> int -> 'a) ->
('a, 'b) GameTree.abstract_game_tree
val unfold_abstract :
?timeout:(unit -> bool) ->
?depth:int ->
Arena.game ->
info_terminal:(int -> Arena.game -> Arena.game_state -> int -> 'a -> 'b) ->
info_leaf:(int -> Arena.game -> Arena.game_state -> int -> int -> 'a) ->
info_node:(int ->
Arena.game ->
Arena.game_state ->
int ->
(Arena.move * ('a, 'b) GameTree.abstract_game_tree) array ->
'a) ->
choice:(int ->
Arena.game ->
Arena.game_state ->
int ->
'a ->
(Arena.move * ('a, 'b) GameTree.abstract_game_tree) array -> int) ->
('a, 'b) GameTree.abstract_game_tree ->
('a, 'b) GameTree.abstract_game_tree
val cPAYOFF_AS_HEUR : float Pervasives.ref
type 'a node_info = {
heurs : float array;
heurs_are_exact : bool;
info : 'a;
}
type 'a terminal_info = {
payoffs : float array;
heurs_t : float array;
info_t : 'a;
}
type 'a game_tree =
('a GameTree.node_info, 'a GameTree.terminal_info)
GameTree.abstract_game_tree
val str :
('a -> string) ->
?upto:int -> ?struc:bool -> ?depth:int -> 'a GameTree.game_tree -> string
val node_values : 'a GameTree.game_tree -> float array
val node_info : 'a GameTree.game_tree -> 'a
val choose_moves :
Arena.game ->
'a GameTree.game_tree -> (Arena.move * Arena.game_state) list
val init :
Arena.game ->
Arena.game_state ->
(int -> Arena.game -> Arena.game_state -> 'a) ->
Formula.real_expr array array -> 'a GameTree.game_tree
val unfold :
?timeout:(unit -> bool) ->
?ab:bool ->
Arena.game ->
Formula.real_expr array array ->
info_leaf:(int -> Arena.game -> Arena.game_state -> 'a) ->
info_node:(int ->
int ->
float array ->
(Arena.move * 'a GameTree.game_tree) array -> 'a) ->
choice:(float array option Pervasives.ref ->
int ->
Arena.game ->
Arena.game_state ->
int ->
'a GameTree.node_info ->
(Arena.move * 'a GameTree.game_tree) array -> int) ->
'a GameTree.game_tree -> 'a GameTree.game_tree
end