[nil ⇒ None ?
|cons a _ ⇒ Some ? a
].
-
+(* this no longer works: TODO
definition tape_move ≝ λsig.λt: tape sig.λm:sig × move.
match \snd m with
[ R ⇒ mk_tape sig ((\fst m)::(left ? t)) (tail ? (right ? t))
| L ⇒ mk_tape sig (tail ? (left ? t)) ((\fst m)::(right ? t))
| N ⇒ mk_tape sig (left ? t) ((\fst m)::(tail ? (right ? t)))
].
-
+*)
definition current_chars ≝ λsig.λM:TM sig.λc:config sig M.
vec_map ?? (λt.option_hd ? (right ? t)) (S (tapes_no sig M)) (tapes ?? c).
[ None ⇒ l
| Some a ⇒ a::l
].
-
+(* this no longer works: TODO
definition step ≝ λsig.λM:TM sig.λc:config sig M.
let 〈news,mvs,outchar〉 ≝ trans sig M 〈state ?? c,current_chars ?? c〉 in
mk_config ??
(start sig M)
(vec_cons ? (mk_tape sig [] i) ? (empty_tapes sig (tapes_no sig M)))
[ ].
-
+*)
definition stop ≝ λsig.λM:TM sig.λc:config sig M.
halt sig M (state sig M c).
[ O ⇒ None ?
| S m ⇒ if p a then (Some ? a) else loop A m f p (f a)
].
-
+(* this no longer works: TODO
(* Compute ? M f states that f is computed by M *)
definition Compute ≝ λsig.λM:TM sig.λf:(list sig) → (list sig).
∀l.∃i.∃c.
∀l.∃i.∃c.
loop ? i (step sig M) (stop sig M) (init sig M l) = Some ? c ∧
(isnilb ? (out ?? c) = false).
+*)
\ No newline at end of file