Various formal specifications of a very simple programming language (Cink) in Maude, including big-step semantics, smal--step semantics, symbolic execution, and Floyd-Hoare logic.
High-level documentation for the Maude repository and the contained modules.
This repository provides a small imperative language core (Cink) with:
- syntax, expressions, statements, functions
- concrete operational semantics (small-step + big-step)
- symbolic execution plus SMT support
- state, arrays, and Hoare/floyd reasoning testbed modules
cink-syntax.maude: CinK grammar and AST (expressions, statements, programs)cink-programs.maude: top-levelCINK-PROGRAMSincludes syntax and lets tests invoke programspl-builtins.maude: core value typesPL-BOOL: boolean algebra withtrue,false,andBool,orBool,notBoolPL-INT: integer operations+Int,*Int,-Int,/Int, comparisonsPL-ID: identifier names and lists extracted fromBOTTOM,UNDEFINED
array.maude: integer-array operations and selectors/updatestate.maude,state-smt.maude: imperative state maps from Id → values; SMT-aware variant (uses numeric SMT types)pl-set.maude: generic set constructors forList/Set(used by variable lists and declarations)
cink-smallstep/cink-semantics-smallstep.maude: small-step operational semantics usingo(single step),*(multi-step) over labelled configurationscink-bigstep/cink-semantics-bigstep.maude: big-step (natural semantics) evaluator with=>relationscink-smallstep/cink-smallstep.maude: test harness includesCINK-SEMANTICS-SMALLSTEP + CINK-PROGRAMScink-bigstep/cink-bigstep.maude: test harness includesCINK-SEMANTICS-BIGSTEP + CINK-PROGRAMS
symbolic/cink-smallstep/cink-semantics-smallstep-symbolic.maude: symbolic small-step semantics with path condition (Assert) and SMT interactionsymbolic/cink-smallstep/cink-smallstep-symbolic.maude: entrypoint module for proof/test harness with symbolic semantics
smt-pl.maude: SMT integration definitionsSMT-CONV: conversion between PL terms and SMT termsBOOLEAN,INTEGER,REAL,REAL-INTEGERmappingSUBST: substitution operations
floyd-hoare-logic/veco.maude: vector calculus helpers (likely used by proof obligations)floyd-hoare-logic/tableaux.maude: tableau-based reasoning infrastructurefloyd-hoare-logic/smt-test.maude: sample verification tests using SMT + semantics