OAI/Computability/RationalHitting/ProcedureControl.lean
16 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.RationalHitting.StackLanguage.Procedure.toPortline 12Source documentation
Give a procedure a single external input/output port. The two transfers are real stack programs; scratch registers remain clean.
def toPort (p : Procedure ca cb f) : Procedure ca cb f where …
- def
OAI.RationalHitting.StackLanguage.splitPairline 37 - lemma
OAI.RationalHitting.StackLanguage.eval_splitPairline 40 - lemma
OAI.RationalHitting.StackLanguage.extend_bothline 60 - def
OAI.RationalHitting.StackLanguage.Procedure.fromBinaryline 72Source documentation
Package an independently proved two-input clean register routine as a serialized procedure. Its polynomial bound is not an operation oracle: the actual Eval proof is required.
def fromBinary (p : Program K) (i j o : K) (hij : i≠j) (bnd : TimeBound) (hp : ∀ a b, ∃ t ≤ bnd.eval ((ca a).length+(cb b).length+1), Eval p (both i j (ca a) (cb b)) (single o (cc (f (a,b)))) t) (hs : ∀ a b, (cc (f (a,b))).length ≤ bnd.eval ((ca a).length+(cb b).length+1)) : Procedure (pairCode ca cb) cc f where …Mentions: OAI.RationalHitting.StackLanguage.Program, OAI.RationalHitting.TimeBound, OAI.RationalHitting.StackLanguage.Eval, OAI.RationalHitting.StackLanguage.both, OAI.RationalHitting.StackLanguage.single, OAI.RationalHitting.StackLanguage.Procedure, OAI.RationalHitting.StackLanguage.pairCode
- def
OAI.RationalHitting.StackLanguage.boolCodeline 109 - lemma
OAI.RationalHitting.StackLanguage.boolCode_lengthline 110 - def
OAI.RationalHitting.StackLanguage.Procedure.renameline 116 - def
OAI.RationalHitting.StackLanguage.Procedure.branchline 131Source documentation
Deterministic Boolean branching on a serialized pair. Only the selected finite subprogram runs; the tag is physically consumed.
def branch (p : Procedure ca cb f) (q : Procedure ca cb g) : Procedure (pairCode boolCode ca) cb (fun a => if a.1 then f a.2 else g a.2) := by …Mentions: OAI.RationalHitting.StackLanguage.Procedure, OAI.RationalHitting.StackLanguage.pairCode, OAI.RationalHitting.StackLanguage.boolCode
- def
OAI.RationalHitting.StackLanguage.unaryCodeline 209Source documentation
Unary loop count. These symbols are explicitly popped by the loop body.
def unaryCode (n : ℕ) : List Bool := List.replicate n true
- lemma
OAI.RationalHitting.StackLanguage.unaryCode_lengthline 210 - lemma
OAI.RationalHitting.StackLanguage.unaryCode_zeroline 211 - lemma
OAI.RationalHitting.StackLanguage.unaryCode_succline 212 - def
OAI.RationalHitting.StackLanguage.Procedure.iterateProgramline 217 - lemma
OAI.RationalHitting.StackLanguage.Procedure.eval_iterateProgramline 220 - def
OAI.RationalHitting.StackLanguage.Procedure.iterateline 257Source documentation
Bounded iteration is compiled to a real finite loop. The semantic size invariant is a proof obligation, not a loop oracle or added main hypothesis.
def iterate (p : Procedure ca ca f) (Q : TimeBound) (hQ : ∀ (n : ℕ) (a : A) (i : ℕ), i≤n → (ca (f^[i] a)).length≤Q.eval ((pairCode unaryCode ca (n,a)).length+1)) : Procedure (pairCode unaryCode ca) ca (fun a => f^[a.1] a.2) := by …Mentions: OAI.RationalHitting.StackLanguage.Procedure, OAI.RationalHitting.TimeBound, OAI.RationalHitting.StackLanguage.pairCode, OAI.RationalHitting.StackLanguage.unaryCode