NL-Verify Project Technical Report for WIF3010 Programming Language Paradigm Course, Software Engineering Department Team : Semester 1, 2025/2026 Treat Me Better Team
Authors/Creators
Description
NL-Verify is an educational software prototype designed to bridge the gap between natural language specifications and formal mathematical verification. Developed as a group project for the Programming Language Paradigm course, the system functions as a "Mini-Programming Language" that allows users—specifically Computer Science students—to write algorithmic specifications in Controlled Natural Language (e.g., "After the loop, total must equal sum of inputs").
The primary goal of NL-Verify is to demystify the "black box" of formal methods. Instead of requiring students to master complex mathematical notation (e.g., Hoare Logic triples) immediately, the system parses English input into an Abstract Syntax Tree (AST), translates it into semantic assertions, and utilizes the Z3 Theorem Prover to rigorously prove correctness using Axiomatic Semantics. Simultaneously, a Dynamic Test Generator creates concrete Python test vectors to validate the logic against runtime edge cases (such as division by zero).
To enhance the learning experience, the system integrates an LLM-based refinement agent (Llama-3.2). This agent suggests improvements and corrects syntax errors or "slang" input, preventing system crashes and keeping the user focused on logical verification.
Files
Treat_Me_Better_Report.pdf
Files
(3.1 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:98afad0f23dec6df51d71a981fccbad0
|
3.1 MB | Preview Download |
Additional details
Dates
- Available
-
2026-01-21Report Released Date
References
- Friedman, D. P., & Wand, M. (2009). Essentials of programming languages (4th ed.). MIT Press.
- Scott, M. L. (2015). Programming language pragmatics (4th ed.). Morgan Kaufmann.
- Sebesta, R. W. (2016). Concepts of programming languages (11th ed.). Pearson.
- Sestoft, P. (2017). Programming language concepts. Springer.