sig
type label = {
lb_rule : string;
time_in : float * float;
parameters_in : (string * (float * float)) list;
}
type player_loc = {
payoff : Formula.real_expr;
moves : (Arena.label * int) list;
view : Formula.formula * (string * Formula.formula) list;
heur : float list;
}
type game = {
rules : (string * ContinuousRule.rule) list;
patterns : Formula.real_expr list;
graph : (Arena.player_loc array * string list) array;
num_players : int;
player_names : (string * int) list;
data : (string * string) list;
defined_rels : (string * (string list * Formula.formula)) list;
starting_struc : Structure.structure;
}
type move = {
mv_time : float;
parameters : (string * float) list;
rule : string;
next_loc : int;
matching : (string * string) list;
}
type game_state = {
struc : Structure.structure;
time : float;
cur_loc : int;
history : (Arena.move * float option) list;
}
val empty_state : Arena.game * Arena.game_state
val equal_state : Arena.game_state -> Arena.game_state -> bool
val make_move :
Arena.move ->
Arena.game * Arena.game_state -> Arena.game * Arena.game_state
val matching_of_names :
Arena.game * Arena.game_state ->
string -> (string * string) list -> (string * int) list
val rules_for_player : int -> Arena.game -> string list
val label_str : Arena.label -> string
val move_str : Arena.label * int -> string
val str : Arena.game -> string
val state_str : Arena.game * Arena.game_state -> string
val equational_def_style : bool Pervasives.ref
val fprint_state_full :
?ext_struct:bool ->
bool -> Format.formatter -> Arena.game * Arena.game_state -> unit
val fprint_state :
Format.formatter -> Arena.game * Arena.game_state -> unit
val print_state : Arena.game * Arena.game_state -> unit
val sprint_state : Arena.game * Arena.game_state -> string
val sprint_state_ext : Arena.game * Arena.game_state -> string
val sprint_state_full : Arena.game * Arena.game_state -> string
val sprint_game_move : Arena.move * float option -> string
val game_move_str : Arena.move -> string
type definition =
DefRule of string *
((string * int) list ->
(string * (string list * Formula.formula)) list ->
string -> ContinuousRule.rule)
| DefLoc of
((string * int) list -> int * (Arena.player_loc array * string list))
| DefPlayers of string list
| DefRel of string * string list * Formula.formula
| DefPattern of Formula.real_expr
| StartStruc of Structure.structure
| CurrentStruc of Structure.structure
| History of (Arena.move * float option) list
| StateTime of float
| StateLoc of int
| StateData of (string * string) list
exception Arena_definition_error of string
val array_of_players :
'a -> (string * int) list -> (string * 'a) list -> 'a array
val make_move_arena :
string -> (string * (float * float)) list -> int -> Arena.label * int
val make_location :
int ->
(string *
[< `Heurs of float list
| `Moves of (Arena.label * int) list
| `Payoff of Formula.real_expr ]
list)
list ->
string list ->
(string * int) list -> int * (Arena.player_loc array * string list)
val process_definition :
?extend_state:Arena.game * Arena.game_state ->
Arena.definition list -> Arena.game * Arena.game_state
val map_to_formulas :
(Formula.formula -> Formula.formula) -> Arena.game -> Arena.game
val fold_over_formulas :
include_defined_rels:bool ->
(Formula.formula -> 'a -> 'a) -> Arena.game -> 'a -> 'a
val map_to_structures :
(Structure.structure -> Structure.structure) -> Arena.game -> Arena.game
val map_to_discrete :
(DiscreteRule.rule -> DiscreteRule.rule) -> Arena.game -> Arena.game
val all_fluents :
Arena.game -> Aux.Strings.t * Aux.Strings.t * Aux.Strings.t
val compare_diff :
?cmp_funs:(float -> float -> bool) ->
Arena.game * Arena.game_state ->
Arena.game * Arena.game_state -> bool * string
val cGRID_SIZE : int
val list_moves :
Arena.game ->
Arena.game_state -> (int * Arena.move * Arena.game_state) array
val list_moves_shifts :
Arena.game ->
Arena.game_state ->
(int * (Arena.move * ((string * string) * float list) list) *
Arena.game_state)
array
val apply_rule_int :
Arena.game * Arena.game_state ->
string * (string * int) list * float * (string * float) list ->
(Arena.game * Arena.game_state) * string
val apply_rewrite :
Arena.game * Arena.game_state ->
int * (string * DiscreteRule.matching) -> Arena.game * Arena.game_state
val win_so_formula :
?inv:bool ->
?start0:bool ->
?subst:(string * string) list -> Arena.game -> int -> Formula.formula
end