Modelkit.SplitA validated train/test selection over one aligned source.
Train and test rows must be non-empty, unique within each partition, disjoint, and aligned to the same source size. materialize explicitly copies both selections into independent aligned datasets; constructing or inspecting a split does not copy dataset buffers.
val of_views : train:Row_view.t -> test:Row_view.t -> (t, Error.t) resultval train : t -> Row_view.tval test : t -> Row_view.t