fact: Record Precedence (A : Type) : Type := { status : A -> status_type; prec : relation A; prec_eq: relation A; prec_bool : A -> A -> bool; prec_eq_bool : A -> A -> bool; prec_bool_ok : forall a1 a2, match prec_bool a1 a2 with true => prec a1 a2 | false => ~prec a1 a2 end; prec_eq_bool_ok: forall a1 a2, match prec_eq_bool a1 a2 with true => prec_eq a1 a2 | false => ~prec_eq a1 a2 end; prec_antisym : forall s, prec s s -> False; prec_transitive : transitive A prec; prec_eq_transitive: transitive A prec_eq; prec_eq_prec1: forall a1 a2 a3, prec a1 a2 -> prec_eq a2 a3 -> prec a1 a3; prec_eq_prec2: forall a1 a2 a3, prec a1 a2 -> prec_eq a1 a3 -> prec a3 a2; prec_eq_sym : forall s t, prec_eq s t -> prec_eq t s; prec_eq_refl : forall s, prec_eq s s; prec_eq_status: forall f g, prec_eq f g -> status f = status g; prec_not_prec_eq: forall f g, prec f g -> prec_eq f g -> False }.
imports: Coq(Bool Peano List PeanoNat) CoLoR(closure more_list equiv_list list_permut dickson) Coq(Relations Wellfounded Arith Wf_nat Recdef Program Morphisms Lia) CoLoR(term_spec term decidable_set ordered_set NatCompat)