OAI/Computability/Logspace/CounterPrograms.lean
141 declarations, 0 contain sorry, 0 declared as axioms
Bounded natural-register programs and their realization by finite deterministic machines.
From OpenAI, Exact Derandomization of Logarithmic Space: L = RL = BPL.
- def
OAI.ExactDerandomization.Counter.scanline 17 - lemma
OAI.ExactDerandomization.Counter.scan_zeroline 20 - lemma
OAI.ExactDerandomization.Counter.scan_ltline 22 - lemma
OAI.ExactDerandomization.Counter.marker_leftline 25 - lemma
OAI.ExactDerandomization.Counter.marker_rightline 31 - lemma
OAI.ExactDerandomization.Counter.scan_is_zeroline 47 - def
OAI.ExactDerandomization.Counter.dirline 53Source documentation
dir = false means ascending
def dir (q : ℕ) : Bool := decide (q%2=1)
- lemma
OAI.ExactDerandomization.Counter.dir_zeroline 55 - lemma
OAI.ExactDerandomization.Counter.dir_nextline 56 - def
OAI.ExactDerandomization.Counter.digitline 60 - def
OAI.ExactDerandomization.Counter.dirsline 64 - def
OAI.ExactDerandomization.Counter.digitsline 68 - lemma
OAI.ExactDerandomization.Counter.dirs_zeroline 72 - lemma
OAI.ExactDerandomization.Counter.digits_zeroline 79 - abbrev
OAI.ExactDerandomization.Counter.obsline 86 - lemma
OAI.ExactDerandomization.Counter.quot_boundline 88 - lemma
OAI.ExactDerandomization.Counter.eq_zero_obsline 92 - def
OAI.ExactDerandomization.Counter.symbolline 108 - lemma
OAI.ExactDerandomization.Counter.symbol_obsline 112 - def
OAI.ExactDerandomization.Counter.goLeftline 130Source documentation
gray positive step at a digit: 'up' = increase overall number, 'rev' = digit reversed
def goLeft (up rev : Bool) : Bool := decide (up = rev)
- def
OAI.ExactDerandomization.Counter.spillsline 131 - def
OAI.ExactDerandomization.Counter.shiftline 133 - def
OAI.ExactDerandomization.Counter.attemptline 138Source documentation
change orientation and multi-head moves, attempting to step (uses at interior, no overflow or underflow)
def attempt (up : Bool) : (d : ℕ) → (Fin d → Bool) → (Fin d → InputSymbol) → (Fin d → Bool) × (Fin d → Direction) | 0, r, _ => (r, Fin.elim0) | d+1, r, s => if spills up (r 0) (s 0) then let q := attempt up d (fun i => r i.succ) (fun i => s i.succ) …Mentions: OAI.ExactDerandomization.InputSymbol, OAI.ExactDerandomization.Direction, OAI.ExactDerandomization.Counter.spills
- abbrev
OAI.ExactDerandomization.Counter.stepsline 147 - lemma
OAI.ExactDerandomization.Counter.low_stepsline 155 - lemma
OAI.ExactDerandomization.Counter.high_stepsline 168 - lemma
OAI.ExactDerandomization.Counter.attempt_bothline 183 - def
OAI.ExactDerandomization.Counter.adjline 227 - def
OAI.ExactDerandomization.Counter.chline 234 - lemma
OAI.ExactDerandomization.Counter.adj_specline 240 - abbrev
OAI.ExactDerandomization.Counter.Storeline 272 - abbrev
OAI.ExactDerandomization.Counter.Fitline 273 - structure
OAI.ExactDerandomization.Counter.Jumpline 276Source documentation
bounded program instruction: read at i, set pc and maybe ±1 that same i.
structure Jump (S : Type) where …
- def
OAI.ExactDerandomization.Counter.tweakline 280 - theorem
OAI.ExactDerandomization.Counter.tweak_selfline 283 - theorem
OAI.ExactDerandomization.Counter.tweak_otherline 286 - theorem
OAI.ExactDerandomization.Counter.tweak_stayline 289 - def
OAI.ExactDerandomization.Counter.Jump.applyline 293 - structure
OAI.ExactDerandomization.Counter.CMline 297 - inductive
OAI.ExactDerandomization.Counter.CM.Runsline 305 - theorem
OAI.ExactDerandomization.Counter.CM.Runs.fitsline 310 - def
OAI.ExactDerandomization.Counter.CM.tabline 315 - def
OAI.ExactDerandomization.Counter.CM.repline 331 - lemma
OAI.ExactDerandomization.Counter.CM.rep_stepline 335 - theorem
OAI.ExactDerandomization.Counter.CM.realizeline 351Source documentation
A Runs derivation supplies an input-dependent but tape-independent clock.
theorem realize {x : Word} {m d : ℕ} (hm : ∀ s j, p.prog s = .inr j → j.atReg < m) {s : S} {c : Store} {b : Bool} (h : p.Runs x ((x.length+2)^d) s c b) : ∀ t, (∀ coins, (p.tab m d).run x coins t = rep x.length m d s c) → ∃ u, ∀ coins, (p.tab m d).out ((p.tab m d).run x coins u).state = some b := by …Mentions: OAI.ExactDerandomization.Word, OAI.ExactDerandomization.Counter.Store, OAI.ExactDerandomization.Counter.CM.rep
- theorem
OAI.ExactDerandomization.Counter.CM.gives_Lline 366 - inductive
OAI.ExactDerandomization.Counter.Cmdline 406 - abbrev
OAI.ExactDerandomization.Counter.Cmd.condline 414 - inductive
OAI.ExactDerandomization.Counter.Cmd.Runline 417 - lemma
OAI.ExactDerandomization.Counter.Cmd.Run.fitsline 427 - lemma
OAI.ExactDerandomization.Counter.Cmd.Run.monoline 430 - def
OAI.ExactDerandomization.Counter.Cmd.Nodeline 440 - instance
OAI.ExactDerandomization.Counter.Cmd.(instance at line 446)line 446 - def
OAI.ExactDerandomization.Counter.Cmd.enterline 449 - def
OAI.ExactDerandomization.Counter.Cmd.codeline 457 - lemma
OAI.ExactDerandomization.Counter.Cmd.compileline 474 - abbrev
OAI.ExactDerandomization.Counter.Cmd.Statesline 514 - def
OAI.ExactDerandomization.Counter.Cmd.machline 515 - theorem
OAI.ExactDerandomization.Counter.Cmd.while_Lline 523 - abbrev
OAI.ExactDerandomization.Counter.High0line 545 - abbrev
OAI.ExactDerandomization.Counter.putline 546 - lemma
OAI.ExactDerandomization.Counter.put_selfline 548 - lemma
OAI.ExactDerandomization.Counter.put_neline 549 - lemma
OAI.ExactDerandomization.Counter.put_sameline 550 - lemma
OAI.ExactDerandomization.Counter.put_overline 551 - lemma
OAI.ExactDerandomization.Counter.put_swapline 553 - lemma
OAI.ExactDerandomization.Counter.put_fitline 558 - lemma
OAI.ExactDerandomization.Counter.put_high0line 560 - lemma
OAI.ExactDerandomization.Counter.tweak_putline 562 - abbrev
OAI.ExactDerandomization.Counter.Trline 565 - def
OAI.ExactDerandomization.Counter.Roomline 571Source documentation
Counter program transformations, correctness with initial certified zeros available FROM threshold l onwards. l is quantified: we can request a program with the scratch moved out to make room. d bounds all counters throughout simultaneously.
def Room (f : Tr) (l : ℕ) : Prop := …
Mentions: OAI.ExactDerandomization.Counter.Tr
- def
OAI.ExactDerandomization.Counter.Opline 575 - lemma
OAI.ExactDerandomization.Counter.fit_monoline 577 - lemma
OAI.ExactDerandomization.Counter.high_monoline 578 - lemma
OAI.ExactDerandomization.Counter.self_powline 580 - lemma
OAI.ExactDerandomization.Counter.Op.transline 584 - lemma
OAI.ExactDerandomization.Counter.Op.hideline 596 - lemma
OAI.ExactDerandomization.Counter.Op.atomline 607 - lemma
OAI.ExactDerandomization.Counter.Op.identityline 616 - lemma
OAI.ExactDerandomization.Counter.Op.incline 618 - lemma
OAI.ExactDerandomization.Counter.Op.decline 619 - lemma
OAI.ExactDerandomization.Counter.Op.bifline 621 - lemma
OAI.ExactDerandomization.Counter.Op.loopline 639Source documentation
Iterate transformation while condition true, supplied sequence of finite states proves termination and the two bounds on the trajectory.
lemma Op.loop {f g : Tr} (i) (t : InputSymbol → Bool) (h : Op f) (e : ∃ k, ∀ l, k≤l → ∃ d : ℕ, 0<d ∧ ∀ x a B, x.length+2≤B → High0 a l → Fit a B → ∃ (n : ℕ) (r : ℕ → Store), r 0=a ∧ (∀ j, j≤n → High0 (r j) l ∧ Fit (r j) (B^d)) ∧ (∀ j, j<n → Cmd.cond i t x (r j)=true ∧ r (j+1) = f x (r j)) ∧ Cmd.cond i t x (r n)=false ∧ g x a=r n) : Op g := by …Mentions: OAI.ExactDerandomization.Counter.Tr, OAI.ExactDerandomization.InputSymbol, OAI.ExactDerandomization.Counter.Op, OAI.ExactDerandomization.Counter.High0, OAI.ExactDerandomization.Counter.Fit, OAI.ExactDerandomization.Counter.Store, OAI.ExactDerandomization.Counter.Cmd.cond
- def
OAI.ExactDerandomization.Counter.nzline 665 - lemma
OAI.ExactDerandomization.Counter.cond_nzline 667 - lemma
OAI.ExactDerandomization.Counter.Op.zeroline 670 - lemma
OAI.ExactDerandomization.Counter.sum_lt_cubeline 681 - lemma
OAI.ExactDerandomization.Counter.Op.sendline 684 - lemma
OAI.ExactDerandomization.Counter.Op.sendTwoline 703 - lemma
OAI.ExactDerandomization.Counter.Op.copyline 725 - abbrev
OAI.ExactDerandomization.Counter.NEline 750 - abbrev
OAI.ExactDerandomization.Counter.Agreeline 752 - lemma
OAI.ExactDerandomization.Counter.Agree.monoline 753 - lemma
OAI.ExactDerandomization.Counter.Agree.putline 755 - abbrev
OAI.ExactDerandomization.Counter.Localline 759 - abbrev
OAI.ExactDerandomization.Counter.setEline 760 - def
OAI.ExactDerandomization.Counter.Eline 761 - lemma
OAI.ExactDerandomization.Counter.E.boundline 763 - lemma
OAI.ExactDerandomization.Counter.E.varline 778 - lemma
OAI.ExactDerandomization.Counter.E.succline 780 - lemma
OAI.ExactDerandomization.Counter.E.predline 785 - lemma
OAI.ExactDerandomization.Counter.E.constline 790 - lemma
OAI.ExactDerandomization.Counter.put_restoreline 795 - lemma
OAI.ExactDerandomization.Counter.E.bifline 799 - lemma
OAI.ExactDerandomization.Counter.E.iteline 817 - lemma
OAI.ExactDerandomization.Counter.E.gives_Lline 821 - lemma
OAI.ExactDerandomization.Counter.driveline 831Source documentation
Synthetic state trajectory. Like Op.loop, but allows loop valid just between a setup and teardown block, for one requested room.
lemma drive {beg step done ans : Tr} (l i : ℕ) (t : InputSymbol → Bool) (hg : Op beg) (hf : Op step) (hj : Op done) (h : ∃ (u d : ℕ), 0<d ∧ ∀ x a B, x.length+2≤B → High0 a l → Fit a B → ∃ (n : ℕ) (r : ℕ → Store), r 0=beg x a ∧ (∀ j, j≤n → High0 (r j) u ∧ Fit (r j) (B^d)) ∧ (∀ j, j<n → Cmd.cond i t x (r j)=true ∧ r (j+1) = step x (r j)) ∧ Cmd.cond i t x (r n)=false ∧ ans x a=done x (r n) ∧ High0 (ans x a) l) : Room ans l := by …Mentions: OAI.ExactDerandomization.Counter.Tr, OAI.ExactDerandomization.InputSymbol, OAI.ExactDerandomization.Counter.Op, OAI.ExactDerandomization.Counter.High0, OAI.ExactDerandomization.Counter.Fit, OAI.ExactDerandomization.Counter.Store, OAI.ExactDerandomization.Counter.Cmd.cond, OAI.ExactDerandomization.Counter.Room
- def
OAI.ExactDerandomization.Counter.forNatline 879Source documentation
Fold counting up.
def forNat {α : Type} (f : ℕ → α → α) (z : α) : ℕ → α | 0 => z | k+1 => f k (forNat f z k) - lemma
OAI.ExactDerandomization.Counter.E.iterateline 883 - lemma
OAI.ExactDerandomization.Counter.E.plus_sumline 989 - lemma
OAI.ExactDerandomization.Counter.E.addIterline 996 - lemma
OAI.ExactDerandomization.Counter.E.subIterline 999 - lemma
OAI.ExactDerandomization.Counter.E.mulIterline 1002 - lemma
OAI.ExactDerandomization.Counter.E.addline 1007 - lemma
OAI.ExactDerandomization.Counter.E.subline 1016 - lemma
OAI.ExactDerandomization.Counter.E.mulline 1025 - lemma
OAI.ExactDerandomization.Counter.E.pow_constline 1037 - lemma
OAI.ExactDerandomization.Counter.E.ite_leline 1042 - lemma
OAI.ExactDerandomization.Counter.E.ite_ltline 1046 - lemma
OAI.ExactDerandomization.Counter.E.minEline 1050 - lemma
OAI.ExactDerandomization.Counter.E.scan_rightline 1053 - lemma
OAI.ExactDerandomization.Counter.E.lengthline 1057 - lemma
OAI.ExactDerandomization.Counter.E.ite_eqline 1073 - lemma
OAI.ExactDerandomization.Counter.E.powStepline 1080 - lemma
OAI.ExactDerandomization.Counter.E.capPowline 1097 - lemma
OAI.ExactDerandomization.Counter.E.searchDivline 1111 - lemma
OAI.ExactDerandomization.Counter.E.divline 1124 - lemma
OAI.ExactDerandomization.Counter.E.modline 1138 - def
OAI.ExactDerandomization.Counter.Pickline 1155 - lemma
OAI.ExactDerandomization.Counter.Pick.constline 1158 - lemma
OAI.ExactDerandomization.Counter.Pick.bindline 1160 - lemma
OAI.ExactDerandomization.Counter.Pick.mapline 1164 - lemma
OAI.ExactDerandomization.Counter.Pick.iteline 1167 - lemma
OAI.ExactDerandomization.Counter.Pick.condline 1174 - lemma
OAI.ExactDerandomization.Counter.Pick.test_ltline 1182 - lemma
OAI.ExactDerandomization.Counter.Pick.test_eqline 1189 - lemma
OAI.ExactDerandomization.Counter.Pick.andline 1196 - lemma
OAI.ExactDerandomization.Counter.Pick.tupleline 1200 - lemma
OAI.ExactDerandomization.Counter.Pick.posline 1215 - lemma
OAI.ExactDerandomization.Counter.Pick.readline 1229 - lemma
OAI.ExactDerandomization.Counter.Pick.allline 1243