Softanza
StartFrançais
Softanza
A paradigm

The Softanzuter

Not reactive computing on an abstract machine. A way of programming complex disciplines declaratively: patterns bound to code, faculties that share one state, and a mind built on them.

The definition

The library's design documents define it in the author's words, adopted and made mechanical:

A Softanzuter is a computational representation of a thinking machine, based on one or many Regexuters, enabling it to identify and react to patterns of thought.

The unit is the pattern. A pattern over any medium is bound to code. Firing it is the reaction. The state the firing writes is itself a medium that further patterns match over, and every firing keeps its provenance, the answer to why. That is what separates it from a stream of data moving through time.

The ladder

  1. The pattern. Pure recognition over a medium: a string, a list, a number, a matrix, a table, a time, a graph. It does nothing. built · six pattern languages in the library
  2. The Regexuter, and its siblings over other media. A reflex arc: patterns bound to code, one engine per medium. Feed it data and it fires what matches and records a state with its time, its order, the match and the value it computed. A faculty, not a mind. built · a Regexuter and a Listexuter run
  3. The Softanzuter. Many Xuters sharing one state and cascading to a fixpoint: the state one faculty writes is a medium the others match over. designed, not built · today each trigger fires once and the Xuters do not share one state
  4. The agent. A Softanzuter embodied in a world, with a goal, a memory, tools and accountability. Agents contain Softanzuters, Softanzuters contain Xuters. built · the cascade below runs

Rung 1, run

Rung 1, the Regexuter: three patterns, each bound to a small computation; the text flows through and every match fires its own.

Softanza
rxu() {
	Trigger(:Number = "(\d+)")
	Trigger(:WordInQuotes = '"([^"]+)"')
	Trigger(:EmailAddr = "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})")

	@C( :When = :Number, :Do = '{
		@value = @number(@value) * 2
	}')
	@C( :When = :WordInQuotes, :Do = '{
		@value = upper(@value)
	}')
	@C( :When = :EmailAddr, :Do = '{
		@value = "CONTACT: " + @value
	}')

	Process('Contact "john doe" at john@example.com or call 555123 for a "quick response"')
	? @@NL( ResultXT() )
}
Output
[
	[ 1110246, "555123" ],
	[ '"JOHN DOE"', '"john doe"' ],
	[ '"QUICK RESPONSE"', '"quick response"' ],
	[
		"CONTACT: john@example.com",
		"john@example.com"
	]
]

run on 2026-10-08 21:46 inside the library at commit 4a184e6f0; taken from base/test/regexuter/06_computing_multiple_triggers.ring(opens in a new tab)

Rung 3, run

The agent below keeps its memory as facts, and three skills chain: an order placed is cooked, then plated, then served. Each skill's result is a fact the next skill matches over, and the agent goes on until nothing changes.

Rung 3, the agent: each skill's result is a fact the next skill matches over, and the agent goes on until nothing changes any more.

Softanza
oChain = new stzPIAgent("cook")
oChain.MemoryQ().Learn("order", "state", "placed")
# three skills chain: placed -> cooking -> plated -> served
s1 = new stzAgentSkill("cook")
s1.SetWhen(func oM { return oM.Fact("order", "state", "placed") })
s1.SetDoes(func oM { oM.Forget("order","state","placed") oM.Learn("order","state","cooking") return 1 })
s1.SetVerifiedBy(func oM { return oM.Fact("order","state","cooking") })
s2 = new stzAgentSkill("plate")
s2.SetWhen(func oM { return oM.Fact("order", "state", "cooking") })
s2.SetDoes(func oM { oM.Forget("order","state","cooking") oM.Learn("order","state","plated") return 1 })
s2.SetVerifiedBy(func oM { return oM.Fact("order","state","plated") })
s3 = new stzAgentSkill("serve")
s3.SetWhen(func oM { return oM.Fact("order", "state", "plated") })
s3.SetDoes(func oM { oM.Forget("order","state","plated") oM.Learn("order","state","served") return 1 })
s3.SetVerifiedBy(func oM { return oM.Fact("order","state","served") })
oChain.AddSkill(s1)
oChain.AddSkill(s2)
oChain.AddSkill(s3)
nC = oChain.Pursue()
chk("all three skills fire in the cascade", nC = 3)
chk("the order reaches its final state", oChain.MemoryQ().Fact("order","state","served") = 1)
Output
  [OK] all three skills fire in the cascade
  [OK] the order reaches its final state

run on 2026-10-08 21:46 inside the library at commit 4a184e6f0; taken from base/test/agentic/piagent_narrated.ring(opens in a new tab)

The Softanza way The mind is programmatic by default, and an AI model is one faculty among the others, never the definition of the mind. The industry's loop of an AI model that calls tools is the special case of this ladder: one faculty, no governance. Softanza offers the general case, locally.

What is still vision

The universal engine (planned)

Any pattern language becomes a computation medium, with one interface to add triggers and computations, process data and read the dependencies. It is one of twelve paradigm engines in the engine's design.

The Genetic Regexuter (vision)

Evolves a population of patterns against a fitness criterion. Its purpose was found later: inducing a pattern from examples, which answering by example needs.

The Quantic Regexuter (vision)

Holds a pattern in several states at once, each reading weighted and ranked. Its purpose: the solution space of the same protocol, where several answers are acceptable.

The Linguistic Regexuter (vision)

Takes grammar rules as triggers.

One word, three meanings

In the design the Softanzuter is the universal medium of rung 2. In the engine as built, the module that carries the name is the agent's substrate, its slots and bounded mailboxes, which is the body of rung 3 and nothing of rung 2's cascade. In the intelligence architecture it is the thinking machine of many Xuters. The three are one ladder read from three sides, and the ladder above is how they fit.

in construction Rung 2 is the missing middle: the cascade to a fixpoint and the shared state are not built, and the two engines of rung 1 run on their own. One narration of the Regexuter is published with its code, and part of it does not compile: its last blocks are the siblings' pseudo-code. That is why this page tells the siblings as vision.

Sources: the article the Regexuter as a computational reactive medium; the guards 06_computing_multiple_triggers.ring(opens in a new tab) and piagent_narrated.ring(opens in a new tab); the ladder is in SOFTANZA_INTELLIGENCE_ARCHITECTURE.md(opens in a new tab).