Skip to main content

Crate phop_core

Crate phop_core 

Source
Expand description

§phop-core — differentiable symbolic discovery on the EML operator

phop discovers closed-form expressions from data by learning both the topology and the numeric parameters of homogeneous binary trees built from a single primitive, the EML operator

eml(x, y) = exp(x) - ln(y)

together with the constant 1. The grammar is the trivial production S -> 1 | eml(S, S), which (Odrzywołek 2026) is functionally complete for the elementary functions. Homogeneity lets an entire population of candidate trees be evaluated inside a single automatic-differentiation graph and optimized end-to-end.

This crate is layered:

  • Layer A (forest) — tensorized EML forest forward evaluation.
  • Layer B (topology), C (loss/Pareto), D (distillation) build on top (see the crate TODO).

The AST, canonicalization, and LaTeX rendering are delegated to the oxieml crate; automatic differentiation and optimization to scirs2-autograd.

Re-exports§

pub use accel::gpu_backend;
pub use accel::GpuBackend;
pub use affine::discover_affine;
pub use affine::discover_affine_pareto;
pub use affine::AffineSolution;
pub use analyze::analyze;
pub use analyze::certified_range;
pub use analyze::certified_root;
pub use analyze::Analysis;
pub use any_solution::merge_pareto;
pub use any_solution::AnySolution;
pub use config::Backend;
pub use config::Config;
pub use config::TempSchedule;
pub use dataset::DataSet;
pub use dataset::Standardizer;
pub use dimension::pi_groups;
pub use dimension::Dimension;
pub use discoverer::discover_auto;
pub use discoverer::discover_auto_all;
pub use discoverer::Discoverer;
pub use distill::distill;
pub use distill::Distilled;
pub use error::PhopError;
pub use error::Result;
pub use fit::fit_constants;
pub use fit::mse;
pub use fit::n_constants;
pub use forest::eml_guarded;
pub use forest::eval_tree;
pub use gated::discover_gated;
pub use gated::discover_gated_warm;
pub use gumbel::discover_gumbel;
pub use loss::RobustLoss;
pub use ode::discover_ode;
pub use optimize::polish_constants_scirs;
pub use optimize::ScirsPolish;
pub use pareto::ParetoFront;
pub use polish::polish_constants;
pub use polish::polish_constants_robust;
pub use polish::snap_constants;
pub use solution::Solution;

Modules§

accel
Accelerator selection for the tensorized EML forward pass.
affine
Affine- and log-affine-leaf EML discovery (M6 root-cause fix, steps 1 + 2).
analyze
Layer D⁺ — post-discovery analysis of a recovered law via the oxieml computer-algebra system.
any_solution
A heterogeneous discovered law — either an EML-tree law from the differentiable core engine or a rich-leaf affine/log-linear law from crate::affine.
codegen
Code generation for discovered EML expressions (Rust, Python/NumPy).
config
Discovery configuration.
dataset
Dataset ingestion: (X, y) pairs from arrays or CSV.
dimension
Buckingham-π dimensional reduction (a discovery prior for phop).
discoverer
The top-level discovery engine.
distill
Layer D — symbolic distillation of a discovered EML tree.
error
Error types for the phop engine.
fit
M1 — gradient-based fitting of the real-valued constants of an EML tree.
forest
Layer A — tensorized EML forest forward evaluation.
gated
Differentiable tree shape via per-node expand/terminate gates (the depth-learning step).
gumbel
Layer B (M2) — differentiable topology via Gumbel-Softmax leaf selection.
loss
Robust regression losses for constant fitting under outliers.
ode
Governing-equation discovery: recover the right-hand side of an autonomous ODE dx/dt = f(x) from a sampled trajectory, using phop as the function learner.
optimize
Library-backed constant refinement via scirs2-optimize.
pareto
Pareto front over (complexity, MSE).
polish
Post-fit refinement of an expression’s constants.
silence
Scoped suppression of process stdout at the file-descriptor level.
solution
A discovered candidate expression and its quality metrics.

Structs§

EmlTree
EML tree with metadata.
RootCertificate
Certificate for a verified root-finding result.

Enums§

EmlNode
EML tree node. All nodes share the same type — uniform binary tree. Arc enables O(1) subtree sharing during symbolic regression.
RootStatus
Status of the root certificate.