Expand description
§erdos-unit-distance
Certified unit-distance point sets and unit distance graphs for discrete geometry.
This crate generates classical examples such as the Moser spindle and finite certified multiquadratic constructions related to the Erdős/Erdos unit-distance problem. Classical constructions are exact; native finite multiquadratic prototype inputs are validated and unsupported configurations are rejected before generation.
§Correctness Contract
- Classical constructors return fixed, deterministic point sets.
- Native multiquadratic constructors validate squarefree generators and complete splitting of the requested odd prime before generating points.
- Native multiquadratic point generation is a bounded Section 2-style candidate search followed by projection, deduplication, and density pruning; it is not the full class-field tower construction.
generate_certifiedreturns a finite certificate whose edge claims are independently recomputed byConstructionCertificate::verify.
§Quick Start
use erdos_unit_distance::UnitDistanceSet;
use erdos_unit_distance::utils::count_unit_distances;
// Generate a classic Moser Spindle (7 points, 11 unit-distance edges)
let spindle = UnitDistanceSet::moser_spindle();
let points = spindle.generate_points(7).unwrap();
assert_eq!(points.len(), 7);
let point_arrays = points.iter().map(|point| point.to_array()).collect::<Vec<_>>();
let edges = count_unit_distances(&point_arrays, 1e-4);
assert_eq!(edges, 11);§Native Finite Multiquadratic Prototype
use erdos_unit_distance::{MultiquadraticConfig, UnitDistanceSet};
use erdos_unit_distance::utils::count_unit_distances;
let config = MultiquadraticConfig::builder(vec![5, 17], 101, 1).build().unwrap();
let builder = UnitDistanceSet::multiquadratic(config);
let points = builder.generate_points(50).unwrap();
assert_eq!(points.len(), 50);
let point_arrays = points.iter().map(|point| point.to_array()).collect::<Vec<_>>();
let edges = count_unit_distances(&point_arrays, 1e-4);
assert!(edges > 0);§Certified Output
use erdos_unit_distance::{MultiquadraticConfig, UnitDistanceSet};
let config = MultiquadraticConfig::builder(vec![5, 17], 101, 1).build().unwrap();
let builder = UnitDistanceSet::multiquadratic(config);
let certified = builder.generate_certified(20).unwrap();
let report = certified.verify().unwrap();
assert_eq!(report.point_count, 20);
assert!(report.edge_count > 0);Re-exports§
pub use crate::certificate::CertificateVerificationReport;pub use crate::certificate::CertifiedPointSet;pub use crate::certificate::ClassicalCertificate;pub use crate::certificate::ClassicalConstructionKind;pub use crate::certificate::ConstructionCertificate;pub use crate::certificate::FloatingAuditReport;pub use crate::certificate::MultiquadraticCertificate;pub use crate::certificate::Point2;pub use crate::error::GenerationError;pub use crate::error::VerificationError;
Modules§
- algebraic
- backend
- Backend provenance for certificate metadata.
- certificate
- Machine-checkable certificates for finite point-set outputs.
- classical
- error
- utils
Structs§
- Multiquadratic
Config - Validated parameters for the native finite multiquadratic prototype.
- Multiquadratic
Config Builder - Unit
Distance Set - Builder for generating unit-distance point sets.
Enums§
- Construction
Type - Describes the type of unit-distance construction to generate.