Variable full_pt: parse_tree (NT (start_nt init)) full_word full_sem.
Definition init_ptd :=
match full_pt in parse_tree head full_word full_sem return
pt_zipper head full_word full_sem ->
match head return Type with | T _ => unit | NT _ => pt_dot end
with
| Terminal_pt _ _ => fun _ => ()
| Non_terminal_pt ptl =>
fun top => build_pt_dot ptl (Non_terminal_pt_ptlz top)
end Top_ptz.

Theorem parse_complete n_steps:
match parse init (full_word ++ buffer_end) n_steps with
| OK (Parsed_pr sem_res buffer_end_res) =>
sem_res = full_sem /\ buffer_end_res = buffer_end /\
pt_size full_pt <= n_steps
| OK Fail_pr => False
| OK Timeout_pr => n_steps < pt_size full_pt
| Err => True
end.