(*****************************************************************************)
(*                                                                           *)
(*                     Translation respects PPO                              *)
(*                                                                           *)
(*****************************************************************************)
Ltac ppo := Ordering.ppo Nat.eq_dec Nat.eq_dec constructor_eq_dec.

Lemma BC_to_TRS_same_rank_same_ppo_rule_iff bc st r rk rk':
let trs := snd (BC_to_TRS bc st) in
(∀ ru, ru ∈ trs.(rules) → rk (lhs_func ru) = rk' (lhs_func ru)) →
r ∈ trs.(rules) → PPO_rule rk r ↔ PPO_rule rk' r.