Module Bigraph.Base

val (let*) : ('a, 'b) Stdlib.result -> ('a -> ('c, 'b) Stdlib.result) -> ('c, 'b) Stdlib.result
val (let+) : ('a -> 'b) -> ('a, 'c) Stdlib.result -> ('b, 'c) Stdlib.result
val ok_if_true : error:'a -> bool -> (unit, 'a) Stdlib.result
val (<?>) : int -> ('a * 'b * ('a -> 'b -> int)) -> int
val compare_pair : ('a -> 'b -> int) -> ('c -> 'd -> int) -> ('a * 'c) -> ('b * 'd) -> int
val compare_triple : ('a -> 'b -> int) -> ('c -> 'd -> int) -> ('e -> 'f -> int) -> ('a * 'c * 'e) -> ('b * 'd * 'f) -> int
val compare_quad : ('a -> 'b -> int) -> ('c -> 'd -> int) -> ('e -> 'f -> int) -> ('g -> 'h -> int) -> ('a * 'c * 'e * 'g) -> ('b * 'd * 'f * 'h) -> int
val compare_quint : ('a -> 'b -> int) -> ('c -> 'd -> int) -> ('e -> 'f -> int) -> ('g -> 'h -> int) -> ('i -> 'j -> int) -> ('a * 'c * 'e * 'g * 'i) -> ('b * 'd * 'f * 'h * 'j) -> int
val ints_compare : (int * int) -> (int * int) -> int
module type OrderedType = sig ... end
module Set : sig ... end
module Map : sig ... end
module type HashedType = sig ... end
module Hashtbl_yojson : sig ... end
module S_string : sig ... end
module M_int : sig ... end
module M_string : sig ... end
module H_int : sig ... end
val safe : 'a option -> 'a
val opt_equal : ('a -> 'b -> bool) -> 'a option -> 'b option -> bool
val list_equal : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
val tri_equal : ('a -> 'b -> bool) -> ('c -> 'd -> bool) -> ('e -> 'f -> bool) -> ('a * 'c * 'e) -> ('b * 'd * 'f) -> bool
val flip2 : ('a -> 'b -> 'c -> 'd) -> 'a -> 'c -> 'b -> 'd
val is_first_uppercase : string -> bool
val is_first_lowercase : string -> bool
val fold_matrix : ('a -> int -> int -> 'b -> 'a) -> 'b array array -> 'a -> 'a
val iter_matrix : (int -> int -> 'a -> unit) -> 'a array array -> unit
val is_square_matrix : 'a array array -> bool
val elements_matrix : 'a array array -> 'a list
val size_matrix : 'a array array -> int
val list_of_pair : ('a * 'a) -> 'a list
val cartesian : 'a list -> 'b list -> ('a * 'b) list
val list_rev_split_left : ('a * 'b) list -> 'a list
val fold_n : 'a -> int -> (int -> 'a -> 'a) -> 'a
val iter_till_some : ('a -> 'b option) -> 'a list -> 'b option
val avg : float Stdlib.Seq.t -> float
val pick_prob : ('a -> 'b) -> ('a -> 'b -> 'a) -> 'b -> 'a list -> 'a option

Pick the first element whose get_prob exceeds limit from a list sorted by non-decreasing cumulative probability (inverse-CDF selection over a drawn threshold). Used by PBRS for random reaction rule selection. get_prob extracts the probability from an element; set_diff transforms the picked element, receiving the preceding element's probability (PBRS ignores it and sets the label to 1.0: a simulated-trace edge exports 1.0). The head, if picked, is returned unchanged.