package pgsolver

  1. Overview
  2. Docs
type node = int
val nd_undef : node
val nd_show : node -> string
type nodeset
val ns_isEmpty : nodeset -> bool
val ns_elem : node -> nodeset -> bool
val ns_nodeCompare : node -> node -> int
val ns_compare : nodeset -> nodeset -> int
val ns_empty : nodeset
val ns_make : node list -> nodeset
val ns_size : nodeset -> int
val ns_fold : ('a -> node -> 'a) -> 'a -> nodeset -> 'a
val ns_iter : (node -> unit) -> nodeset -> unit
val ns_map : (node -> node) -> nodeset -> nodeset
val ns_filter : (node -> bool) -> nodeset -> nodeset
val ns_exists : (node -> bool) -> nodeset -> bool
val ns_forall : (node -> bool) -> nodeset -> bool
val ns_find : (node -> bool) -> nodeset -> node
val ns_max : nodeset -> (node -> node -> bool) -> node
val ns_some : nodeset -> node
val ns_first : nodeset -> node
val ns_last : nodeset -> node
val ns_add : node -> nodeset -> nodeset
val ns_del : node -> nodeset -> nodeset
val ns_union : nodeset -> nodeset -> nodeset
val ns_nodes : nodeset -> node list
type player
type priority = int
val plr_Even : player
val plr_Odd : player
val plr_undef : player
val plr_random : unit -> player
val plr_opponent : player -> player
val plr_benefits : priority -> player
val plr_show : player -> string
val plr_iterate : (player -> unit) -> unit
val prio_good_for_player : priority -> player -> bool
val odd : priority -> bool
val even : priority -> bool
type paritygame
val pg_create : int -> paritygame
val pg_init : int -> (node -> priority * player * node list * string option) -> paritygame
val pg_size : paritygame -> int
val pg_node_count : paritygame -> int
val pg_edge_count : paritygame -> int
val pg_copy : paritygame -> paritygame
val pg_get_priority : paritygame -> node -> priority
val pg_get_owner : paritygame -> node -> player
val pg_get_successors : paritygame -> node -> nodeset
val pg_get_predecessors : paritygame -> node -> nodeset
val pg_set_priority : paritygame -> node -> priority -> unit
val pg_set_owner : paritygame -> node -> player -> unit
val pg_add_edge : paritygame -> node -> node -> unit
val pg_del_edge : paritygame -> node -> node -> unit
val pg_get_desc : paritygame -> node -> string option
val pg_set_desc : paritygame -> node -> string option -> unit
val pg_get_desc' : paritygame -> node -> string
val pg_set_desc' : paritygame -> node -> string -> unit
val pg_isDefined : paritygame -> node -> bool
val pg_iterate : (node -> (priority * player * nodeset * nodeset * string option) -> unit) -> paritygame -> unit
val pg_edge_iterate : (node -> node -> unit) -> paritygame -> unit
val pg_map : (node -> (priority * player * nodeset * nodeset * string option) -> priority * player * nodeset * nodeset * string option) -> paritygame -> paritygame
val pg_map2 : (node -> (priority * player * nodeset * nodeset * string option) -> 'a) -> paritygame -> 'a array
val pg_find_desc : paritygame -> string option -> node
val pg_get_index : paritygame -> int
val pg_prio_nodes : paritygame -> priority -> nodeset
val pg_get_selected_priorities : paritygame -> (priority -> bool) -> priority list
val pg_get_priorities : paritygame -> priority list
val pg_remove_nodes : paritygame -> nodeset -> unit
val pg_remove_edges : paritygame -> (node * node) list -> unit
val pg_sort : ((priority * player * nodeset * nodeset * string option) -> (priority * player * nodeset * nodeset * string option) -> int) -> paritygame -> unit
type solution = player array
type strategy = node array
val sol_create : paritygame -> solution
val sol_make : int -> solution
val sol_init : paritygame -> (node -> player) -> solution
val sol_get : solution -> node -> player
val sol_set : solution -> node -> player -> unit
val sol_iter : (node -> player -> unit) -> solution -> unit
val sol_number_solved : solution -> int
val str_create : paritygame -> strategy
val str_make : int -> strategy
val str_init : paritygame -> (node -> node) -> strategy
val str_get : strategy -> node -> node
val str_set : strategy -> node -> node -> unit
val str_iter : (node -> node -> unit) -> strategy -> unit
type global_solver = paritygame -> solution * strategy
val game_to_string : paritygame -> string
val print_game : paritygame -> unit
val print_solution_strategy_parsable : solution -> strategy -> unit
val to_dotty : paritygame -> solution -> strategy -> out_channel -> unit
val to_dotty_file : paritygame -> solution -> strategy -> string -> unit
val format_strategy : strategy -> string
val format_solution : solution -> string
val format_game : paritygame -> string
type pg_ordering = (node * priority * player * nodeset) -> (node * priority * player * nodeset) -> int
val reward : player -> priority -> priority
val ord_rew_for : player -> pg_ordering
val ord_prio : pg_ordering
val ord_total_by : pg_ordering -> pg_ordering
val pg_max : paritygame -> pg_ordering -> node
val pg_min : paritygame -> pg_ordering -> node
val pg_max_prio_node : paritygame -> node
val pg_max_rew_node_for : paritygame -> player -> node
val pg_max_prio : paritygame -> priority
val pg_min_prio : paritygame -> priority
val pg_max_prio_for : paritygame -> player -> priority
val collect_nodes : paritygame -> (node -> (priority * player * nodeset * nodeset * string option) -> bool) -> nodeset
val collect_nodes_by_prio : paritygame -> (priority -> bool) -> nodeset
val collect_nodes_by_owner : paritygame -> (player -> bool) -> nodeset * nodeset
val collect_max_prio_nodes : paritygame -> nodeset
val collect_max_parity_nodes : paritygame -> nodeset
val subgame_by_edge_pred : paritygame -> (node -> node -> bool) -> paritygame
val subgame_by_strat : paritygame -> strategy -> paritygame
val subgame_by_strat_pl : paritygame -> strategy -> player -> paritygame
val subgame_by_list : paritygame -> nodeset -> paritygame
val subgame_by_node_filter : paritygame -> (node -> bool) -> paritygame * (node -> node) * (node -> node)
exception Unmergable
val merge_strategies_inplace : strategy -> strategy -> unit
val merge_solutions_inplace : solution -> solution -> unit
type scc = int
val strongly_connected_components : paritygame -> nodeset array * scc array * scc list array * scc list
val sccs_compute_leaves : scc list -> scc list array -> scc list
val sccs_compute_transposed_topology : scc list array -> scc list array
val sccs_compute_connectors : paritygame -> (nodeset array * scc array * scc list array * scc list) -> (scc * scc, (scc * scc) list) Hashtbl.t
val show_sccs : nodeset array -> scc list array -> scc list -> string
val attr_closure_inplace' : paritygame -> strategy -> player -> nodeset -> bool -> (node -> bool) -> bool -> nodeset
val attr_closure_inplace : paritygame -> strategy -> player -> nodeset -> nodeset
val attractor_closure_inplace_sol_strat : paritygame -> (node -> bool) -> solution -> strategy -> nodeset -> nodeset -> nodeset * nodeset
val pg_set_closed : paritygame -> nodeset -> player -> bool
val pg_set_dominion : (paritygame -> solution * strategy) -> paritygame -> nodeset -> player -> strategy option
type partial_paritygame = node * (node -> node Tcsbasedata.Enumerators.enumerator) * (node -> priority * player) * (node -> string option)
type partial_solution = node -> player * node option
type partial_solver = partial_paritygame -> partial_solution
val induce_partialparitygame : paritygame -> node -> partial_paritygame
val induce_counting_partialparitygame : paritygame -> node -> int ref * partial_paritygame
val partially_solve_dominion : paritygame -> node -> partial_solver -> solution * strategy
val partially_solve_game : paritygame -> partial_solver -> solution * strategy
val get_player_decision_info : paritygame -> bool * bool
val is_single_parity_game : paritygame -> priority option
val number_of_strategies : paritygame -> player -> int -> int
val compute_priority_reach_array : paritygame -> player -> priority array array
type dynamic_paritygame = (priority * player * string option) Tcsgraph.DynamicGraph.dynamic_graph
val paritygame_to_dynamic_paritygame : paritygame -> dynamic_paritygame
val dynamic_subgame_by_strategy : dynamic_paritygame -> strategy -> dynamic_paritygame
val paritygame_to_dynamic_paritygame_by_strategy : paritygame -> strategy -> dynamic_paritygame
module NodeSet : sig ... end
val diamond : paritygame -> NodeSet.t -> NodeSet.t
module type PGDescription = sig ... end
module type PGBuilder = sig ... end