Inductive in_gamma (gamma : flist) (work : nf_list) : form -> Set :=
  | In_Gamma :
      forall (n : nat) (a : form),
      my_nth form n gamma a -> in_gamma gamma work a
  | In_Work1 :
      forall (n : nat) (a : normal_form),
      my_nth normal_form n work a -> in_gamma gamma work (nf2form a).Inductive in_gamma (gamma : flist) (work : nf_list) : form -> Set :=
  | In_Gamma :
      forall (n : nat) (a : form),
      my_nth form n gamma a -> in_gamma gamma work a
  | In_Work1 :
      forall (n : nat) (a : normal_form),
      my_nth normal_form n work a -> in_gamma gamma work (nf2form a).Inductive in_gamma (gamma : flist) (work : nf_list) : form -> Set :=
  | In_Gamma :
      forall (n : nat) (a : form),
      my_nth form n gamma a -> in_gamma gamma work a
  | In_Work1 :
      forall (n : nat) (a : normal_form),
      my_nth normal_form n work a -> in_gamma gamma work (nf2form a).

(* Specifications: *)
Lemma in_gamma_cons_gamma_tail : forall (a : form) (gamma : flist) (work : nf_list) (c : form), in_gamma gamma work c -> in_gamma (a :: gamma) work c.
Lemma in_gamma_cons_gamma_head : forall (a : form) (gamma : flist) (work : nf_list), in_gamma (a :: gamma) work a.
Lemma in_gamma_cons_gamma_rev : forall (a : form) (gamma : flist) (work : nf_list) (c : form), in_gamma (a :: gamma) work c -> in_gamma gamma work c + {c = a}.
Lemma in_gamma_cons_work_tail : forall (a : normal_form) (gamma : flist) (work : nf_list) (c : form), in_gamma gamma work c -> in_gamma gamma (a :: work) c.
Lemma in_gamma_cons_work_head : forall (a : normal_form) (gamma : flist) (work : nf_list), in_gamma gamma (a :: work) (nf2form a).
Lemma in_gamma_cons_work_rev : forall (a : normal_form) (gamma : flist) (work : nf_list) (c : form), in_gamma gamma (a :: work) c -> in_gamma gamma work c + {c = nf2form a}.
Lemma in_gamma_shift_gamma_work : forall (a : normal_form) (gamma : flist) (work : nf_list) (c : form), in_gamma (nf2form a :: gamma) work c -> in_gamma gamma (a :: work) c.
Lemma in_gamma_shift_work_gamma : forall (a : normal_form) (gamma : flist) (work : nf_list) (c : form), in_gamma gamma (a :: work) c -> in_gamma (nf2form a :: gamma) work c.