TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: FizzBee – Formal methods in Python

119 pointsby jayaprabhakarabout 1 year ago
GitHub: <a href="https:&#x2F;&#x2F;www.github.com&#x2F;fizzbee-io&#x2F;FizzBee">https:&#x2F;&#x2F;www.github.com&#x2F;fizzbee-io&#x2F;FizzBee</a><p>Traditionally, formal methods are used only for highly mission critical systems to validate the software will work as expected before it&#x27;s built. Recently, every major cloud vendor like AWS, Azure, Mongo DB, confluent, elastic and so on use formal methods to validate their design like the replication algorithm or various protocols doesn&#x27;t have a design bug. I used TLA+ for billing and usage based metering applications.<p>However, the current formal methods solutions like TLA+, Alloy or P and so on are incredibly complex to learn and use, that even in these companies only a few actually use.<p>Now, instead of using an unfamiliar complicated language, I built formal methods model checker that just uses Python. That way, any software engineer can quickly get started and use.<p>I&#x27;ve also created an online playground so you can try it without having to install on your machine.<p>In addition to model checking like TLA+&#x2F;PlusCal, Alloy, etc, FizzBee also has performance and probabilistic model checking that be few other formal methods tool does. (PRISM for example, but it&#x27;s language is even more complicated to use)<p>Please let me know your feedback. Url: <a href="https:&#x2F;&#x2F;FizzBee.io" rel="nofollow">https:&#x2F;&#x2F;FizzBee.io</a> Git: <a href="https:&#x2F;&#x2F;www.github.com&#x2F;fizzbee-io&#x2F;FizzBee">https:&#x2F;&#x2F;www.github.com&#x2F;fizzbee-io&#x2F;FizzBee</a>

11 comments

johndoughabout 1 year ago
I was looking for Python code, but did not find anything, until I realized that it said &quot;Python-like&quot; instead of &quot;Python&quot; on the website. I&#x27;d suggest to change the title to reflect that. I did not recognize the *.fizz files as Python.
评论 #39939509 未加载
pkoirdabout 1 year ago
This is super cool! As someone who is interested but unfamiliar with formal verification, how &quot;powerful&quot; or &quot;complete&quot; would you say FizzBee is compared to the conventional tools such as TLA+? I&#x27;m unsure if I framed this correctly but can you do everything in Fizzbee that TLA+ supports?
评论 #39939562 未加载
westurnerabout 1 year ago
How does FizzBee compare to other formal methods tools for Python like Nagini, Deal-solver, Dafny? <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=39139198">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=39139198</a><p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=36504073">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=36504073</a> :<p>&gt;&gt;&gt; <i>Can there still be side channel attacks in formally verified systems? Can e.g. TLA+ [or FizzBee] help with that at all?</i>
评论 #39943717 未加载
hnhn34about 1 year ago
Would it be a dumb idea to use Fizzbee (or any formal methods language) for non-trivial programs in general, not just distributed systems? I wonder if it would be useful for specifying bevahiors in, say, game development for example
jonjackyabout 1 year ago
Possibly pertinent: PyModel, a modelling system and model checker in and for Python --- the models are coded in standard Python. In addition to analysis, the system can be used as a test case generator and test runner for offline testing and &quot;on the fly&quot; testing (where a long-running test case is generated as the test executes).<p><a href="https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;www&#x2F;" rel="nofollow">https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;www&#x2F;</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;jon-jacky&#x2F;PyModel&#x2F;">https:&#x2F;&#x2F;github.com&#x2F;jon-jacky&#x2F;PyModel&#x2F;</a><p>The PyModel in that repository is written in Python 2 and has not been maintained for more than ten years.<p>This fork is in Python 3 and was last revised two years ago:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;zlorb&#x2F;PyModel">https:&#x2F;&#x2F;github.com&#x2F;zlorb&#x2F;PyModel</a><p>The best description of PyModel is the talk at SciPy 2011:<p>Slides: <a href="https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;talks&#x2F;pymodel-nwpd10.pdf" rel="nofollow">https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;talks&#x2F;pymodel-nwpd10.pdf</a><p>Paper: <a href="https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;talks&#x2F;pymodel-scipy2011.pdf" rel="nofollow">https:&#x2F;&#x2F;jon-jacky.github.io&#x2F;PyModel&#x2F;talks&#x2F;pymodel-scipy2011....</a><p>PyModel&#x27;s model checking is explained on p. 3 in the paper in the sections titled <i>Analysis</i> and <i>Safety and Liveness</i>.
atomicnatureabout 1 year ago
I think one of Lamport&#x27;s arguments was that at specification level one shouldn&#x27;t go for an imperative approach. Imperative is good for &quot;how to&quot; instructions (programs). Declarative is good for &quot;what is&quot; or &quot;what should be&quot; instructions (specifications). So in that sense TLA+ was about helping you build state machines via simple declarative syntax. Of course this was Lamport&#x27;s argument, in practice, your approach may work just as well. Will definitely be interested to see how your approach evolves.
评论 #39950607 未加载
User23about 1 year ago
Does this generate executables like Dafny? Or is it more like TLA+ and focused on checking designs?<p>What’s it using on the backend for checking predicates?
评论 #39939613 未加载
erezshabout 1 year ago
I like the idea of being able to use this in a real program, but I&#x27;m not sure how that would look. I browsed the docs, and I didn&#x27;t see it addressed. I guess the question boils down to - how would it interface with other languages? On its own, it can&#x27;t be used for general programming, so the only option I can think of is to run it as a DSL interface to a general programming language. Probably Python, since it&#x27;s the easiest in this case. But it&#x27;s not obvious to me what that API would look like, or what would be the right way to use it. Do you have any thoughts on this subject?
评论 #39950549 未加载
sriram_malharabout 1 year ago
This looks fantastic. Can&#x27;t wait to translate some non-trivial TLA+ to test it out.
评论 #39939628 未加载
评论 #39945521 未加载
rsrsrs86about 1 year ago
Alloy is much simpler than TLA+.<p>Is fizzbee a frontend to TLA+?
评论 #39950562 未加载
knowsuchagencyabout 1 year ago
Very cool