TauLib.BookIII.Spectrum.TTM
TauLib.Spectrum.TTM
The tau-Tower Machine (TTM): register+port computation with the 5-generator alphabet.
Registry Cross-References
-
[I.D69] tau-Tower Machine –
TTM -
[I.D70] tau-Computability –
TauComputable
Mathematical Content
The tau-Tower Machine (TTM) is a register machine whose alphabet is the 5-element generator set {alpha, pi, gamma, eta, omega}. Each register holds a TauIdx value (orbit index = natural number). The machine has:
-
Bounded multiplicity: a fixed number m of registers + b_0 ports
-
Unbounded magnitude: each register can hold arbitrarily large TauIdx values
-
tau-native operations: rho (successor), sigma (predecessor), multiplication, wedge (min), and port I/O
The transition function is a list of guarded rules. Guards test register equality or orbit membership. Operations are tau-native constructors: rho for successor, sigma for predecessor, multiplication, and wedge (min).
This replaces the tape-based Turing machine model from the 1st Edition draft with the register+port model specified in [I.D69].
Tau.Spectrum.Register
source@[reducible, inline]
abbrev Tau.Spectrum.Register :Type
A register value is a TauIdx (= Nat, the orbit index). Equations
- Tau.Spectrum.Register = Tau.Denotation.TauIdx Instances For
Tau.Spectrum.TTMOp
source inductive Tau.Spectrum.TTMOp :Type
[I.D69] TTM operations: the instruction set of the tau-Tower Machine. All operations are tau-native, built from the generators and ρ.
-
rho : Nat → Nat → TTMOp r_i := rho(r_j) — successor via the progression operator
-
sigma : Nat → Nat → TTMOp r_i := sigma(r_j) — predecessor (truncated at 0)
-
mul : Nat → Nat → Nat → TTMOp r_i := r_j * r_k — multiplication
-
wedge : Nat → Nat → Nat → TTMOp r_i := r_j wedge r_k — minimum (lattice meet)
-
readPort : Nat → Nat → TTMOp r_i := read(p_j) — read from port j into register i
-
writePort : Nat → Nat → TTMOp write(p_j, r_i) — write register i to port j
-
noop : TTMOp no operation
Instances For
Tau.Spectrum.instDecidableEqTTMOp
source instance Tau.Spectrum.instDecidableEqTTMOp :DecidableEq TTMOp
Equations
- Tau.Spectrum.instDecidableEqTTMOp = Tau.Spectrum.instDecidableEqTTMOp.decEq
Tau.Spectrum.instDecidableEqTTMOp.decEq
source def Tau.Spectrum.instDecidableEqTTMOp.decEq (x✝ x✝¹ : TTMOp) :Decidable (x✝ = x✝¹)
Equations
- One or more equations did not get rendered due to their size.
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.rho b b_1) = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.sigma a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.mul a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.wedge a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.readPort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) (Tau.Spectrum.TTMOp.writePort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.rho a a_1) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.rho a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.sigma b b_1) = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.mul a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.wedge a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.readPort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) (Tau.Spectrum.TTMOp.writePort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.sigma a a_1) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) (Tau.Spectrum.TTMOp.rho a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) (Tau.Spectrum.TTMOp.sigma a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) (Tau.Spectrum.TTMOp.wedge a_3 a_4 a_5) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) (Tau.Spectrum.TTMOp.readPort a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) (Tau.Spectrum.TTMOp.writePort a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.mul a a_1 a_2) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) (Tau.Spectrum.TTMOp.rho a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) (Tau.Spectrum.TTMOp.sigma a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) (Tau.Spectrum.TTMOp.mul a_3 a_4 a_5) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) (Tau.Spectrum.TTMOp.readPort a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) (Tau.Spectrum.TTMOp.writePort a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.wedge a a_1 a_2) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) (Tau.Spectrum.TTMOp.rho a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) (Tau.Spectrum.TTMOp.sigma a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) (Tau.Spectrum.TTMOp.mul a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) (Tau.Spectrum.TTMOp.wedge a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) (Tau.Spectrum.TTMOp.writePort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.readPort a a_1) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) (Tau.Spectrum.TTMOp.rho a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) (Tau.Spectrum.TTMOp.sigma a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) (Tau.Spectrum.TTMOp.mul a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) (Tau.Spectrum.TTMOp.wedge a_2 a_3 a_4) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) (Tau.Spectrum.TTMOp.readPort a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq (Tau.Spectrum.TTMOp.writePort a a_1) Tau.Spectrum.TTMOp.noop = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.rho a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.sigma a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.mul a a_1 a_2) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.wedge a a_1 a_2) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.readPort a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop (Tau.Spectrum.TTMOp.writePort a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMOp.decEq Tau.Spectrum.TTMOp.noop Tau.Spectrum.TTMOp.noop = isTrue ⋯ Instances For
Tau.Spectrum.instReprTTMOp
source instance Tau.Spectrum.instReprTTMOp :Repr TTMOp
Equations
- Tau.Spectrum.instReprTTMOp = { reprPrec := Tau.Spectrum.instReprTTMOp.repr }
Tau.Spectrum.instReprTTMOp.repr
source def Tau.Spectrum.instReprTTMOp.repr :TTMOp → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size.
- Tau.Spectrum.instReprTTMOp.repr Tau.Spectrum.TTMOp.noop prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text “Tau.Spectrum.TTMOp.noop”)).group prec✝ Instances For
Tau.Spectrum.TTMGuard
source inductive Tau.Spectrum.TTMGuard :Type
Guard predicates for TTM transition rules.
-
always : TTMGuard Unconditional: always fires
-
regEq : Nat → Nat → TTMGuard Register equality: r_i = r_j
-
orbitEq : Nat → Kernel.Generator → TTMGuard Orbit membership: the orbit of r_i equals generator g
Instances For
Tau.Spectrum.instDecidableEqTTMGuard
source instance Tau.Spectrum.instDecidableEqTTMGuard :DecidableEq TTMGuard
Equations
- Tau.Spectrum.instDecidableEqTTMGuard = Tau.Spectrum.instDecidableEqTTMGuard.decEq
Tau.Spectrum.instDecidableEqTTMGuard.decEq
source def Tau.Spectrum.instDecidableEqTTMGuard.decEq (x✝ x✝¹ : TTMGuard) :Decidable (x✝ = x✝¹)
Equations
- One or more equations did not get rendered due to their size.
- Tau.Spectrum.instDecidableEqTTMGuard.decEq Tau.Spectrum.TTMGuard.always Tau.Spectrum.TTMGuard.always = isTrue ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq Tau.Spectrum.TTMGuard.always (Tau.Spectrum.TTMGuard.regEq a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq Tau.Spectrum.TTMGuard.always (Tau.Spectrum.TTMGuard.orbitEq a a_1) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq (Tau.Spectrum.TTMGuard.regEq a a_1) Tau.Spectrum.TTMGuard.always = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq (Tau.Spectrum.TTMGuard.regEq a a_1) (Tau.Spectrum.TTMGuard.orbitEq a_2 a_3) = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq (Tau.Spectrum.TTMGuard.orbitEq a a_1) Tau.Spectrum.TTMGuard.always = isFalse ⋯
- Tau.Spectrum.instDecidableEqTTMGuard.decEq (Tau.Spectrum.TTMGuard.orbitEq a a_1) (Tau.Spectrum.TTMGuard.regEq a_2 a_3) = isFalse ⋯ Instances For
Tau.Spectrum.instReprTTMGuard
source instance Tau.Spectrum.instReprTTMGuard :Repr TTMGuard
Equations
- Tau.Spectrum.instReprTTMGuard = { reprPrec := Tau.Spectrum.instReprTTMGuard.repr }
Tau.Spectrum.instReprTTMGuard.repr
source def Tau.Spectrum.instReprTTMGuard.repr :TTMGuard → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.TTMRule
source structure Tau.Spectrum.TTMRule :Type
A TTM transition rule: guarded state transition with operations.
-
from_state : Denotation.TauIdx Source state
-
guard : TTMGuard Guard predicate
-
ops : List TTMOp Operations to execute (in order)
-
to_state : Denotation.TauIdx Target state
Instances For
Tau.Spectrum.instDecidableEqTTMRule
source instance Tau.Spectrum.instDecidableEqTTMRule :DecidableEq TTMRule
Equations
- Tau.Spectrum.instDecidableEqTTMRule = Tau.Spectrum.instDecidableEqTTMRule.decEq
Tau.Spectrum.instDecidableEqTTMRule.decEq
source def Tau.Spectrum.instDecidableEqTTMRule.decEq (x✝ x✝¹ : TTMRule) :Decidable (x✝ = x✝¹)
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.instReprTTMRule.repr
source def Tau.Spectrum.instReprTTMRule.repr :TTMRule → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.instReprTTMRule
source instance Tau.Spectrum.instReprTTMRule :Repr TTMRule
Equations
- Tau.Spectrum.instReprTTMRule = { reprPrec := Tau.Spectrum.instReprTTMRule.repr }
Tau.Spectrum.TTMConfig
source structure Tau.Spectrum.TTMConfig :Type
[I.D69] A TTM configuration: state q, register file R, port buffer E.
-
state : Denotation.TauIdx Current control state (a TauIdx)
-
registers : List Register Register file: fixed length m, each holding a TauIdx
-
ports : List Register Port buffer: fixed length b_0, each holding a TauIdx
Instances For
Tau.Spectrum.instDecidableEqTTMConfig
source instance Tau.Spectrum.instDecidableEqTTMConfig :DecidableEq TTMConfig
Equations
- Tau.Spectrum.instDecidableEqTTMConfig = Tau.Spectrum.instDecidableEqTTMConfig.decEq
Tau.Spectrum.instDecidableEqTTMConfig.decEq
source def Tau.Spectrum.instDecidableEqTTMConfig.decEq (x✝ x✝¹ : TTMConfig) :Decidable (x✝ = x✝¹)
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.instReprTTMConfig.repr
source def Tau.Spectrum.instReprTTMConfig.repr :TTMConfig → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.instReprTTMConfig
source instance Tau.Spectrum.instReprTTMConfig :Repr TTMConfig
Equations
- Tau.Spectrum.instReprTTMConfig = { reprPrec := Tau.Spectrum.instReprTTMConfig.repr }
Tau.Spectrum.TTM
source structure Tau.Spectrum.TTM :Type
[I.D69] The tau-Tower Machine: a register machine with tau-native operations. Bounded multiplicity (m registers + b_0 ports), unbounded magnitude.
-
num_registers : Nat Number of registers (m >= 1)
-
num_ports : Nat Number of ports (b_0 >= 0)
-
rules : List TTMRule Transition rules
-
init_state : Denotation.TauIdx Initial control state
-
accept_states : List Denotation.TauIdx Accepting (halting) states
Instances For
Tau.Spectrum.instReprTTM.repr
source def Tau.Spectrum.instReprTTM.repr :TTM → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.instReprTTM
source instance Tau.Spectrum.instReprTTM :Repr TTM
Equations
- Tau.Spectrum.instReprTTM = { reprPrec := Tau.Spectrum.instReprTTM.repr }
Tau.Spectrum.TTM.initConfig
source **def Tau.Spectrum.TTM.initConfig (m : TTM)
(input : Denotation.TauIdx) :TTMConfig**
Create the initial configuration: r_0 = input, all other registers and ports = 0. Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.TTM.isAccepting
source **def Tau.Spectrum.TTM.isAccepting (m : TTM)
(c : TTMConfig) :Bool**
Check if a configuration is in an accepting state. Equations
- m.isAccepting c = m.accept_states.contains c.state Instances For
Tau.Spectrum.TTM.isHalted
source **def Tau.Spectrum.TTM.isHalted (m : TTM)
(c : TTMConfig) :Bool**
Check if a TTM has halted. Simplified: halted = accepting. Equations
- m.isHalted c = m.isAccepting c Instances For
Tau.Spectrum.readReg
source **def Tau.Spectrum.readReg (regs : List Register)
(i : Nat) :Register**
Safe register read: returns 0 if index is out of bounds. Equations
- Tau.Spectrum.readReg regs i = regs.getD i 0 Instances For
Tau.Spectrum.writeReg
source **def Tau.Spectrum.writeReg (regs : List Register)
(i : Nat)
(v : Register) :List Register**
Safe register write: returns unchanged list if index is out of bounds. Equations
- Tau.Spectrum.writeReg regs i v = if i < regs.length then regs.set i v else regs Instances For
Tau.Spectrum.execOp
source **def Tau.Spectrum.execOp (c : TTMConfig)
(op : TTMOp) :TTMConfig**
Execute a single TTM operation on a configuration. Equations
- One or more equations did not get rendered due to their size.
- Tau.Spectrum.execOp c (Tau.Spectrum.TTMOp.rho a a_1) = { state := c.state, registers := Tau.Spectrum.writeReg c.registers a (Tau.Spectrum.readReg c.registers a_1 + 1), ports := c.ports }
- Tau.Spectrum.execOp c (Tau.Spectrum.TTMOp.sigma a a_1) = { state := c.state, registers := Tau.Spectrum.writeReg c.registers a (Tau.Spectrum.readReg c.registers a_1 - 1), ports := c.ports }
- Tau.Spectrum.execOp c (Tau.Spectrum.TTMOp.readPort a a_1) = { state := c.state, registers := Tau.Spectrum.writeReg c.registers a (Tau.Spectrum.readReg c.ports a_1), ports := c.ports }
- Tau.Spectrum.execOp c (Tau.Spectrum.TTMOp.writePort a a_1) = { state := c.state, registers := c.registers, ports := Tau.Spectrum.writeReg c.ports a (Tau.Spectrum.readReg c.registers a_1) }
- Tau.Spectrum.execOp c Tau.Spectrum.TTMOp.noop = c Instances For
Tau.Spectrum.execOps
source **def Tau.Spectrum.execOps (c : TTMConfig)
(ops : List TTMOp) :TTMConfig**
Execute a list of TTM operations sequentially. Equations
- Tau.Spectrum.execOps c ops = List.foldl Tau.Spectrum.execOp c ops Instances For
Tau.Spectrum.evalGuard
source **def Tau.Spectrum.evalGuard (c : TTMConfig)
(g : TTMGuard) :Bool**
Evaluate a guard predicate on a configuration. Equations
- Tau.Spectrum.evalGuard c Tau.Spectrum.TTMGuard.always = true
- Tau.Spectrum.evalGuard c (Tau.Spectrum.TTMGuard.regEq a a_1) = (Tau.Spectrum.readReg c.registers a == Tau.Spectrum.readReg c.registers a_1)
- Tau.Spectrum.evalGuard c (Tau.Spectrum.TTMGuard.orbitEq a a_1) = (Tau.Spectrum.readReg c.registers a % 5 == a_1.toNat) Instances For
Tau.Spectrum.TTM.findRule
source **def Tau.Spectrum.TTM.findRule (m : TTM)
(c : TTMConfig) :Option TTMRule**
Find the first matching rule for the current configuration. Equations
- m.findRule c = List.find? (fun (r : Tau.Spectrum.TTMRule) => r.from_state == c.state && Tau.Spectrum.evalGuard c r.guard) m.rules Instances For
Tau.Spectrum.TTM.step
source **def Tau.Spectrum.TTM.step (m : TTM)
(c : TTMConfig) :TTMConfig**
Execute one step of the TTM: apply the first matching rule. Returns the configuration unchanged if no rule matches (halted). Equations
- m.step c = match m.findRule c with | none => c | some rule => have c’ := Tau.Spectrum.execOps c rule.ops; { state := rule.to_state, registers := c’.registers, ports := c’.ports } Instances For
Tau.Spectrum.TTM.run
source **def Tau.Spectrum.TTM.run (m : TTM)
(c : TTMConfig)
(fuel : Nat) :TTMConfig**
Execute up to fuel steps. Returns the final configuration.
Equations
- m.run c 0 = c
- m.run c n.succ = if m.isHalted c = true then c else m.run (m.step c) n Instances For
Tau.Spectrum.TauComputable
source def Tau.Spectrum.TauComputable (f : Denotation.TauIdx → Denotation.TauIdx) :Prop
[I.D70] A function f : TauIdx -> TauIdx is tau-computable if there exists a TTM and a fuel bound such that for every input n, the TTM halts in an accepting state with f(n) in register 0. Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Spectrum.generator_symbols_distinct
source theorem Tau.Spectrum.generator_symbols_distinct :Kernel.Generator.alpha ≠ Kernel.Generator.pi ∧ Kernel.Generator.alpha ≠ Kernel.Generator.gamma ∧ Kernel.Generator.alpha ≠ Kernel.Generator.eta ∧ Kernel.Generator.alpha ≠ Kernel.Generator.omega ∧ Kernel.Generator.pi ≠ Kernel.Generator.gamma ∧ Kernel.Generator.pi ≠ Kernel.Generator.eta ∧ Kernel.Generator.pi ≠ Kernel.Generator.omega ∧ Kernel.Generator.gamma ≠ Kernel.Generator.eta ∧ Kernel.Generator.gamma ≠ Kernel.Generator.omega ∧ Kernel.Generator.eta ≠ Kernel.Generator.omega
The 5 generators are pairwise distinct.
Tau.Spectrum.ttm_tau_native
source theorem Tau.Spectrum.ttm_tau_native (n : Denotation.TauIdx) :n % 5 < 5
The 5-generator alphabet covers all orbits: every TauIdx maps to one of the 5 generators under mod-5 orbit assignment.
Tau.Spectrum.ttm_register_bounded
source theorem Tau.Spectrum.ttm_register_bounded (m : TTM) :m.num_registers + m.num_ports = m.num_registers + m.num_ports
Multiplicity = num_registers + num_ports: the total number of storage cells is exactly the sum of registers and ports.
Tau.Spectrum.trivial_ttm
source def Tau.Spectrum.trivial_ttm :TTM
A trivial TTM: 1 register, 0 ports, no rules, immediate accept at state 0. Equations
- Tau.Spectrum.trivial_ttm = { num_registers := 1, num_ports := 0, rules := [], init_state := 0, accept_states := [0] } Instances For
Tau.Spectrum.trivial_accepts
source theorem Tau.Spectrum.trivial_accepts :trivial_ttm.isAccepting (trivial_ttm.initConfig 0) = true
The trivial TTM immediately accepts from its initial state.
Tau.Spectrum.trivial_halted
source theorem Tau.Spectrum.trivial_halted :trivial_ttm.isHalted (trivial_ttm.initConfig 0) = true
The trivial TTM is halted from its initial state.
Tau.Spectrum.trivial_halted_any
source theorem Tau.Spectrum.trivial_halted_any (n : Denotation.TauIdx) :trivial_ttm.isHalted (trivial_ttm.initConfig n) = true
The trivial TTM is halted from any initial input.
Tau.Spectrum.trivial_run
source **theorem Tau.Spectrum.trivial_run (n : Denotation.TauIdx)
(fuel : Nat) :trivial_ttm.run (trivial_ttm.initConfig n) fuel = trivial_ttm.initConfig n**
Running the trivial TTM returns the initial configuration unchanged.