Inductive wt_state: state -> Prop :=
| wt_stmt_state: forall f s k e m te
(WTK: wt_stmt_cont te f k)
(WTB: wt_stmt ge te f.(fn_return) f.(fn_body))
(WTS: wt_stmt ge te f.(fn_return) s),
wt_state (State f s k e m)
| wt_expr_state: forall f r k e m te
(WTK: wt_expr_cont te f k)
(WTB: wt_stmt ge te f.(fn_return) f.(fn_body))
(WTE: wt_rvalue ge te r),
wt_state (ExprState f r k e m)
| wt_call_state: forall b fd vargs k m
(WTK: wt_call_cont k (fundef_return fd))
(WTFD: wt_fundef fd)
(FIND: Genv.find_funct ge b = Some fd),
wt_state (Callstate fd vargs k m)
| wt_return_state: forall v k m ty
(WTK: wt_call_cont k ty)
(VAL: wt_val v ty),
wt_state (Returnstate v k m)
| wt_stuck_state:
wt_state Stuckstate.
Hint Constructors wt_expr_cont wt_stmt_cont wt_stmt wt_state: ty.
Section WT_FIND_LABEL.
Scheme wt_stmt_ind2 := Minimality for wt_stmt Sort Prop
with wt_lblstmts2_ind2 := Minimality for wt_lblstmts Sort Prop.

(* Specifications: *)
Lemma wt_find_label:
forall lbl e f s, wt_stmt ge e f.(fn_return) s ->
forall k s' k',
find_label lbl s k = Some (s', k') ->
wt_stmt_cont e f k ->
wt_stmt ge e f.(fn_return) s' /\ wt_stmt_cont e f k'.