Definition compatible_rule (r:rule) : Prop :=
match r with
| rule_intro f _ t => forall f', In f' (functions_of_term t) -> rank f' <= rank f
end.
Definition compatible_prog : Prop :=
forall r, In r prog -> compatible_rule r.

(* Specifications: *)
Lemma PPO_is_compatible_rule:
forall r, PPO_rule rank r -> compatible_rule r.
Lemma PPO_is_compatible_prog:
PPO_prog -> compatible_prog.
Lemma gary_seven i s p c1 f lt c2 v:
let proof_tree := cbv_update i s p c1 (fapply f lt) c2 v in
compatible_prog ->
wf proof_tree ->
PPO_prog ->
length (activations proof_tree) <= gary_seven_poly (A_T proof_tree).