futhr

futhr

ExMaude - Elixir bindings for the Maude formal verification system

ExMaude is an Elixir library providing high-level bindings for Maude, a formal specification language based on rewriting logic developed at the University of Illinois at Urbana-Champaign. Maude has been in active development since 1999 and is used in academia for protocol verification, security analysis, and programming language semantics.

The library manages Maude processes through a Poolboy worker pool and offers a pluggable backend architecture (Port, C-Node, NIF) for different performance and isolation requirements.

Features:

  • Term reduction, rewriting, and state space search through a high-level Elixir API
  • Pluggable backends: Port (~500us/op), C-Node (~100us/op), NIF (planned)
  • Bundled Maude 3.5.1 binaries for macOS and Linux (ARM64 + x86_64)
  • Telemetry integration for observability
  • Structured error types with 16 error categories
  • Livebook notebooks included for interactive exploration

IoT rule conflict detection:

The library includes a specialized module for detecting conflicts in automation rules, based on the AutoIoT research paper. It identifies four conflict types – state conflicts, environment conflicts, state cascades, and state-environment cascades – through Maude’s equational reduction, providing mathematical proof of conflict-freedom rather than probabilistic coverage.

I wrote this primarily to support formal verification of IoT automation rules, but the core API is general-purpose and applicable to any domain where rewriting logic or model checking is useful – protocol verification, state machine analysis, configuration validation, and similar problems.

Feedback and contributions are welcome. Full documentation, code examples, and Livebook notebooks are available in the repository.

Happy coding … or AI introspecting or whatever we call this fusion today :slight_smile:

References:

https://github.com/futhr/ex_maude

Where Next?

Popular in Announcing Top

kelvinst
Hey everyone! Well, we made this lib a while ago and now we decided to finally go out and public with it! It’s a tool for creating and m...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 44532 311
New
mindok
What is ContEx? A pure Elixir server-side data plotting/charting library outputting SVG. It has nice barcharts in particular and works g...
New
dominicletz
Hi, I thought I had posted my library before but seems I hadn’t. The project is still in early stages but it’s growing and so I think it...
New
kip
Image is an image processing library for Elixir. It is based upon the fabulous vix library that provides a libvips wrapper for Elixir. I...
622 19460 194
New
type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 44532 311
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

We're in Beta

About us Mission Statement