cru_classifier - equivalence class specification for the cru library
#include <cru/cru.h>
typedef struct
cru_classifier_s
{
struct
cru_prop_s
cl_prop;
struct
cru_order_s
cl_order;
} *cru_classifier;
This structure parameterizes the cru_partition_of library function with necessary information initialized by the application to compute a partition on the vertices in a graph, and is also a field in the cru_merger structure used to parameterize the cru_merged library function.
For every vertex in a given graph, a property specified by the cl_prop field is computed by the usual cru_prop calling conventions. Any two vertices whose properties are equal according to the cl_order field with usual cru_order calling conventions are deemed to be members of the same equivalence class.
Some default values can be inferred automatically.
As these defaults imply, a zero-filled classifier describes the partition of every vertex in a class by itself.
The predicate in the cl_order field must be algebraically reflexive, transitive, and symmetric. Not meeting this requirement is an error. There is no way for cru to enforce this requirement automatically, but anomalous results are likely to follow from not meeting it.
/usr/local/include/cru/data_types.h
cru, cru_bop, cru_bpred, cru_builder, cru_built, cru_cbop, cru_class_of, cru_class_size, cru_composed, cru_composer, cru_connect, cru_connector, cru_cqop, cru_crossed, cru_crosser, cru_ctop, cru_ctop_pair, cru_ctop_quad, cru_data_types, cru_deduplicated, cru_destructor, cru_destructor_pair, cru_edge_count, cru_fabricated, cru_fabricator, cru_filter, cru_filtered, cru_fold, cru_free_kill_switch, cru_free_later, cru_free_now, cru_free_partition, cru_function_types, cru_get, cru_hash, cru_induced, cru_inducer, cru_kernel, cru_kill, cru_killed, cru_mapreduced, cru_mapreducer, cru_merged, cru_merger, cru_mutated, cru_mutator, cru_new_kill_switch, cru_nop, cru_order, cru_order_pair, cru_partition_of, cru_plan, cru_postponed, cru_postponer, cru_prop, cru_prop_pair, cru_pruner, cru_qop, cru_qpred, cru_set, cru_sig, cru_singleton, cru_split, cru_splitter, cru_spread, cru_strerror, cru_stretch, cru_stretched, cru_stretcher, cru_subconnector, cru_terminus_count, cru_top, cru_tpred, cru_united, cru_uop, cru_vertex_count, cru_zone
Dennis Furey (milonga@delayinsensitive.com)
https://github.com/gueststar/cru