Pointwise output semantics -- proof internals #
Proofs supporting the public API in
Complexitylib.Models.TuringMachine.OutputSemantics.
theorem
Complexity.TM.haltsInTime_mono_internal
{n : ℕ}
{tm : TM n}
{program : List Bool}
{first second : ℕ}
(hbound : first ≤ second)
(hhalt : tm.HaltsInTime program first)
:
tm.HaltsInTime program second
theorem
Complexity.TM.halts_of_haltsInTime_internal
{n : ℕ}
{tm : TM n}
{program : List Bool}
{time : ℕ}
(hhalt : tm.HaltsInTime program time)
:
tm.Halts program
theorem
Complexity.TM.halts_iff_exists_haltsInTime_internal
{n : ℕ}
(tm : TM n)
(program : List Bool)
:
theorem
Complexity.TM.producesInTime_take_internal
{n : ℕ}
{tm : TM n}
{program output : List Bool}
{time : ℕ}
(hproduce : tm.ProducesInTime program output time)
:
tm.ProducesInTime (List.take time program) output time
theorem
Complexity.TM.producesInTime_mono_internal
{n : ℕ}
{tm : TM n}
{program output : List Bool}
{first second : ℕ}
(hbound : first ≤ second)
(hproduce : tm.ProducesInTime program output first)
:
tm.ProducesInTime program output second
theorem
Complexity.TM.produces_of_producesInTime_internal
{n : ℕ}
{tm : TM n}
{program output : List Bool}
{time : ℕ}
(hproduce : tm.ProducesInTime program output time)
:
tm.Produces program output
theorem
Complexity.TM.haltsInTime_of_producesInTime_internal
{n : ℕ}
{tm : TM n}
{program output : List Bool}
{time : ℕ}
(hproduce : tm.ProducesInTime program output time)
:
tm.HaltsInTime program time
theorem
Complexity.TM.produces_iff_exists_producesInTime_internal
{n : ℕ}
(tm : TM n)
(program output : List Bool)
:
theorem
Complexity.TM.producesInTime_output_unique_internal
{n : ℕ}
{tm : TM n}
{program left right : List Bool}
{leftTime rightTime : ℕ}
(hleft : tm.ProducesInTime program left leftTime)
(hright : tm.ProducesInTime program right rightTime)
: