WI3Y7EOWRPQMET4MPBJSO6TIDZLV5BO3NQ4UX7ZDZMQ5QUXJOLVAC // linlog © Fabian Lukas Grubmüller 2026// Licensed under the EUPLuse std::collections::HashMap;/// Symbols for the `Term`s in polish notation#[derive(Debug)]pub enum Symbol {Var(usize),Zero,One,Bot,Top,Dual,Tensor,Plus,With,Par,Bang,Quest,Lollipop,}pub struct Term<'a> {term: Box<[Symbol]>,labels: Box<[&'a str]>,}impl<'a> Term<'a> {pub fn parse(t: &'a str) -> Result<Self, ()> {let mut label_map: HashMap<&'a str, usize> = HashMap::with_capacity(t.len());let mut term: Vec<Symbol> = Vec::with_capacity(t.len());let mut labels: Vec<&'a str> = Vec::with_capacity(t.len());todo!();Ok(Self {term: term.into_boxed_slice(),labels: labels.into_boxed_slice(),})}pub fn try_new(term: Box<[Symbol]>, labels: Box<[&'a str]>) -> Result<Self, ()> {if Self::verify(&term) {Ok(Self { term, labels })} else {Err(())}}pub fn verify(t: &[Symbol]) -> bool {use Symbol::*;let mut leaves_left = 1usize;for sym in t.iter() {match sym {Var(_) | Zero | One | Bot | Top => {if leaves_left == 0 {return false;} else {leaves_left -= 1;}}Tensor | Plus | With | Par | Lollipop => {leaves_left += 1;}Dual | Bang | Quest => {}}}leaves_left == 0}}
thiserror = "2.0.17"
[[package]]name = "proc-macro2"version = "1.0.104"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"dependencies = ["unicode-ident",][[package]]name = "quote"version = "1.0.42"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"dependencies = ["proc-macro2",][[package]]name = "syn"version = "2.0.112"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "21f182278bf2d2bcb3c88b1b08a37df029d71ce3d3ae26168e3c653b213b99d4"dependencies = ["proc-macro2","quote","unicode-ident",][[package]]name = "thiserror"version = "2.0.17"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"dependencies = ["thiserror-impl",][[package]]name = "thiserror-impl"version = "2.0.17"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"dependencies = ["proc-macro2","quote","syn",][[package]]name = "unicode-ident"version = "1.0.22"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"