rewriting classification

Language Atom Structure Power Order
FRACTRAN Number Number Divisible?, Divide, Multiply Return to Start on Match
Tote Symbol Multiset<Symbol> Contains?, Remove, Insert RSM, Timed, Interaction
Thue Character String<Character> Contains?, Remove, Insert Random
Nova Symbol Dict<Stack<Tuple<Symbol>>> Top?, Variable Match, Variable Memory, Depth, Push, Pop RSM
Modal Symbol Tree*<Tuple<Symbol>> Subtree?, Prune, Graft, Variable Match, Variable Memory RSM
regex replacement Character String<Character> Match?, Regular Expression, Variable Match, Variable Memory, Negation No intrinsic order (RSM in bx's implementation)
PuzzleScript Object Layer* x Grid<Object> Present?, Moving?, Negation, Remove, Place Repeat Rule Until Inactive

equivalences and embeddings

FRACTRAN to tote

tote to FRACTRAN

Thue (deterministic) to Modal

Nova to Modal


char string into symbol string (mostly regex only)

Create a "token" using predefined symbols

<Type:Data>

Example: < Unary:(1*) >< Op:UnaryAdd >< Unary:(1*) > ➡ < Unary:$1$2 >


asides

nova is interesting in that it's easy to write rules that can look at two different "places"
equivalent modal code needs to remember all the stacks when replacing

syntax matters a lot for human ergonomics but almost none at all in purely describing systems

the questions