Make._val solver_type : Solver_intf.solver_tThe type of the solver.
occurs ~target ~pattern returns true if the ~pattern occurs in the ~target, false otherwise. A node-free pattern (no nodes) always returns true.
type param_filter = {n_p_orig : Big.nodes_t;Pattern nodes (unflattened), for pre-encoding parameter filtering.
*)n_t_orig : Big.nodes_t;Target nodes (unflattened), for pre-encoding parameter filtering.
*)}val param_filter_none : param_filterEmpty parameter filter: disables pre-encoding parameter compatibility filtering. Use when the original (unflattened) node maps are not available or when parameter filtering is not needed.
val occurrence :
target:Big.t ->
pattern:Big.t ->
param_filter:param_filter ->
Solver_intf.occ optionoccurrence ~target ~pattern ~param_filter returns an occurrence if the ~pattern occurs in the ~target. The ~param_filter parameter allows the SAT solver to apply pre-encoding parameter compatibility filtering when the original (unflattened) node maps are available. Pass {n_p_orig = Nodes.empty; n_t_orig = Nodes.empty} to skip.
Compute the non-trivial automorphisms of a bigraph. The elements of each output pair are an automorphism over the place graph and an automorphism over the link graph, respectively.
val occurrences :
target:Big.t ->
pattern:Big.t ->
rname:string ->
param_filter:param_filter ->
Solver_intf.occ listoccurrences ~target ~pattern ~rname ~param_filter returns a list of all occurrences of ~pattern in ~target. No solver-level symmetry breaking or orbit filtering is applied: pruning occurrences related by a pattern automorphism is unsound for BRS when the rule's RHS distinguishes symmetric pattern nodes. The React layer applies the correct successor-based deduplication. The ~param_filter parameter allows the SAT solver to apply pre-encoding parameter compatibility filtering when the original (unflattened) node maps are available. Pass {n_p_orig = Nodes.empty; n_t_orig = Nodes.empty} to skip.
val occurrences_raw : target:Big.t -> pattern:Big.t -> Solver_intf.occ listSame as Solver.M.occurrences but without filtering symmetric occurrences out.
val occurrences_wildcard :
target:Big.t ->
pattern:Big.t ->
?t_flat:Big.t ->
group_lhs:Big.t list ->
unit ->
Solver_intf.occ listWildcard matching: match ignoring control parameter values. Caller must post-filter by control equality.
group_lhs must contain the LHS bigraphs of every rule in the caller's rule group (the rules sharing the structural key of pattern). SBC symmetry breaking is applied only to node swaps that are safe for every rule in the group: the full control at the two swapped positions must be equal across all group LHSes and carry no constraint (capture) parameter. An unsafe swap could prune the only occurrence that is valid for a single rule, since pruning is decided on the group representative's template while per-rule control validation happens afterwards in the caller.
val sbc_group_order_direct : pattern:Big.t -> n_p_orig:Big.nodes_t -> intOrder of the safe-automorphism group that the direct SAT path prunes with symmetry breaking (occurrences with ~param_filter). A set of SBC transposition generators is a subgroup of the symmetric group: a connected set of transpositions on k vertices generates S_k, so the group order is the product of (size)! over the connected components of the transposition graph. pattern must be the (already flattened) pattern passed to occurrences; n_p_orig the original LHS node table, so the same W2 filter is applied. Returns 1 for solvers that do not prune (GBS).
Order of the safe-automorphism group that the wildcard SAT path prunes with symmetry breaking (occurrences_wildcard). pattern is the group representative's LHS (it is flattened here to mirror occurrences_wildcard); group_lhs the LHS of every rule in the group, so the same W2 filter is applied. Returns 1 for solvers that do not prune (GBS).
equal a b returns true if bigraphs a and b are isomorphic, false otherwise.
Same as equal but skips the structural key comparison. Use only when the caller has already verified both bigraphs share the same key.
val show_occ : Solver_intf.occ -> stringString representation of an occurrence.
val pp_occ : Stdlib.Format.formatter -> Solver_intf.occ -> unitval occ_nodes : Solver_intf.occ -> Iso.tNode mapping of an occurrence.
val occ_edges : Solver_intf.occ -> Iso.tEdge mapping of an occurrence.
val occ_hyper_edges : Solver_intf.occ -> Fun.tHyper-edge mapping of an occurrence.
val occ_make :
nodes:Iso.t ->
edges:Iso.t ->
hyper_edges:Fun.t ->
Solver_intf.occConstruct an occurrence from its components.