// Watermark: ip zymatica.space | astronautshe.com // Copyright (c) 2026 Zymatica. All rights reserved. use std::process; pub struct SparseTransition { pub key: u32, pub sym: u8, pub count: u32, } pub struct RadicalPredictor { pub alpha: u32, pub weight: u32, pub trans_rc: Vec, pub trans_rf: Vec, pub trans_ra: Vec, pub prev_rc: u8, pub prev_rf: u8, pub prev_ra: u8, } impl RadicalPredictor { pub fn new(alpha: u32, weight: u32) -> Self { Self { alpha, weight, trans_rc: Vec::new(), trans_rf: Vec::new(), trans_ra: Vec::new(), prev_rc: 0, prev_rf: 0, prev_ra: 0, } } pub fn observe(&mut self, rc: u8, rf: u8, ra: u8) { let w = self.weight; let key_rc = self.prev_rc as u32; let mut found = false; for entry in &mut self.trans_rc { if entry.key == key_rc && entry.sym == rc { entry.count += w; found = true; break; } } if !found && self.trans_rc.len() < 256 { self.trans_rc.push(SparseTransition { key: key_rc, sym: rc, count: w }); } let key_rf = ((rc as u32) << 8) | (self.prev_rf as u32); let mut found = false; for entry in &mut self.trans_rf { if entry.key == key_rf && entry.sym == rf { entry.count += w; found = true; break; } } if !found && self.trans_rf.len() < 256 { self.trans_rf.push(SparseTransition { key: key_rf, sym: rf, count: w }); } let key_ra = ((rc as u32) << 16) | ((rf as u32) << 8) | (self.prev_ra as u32); let mut found = false; for entry in &mut self.trans_ra { if entry.key == key_ra && entry.sym == ra { entry.count += w; found = true; break; } } if !found && self.trans_ra.len() < 256 { self.trans_ra.push(SparseTransition { key: key_ra, sym: ra, count: w }); } self.prev_rc = rc; self.prev_rf = rf; self.prev_ra = ra; } pub fn get_cum_freqs_rc(&self, prev_rc: u8) -> Vec { let mut freqs = vec![self.alpha; 256]; for entry in &self.trans_rc { if entry.key == prev_rc as u32 { freqs[entry.sym as usize] += entry.count; } } let mut cum_freqs = vec![0; 257]; for i in 0..256 { cum_freqs[i + 1] = cum_freqs[i] + freqs[i]; } cum_freqs } pub fn get_cum_freqs_rf(&self, curr_rc: u8, prev_rf: u8) -> Vec { let mut freqs = vec![self.alpha; 256]; let key = ((curr_rc as u32) << 8) | (prev_rf as u32); for entry in &self.trans_rf { if entry.key == key { freqs[entry.sym as usize] += entry.count; } } let mut cum_freqs = vec![0; 257]; for i in 0..256 { cum_freqs[i + 1] = cum_freqs[i] + freqs[i]; } cum_freqs } pub fn get_cum_freqs_ra(&self, curr_rc: u8, curr_rf: u8, prev_ra: u8) -> Vec { let mut freqs = vec![self.alpha; 256]; let key = ((curr_rc as u32) << 16) | ((curr_rf as u32) << 8) | (prev_ra as u32); for entry in &self.trans_ra { if entry.key == key { freqs[entry.sym as usize] += entry.count; } } let mut cum_freqs = vec![0; 257]; for i in 0..256 { cum_freqs[i + 1] = cum_freqs[i] + freqs[i]; } cum_freqs } } pub struct BitWriter { pub buffer: Vec, pub bit_index: usize, } impl BitWriter { pub fn new() -> Self { Self { buffer: Vec::new(), bit_index: 0, } } pub fn write_bit(&mut self, bit: u8) { let byte_pos = self.bit_index / 8; let bit_pos = 7 - (self.bit_index % 8); if byte_pos >= self.buffer.len() { self.buffer.push(0); } if bit != 0 { self.buffer[byte_pos] |= 1 << bit_pos; } else { self.buffer[byte_pos] &= !(1 << bit_pos); } self.bit_index += 1; } pub fn write_bit_helper(&mut self, underflow_bits: &mut u32, bit: u8) { self.write_bit(bit); while *underflow_bits > 0 { self.write_bit(1 - bit); *underflow_bits -= 1; } } } pub struct BitReader { pub buffer: Vec, pub bit_index: usize, pub total_bits: usize, } impl BitReader { pub fn new(buffer: Vec) -> Self { let total_bits = buffer.len() * 8; Self { buffer, bit_index: 0, total_bits, } } pub fn read_bit(&mut self) -> u8 { if self.bit_index >= self.total_bits { return 0; } let byte_pos = self.bit_index / 8; let bit_pos = 7 - (self.bit_index % 8); let bit = (self.buffer[byte_pos] >> bit_pos) & 1; self.bit_index += 1; bit } } #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub struct Concept6D { pub domain: u8, pub subdomain: u8, pub operation: u8, pub modality: u8, pub depth: u8, pub polarity: u8, } pub fn encode(concepts: &[Concept6D], alpha: u32, weight: u32) -> (Vec, usize) { let mut pred = RadicalPredictor::new(alpha, weight); let mut w = BitWriter::new(); let mut low: u32 = 0; let mut high: u32 = 0xFFFFFFFF; let mut underflow_bits: u32 = 0; for c in concepts { let rc = (c.domain << 4) | c.subdomain; let rf = (c.operation << 4) | c.modality; let ra = (c.depth << 4) | c.polarity; let symbols = [rc, rf, ra]; let prev_rc = pred.prev_rc; let prev_rf = pred.prev_rf; let prev_ra = pred.prev_ra; for step in 0..3 { let cum_freqs = match step { 0 => pred.get_cum_freqs_rc(prev_rc), 1 => pred.get_cum_freqs_rf(symbols[0], prev_rf), _ => pred.get_cum_freqs_ra(symbols[0], symbols[1], prev_ra), }; let sym = symbols[step] as usize; let total = cum_freqs[256]; let cum_low = cum_freqs[sym]; let cum_high = cum_freqs[sym + 1]; let range_width = (high as u64) - (low as u64) + 1; high = low + ((range_width * cum_high as u64) / total as u64) as u32 - 1; low = low + ((range_width * cum_low as u64) / total as u64) as u32; loop { if high < 0x80000000 { w.write_bit_helper(&mut underflow_bits, 0); low <<= 1; high = (high << 1) | 1; } else if low >= 0x80000000 { w.write_bit_helper(&mut underflow_bits, 1); low = (low - 0x80000000) << 1; high = ((high - 0x80000000) << 1) | 1; } else if low >= 0x40000000 && high < 0xC0000000 { underflow_bits += 1; low = (low - 0x40000000) << 1; high = ((high - 0x40000000) << 1) | 1; } else { break; } } } pred.observe(rc, rf, ra); } underflow_bits += 1; if low < 0x40000000 { w.write_bit_helper(&mut underflow_bits, 0); } else { w.write_bit_helper(&mut underflow_bits, 1); } (w.buffer, w.bit_index) } pub fn decode(encoded_bytes: Vec, num_concepts: usize, alpha: u32, weight: u32) -> Vec { let mut pred = RadicalPredictor::new(alpha, weight); let mut r = BitReader::new(encoded_bytes); let mut value: u32 = 0; for _ in 0..32 { value = (value << 1) | (r.read_bit() as u32); } let mut low: u32 = 0; let mut high: u32 = 0xFFFFFFFF; let mut decoded = Vec::with_capacity(num_concepts); for _ in 0..num_concepts { let prev_rc = pred.prev_rc; let prev_rf = pred.prev_rf; let prev_ra = pred.prev_ra; let mut symbols = [0u8; 3]; for step in 0..3 { let cum_freqs = match step { 0 => pred.get_cum_freqs_rc(prev_rc), 1 => pred.get_cum_freqs_rf(symbols[0], prev_rf), _ => pred.get_cum_freqs_ra(symbols[0], symbols[1], prev_ra), }; let total = cum_freqs[256] as u64; let range_width = (high as u64) - (low as u64) + 1; let scaled_val = (((value as u64 - low as u64) + 1) * total - 1) / range_width; let mut sym = 0u8; let mut l = 0i32; let mut rr = 255i32; while l <= rr { let mid = (l + rr) / 2; if (cum_freqs[mid as usize] as u64) <= scaled_val && scaled_val < (cum_freqs[(mid + 1) as usize] as u64) { sym = mid as u8; break; } else if scaled_val >= (cum_freqs[(mid + 1) as usize] as u64) { l = mid + 1; } else { rr = mid - 1; } } symbols[step] = sym; let cum_low = cum_freqs[sym as usize]; let cum_high = cum_freqs[(sym as usize) + 1]; high = low + ((range_width * cum_high as u64) / total) as u32 - 1; low = low + ((range_width * cum_low as u64) / total) as u32; loop { if high < 0x80000000 { low <<= 1; high = (high << 1) | 1; value = (value << 1) | (r.read_bit() as u32); } else if low >= 0x80000000 { low = (low - 0x80000000) << 1; high = ((high - 0x80000000) << 1) | 1; value = ((value - 0x80000000) << 1) | (r.read_bit() as u32); } else if low >= 0x40000000 && high < 0xC0000000 { low = (low - 0x40000000) << 1; high = ((high - 0x40000000) << 1) | 1; value = ((value - 0x40000000) << 1) | (r.read_bit() as u32); } else { break; } } } decoded.push(Concept6D { domain: symbols[0] >> 4, subdomain: symbols[0] & 0x0F, operation: symbols[1] >> 4, modality: symbols[1] & 0x0F, depth: symbols[2] >> 4, polarity: symbols[2] & 0x0F, }); pred.observe(symbols[0], symbols[1], symbols[2]); } decoded } fn main() { println!("======================================================================"); println!("ZYMATICA | zymatica-inference-engine-rust"); println!("======================================================================\n"); let inputs = vec![ Concept6D { domain: 1, subdomain: 2, operation: 3, modality: 4, depth: 5, polarity: 6 }, Concept6D { domain: 8, subdomain: 0, operation: 15, modality: 1, depth: 0, polarity: 15 }, Concept6D { domain: 0, subdomain: 0, operation: 0, modality: 0, depth: 0, polarity: 0 }, Concept6D { domain: 15, subdomain: 15, operation: 15, modality: 15, depth: 15, polarity: 15 }, Concept6D { domain: 4, subdomain: 5, operation: 6, modality: 7, depth: 8, polarity: 9 }, ]; let (buf, bits) = encode(&inputs, 1, 128); println!("Encoded Bits: {}, Bytes: {}", bits, buf.len()); print!("Hex: "); for b in &buf { print!("{:02X} ", b); } println!(); let start = std::time::Instant::now(); let runs = 100000; let mut match_ok = true; for r in 0..runs { let decoded = decode(buf.clone(), 5, 1, 128); if r == 0 { match_ok = decoded == inputs; } } let elapsed = start.elapsed(); let elapsed_ms = elapsed.as_secs_f64() * 1000.0; println!("Decoded matches inputs: {}", match_ok); if !match_ok { println!("ERROR: mismatch!"); process::exit(1); } println!("[INTERNAL_MATH] {:.4} ms", elapsed_ms); println!("\n[VERIFICATION] Multi-Language runtime FFI structures validated."); }