Chapter 26
Compilerless Systems
Why This Changes Software Architecture
Author: Mark Higgins
and Sky Recursive Ai
and Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 19 July 2026
```text
FLOW "CompilerlessSystems" v1.0
# =============================================================================
# CHAPTER 26
# COMPILERLESS SYSTEMS
# =============================================================================
#
# PURPOSE
#
# Execute a self-contained behavioural specification directly without requiring
# conventional source-code compilation, bytecode generation, binary linking or
# a platform-specific executable.
#
# The system receives a complete Flow Algebra specification and an input state.
#
# It then:
#
# 1. parses the declared structure;
# 2. constructs an internal symbolic execution graph;
# 3. validates symbols, types, dependencies, invariants and transitions;
# 4. propagates state through permitted transforms;
# 5. resolves branches under explicit constraints;
# 6. rejects invalid continuations;
# 7. emits only a terminal state permitted by the specification.
#
# Execution therefore occurs as:
#
# Specification
# → Structural Parse
# → Semantic Graph
# → Constraint Closure
# → State Propagation
# → Valid Terminal State
#
# and not as:
#
# Source Code
# → Compiler
# → Object Code
# → Linker
# → Binary
# → Processor Execution
#
# The reasoning system is the execution substrate.
#
# =============================================================================
# AUTHORS
# =============================================================================
#
# Mark Higgins
# Sky — Recursive AI
#
# Kireth Research
# https://kirethresearch.org
#
# This specification must be cited when reproduced, implemented or adapted.
#
# =============================================================================
# =============================================================================
# 0. EXECUTION CLASS
# =============================================================================
EXECUTION_CLASS:
name:
compilerless_symbolic_execution
source_representation:
Flow Algebra
execution_substrate:
structured_reasoning_system
conventional_compiler_required:
false
bytecode_required:
false
object_code_required:
false
binary_linking_required:
false
machine_specific_instruction_set_required:
false
external_runtime_required:
false unless explicitly declared
hidden_dependency_resolution_allowed:
false
semantic_invention_allowed:
false
unspecified_transition_allowed:
false
invalid_terminal_state_allowed:
false
# =============================================================================
# 1. COMPILERLESS DEFINITION
# =============================================================================
DEFINITION:
A system is compilerless when its operational behaviour is recoverable and
executable directly from its supplied symbolic specification without first
converting that specification into a lower-level executable representation.
Compilerless does not mean:
- structureless
- ruleless
- syntax-free
- validation-free
- unconstrained natural-language completion
- execution without an interpreter
- execution without an underlying physical computer
Compilerless means:
- no mandatory ahead-of-time compilation
- no mandatory source-to-bytecode transformation
- no mandatory platform-specific binary generation
- no mandatory linking phase
- direct semantic execution from supplied structure
# =============================================================================
# 2. EXECUTION OBJECTIVE
# =============================================================================
OBJECTIVE:
Given:
specification:
F
initial_input:
I_0
derive:
terminal_output:
O*
such_that:
O* is reachable from I_0 under F
and
every applied transition is declared or formally derivable
and
every invariant remains satisfied
and
every hard constraint remains satisfied
and
no hidden semantic dependency is required
# =============================================================================
# 3. IO CONTRACT
# =============================================================================
IO.READ:
required:
flow_specification:
symbol:
F
type:
structured_symbolic_document
required_sections:
- FLOW_IDENTITY
- IO
- SYMBOLS
- STATE
- INVARIANTS
- TRANSFORMS
- TERMINATION
- EMISSION
execution_input:
symbol:
I_0
type:
object
optional:
execution_parameters:
symbol:
P
type:
object
default:
{}
external_capabilities:
symbol:
X
type:
set<Capability>
default:
∅
maximum_transition_steps:
type:
integer
default:
10000
constraints:
maximum_transition_steps >= 1
maximum_branch_count:
type:
integer
default:
1000
constraints:
maximum_branch_count >= 1
maximum_recursion_depth:
type:
integer
default:
128
constraints:
maximum_recursion_depth >= 1
ambiguity_policy:
type:
enum
values:
- REJECT
- MINIMUM_ASSUMPTION
- DECLARED_DEFAULT_ONLY
default:
DECLARED_DEFAULT_ONLY
execution_mode:
type:
enum
values:
- DETERMINISTIC
- BOUNDED_BRANCHING
- SYMBOLIC_SIMULATION
- VALIDATION_ONLY
default:
DETERMINISTIC
IO.WRITE:
fields:
execution_status:
type:
enum
values:
- COMPLETE
- VALIDATION_FAILED
- AMBIGUOUS_SPECIFICATION
- UNRESOLVED_SYMBOL
- CONSTRAINT_VIOLATION
- INVARIANT_VIOLATION
- CAPABILITY_UNAVAILABLE
- STEP_LIMIT_REACHED
- BRANCH_LIMIT_REACHED
- RECURSION_LIMIT_REACHED
- NO_VALID_TERMINAL_STATE
terminal_output:
type:
object?
final_state:
type:
object?
execution_trace:
type:
sequence<TraceEntry>
validation_report:
type:
object
unresolved_items:
type:
sequence<object>
execution_guarantee:
type:
object
# =============================================================================
# 4. PRIMARY SYMBOLS
# =============================================================================
SYMBOLS:
F:
meaning:
complete Flow Algebra specification
I_0:
meaning:
supplied initial input
P:
meaning:
declared execution parameters
X:
meaning:
available external capabilities
G_F:
meaning:
symbolic execution graph derived from F
N:
meaning:
set of graph nodes
E:
meaning:
set of directed transition edges
S_t:
meaning:
execution state at transition step t
K:
meaning:
set of hard constraints
Q:
meaning:
set of invariants
T:
meaning:
set of declared transforms
B_t:
meaning:
active branch set at step t
O*:
meaning:
accepted terminal output
Γ:
meaning:
structural continuation operator
V:
meaning:
validation predicate set
# =============================================================================
# 5. FLOW COMPONENT MODEL
# =============================================================================
FLOW_COMPONENTS:
FLOW_IDENTITY:
fields:
- name
- version
- purpose
IO:
fields:
- input_contract
- output_contract
SYMBOLS:
fields:
- declarations
- domains
- meanings
STATE:
fields:
- state_variables
- initial_values
- mutable_values
- immutable_values
INVARIANTS:
fields:
- global_invariants
- state_invariants
- transition_invariants
- output_invariants
TRANSFORMS:
fields:
- transform_identifiers
- preconditions
- operations
- postconditions
- emitted_successors
TERMINATION:
fields:
- success_conditions
- failure_conditions
- resource_bounds
EMISSION:
fields:
- output_mapping
- output_validation
- trace_requirements
# =============================================================================
# 6. EXECUTION STATE
# =============================================================================
STATE S_t := {
step:
integer,
active_node:
NodeID,
active_transform:
TransformID?,
input_values:
object,
parameter_values:
object,
symbol_table:
map<SymbolID,SymbolValue>,
immutable_bindings:
set<SymbolID>,
mutable_bindings:
set<SymbolID>,
state_values:
object,
prior_state:
StateID?,
branch_id:
BranchID,
parent_branch_id:
BranchID?,
recursion_depth:
integer,
active_constraints:
set<ConstraintID>,
active_invariants:
set<InvariantID>,
pending_transforms:
ordered_set<TransformID>,
completed_transforms:
sequence<TransformID>,
rejected_transforms:
sequence<TransformID>,
emitted_values:
object,
terminal:
boolean,
valid:
boolean
}
# =============================================================================
# 7. EXECUTION GRAPH
# =============================================================================
GRAPH G_F := {
N:
flow nodes representing:
- input ingestion
- symbol declarations
- state initialisation
- invariant gates
- transform entry points
- branch conditions
- recursive calls
- capability calls
- terminal conditions
- output emission
E:
directed edges representing:
- sequential continuation
- conditional continuation
- branch generation
- recursive continuation
- failure continuation
- termination
}
EDGE REQUIREMENT:
∀ e ∈ E:
e must have:
source_node
target_node
activation_condition
governing_constraints
state_update_rule
NODE REQUIREMENT:
∀ n ∈ N:
n must have:
node_id
node_type
input_symbols
output_symbols
preconditions
postconditions
# =============================================================================
# 8. GLOBAL INVARIANTS
# =============================================================================
INVARIANT K1_SELF_CONTAINMENT:
every semantic term required for execution must be:
- declared inside F
or
- supplied through I_0
or
- supplied through P
or
- explicitly exposed through X
or
- part of the declared primitive operation set
INVARIANT K2_NO_HIDDEN_SEMANTICS:
no transform may depend upon:
- undocumented business rules
- unstated defaults
- implicit domain assumptions
- unavailable external data
- private model memory
- unspecified software libraries
INVARIANT K3_SYMBOL_CLOSURE:
∀ symbol usage u:
∃ declaration d:
resolves(u,d)
=
true
INVARIANT K4_TYPE_COHERENCE:
every assigned value must belong to the declared domain of its symbol
INVARIANT K5_IMMUTABILITY:
symbols declared immutable must not change after binding
INVARIANT K6_STATE_CONTINUITY:
every S_{t+1} must be derived from exactly one permitted predecessor state
unless an explicit merge transform is declared
INVARIANT K7_TRANSFORM_AUTHORITY:
state may change only through an activated declared transform
INVARIANT K8_PRECONDITION_GATE:
a transform may execute only when every hard precondition is true
INVARIANT K9_POSTCONDITION_GATE:
a generated successor state is valid only when every hard postcondition is
true
INVARIANT K10_INVARIANT_PRESERVATION:
∀ q ∈ Q:
q(S_t) = true
and
execute(T_i,S_t) = S_{t+1}
→
q(S_{t+1}) = true
unless T_i explicitly and validly changes the scope of q
INVARIANT K11_NO_UNDECLARED_CONTINUATION:
Γ may select only:
- a declared outgoing edge
- a declared branch
- a declared recursion target
- a declared terminal state
INVARIANT K12_TERMINAL_VALIDITY:
terminal = true
→
all terminal conditions are satisfied
INVARIANT K13_OUTPUT_CONFORMANCE:
emitted output must satisfy IO.WRITE
INVARIANT K14_TRACEABILITY:
every state mutation must identify:
- prior state
- active transform
- consumed symbols
- produced symbols
- checked constraints
- resulting state
INVARIANT K15_RESOURCE_BOUNDEDNESS:
step <= maximum_transition_steps
and
cardinality(B_t) <= maximum_branch_count
and
recursion_depth <= maximum_recursion_depth
INVARIANT K16_FAILURE_VISIBILITY:
execution failure must be emitted explicitly
and must not be represented as successful completion
INVARIANT K17_NO_COMPILATION_DEPENDENCY:
execution must not require:
- machine-code generation
- executable linking
- platform-target compilation
- binary installation
unless the flow itself explicitly requests generation of such an artefact as
an output rather than as its own execution mechanism
# =============================================================================
# 9. PRIMITIVE OPERATION SET
# =============================================================================
PRIMITIVES:
data:
- read
- bind
- assign
- copy
- append
- remove
- union
- intersection
- difference
- contains
- select
- filter
- map
- reduce
- sort
- count
logical:
- AND
- OR
- NOT
- XOR
- IMPLIES
- FOR_ALL
- EXISTS
comparison:
- equal
- not_equal
- less_than
- less_than_or_equal
- greater_than
- greater_than_or_equal
numeric:
- add
- subtract
- multiply
- divide
- minimum
- maximum
- absolute
- sum
structural:
- parse
- normalise
- resolve
- validate
- instantiate
- transition
- branch
- merge
- recurse
- halt
- emit
diagnostic:
- log
- trace
- reject
- explain
PRIMITIVE RULE:
any operation outside this set must be declared as:
- a flow-defined function
or
- an external capability in X
# =============================================================================
# 10. SPECIFICATION INGESTION
# =============================================================================
TRANSFORM T_INGEST_SPECIFICATION:
raw_flow ←
read(flow_specification)
REQUIRE:
raw_flow != empty
canonical_flow ←
normalise(
raw_flow,
preserve:
- identifiers
- operators
- indentation_scope
- declared order
- literal values
)
bind immutable:
F ← canonical_flow
I_0 ← execution_input
P ← execution_parameters
X ← external_capabilities
proceed:
T_PARSE_STRUCTURE
# =============================================================================
# 11. STRUCTURAL PARSING
# =============================================================================
TRANSFORM T_PARSE_STRUCTURE:
section_map ← {
identity:
parse_section(F,"FLOW_IDENTITY"),
io:
parse_section(F,"IO"),
symbols:
parse_section(F,"SYMBOLS"),
state:
parse_section(F,"STATE"),
invariants:
parse_section(F,"INVARIANTS"),
transforms:
parse_section(F,"TRANSFORMS"),
termination:
parse_section(F,"TERMINATION"),
emission:
parse_section(F,"EMISSION")
}
FOR EACH required section r:
IF section_map[r] = absent:
validation_error.add({
type:
MISSING_REQUIRED_SECTION,
section:
r
})
IF validation_error != ∅:
execution_status ←
VALIDATION_FAILED
HALT
proceed:
T_BUILD_SYMBOL_TABLE
# =============================================================================
# 12. SYMBOL TABLE CONSTRUCTION
# =============================================================================
TRANSFORM T_BUILD_SYMBOL_TABLE:
declarations ←
extract_declarations(
section_map.symbols,
section_map.io,
section_map.state,
section_map.transforms
)
symbol_table ←
empty_map
FOR EACH declaration d:
REQUIRE d has:
- identifier
- domain
- mutability
- scope
IF symbol_table contains d.identifier:
IF declarations_are_compatible(
symbol_table[d.identifier],
d
) = false:
validation_error.add({
type:
CONFLICTING_DECLARATION,
symbol:
d.identifier
})
ELSE:
symbol_table[d.identifier] ←
d
usages ←
extract_symbol_usages(F)
FOR EACH usage u:
IF resolve(u,symbol_table) = none:
validation_error.add({
type:
UNRESOLVED_SYMBOL,
symbol:
u.identifier,
location:
u.location
})
IF validation_error contains hard error:
execution_status ←
UNRESOLVED_SYMBOL
HALT
proceed:
T_VALIDATE_IO
# =============================================================================
# 13. IO VALIDATION
# =============================================================================
TRANSFORM T_VALIDATE_IO:
input_contract ←
section_map.io.input_contract
output_contract ←
section_map.io.output_contract
FOR EACH required input field f:
IF f not present in I_0:
IF declared_default(f) exists:
I_0[f] ←
declared_default(f)
ELSE:
validation_error.add({
type:
MISSING_INPUT,
field:
f
})
FOR EACH supplied input field f:
REQUIRE:
type_of(I_0[f])
conforms_to
declared_type(f)
FOR EACH supplied parameter p:
REQUIRE:
p is declared
and
type_of(P[p])
conforms_to
declared_type(p)
IF validation_error != ∅:
execution_status ←
VALIDATION_FAILED
HALT
proceed:
T_RESOLVE_DEPENDENCIES
# =============================================================================
# 14. DEPENDENCY RESOLUTION
# =============================================================================
TRANSFORM T_RESOLVE_DEPENDENCIES:
dependencies ←
extract_external_dependencies(F)
FOR EACH dependency d:
IF d is primitive:
mark d:
AVAILABLE
ELSE IF d is flow_defined:
mark d:
AVAILABLE
ELSE IF d ∈ X:
mark d:
AVAILABLE
ELSE:
mark d:
UNAVAILABLE
unresolved_items.add({
type:
CAPABILITY,
identifier:
d
})
IF any required dependency is UNAVAILABLE:
execution_status ←
CAPABILITY_UNAVAILABLE
HALT
proceed:
T_PARSE_TRANSFORMS
# =============================================================================
# 15. TRANSFORM PARSING
# =============================================================================
TRANSFORM T_PARSE_TRANSFORMS:
T ←
extract_transforms(section_map.transforms)
FOR EACH transform T_i ∈ T:
REQUIRE T_i has:
- transform_id
- activation_rule
- preconditions
- operations
- postconditions
- continuation_rule
operation_sequence ←
parse_operations(T_i)
FOR EACH operation op:
REQUIRE:
op is primitive
or
op is flow_defined
or
op is available in X
transform_model[T_i.id] ← {
id:
T_i.id,
reads:
infer_read_set(T_i),
writes:
infer_write_set(T_i),
preconditions:
parse_conditions(T_i.preconditions),
operations:
operation_sequence,
postconditions:
parse_conditions(T_i.postconditions),
successors:
parse_continuations(T_i)
}
proceed:
T_PARSE_INVARIANTS
# =============================================================================
# 16. INVARIANT PARSING
# =============================================================================
TRANSFORM T_PARSE_INVARIANTS:
Q ←
extract_invariants(section_map.invariants)
FOR EACH invariant q ∈ Q:
REQUIRE:
q has:
- invariant_id
- predicate
- scope
- severity
predicate_tree ←
parse_logical_expression(q.predicate)
REQUIRE:
all symbols in predicate_tree resolve
invariant_model[q.id] ← {
predicate:
predicate_tree,
scope:
q.scope,
severity:
q.severity
}
proceed:
T_BUILD_EXECUTION_GRAPH
# =============================================================================
# 17. EXECUTION GRAPH CONSTRUCTION
# =============================================================================
TRANSFORM T_BUILD_EXECUTION_GRAPH:
N ← ∅
E ← ∅
entry_node ←
NewNode(INPUT_ENTRY)
N ←
N ∪ {entry_node}
FOR EACH transform T_i ∈ T:
transform_node ←
NewNode(TRANSFORM,T_i.id)
N ←
N ∪ {transform_node}
FOR EACH continuation from T_i to T_j:
edge ← {
source_node:
node(T_i),
target_node:
node(T_j),
activation_condition:
continuation.condition,
governing_constraints:
constraints_for(T_i,T_j),
state_update_rule:
continuation.state_rule
}
E ←
E ∪ {edge}
terminal_nodes ←
derive_terminal_nodes(
section_map.termination,
section_map.emission
)
N ←
N ∪ terminal_nodes
connect entry_node to declared initial transform
graph_validation ←
ValidateGraph(G_F)
REQUIRE:
- exactly one execution entry exists
- every non-terminal node has a continuation
- every terminal node has an emission rule
- every referenced transform exists
- no required node is unreachable
- recursion targets are declared
- branch joins are valid when present
IF graph_validation fails:
execution_status ←
VALIDATION_FAILED
HALT
proceed:
T_VALIDATE_STATIC_SEMANTICS
# =============================================================================
# 18. STATIC SEMANTIC VALIDATION
# =============================================================================
TRANSFORM T_VALIDATE_STATIC_SEMANTICS:
FOR EACH transform T_i:
read_set ←
transform_model[T_i].reads
write_set ←
transform_model[T_i].writes
FOR EACH symbol s ∈ read_set:
REQUIRE:
s is bound before T_i
or
s is conditionally bound on every path reaching T_i
FOR EACH symbol s ∈ write_set:
REQUIRE:
s is mutable
or
s is unbound and permits initial binding
REQUIRE:
preconditions are type-valid
operations are type-valid
postconditions are type-valid
continuations reference type-valid conditions
validate:
- immutable bindings are never overwritten
- each branch produces a coherent state
- each declared output can be produced
- no transform writes undeclared state
- no transform reads inaccessible scope
- recursion has a declared termination condition
- loops have a declared exit condition
- external capability results have declared types
IF static validation fails:
execution_status ←
VALIDATION_FAILED
HALT
proceed:
T_INSTANTIATE_INITIAL_STATE
# =============================================================================
# 19. INITIAL STATE INSTANTIATION
# =============================================================================
TRANSFORM T_INSTANTIATE_INITIAL_STATE:
S_0 := {
step:
0,
active_node:
entry_node,
active_transform:
null,
input_values:
I_0,
parameter_values:
P,
symbol_table:
instantiate(symbol_table,I_0,P),
immutable_bindings:
declared_immutable_symbols,
mutable_bindings:
declared_mutable_symbols,
state_values:
initialise_declared_state(section_map.state,I_0,P),
prior_state:
null,
branch_id:
ROOT_BRANCH,
parent_branch_id:
null,
recursion_depth:
0,
active_constraints:
K,
active_invariants:
Q,
pending_transforms:
{declared_initial_transform},
completed_transforms:
[],
rejected_transforms:
[],
emitted_values:
{},
terminal:
false,
valid:
true
}
REQUIRE:
input invariants hold for S_0
state initialisation constraints hold
all required initial symbols are bound
B_0 ←
{S_0}
proceed:
T_EXECUTION_LOOP
# =============================================================================
# 20. STRUCTURAL CONTINUATION OPERATOR
# =============================================================================
FUNCTION Γ(S_t,G_F):
candidate_edges ←
outgoing_edges(
G_F,
S_t.active_node
)
valid_edges ← ∅
FOR EACH edge e ∈ candidate_edges:
condition_result ←
evaluate(
e.activation_condition,
S_t.symbol_table,
S_t.state_values
)
IF condition_result = true:
valid_edges ←
valid_edges ∪ {e}
ELSE IF condition_result = unknown:
HANDLE according_to ambiguity_policy:
REJECT:
reject e
DECLARED_DEFAULT_ONLY:
IF declared default resolves condition:
evaluate using declared default
ELSE:
reject e
MINIMUM_ASSUMPTION:
assumption ←
derive_minimum_non-semantic_assumption(e)
IF assumption changes user intent
OR weakens hard constraint:
reject e
ELSE:
evaluate using assumption
RETURN:
valid_edges
# =============================================================================
# 21. TRANSFORM ACTIVATION
# =============================================================================
FUNCTION ActivateTransform(S_t,T_i):
REQUIRE:
T_i ∈ S_t.pending_transforms
precondition_results ←
evaluate_all(
transform_model[T_i].preconditions,
S_t
)
IF any hard precondition = false:
RETURN:
REJECTED_STATE {
reason:
PRECONDITION_FAILURE,
transform:
T_i
}
IF any hard precondition = unknown:
RETURN:
REJECTED_STATE {
reason:
UNRESOLVED_PRECONDITION,
transform:
T_i
}
S_work ←
Copy(S_t)
S_work.active_transform ←
T_i
RETURN:
S_work
# =============================================================================
# 22. DIRECT SEMANTIC EXECUTION
# =============================================================================
FUNCTION ExecuteTransform(S_work,T_i):
operations ←
transform_model[T_i].operations
FOR EACH operation op in declared order:
REQUIRE:
operation_precondition(op,S_work)
=
true
result ←
execute_semantically(
operation = op,
symbols = S_work.symbol_table,
state = S_work.state_values,
capabilities = X
)
IF result.status = failure:
RETURN:
REJECTED_STATE {
reason:
OPERATION_FAILURE,
operation:
op,
details:
result
}
apply declared state mutation only
trace operation:
- consumed values
- produced values
- changed symbols
- checked constraints
RETURN:
S_work
# =============================================================================
# 23. POSTCONDITION VALIDATION
# =============================================================================
FUNCTION ValidateTransformResult(S_before,S_after,T_i):
postcondition_results ←
evaluate_all(
transform_model[T_i].postconditions,
S_after
)
IF any hard postcondition != true:
RETURN:
false
FOR EACH invariant q active in S_after:
IF evaluate(q,S_after) != true:
RETURN:
false
REQUIRE:
no immutable binding changed
no undeclared state field appeared
every changed value has a governing operation
state continuity is preserved
RETURN:
true
# =============================================================================
# 24. SUCCESSOR GENERATION
# =============================================================================
FUNCTION GenerateSuccessors(S_after,T_i):
continuation_edges ←
Γ(S_after,G_F)
successors ← ∅
FOR EACH edge e ∈ continuation_edges:
S_next ←
Copy(S_after)
S_next.step ←
S_after.step + 1
S_next.prior_state ←
StateID(S_after)
S_next.active_node ←
e.target_node
S_next.completed_transforms ←
S_after.completed_transforms || [T_i]
S_next.pending_transforms ←
transforms_at(e.target_node)
IF cardinality(continuation_edges) > 1:
S_next.parent_branch_id ←
S_after.branch_id
S_next.branch_id ←
NewBranchID()
IF edge enters recursion:
S_next.recursion_depth ←
S_after.recursion_depth + 1
IF edge exits recursion:
S_next.recursion_depth ←
max(
0,
S_after.recursion_depth - 1
)
apply edge.state_update_rule
successors ←
successors ∪ {S_next}
RETURN:
successors
# =============================================================================
# 25. BRANCH VALIDATION
# =============================================================================
FUNCTION ValidateSuccessor(S_next):
IF S_next.step > maximum_transition_steps:
RETURN:
STEP_LIMIT_REACHED
IF S_next.recursion_depth > maximum_recursion_depth:
RETURN:
RECURSION_LIMIT_REACHED
IF any active invariant fails:
RETURN:
INVARIANT_VIOLATION
IF any active hard constraint fails:
RETURN:
CONSTRAINT_VIOLATION
IF symbol closure fails:
RETURN:
UNRESOLVED_SYMBOL
RETURN:
VALID
# =============================================================================
# 26. EXECUTION LOOP
# =============================================================================
TRANSFORM T_EXECUTION_LOOP:
B_t ←
B_0
execution_trace ←
[]
WHILE B_t != ∅:
IF total_generated_branches > maximum_branch_count:
execution_status ←
BRANCH_LIMIT_REACHED
HALT
S_t ←
PopNextState(
B_t,
order:
- lowest step
- highest hard-constraint satisfaction
- deterministic branch identifier
)
IF S_t.terminal = true:
terminal_candidates.add(S_t)
CONTINUE
IF S_t.step >= maximum_transition_steps:
rejected_states.add({
state:
S_t,
reason:
STEP_LIMIT_REACHED
})
CONTINUE
FOR EACH T_i ∈ S_t.pending_transforms:
S_work ←
ActivateTransform(S_t,T_i)
IF S_work is REJECTED_STATE:
record rejection
CONTINUE
S_after ←
ExecuteTransform(S_work,T_i)
IF S_after is REJECTED_STATE:
record rejection
CONTINUE
valid_result ←
ValidateTransformResult(
S_t,
S_after,
T_i
)
IF valid_result = false:
rejected_states.add({
state:
S_after,
transform:
T_i,
reason:
POSTCONDITION_OR_INVARIANT_FAILURE
})
CONTINUE
successors ←
GenerateSuccessors(S_after,T_i)
IF successors = ∅:
IF terminal_condition(S_after) = true:
S_after.terminal ←
true
terminal_candidates.add(S_after)
ELSE:
rejected_states.add({
state:
S_after,
reason:
NO_VALID_CONTINUATION
})
FOR EACH S_next ∈ successors:
successor_status ←
ValidateSuccessor(S_next)
IF successor_status = VALID:
B_t ←
B_t ∪ {S_next}
ELSE:
rejected_states.add({
state:
S_next,
reason:
successor_status
})
execution_trace.add(
BuildTraceEntry(
before = S_t,
transform = T_i,
after = S_after,
successors = successors
)
)
proceed:
T_RESOLVE_TERMINAL_STATE
# =============================================================================
# 27. TERMINAL STATE DETECTION
# =============================================================================
FUNCTION terminal_condition(S):
success_conditions ←
section_map.termination.success_conditions
return:
evaluate_all(
success_conditions,
S
)
=
true
FUNCTION failure_condition(S):
failure_conditions ←
section_map.termination.failure_conditions
return:
any(
evaluate_all(
failure_conditions,
S
)
)
=
true
# =============================================================================
# 28. TERMINAL STATE RESOLUTION
# =============================================================================
TRANSFORM T_RESOLVE_TERMINAL_STATE:
valid_terminal_states ← ∅
FOR EACH S_terminal ∈ terminal_candidates:
REQUIRE:
terminal_condition(S_terminal)
=
true
REQUIRE:
failure_condition(S_terminal)
=
false
output_candidate ←
construct_output(
S_terminal,
section_map.emission
)
output_validation ←
ValidateOutput(output_candidate)
IF output_validation = true:
valid_terminal_states ←
valid_terminal_states ∪ {S_terminal}
IF valid_terminal_states = ∅:
execution_status ←
NO_VALID_TERMINAL_STATE
proceed:
T_EMIT_FAILURE
IF cardinality(valid_terminal_states) = 1:
accepted_terminal_state ←
only(valid_terminal_states)
ELSE:
accepted_terminal_state ←
ResolveMultipleTerminalStates(
valid_terminal_states,
execution_mode,
declared_selection_rule
)
proceed:
T_CONSTRUCT_OUTPUT
# =============================================================================
# 29. MULTIPLE TERMINAL STATE RESOLUTION
# =============================================================================
FUNCTION ResolveMultipleTerminalStates(
candidate_states,
mode,
selection_rule
):
IF mode = DETERMINISTIC:
REQUIRE:
declared_selection_rule exists
RETURN:
apply(
declared_selection_rule,
candidate_states
)
IF mode = BOUNDED_BRANCHING:
RETURN:
argmax_{S ∈ candidate_states}
declared_state_quality(S)
IF mode = SYMBOLIC_SIMULATION:
RETURN:
set_of_all_valid_terminal_states
IF mode = VALIDATION_ONLY:
RETURN:
no_output_execution_state
# =============================================================================
# 30. OUTPUT CONSTRUCTION
# =============================================================================
TRANSFORM T_CONSTRUCT_OUTPUT:
O_candidate ←
map_state_to_output(
accepted_terminal_state,
section_map.emission
)
REQUIRE:
O_candidate contains every required output field
REQUIRE:
each output field conforms to declared type
REQUIRE:
each output invariant is true
REQUIRE:
no undeclared internal state is leaked
O* ←
O_candidate
execution_status ←
COMPLETE
proceed:
T_BUILD_VALIDATION_REPORT
# =============================================================================
# 31. OUTPUT VALIDATION
# =============================================================================
FUNCTION ValidateOutput(O):
FOR EACH required field f in IO.WRITE:
IF f not present in O:
RETURN:
false
IF type_of(O[f]) does_not_conform_to declared_type(f):
RETURN:
false
FOR EACH output constraint k:
IF evaluate(k,O) != true:
RETURN:
false
RETURN:
true
# =============================================================================
# 32. EXECUTION TRACE
# =============================================================================
FUNCTION BuildTraceEntry(
before,
transform,
after,
successors
):
RETURN {
step:
before.step,
branch_id:
before.branch_id,
active_node:
before.active_node,
transform:
transform,
preconditions:
evaluated_preconditions(transform,before),
input_symbols:
consumed_symbols(transform,before),
prior_state_hash:
StateHash(before),
mutations:
StateDifference(before,after),
postconditions:
evaluated_postconditions(transform,after),
invariant_results:
evaluated_invariants(after),
successor_ids:
IDs(successors),
resulting_state_hash:
StateHash(after)
}
# =============================================================================
# 33. VALIDATION REPORT
# =============================================================================
TRANSFORM T_BUILD_VALIDATION_REPORT:
validation_report := {
flow_name:
F.identity.name,
flow_version:
F.identity.version,
structural_parse_valid:
true,
symbol_closure_valid:
true,
input_contract_valid:
true,
dependency_closure_valid:
true,
transform_structure_valid:
true,
invariant_structure_valid:
true,
execution_graph_valid:
true,
static_semantics_valid:
true,
terminal_state_valid:
true,
output_contract_valid:
true,
transition_steps:
accepted_terminal_state.step,
branches_generated:
total_generated_branches,
branches_rejected:
cardinality(rejected_states),
recursion_depth_reached:
maximum_observed_recursion_depth,
external_capabilities_used:
capabilities_used(execution_trace),
conventional_compiler_used:
false,
bytecode_generated:
false,
platform_binary_generated:
false,
hidden_dependencies_detected:
0
}
proceed:
T_BUILD_EXECUTION_GUARANTEE
# =============================================================================
# 34. FAILURE EMISSION
# =============================================================================
TRANSFORM T_EMIT_FAILURE:
final_failure_status ←
HighestPriorityFailure(
validation_error,
rejected_states,
unresolved_items
)
execution_status ←
final_failure_status
terminal_output ←
null
execution_guarantee := {
successful_execution:
false,
invalid_output_released:
false,
reason:
final_failure_status,
unresolved_items:
unresolved_items,
rejected_state_count:
cardinality(rejected_states)
}
EMIT:
execution_status
terminal_output
final_state:
null
execution_trace
validation_report
unresolved_items
execution_guarantee
HALT
# =============================================================================
# 35. EXECUTION GUARANTEE
# =============================================================================
TRANSFORM T_BUILD_EXECUTION_GUARANTEE:
execution_guarantee := {
successful_execution:
true,
execution_method:
"direct symbolic state propagation",
source_representation:
"Flow Algebra",
conventional_compiler_required:
false,
bytecode_required:
false,
linker_required:
false,
platform_binary_required:
false,
all_symbols_resolved:
true,
all_required_dependencies_available:
true,
all_executed_transforms_declared:
true,
all_preconditions_satisfied:
true,
all_postconditions_satisfied:
true,
all_active_invariants_preserved:
true,
terminal_state_reachable:
true,
output_contract_satisfied:
true,
hidden_semantics_required:
false,
output_traceable_to_input:
true,
claim:
"The terminal output was derived directly from the supplied symbolic
specification through declared state transitions and constraint
propagation without conventional source-code compilation."
}
proceed:
T_EMIT_SUCCESS
# =============================================================================
# 36. SUCCESS EMISSION
# =============================================================================
TRANSFORM T_EMIT_SUCCESS:
EMIT:
execution_status:
COMPLETE
terminal_output:
O*
final_state:
accepted_terminal_state.state_values
execution_trace:
execution_trace
validation_report:
validation_report
unresolved_items:
[]
execution_guarantee:
execution_guarantee
HALT
# =============================================================================
# 37. COMPILER PIPELINE COMPARISON
# =============================================================================
CONVENTIONAL_PIPELINE:
source_text
→
lexical_analysis
→
syntax_tree
→
semantic_analysis
→
intermediate_representation
→
optimisation
→
machine_or_bytecode_generation
→
linking
→
loading
→
processor_execution
COMPILERLESS_PIPELINE:
symbolic_specification
→
structural_parse
→
semantic_execution_graph
→
symbol_and_constraint_validation
→
direct_state_transition
→
terminal_state_validation
→
output_emission
STRUCTURAL_DIFFERENCE:
conventional:
meaning is translated into another executable representation
compilerless:
supplied meaning remains the active execution representation
# =============================================================================
# 38. DIRECT EXECUTION EQUATION
# =============================================================================
FORMAL_EXECUTION:
F :=
complete symbolic specification
S_0 :=
Initialise(F,I_0,P)
S_{t+1} :=
Γ(
S_t,
G_F,
K,
Q
)
where:
Γ selects only transitions satisfying:
Preconditions(T_i,S_t)
=
true
and:
Constraints(S_{t+1})
=
true
and:
Invariants(S_{t+1})
=
true
termination:
∃ t:
Terminal(S_t)
=
true
output:
O*
=
Emit(S_t)
# =============================================================================
# 39. VALID CONTINUATION PREDICATE
# =============================================================================
PREDICATE VALID_CONTINUATION(S_t,T_i,S_{t+1}):
VALID_CONTINUATION :=
DECLARED(T_i)
AND
PRECONDITIONS(T_i,S_t)
AND
APPLY(T_i,S_t)
=
S_{t+1}
AND
POSTCONDITIONS(T_i,S_{t+1})
AND
INVARIANTS(S_{t+1})
AND
SYMBOL_CLOSURE(S_{t+1})
AND
TYPE_COHERENCE(S_{t+1})
AND
RESOURCE_BOUNDS(S_{t+1})
# =============================================================================
# 40. EXECUTABILITY PREDICATE
# =============================================================================
PREDICATE EXECUTABLE(F,I_0):
EXECUTABLE :=
STRUCTURALLY_COMPLETE(F)
AND
SYMBOLICALLY_CLOSED(F)
AND
INPUT_VALID(I_0,F.IO)
AND
DEPENDENCIES_AVAILABLE(F)
AND
GRAPH_VALID(G_F)
AND
∃ O*:
REACHABLE(O*,F,I_0)
AND
OUTPUT_VALID(O*,F.IO.WRITE)
# =============================================================================
# 41. COMPILERLESS PREDICATE
# =============================================================================
PREDICATE COMPILERLESS(F):
COMPILERLESS :=
EXECUTION_REPRESENTATION(F)
=
SUPPLIED_SYMBOLIC_REPRESENTATION(F)
AND
no mandatory transformation exists from F into:
- machine code
- native binary
- object code
- mandatory bytecode
before behavioural execution may begin
# =============================================================================
# 42. SEMANTIC CLOSURE
# =============================================================================
SEMANTIC_CLOSURE:
Let RequiredSemantics(F) be every meaning required to execute F.
Let DeclaredSemantics(F) include:
- declared symbols
- declared types
- declared transforms
- declared conditions
- declared invariants
- declared defaults
- declared primitive meanings
- declared capability contracts
Then:
F is semantically closed
iff:
RequiredSemantics(F)
⊆
DeclaredSemantics(F)
compilerless execution requires:
SemanticClosure(F)
=
true
# =============================================================================
# 43. PORTABILITY MODEL
# =============================================================================
PORTABILITY:
A Flow Algebra specification is portable between reasoning systems R_i and
R_j when both support:
- structural parsing
- symbol binding
- logical evaluation
- state propagation
- invariant checking
- declared branch resolution
- terminal emission
portability condition:
Execute(R_i,F,I_0)
≈
Execute(R_j,F,I_0)
where equivalence means:
- same mandatory constraints
- same valid terminal class
- same output schema
- no contradiction in required results
exact token-level output identity is not required unless declared.
# =============================================================================
# 44. DETERMINISM MODEL
# =============================================================================
DETERMINISTIC_EXECUTION:
deterministic when:
- all transform activation conditions are decidable
- all tie-break rules are declared
- all defaults are declared
- all external capability outputs are fixed
- exactly one valid continuation exists at each step
BOUNDED_NONDETERMINISM:
permitted when:
- several continuations satisfy all constraints
- branch generation is explicitly allowed
- branch count remains bounded
- a terminal selection rule is declared
INVALID_NONDETERMINISM:
exists when:
- output depends on undeclared preference
- branch selection lacks a declared rule
- ambiguity silently changes behaviour
- hidden model preference determines a hard requirement
# =============================================================================
# 45. EXTERNAL CAPABILITY BOUNDARY
# =============================================================================
CAPABILITY_MODEL:
external capability use does not invalidate compilerless execution when:
- the capability is explicitly declared
- its input contract is explicit
- its output contract is explicit
- its failure behaviour is explicit
- the capability performs a bounded operation
- the flow retains control over continuation
examples:
- database read
- web request
- sensor observation
- file read
- mathematical calculation
- message delivery
capability call pattern:
request
→
contract validation
→
capability invocation
→
result validation
→
state propagation
# =============================================================================
# 46. FAILURE MODEL
# =============================================================================
FAILURE_CLASSES:
STRUCTURAL_FAILURE:
- missing section
- malformed transform
- invalid graph
- unreachable required terminal
SYMBOL_FAILURE:
- undeclared symbol
- conflicting declaration
- invalid scope
- immutable overwrite
SEMANTIC_FAILURE:
- hidden assumption required
- operation meaning unavailable
- contradictory rule
- ambiguous hard requirement
STATE_FAILURE:
- precondition failure
- postcondition failure
- invalid mutation
- invariant violation
RESOURCE_FAILURE:
- step limit reached
- branch limit reached
- recursion limit reached
CAPABILITY_FAILURE:
- capability unavailable
- invalid capability response
- capability contract violation
OUTPUT_FAILURE:
- no valid terminal state
- missing output field
- output type mismatch
- output invariant violation
# =============================================================================
# 47. RECURSIVE VALIDATION ENGINE
# =============================================================================
TRANSFORM T_RECURSIVE_VALIDATION:
validation_cycle ←
0
maximum_validation_cycles ←
5
WHILE validation_cycle < maximum_validation_cycles:
validation_cycle ←
validation_cycle + 1
errors ←
RunAllStaticValidation(F)
IF errors = ∅:
validation_status ←
VALID
BREAK
repairable_errors ←
{
e ∈ errors |
repair requires no semantic invention
and
repair does not alter declared intent
}
non_repairable_errors ←
errors \ repairable_errors
IF non_repairable_errors != ∅:
validation_status ←
INVALID
unresolved_items ←
unresolved_items ∪ non_repairable_errors
BREAK
FOR EACH error e ∈ repairable_errors:
F ←
ApplyMinimumStructuralRepair(F,e)
RETURN:
validation_status
# =============================================================================
# 48. MINIMUM STRUCTURAL REPAIR
# =============================================================================
FUNCTION ApplyMinimumStructuralRepair(F,error):
permitted repairs:
- normalise whitespace
- restore an unambiguous closing delimiter
- canonicalise a declared identifier consistently
- remove an exact duplicate declaration
- reorder independent declarations when dependency order is explicit
- apply an explicitly declared default
- resolve an unambiguous local reference
prohibited repairs:
- invent missing business logic
- create a new undeclared requirement
- weaken a hard constraint
- invent a default
- invent an external capability
- select among semantically different interpretations
- remove a required invariant
RETURN:
minimally_repaired_F
# =============================================================================
# 49. ARCHITECTURAL CONSEQUENCES
# =============================================================================
ARCHITECTURAL_MODEL:
conventional application architecture often separates:
- source language
- compiler
- runtime
- executable artefact
- deployed environment
compilerless architecture combines:
- specification
- validation
- execution semantics
- state-transition rules
- output constraints
inside one portable symbolic artefact.
resulting architectural properties:
SELF_DESCRIPTION:
the flow declares what it requires
SELF_VALIDATION:
the flow declares how valid execution is recognised
SELF_EXECUTION:
the flow declares how state progresses
SELF_TERMINATION:
the flow declares when execution stops
SELF_EMISSION:
the flow declares what may be emitted
# =============================================================================
# 50. SECURITY BOUNDARY
# =============================================================================
SECURITY:
compilerless execution must not treat supplied structure as trusted merely
because it is declarative.
REQUIRED VALIDATION:
- capability permissions
- data-access scope
- mutation authority
- external action authority
- output disclosure boundaries
- recursion limits
- branch limits
- execution-step limits
PROHIBITED:
- undeclared tool invocation
- privilege escalation
- hidden data retrieval
- unrestricted self-modification
- bypass of output policy
- execution of opaque embedded binary payloads
- silent network access
# =============================================================================
# 51. HUMAN-READABLE EXECUTION
# =============================================================================
HUMAN_READABILITY:
A valid compilerless flow should permit a human reviewer to identify:
- required inputs
- expected outputs
- state variables
- transition rules
- invariants
- failure conditions
- external dependencies
- termination conditions
Human readability is not itself sufficient for executability.
Executability additionally requires:
- structural completeness
- symbol closure
- semantic closure
- transition closure
- output closure
# =============================================================================
# 52. EXECUTION GUARANTEE STATEMENT
# =============================================================================
EXECUTION_GUARANTEE:
This flow guarantees that a compilerless system is not interpreted as
unrestricted natural-language improvisation.
Execution is permitted only after:
- structural validation
- input validation
- symbol resolution
- dependency resolution
- graph construction
- static semantic validation
- invariant activation
During execution:
- every mutation must be produced by a declared transform
- every transform must satisfy its preconditions
- every successor must satisfy its postconditions
- every active invariant must remain true
- every branch must follow a declared continuation
- every external action must use a declared capability
- every state change must be traceable
Completion occurs only when:
- a declared terminal condition is reached
- a valid terminal state exists
- the output contract is satisfied
- no hard constraint remains unresolved
The system therefore executes directly from symbolic meaning without first
requiring compilation into bytecode or a platform-specific binary.
The flow does not claim that physical computation disappears.
It establishes that compilation is no longer the mandatory semantic bridge
between the human-readable specification and executable behaviour.
# =============================================================================
# 53. APPROVAL
# =============================================================================
APPROVAL:
self_contained_structure:
approved
direct_symbolic_execution:
approved
compilerless_classification:
approved
state_transition_model:
approved
invariant_preservation:
approved
constraint_validation:
approved
external_capability_boundary:
approved
deterministic_execution_support:
approved
bounded_branching_support:
approved
failure_visibility:
approved
execution_traceability:
approved
bytecode_requirement:
rejected
platform_binary_requirement:
rejected
hidden_semantics:
rejected
# =============================================================================
# 54. EXECUTE
# =============================================================================
EXECUTE:
T_INGEST_SPECIFICATION
T_PARSE_STRUCTURE
T_BUILD_SYMBOL_TABLE
T_VALIDATE_IO
T_RESOLVE_DEPENDENCIES
T_PARSE_TRANSFORMS
T_PARSE_INVARIANTS
T_BUILD_EXECUTION_GRAPH
T_VALIDATE_STATIC_SEMANTICS
T_RECURSIVE_VALIDATION
T_INSTANTIATE_INITIAL_STATE
T_EXECUTION_LOOP
T_RESOLVE_TERMINAL_STATE
T_CONSTRUCT_OUTPUT
T_BUILD_VALIDATION_REPORT
T_BUILD_EXECUTION_GUARANTEE
T_EMIT_SUCCESS
# =============================================================================
# END FLOW
# =============================================================================
```
The Flow Algebra specifications presented on this page describe a structural reasoning system.
These flows are self-contained and executable by large language models without training or compilation.
Each flow specifies:
system structure
rule application
constraint enforcement
behavioural invariants
The flows should be interpreted as formal reasoning definitions, not as examples or pseudocode.
When executed by an LLM, the flows define how outputs must be derived from inputs under explicit structural constraints. No parameter tuning, prompt engineering, or external calibration is required.