simple induction w; eauto.
Defined.
Hint Resolve higman.
Inductive is_prefix (A : Set) : list A -> (nat -> A) -> Prop :=
| is_prefix_nil : forall f : nat -> A, is_prefix A nil f
| is_prefix_cons :
forall (f : nat -> A) (x : A) (xs : list A),
x = f (length xs) -> is_prefix A xs f -> is_prefix A (x :: xs) f.
Hint Constructors is_prefix.

Theorem good_prefix_lemma :
forall (ws : list word) (f : nat -> word),
bar ws ->
is_prefix word ws f -> {vs : list word | is_prefix word vs f /\ good vs}.