🤖 AI Summary
This work addresses the significant challenge of automatically synthesizing memory-safe Rust code, which stems from the language’s ownership, borrowing, and lifetime mechanisms. We propose a novel approach based on Pushdown Colored Petri Nets (PCPNs), applied for the first time to safe code synthesis in Rust. Our method encodes resource states and scoping levels via token colors and explicitly models lifetime boundaries using a pushdown stack, enabling direct generation of API invocation sequences that satisfy type, interface, and resource constraints. Leveraging bisimulation theory, we formally prove that our model aligns with Rust’s compile-time checking semantics. A prototype implementation demonstrates the practical efficacy of our approach: all synthesized code passes compilation, thereby validating both correctness and memory safety.
📝 Abstract
Safe Rust guarantees memory safety through strict compile-time constraints: ownership can be transferred, borrowing can temporarily guarantee either shared read-only or exclusive write access, and ownership and borrowing are scoped by lifetime. Automatically synthesizing correct and safe Rust code is challenging, as the generated code must not only satisfy ownership, borrowing, and lifetime constraints, but also meet type and interface requirements at compile time. This work proposes a synthesis method based on our newly defined Pushdown Colored Petri Net (PCPN) that models these compilation constraints directly from public API signatures to synthesize valid call sequences. Token colors encode dynamic resource states together with a scope level indicating the lifetime region in which a borrow is valid. The pushdown stack tracks the entering or leaving of lifetime parameter via pushing and popping tokens. A transition is enabled only when type matching and interface obligations both hold and the required resource states are available. Based on the bisimulation theory, we prove that the enabling and firing rules of PCPN are consistent with the compile-time check of these three constraints. We develop an automatic synthesis tool based on PCPN and the experimental results show that the synthesized codes are all correct.