sig
  type bmatrix
  type pg = {
    r : int;
    n : int;
    s : int;
    rn : Place.bmatrix;
    rs : Place.bmatrix;
    nn : Place.bmatrix;
    ns : Place.bmatrix;
  }
  val to_string : Place.pg -> string
  val json_of_place : Place.pg -> string
  val json_of_place_f : Place.pg -> Base.JSON.json_node
  val edges : Place.pg -> int
  val parse :
    regions:int -> nodes:int -> sites:int -> string list -> Place.pg
  val get_dot : Place.pg -> string * string * string * string
  val apply : Iso.t -> Place.pg -> Place.pg
  val parse_placing : int list list -> int -> Place.pg
  val leaves : Place.pg -> IntSet.t
  val orphans : Place.pg -> IntSet.t
  val elementary_id : int -> Place.pg
  val id0 : Place.pg
  val elementary_merge : int -> Place.pg
  val elementary_split : int -> Place.pg
  val zero : Place.pg
  val one : Place.pg
  val elementary_sym : int -> int -> Place.pg
  val elementary_ion : Place.pg
  val equal_placing : Place.pg -> Place.pg -> bool
  val compare_placing : Place.pg -> Place.pg -> int
  val equal_bmatrix : Place.bmatrix -> Place.bmatrix -> bool
  val compare_bmatrix : Place.bmatrix -> Place.bmatrix -> int
  val entries_bmatrix : Place.bmatrix -> int
  exception COMP_ERROR of (int * int)
  val tens : Place.pg -> Place.pg -> Place.pg
  val tens_of_list : Place.pg list -> Place.pg
  val comp : Place.pg -> Place.pg -> Place.pg
  val is_id : Place.pg -> bool
  val is_plc : Place.pg -> bool
  val is_ground : Place.pg -> bool
  val is_mono : Place.pg -> bool
  val is_epi : Place.pg -> bool
  val is_guard : Place.pg -> bool
  val decomp :
    target:Place.pg ->
    pattern:Place.pg ->
    Iso.t -> Place.pg * Place.pg * Place.pg * Iso.t * Iso.t
  exception NOT_PRIME
  val prime_components : Place.pg -> (Place.pg * Iso.t) list
  val decomp_d : Place.pg -> int -> Place.pg * Place.pg * Iso.t * Iso.t
  exception NOT_TOTAL
  val match_list :
    target:Place.pg ->
    pattern:Place.pg ->
    n_t:Nodes.t ->
    n_p:Nodes.t ->
    (Cnf.clause * Cnf.b_clause list) list * Cnf.clause list * IntSet.t
  val match_leaves :
    target:Place.pg ->
    pattern:Place.pg ->
    n_t:Nodes.t -> n_p:Nodes.t -> Cnf.clause list * IntSet.t
  val match_orphans :
    target:Place.pg ->
    pattern:Place.pg ->
    n_t:Nodes.t -> n_p:Nodes.t -> Cnf.clause list * IntSet.t
  val match_regions :
    target:Place.pg ->
    pattern:Place.pg ->
    n_t:Nodes.t -> n_p:Nodes.t -> Cnf.clause list * IntSet.t
  val match_sites :
    target:Place.pg ->
    pattern:Place.pg ->
    n_t:Nodes.t -> n_p:Nodes.t -> Cnf.clause list * IntSet.t
  val match_trans : target:Place.pg -> pattern:Place.pg -> Cnf.clause list
  val check_match :
    target:Place.pg -> pattern:Place.pg -> Place.bmatrix -> Iso.t -> bool
  val match_region_nodes :
    Place.pg -> Place.pg -> Nodes.t -> Nodes.t -> Cnf.clause list * IntSet.t
  val match_nodes_sites :
    Place.pg -> Place.pg -> Nodes.t -> Nodes.t -> Cnf.clause list * IntSet.t
  val match_list_eq :
    Place.pg ->
    Place.pg ->
    Nodes.t ->
    Nodes.t ->
    (Cnf.clause * Cnf.b_clause list) list * Cnf.clause list * IntSet.t
  val deg_regions : Place.pg -> int list
  val deg_sites : Place.pg -> int list
  val trans : Place.pg -> Place.bmatrix
end