Module Import Valid := Validator_safe.Make A.Proposition shift_head_symbs: shift_head_symbs.Proposition goto_head_symbs: goto_head_symbs.Proposition shift_past_state: shift_past_state.Proposition goto_past_state: goto_past_state.Proposition reduce_ok: reduce_ok.(** The stack of symbols of an automaton stack **)
Definition symb_stack_of_stack (stack:stack) :=
  List.map
    (fun cell:sigT noninitstate_type => last_symb_of_non_init_state (projT1 cell))
    stack.

Lemma reduce_step_stack_invariant_conserved stack prod buff: stack_invariant stack -> valid_for_reduce (state_of_stack init stack) prod -> match reduce_step init stack prod buff with | OK (Fail_sr | Accept_sr _ _) => True | OK (Progress_sr stack_new _) => stack_invariant stack_new | Err => False end.