Module Complete := Interpreter_complete.Make Aut Inter.
Definition complete_validator:unit->bool := Complete.Valid.is_complete.
Definition safe_validator:unit->bool := ValidSafe.is_safe.
Definition parse (safe:safe_validator ()=true) init log_n_steps buffer :
parse_result (symbol_semantic_type (NT (start_nt init))):=
parse (ValidSafe.safe_is_validator safe) init buffer log_n_steps.

(** Correction theorem. **)
Theorem parse_correct
(safe:safe_validator ()= true) init log_n_steps buffer:
match parse safe init log_n_steps buffer with
| Parsed_pr sem buffer_new =>
exists word (pt : parse_tree (NT (start_nt init)) word),
buffer = (word ++ buffer_new)%buf /\
pt_sem pt = sem
| _ => True
end.