Module Import Inter := Interpreter.Make Aut.Module Safe := Interpreter_safe.Make Aut Inter.Module Correct := Interpreter_correct.Make Aut Inter.Module Complete := Interpreter_complete.Make Aut Inter.Definition complete_validator:unit->bool := Complete.Valid.is_complete.Definition safe_validator:unit->bool := Safe.Valid.is_safe.Definition parse (safe:safe_validator ()=true) init n_steps buffer : parse_result init:=
  Safe.parse_with_safe (Safe.Valid.is_safe_correct safe) init buffer n_steps.

Theorem parse_correct (safe:safe_validator ()= true) init n_steps buffer: match parse safe init n_steps buffer with | Parsed_pr sem buffer_new => exists word, buffer = word ++ buffer_new /\ inhabited (parse_tree (NT (start_nt init)) word sem) | _ => True end.