Skip to main content

Crate erdos_unit_distance

Crate erdos_unit_distance 

Source
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_certified returns a finite certificate whose edge claims are independently recomputed by ConstructionCertificate::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§

MultiquadraticConfig
Validated parameters for the native finite multiquadratic prototype.
MultiquadraticConfigBuilder
UnitDistanceSet
Builder for generating unit-distance point sets.

Enums§

ConstructionType
Describes the type of unit-distance construction to generate.