Notation rule := (Syntax.rule variable function constructor).Notation term := (Syntax.term variable function constructor).Notation value := (Syntax.value constructor).Notation cbv := (CBV_cache.cbv variable function constructor).Notation assoc_cache := (assoc (term_beq variable_eq_dec function_eq_dec constructor_eq_dec)).Notation wf :=
  (CBV_cache.wf variable_eq_dec function_eq_dec constructor_eq_dec rule_default prog max_arity).Notation PPO_prog := (Ordering.PPO_prog prog rank).

(* Specifications: *)
Lemma NoDup_left_activations_cache_order i s p c1 t c2 v: PPO_prog -> wf (cbv_update i s p c1 t c2 v) -> NoDup (map (@proj_left _ _ _) (activations_cache_order (cbv_update i s p c1 t c2 v))).
Lemma NoDup_left_activations i s p c1 t c2 v: PPO_prog -> wf (cbv_update i s p c1 t c2 v) -> NoDup (map (@proj_left _ _ _) (activations (cbv_update i s p c1 t c2 v))).