Expand description
This crate provides the core abstractions and utilities for the rstm framework, including
common types, traits, and macros that are used across the various components of the system.
§Features
std: Enables features that require the Rust standard library.alloc: Enables features that require the Rustalloccrate, allowing for dynamic memory allocation inno_stdenvironments.nightly: Enables features that require a nightly Rust compiler, such as certain unstable features or APIs.
§Overview
§Rules
Head: A structural implementation of the 2-tuple containing the current state and symbol of the machine.
Modules§
- actors
- actors for modular Turing machine implementations
- error
- this module defines the
Errortype alongisde other useful primitives that are used throughout the rules crate. - motion
- programs
- This module provides the
ProgramBaseimplementation along with its associated aliases, supporting traits, and more. - rules
- the
rulesmodule implements theRulestructure and its associated traits - state
- The
statemodule provides abstractions and implementations for managing state within therstmframework. - traits
- traits used to define common behaviors, operations, and interfaces for Turing machines and their components.
Macros§
- head
- The
head!macro simplifies the creation of aHeadstruct by providing a concise syntax for specifying the state and symbol. - head_
map - a macro to create a
HashMapof rules for a Turing machine. The macro takes a list of rules in the form of - program
- The
program!macro facilitates the creation of newPrograminstances using familiar syntax - rule
- The
rule!macro enables the definition of a single, Turing compatible rule using the following syntax: - ruleset
ruleset!is a macro that simplifies the creation of an array ofRules.- s
- the
s!macro is a simple helper macro to create aStateinstance. - tail
- the
tail!macro facilitates the creation of aTailstruct by providing a concise syntax for specifying the direction, next state, and symbol to write. As with other macros in this module, the variants of theDirectionare hygenically imported based on usage, meaning one only needs to specify the variant name directly, i.e.Left,Right, orStay.
Structs§
- Direction
Iter - An iterator over the variants of Direction
- Head
Step HeadStepdefines a lazy stepper for a Turing machine configured with a so-called moving head.- Learned
Rule - A
LearnedRuleis an extension of the basicRulestructure, incorporating a confidence metric to quantify the reliability or certainty of the rule within the scope of a learning context. This is particularly useful in scenarios where rules are derived from data or experience, allowing for a more nuanced application of rules based on their confidence levels. - Program
Base - The
ProgramBasestruct is used to define a generic program capable of being executed by a Turing machine or similar computational model. It consists of an optional initial state, a set of rules (or instructions) used to indicate how the machine should respond under different circumstances, and a marker to associate the generic parameters with the struct. - Rule
- The
Ruleimplementation is a concrete representation of a single instruction, or rule, within a given Turing machine program. It encapsulates the necessary components to define the behavior of the Turing machine when it encounters a specific state and symbol. - Rule
Builder RuleBuilderis a utilitarian structure designed to facilitate the construction of newRuleinstances through a step-by-step approach. This builder pattern allows for incremental specification of rule components, enhancing code readability and maintainability.- State
- The
Statewrapper is a generic container used to denote objects being used as a state in a Turing machine, finite-state machine, or similar computational model.
Enums§
- Direction
- The
Directionimplementation enumerates the directions the head of a Turing machine is allowed to move, namely: left, right, or stay in place. - Error
Errorenumerates the various errors encountered when dealing with rules and their components.- Halt
- The
Haltimplementation is a binary enum designed to represent either a halting state or a stepping state within a Turing machine or similar computational model.
Constants§
- DEFAULT_
DISPLAY_ RADIUS - defines the radius around the head position to be displayed when printing the tape
Traits§
- AsHead
- Converts to a
Headby reference. - AsTail
- Converts a type into a
Tailby reference. - Driver
- The
Driveris the basis for all compatible actors within the system. Each implementation is required to define the type of internal store it will use to manage its data. This abstraction allows for flexibility in the choice of data structures, enabling the actor to adapt to various use cases and performance requirements. - Executor
- The
Executortrait defines the basis for compatible engines within the system. - Halting
- The
Haltingtrait establishes an interface for determining whether a given state is in a halted condition. This trait is essential for Turing machine simulations, as it allows for the identification of states that signify the end of computation. - Halting
State - The
HaltingStatetrait is used to define states that are capable of representing halting conditions within a Turing machine simulation. For instance, if our state is of typeisize, then we might define<isize>::MAXto represent a halting state. - Head
Space - A
HeadSpaceis a particular kind of space that deals with the heads of rules. - Instruction
- The
Instructiontrait establishes the base interface for all compatible rules for the automata. - Instruction
Mut - Into
Direction IntoDirectionis a simple conversion trait for consuming types to turn into aDirection.- Into
Head - Consumes the caller to convert it into a
Head. - Into
Tail - A consuming trait for converting a type into a
Tail. - RawRuleset
- The
RawRulesettrait establishes an interface common to all compatible sets of rules for the framework. - RawState
RawStateis a sealed marker trait used to define objects used to represent states. The primary benefit of such a trait is preventing cases where theStateimplementation is used as a state itself:State<State<Q>>.- Rule
Space - If a headspace, or configuration space, defines all possible configurations of a system, then a rulespace defines how those configurations can change or evolve over time. In other words, if a c-space is a disconnected point cloud, then a rulespace is a set of rules that connect those points together, defining morphisms between them.
- State
Ext - The
StateExttrait is used to extend the baseRawStatetrait, introducing additional traits and constraints that are commonly required for state representations.
Functions§
- get_
range_ around - returns a range, as a 2-tuple, around a given position within the bounds of some length and with some radius
- pretty_
printer - printer
Type Aliases§
- Halt
State - A type alias for a
Stateequipped with the dedicatedHaltenum as its inner type. - HeadMap
- A type alias for a
HashMapwhere each key is aHeadand each value is aTail. - HeadVec
- Moving
Head - A type alias for an
EngineBaseinstance configured with a moving head model using theHead<Q, usize>structure to maintain the head’s position on the tape. - Program
- a type alias for a
ProgramBaseusing aVecas the ruleset - Result
- A type alias for a
Resultwith a custom error type (Error) - Rule
Array - a type alias for an array of
Rule’s - Rule
Hash Map - A type alias for a
HashMapwithusizekeys andRulevalues. - Rule
Hash Set - A type alias for a
HashSetcontainingRuleelements. - Rule
Slice - A type alias for a slice containing
Ruleelements. - RuleVec
- A type alias for a
VeccontainingRuleelements. - TailVec
- Tuple
Rule Array - a type alias for an array whose elements are 2-tuples consisting of a
Headand aTail - Tuple
Rule Slice - a type alias for a slice whose elements are 2-tuples consisting of a
Headand aTail