Published January 21, 2026 | Version 1.0.0

NL-Verify Project Technical Report for WIF3010 Programming Language Paradigm Course, Software Engineering Department Team : Semester 1, 2025/2026 Treat Me Better Team

Contributors

  • 1. ROR icon University of Malaya

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-21
Report 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.