Inductive list_order {A : Type} (R : A -> A -> Prop) : list A -> list A -> Prop :=
| lo_cons:  forall l1 l2 h, Forall (fun x => R x h) l1 -> list_order R (l1 ++ l2) (h :: l2).
Definition W {A : Type} (R : A -> A -> Prop) (l : list A) : Prop :=
Acc (list_order R) l.
(*  forall l', list_order R l' l -> Acc (list_order R) l'. *)

Lemma first_rule_max_arity act t i s :
wf_prog max_arity prog ->
first_rule act = Some (i, s, t) ->
max_arity_term (term_from_active_term act) <= max_arity ->
max_arity_term t <= max_arity.