Documentation

Complexity.Computability.TreeEval.Reader.Cert.Regs

Register operations within linear work space #

The register operations of Cslib.TreeEval.Reader are computable within work space linear in the lengths of their encoded arguments.

Main results #

@[reducible, inline]

The encoding of register indices.

Instances For
    theorem Cslib.TreeEval.Reader.get_inSpace {α : Type} {encIn : α ↪ List Bool} {Bs : α → ℕ} {R : α → Regs} {t : α → Fin 3} (hR : Turing.MultiTapeTM.ComputableInSpace R encIn encRegs Bs) (ht : Turing.MultiTapeTM.ComputableInSpace t encIn encReg Bs) :

    Selecting a register, given the registers and the index within a budget.

    theorem Cslib.TreeEval.Reader.set_inSpace {α : Type} {encIn : α ↪ List Bool} {Bs : α → ℕ} {R : α → Regs} {t : α → Fin 3} {l : α → List ℕ} (hR : Turing.MultiTapeTM.ComputableInSpace R encIn encRegs Bs) (ht : Turing.MultiTapeTM.ComputableInSpace t encIn encReg Bs) (hl : Turing.MultiTapeTM.ComputableInSpace l encIn (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encNat) Bs) :
    Turing.MultiTapeTM.ComputableInSpace (fun (x : α) => (R x).set (t x) (l x)) encIn encRegs Bs

    Replacing a register.

    theorem Cslib.TreeEval.Reader.scale_inSpace {α : Type} {encIn : α ↪ List Bool} {Bs p a : α → ℕ} {R : α → Regs} {r : α → Fin 3} (hp : Turing.MultiTapeTM.ComputableInSpace p encIn Turing.MultiTapeTM.encNat Bs) (ha : Turing.MultiTapeTM.ComputableInSpace a encIn Turing.MultiTapeTM.encNat Bs) (hR : Turing.MultiTapeTM.ComputableInSpace R encIn encRegs Bs) (hr : Turing.MultiTapeTM.ComputableInSpace r encIn encReg Bs) (hin : Turing.MultiTapeTM.BigOLe (fun (x : α) => (encIn x).length) Bs) (hB : Turing.MultiTapeTM.BigOLe (fun (x : α) => ((R x).get (r x)).length * ((Turing.MultiTapeTM.encNat (p x)).length + (Turing.MultiTapeTM.encNat (a x)).length)) Bs) :
    Turing.MultiTapeTM.ComputableInSpace (fun (x : α) => Regs.scale (p x) (r x) (a x) (R x)) encIn encRegs Bs

    Multiplying a register by a residue, within a budget that covers the register with every entry as long as the prime and the factor together.

    theorem Cslib.TreeEval.Reader.subtractSums_inSpace {α : Type} {encIn : α ↪ List Bool} {Bs p c : α → ℕ} {t : α → Fin 3} {acc : α → List ℕ} {R : α → Regs} (hp : Turing.MultiTapeTM.ComputableInSpace p encIn Turing.MultiTapeTM.encNat Bs) (hc : Turing.MultiTapeTM.ComputableInSpace c encIn Turing.MultiTapeTM.encNat Bs) (ht : Turing.MultiTapeTM.ComputableInSpace t encIn encReg Bs) (hacc : Turing.MultiTapeTM.ComputableInSpace acc encIn (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encNat) Bs) (hR : Turing.MultiTapeTM.ComputableInSpace R encIn encRegs Bs) (hB : Turing.MultiTapeTM.BigOLe (fun (x : α) => ((R x).get (t x)).length * ((Turing.MultiTapeTM.encNat (p x)).length + 1)) Bs) :
    Turing.MultiTapeTM.ComputableInSpace (fun (x : α) => subtractSums (p x) (c x) (t x) (acc x) (R x)) encIn encRegs Bs

    Subtracting c times the sums of a pass from a register, within a budget that covers the register with every entry as long as the prime.