<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>reasonable-sourcery.coop</title><id>https://reasonable-sourcery.coop/feeds/tags/Guix.xml</id><subtitle>Tag: Guix</subtitle><updated>2025-11-28T12:32:45Z</updated><link href="https://reasonable-sourcery.coop/feeds/tags/Guix.xml" rel="self" /><link href="https://reasonable-sourcery.coop" /><entry><title>Vision</title><id>https://reasonable-sourcery.coop/vision.html</id><author><name>Rutger van Beusekom, Janneke Nieuwenhuizen</name><email>janneke@gnu.org</email></author><updated>2025-10-02T12:00:00Z</updated><link href="https://reasonable-sourcery.coop/vision.html" rel="alternate" /><content type="html">&lt;p&gt;Free Software for Correctness;&lt;br /&gt;Correctness for Free Software.&lt;/p&gt;&lt;p&gt;as &lt;a href=&quot;https://thebird.nl&quot;&gt;Pjotr Prins&lt;/a&gt; once put it, because...&lt;/p&gt;&lt;h1&gt;Sooner or later software breaks&lt;/h1&gt;&lt;p&gt;The world is becoming more and more dependent on software, still
society lacks a reasonable way of creating dependable software.  A lot
of research time and effort has been spent on the ways to prove
correctness (free of bugs).  Broadly speaking there are two
approaches: Theorem proving and Model checking.&lt;/p&gt;&lt;p&gt;Both methods are far from being mainstream and are usually applied
only in very specialized situations by academics when correctness is
of utmost importance and bugs are very costly.  We have made it our
mission to continue this research and make software correctness
attainable for everyone.&lt;/p&gt;&lt;h1&gt;Theorem proving&lt;/h1&gt;&lt;p&gt;Theorem proving is used to prove the correctness of the se4L micro
kernel.  Concurrent or distributed programs, such as (micro kernel)
operating systems are notoriously complex, and thus offer an excellent
area of research.&lt;/p&gt;&lt;p&gt;See &lt;a href=&quot;https://sel4.systems/Verification&quot;&gt;se4L&lt;/a&gt; as an example of why
correctness is important.&lt;/p&gt;&lt;h2&gt;What is theorem proving?&lt;/h2&gt;&lt;p&gt;It is a method to verify procedure by procedure, whereby for a given
precondition the corresponding postcondition is met through symbolic
execution with the help of a proof assistant.&lt;/p&gt;&lt;p&gt;This approach offers freedom with respect to which properties are to
be proven, as well as the level of fidelity of how accurately the
model represents the program at the cost of manual effort and
expertise.&lt;/p&gt;&lt;h1&gt;Model checking&lt;/h1&gt;&lt;p&gt;Another approach to formal verification is model checking.  The
Reasonable Sourcery founders have been working collectively in a
&lt;a href=&quot;https://verum.com&quot;&gt;commercial setting&lt;/a&gt; for 30 years to create a
programming language with builtin model checking:
&lt;a href=&quot;https://dezyne.org&quot;&gt;Dezyne&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;By creating Dezyne we demonstrated that engineers in an enterprise
setting are successful and effective in adopting and applying formal
methods in their product development, see:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://bits-chips.com/article/thermo-fisher-scientific-develops-an-appetite-for-modeling&quot;&gt;@ThermoFisher Scientific&lt;/a&gt; Electron Microscopes.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://annals-csis.org/proceedings/2022/pliks/93.pdf&quot;&gt;@Philips Healthcare&lt;/a&gt; Image Guided Therapy.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://wsinmak.win.tue.nl/Education/StudentProjects/old/Ass-2015-ASML-1.pdf&quot;&gt;@ASML&lt;/a&gt; Litography Systems.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;What is model checking?&lt;/h2&gt;&lt;p&gt;In model checking you describe an abstract version of your program and
use a model checker to automatically verify a given set of properties.&lt;/p&gt;&lt;p&gt;The process of model checking is similar to testing.  The difference
being that it is fully automated, exhaustive and far more efficient.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;|                 | advantages   | limitations                            |
|-----------------|--------------|----------------------------------------|
| theorem proving | any property | only by experts                        |
|                 | any size     | labor intensive                        |
|-----------------|--------------|----------------------------------------|
| model checking  | automatic    | properties expressed in specific logic |
|                 |              | verification computationally bound     |&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dezyne employs compositional verification to allow scaling model
checking for large systems and industrial use.&lt;/p&gt;&lt;p&gt;Currently, Dezyne verifies the absence of non-determinism, deadlock,
livelock, undesired behavior, unreachable code, invariant violation,
and non-compliance between interfaces and implementation.  We aim to
further extend this list of properties and the expressiveness of the
language.&lt;/p&gt;&lt;p&gt;See &lt;a href=&quot;https://mcrl2.org&quot;&gt;mCRL2&lt;/a&gt; for the logic of properties and models
underlying Dezyne and the solution to pushing the envelope on the
limitations of model checking.&lt;/p&gt;&lt;h1&gt;Reasonable Sourcery ultimately aims to augment Scheme through a SRFI&lt;/h1&gt;&lt;p&gt;Dezyne's success has convinced us that model checking is a more than
promising direction; it must become ubiquitous.  Although Dezyne
itself is entirely written in &lt;a href=&quot;https://gnu.org/s/guile&quot;&gt;Guile&lt;/a&gt; Scheme
it targets a very specific niche: machine control, catering for
corporate adoption; a C-like programming language that targets C++
users.&lt;/p&gt;&lt;p&gt;The main reason we have founded Reasonable Sourcery is to create a
sociocratic research and development worker cooperative to widen the
niche and bring model checking to the Free Software community as
simple and elegantly as possible.  We will start by extending Guile
and aim for standardization as a &lt;a href=&quot;https://srfi.schemers.org&quot;&gt;SRFI&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For starters, we will apply this in order of appearance in:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://gnu.org/s/shepherd&quot;&gt;GNU Shepherd&lt;/a&gt; herding system and user services in Scheme.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://spritely.institute&quot;&gt;Spritely Goblins&lt;/a&gt; next generation of decentralized networking technology.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gnu.org/s/hurd&quot;&gt;GNU Hurd&lt;/a&gt; micro kernel with hird of unix of replacing daemons.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;such that formal properties and models can be specified and extracted
for automatical verification of these projects.&lt;/p&gt;</content></entry></feed>