sig
type equivalence_classes = int Symmetries_sig.site_partition array
type symmetries = {
rules : Symmetries.equivalence_classes;
rules_and_initial_states : Symmetries.equivalence_classes option;
rules_and_alg_expr : Symmetries.equivalence_classes option;
}
type reduction =
Ground
| Forward of Symmetries.equivalence_classes
| Backward of Symmetries.equivalence_classes
val refine_partitioned_contact_map_in_lkappa_representation :
'a ->
('a -> int -> 'b -> 'b -> 'a * bool) ->
('a -> int -> 'b -> 'b -> 'a * bool) ->
('a -> int -> 'b -> 'b -> 'a * bool) ->
'b Symmetries_sig.site_partition array ->
'a * 'b Symmetries_sig.site_partition array
val detect_symmetries :
Remanent_parameters_sig.parameters ->
Model.t ->
LKappa_auto.cache ->
Remanent_parameters_sig.rate_convention ->
Pattern.cc list ->
Primitives.elementary_rule list ->
Public_data.contact_map -> LKappa_auto.cache * Symmetries.symmetries
val print_symmetries :
Remanent_parameters_sig.parameters ->
Model.t -> Symmetries.symmetries -> unit
type cache
val empty_cache : unit -> Symmetries.cache
val representative :
?parameters:Remanent_parameters_sig.parameters ->
sigs:Signature.s ->
Symmetries.cache ->
LKappa_auto.cache ->
Pattern.PreEnv.t ->
Symmetries.reduction ->
Pattern.cc ->
Symmetries.cache * LKappa_auto.cache * Pattern.PreEnv.t * Pattern.cc
val equiv_class :
?parameters:Remanent_parameters_sig.parameters ->
Model.t ->
bool Mods.DynArray.t ->
Symmetries.cache ->
LKappa_auto.cache ->
Pattern.PreEnv.t ->
Symmetries.reduction ->
Pattern.id ->
Symmetries.cache * LKappa_auto.cache * Pattern.PreEnv.t *
bool Mods.DynArray.t * (int * (Pattern.id * int) list)
end