use uor_addr::ring::{address, AddressFailure, RingElement, MAX_WITT_LEVEL};
fn main() {
println!("uor-addr — ring-element realization (Amendment 43 §2)\n");
println!("1. All admissible Witt levels (0..={MAX_WITT_LEVEL})");
for k in 0..=MAX_WITT_LEVEL {
let coeff = 0x12_34_56_78u64;
let element = RingElement::from_components(k, coeff).expect("valid");
let bytes = element.tagged_bytes();
let outcome = address(bytes).expect("κ-label");
println!(
" k={k}, coefficient=0x{coeff:08X}, bytes={bytes:02X?} → κ-label: {}",
outcome.address
);
}
println!();
let e = RingElement::from_components(2, 0xCAFE_BABE).expect("valid");
let bytes = e.tagged_bytes().to_vec();
let canon = RingElement::parse(&bytes)
.expect("re-parse canonical bytes")
.tagged_bytes()
.to_vec();
assert_eq!(canon, bytes);
println!("2. Canonical bytes are pinned at construction (Amendment 43 §2)");
println!(" element bytes: {:02X?}", bytes);
println!(" re-parsed: {:02X?}", canon);
println!(" match: {} ✓\n", canon == bytes);
let e1 = RingElement::from_components(1, 0xABCD).expect("valid");
let a = address(e1.tagged_bytes()).expect("κ-label").address;
let b = address(e1.tagged_bytes()).expect("κ-label").address;
assert_eq!(a, b);
println!("3. Determinism");
println!(" κ-label run 1: {a}");
println!(" κ-label run 2: {b}");
println!(" match: {} ✓\n", a == b);
let k0 = RingElement::from_components(0, 0x42).expect("valid");
let k1 = RingElement::from_components(1, 0x42).expect("valid");
let k2 = RingElement::from_components(2, 0x42).expect("valid");
let l0 = address(k0.tagged_bytes()).expect("κ-label").address;
let l1 = address(k1.tagged_bytes()).expect("κ-label").address;
let l2 = address(k2.tagged_bytes()).expect("κ-label").address;
assert_ne!(l0, l1);
assert_ne!(l0, l2);
assert_ne!(l1, l2);
println!("4. Typed distinction (different Witt levels)");
println!(" k=0, x=0x42 → {l0}");
println!(" k=1, x=0x42 → {l1}");
println!(" k=2, x=0x42 → {l2}");
println!();
let v1 = RingElement::from_components(1, 0x0001).expect("valid");
let v2 = RingElement::from_components(1, 0x0002).expect("valid");
let a1 = address(v1.tagged_bytes()).expect("κ-label").address;
let a2 = address(v2.tagged_bytes()).expect("κ-label").address;
assert_ne!(a1, a2);
println!("5. Distinct coefficients (same Witt level)");
println!(" k=1, x=0x0001 → {a1}");
println!(" k=1, x=0x0002 → {a2}");
println!();
println!("6. Failure modes");
match RingElement::from_components(MAX_WITT_LEVEL + 1, 0) {
Err(v) if v.constraint_iri.ends_with("/wittLevelBound") => {
println!(" witt_level > {MAX_WITT_LEVEL} rejected via wittLevelBound ✓");
}
other => panic!("expected wittLevelBound: {other:?}"),
}
match address(&[]) {
Err(AddressFailure::InvalidRingElement) => {
println!(" empty input rejected as InvalidRingElement ✓")
}
other => panic!("expected InvalidRingElement: {other:?}"),
}
match address(&[2, 0, 0]) {
Err(AddressFailure::InvalidRingElement) => println!(" truncated bytes rejected ✓"),
other => panic!("expected InvalidRingElement: {other:?}"),
}
println!("\nOK — ring realization conforms to UOR-Framework Amendment 43 §2.");
}