use crate::basis::{
BSplineBasisSpec, BSplineIdentifiability, BSplineKnotSpec, BasisBuildResult, BasisError,
BasisMetadata, CenterStrategy, CenterStrategyKind, ConstantCurvatureBasisSpec,
DuchonBasisSpec, KroneckerFactoredBasis, MaternBasisSpec, MeasureJetBasisSpec,
PenaltyCandidate, PenaltyInfo, PenaltySource, SpatialIdentifiability,
SphericalSplineBasisSpec, ThinPlateBasisSpec, apply_sum_to_zero_constraint,
build_bspline_basis_1d, build_constant_curvature_basis, build_duchon_basiswithworkspace,
build_matern_basiswithworkspace, build_matern_collocation_operator_matrices,
build_measure_jet_basis, build_spherical_spline_basis, build_thin_plate_basis,
center_strategy_is_auto, center_strategy_kind, center_strategy_num_centers,
center_strategy_with_num_centers, filter_active_penalty_candidates,
filter_active_penalty_candidates_with_ops, pairwise_distance_bounds,
pairwise_distance_bounds_sampled, points_in_aniso_y_space, select_centers_by_strategy,
};
use crate::construction::{
kronecker_logdet_and_derivatives, kronecker_marginal_eigensystems, kronecker_product,
};
use penalty_priors::realize_coefficient_groups;
use gam_problem::EstimationError;
use gam_linalg::faer_ndarray::{fast_ab, fast_atb};
use gam_linalg::matrix::{
BlockDesignOperator, DenseDesignOperator, DesignBlock, DesignMatrix, LinearOperator,
TensorProductDesignOperator,
};
use gam_problem::LinearInequalityConstraints;
use gam_runtime::resource::MatrixMaterializationError;
use faer::sparse::{SparseColMat, Triplet};
use ndarray::{Array1, Array2, ArrayView2, ArrayViewMut2, Axis, s};
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, BTreeSet};
use std::f64;
use std::fs::File;
use std::ops::Range;
use std::path::PathBuf;
use std::sync::Arc;
#[cfg(test)]
mod prelude_lock_tests {
#[test]
fn smooth_prelude_include_path_is_locked() {
assert!(core::any::type_name::<gam_linalg::matrix::DesignMatrix>().contains("DesignMatrix"));
}
}