Definition poly := {a : list _ | canonical a}.Definition sltP (sa sb : poly) : Prop :=
  let (p, H1) return Prop := sa in let (q, H2) return Prop := sb in ltP p q.Definition fspoly (sa : poly) : Pow _ ltM :=
  let (p, H) return (Pow _ ltM) := sa in
  exist DescA (fP p) (canonical_imp_olist p H).

(* Specifications: *)
Theorem fsltP : forall p q : poly, sltP p q -> lex_exp _ ltM (fspoly p) (fspoly q).
Theorem sltp_wf : well_founded sltP.