(vl-sort-descriptions x &key modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) → (mv modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)
Function:
(defun vl-sort-descriptions-fn (x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (declare (xargs :guard (and (vl-descriptionlist-p x) (vl-modulelist-p modules) (vl-udplist-p udps) (vl-interfacelist-p interfaces) (vl-programlist-p programs) (vl-packagelist-p packages) (vl-configlist-p configs) (vl-taskdecllist-p taskdecls) (vl-fundecllist-p fundecls) (vl-paramdecllist-p paramdecls) (vl-importlist-p imports) (vl-fwdtypedeflist-p fwdtypedefs) (vl-typedeflist-p typedefs)))) (let ((__function__ 'vl-sort-descriptions)) (declare (ignorable __function__)) (b* (((when (atom x)) (mv (vl-modulelist-fix modules) (vl-udplist-fix udps) (vl-interfacelist-fix interfaces) (vl-programlist-fix programs) (vl-packagelist-fix packages) (vl-configlist-fix configs) (vl-taskdecllist-fix taskdecls) (vl-fundecllist-fix fundecls) (vl-paramdecllist-fix paramdecls) (vl-importlist-fix imports) (vl-fwdtypedeflist-fix fwdtypedefs) (vl-typedeflist-fix typedefs))) (x1 (vl-description-fix (car x))) (tag (tag x1))) (vl-sort-descriptions (cdr x) :modules (if (eq tag :vl-module) (cons x1 modules) modules) :udps (if (eq tag :vl-udp) (cons x1 udps) udps) :interfaces (if (eq tag :vl-interface) (cons x1 interfaces) interfaces) :programs (if (eq tag :vl-program) (cons x1 programs) programs) :packages (if (eq tag :vl-package) (cons x1 packages) packages) :configs (if (eq tag :vl-config) (cons x1 configs) configs) :taskdecls (if (eq tag :vl-taskdecl) (cons x1 taskdecls) taskdecls) :fundecls (if (eq tag :vl-fundecl) (cons x1 fundecls) fundecls) :paramdecls (if (eq tag :vl-paramdecl) (cons x1 paramdecls) paramdecls) :imports (if (eq tag :vl-import) (cons x1 imports) imports) :fwdtypedefs (if (eq tag :vl-fwdtypedef) (cons x1 fwdtypedefs) fwdtypedefs) :typedefs (if (eq tag :vl-typedef) (cons x1 typedefs) typedefs)))))
Theorem:
(defthm vl-modulelist-p-of-vl-sort-descriptions.modules (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-modulelist-p modules)) :rule-classes :rewrite)
Theorem:
(defthm vl-udplist-p-of-vl-sort-descriptions.udps (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-udplist-p udps)) :rule-classes :rewrite)
Theorem:
(defthm vl-interfacelist-p-of-vl-sort-descriptions.interfaces (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-interfacelist-p interfaces)) :rule-classes :rewrite)
Theorem:
(defthm vl-programlist-p-of-vl-sort-descriptions.programs (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-programlist-p programs)) :rule-classes :rewrite)
Theorem:
(defthm vl-packagelist-p-of-vl-sort-descriptions.packages (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-packagelist-p packages)) :rule-classes :rewrite)
Theorem:
(defthm vl-configlist-p-of-vl-sort-descriptions.configs (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-configlist-p configs)) :rule-classes :rewrite)
Theorem:
(defthm vl-taskdecllist-p-of-vl-sort-descriptions.taskdecls (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-taskdecllist-p taskdecls)) :rule-classes :rewrite)
Theorem:
(defthm vl-fundecllist-p-of-vl-sort-descriptions.fundecls (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-fundecllist-p fundecls)) :rule-classes :rewrite)
Theorem:
(defthm vl-paramdecllist-p-of-vl-sort-descriptions.paramdecls (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-paramdecllist-p paramdecls)) :rule-classes :rewrite)
Theorem:
(defthm vl-importlist-p-of-vl-sort-descriptions.imports (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-importlist-p imports)) :rule-classes :rewrite)
Theorem:
(defthm vl-fwdtypedeflist-p-of-vl-sort-descriptions.fwdtypedefs (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-fwdtypedeflist-p fwdtypedefs)) :rule-classes :rewrite)
Theorem:
(defthm vl-typedeflist-p-of-vl-sort-descriptions.typedefs (b* (((mv ?modules ?udps ?interfaces ?programs ?packages ?configs ?taskdecls ?fundecls ?paramdecls ?imports ?fwdtypedefs ?typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) (vl-typedeflist-p typedefs)) :rule-classes :rewrite)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-descriptionlist-fix-x (equal (vl-sort-descriptions-fn (vl-descriptionlist-fix x) modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-descriptionlist-equiv-congruence-on-x (implies (vl-descriptionlist-equiv x x-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x-equiv modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-modulelist-fix-modules (equal (vl-sort-descriptions-fn x (vl-modulelist-fix modules) udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-modulelist-equiv-congruence-on-modules (implies (vl-modulelist-equiv modules modules-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules-equiv udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-udplist-fix-udps (equal (vl-sort-descriptions-fn x modules (vl-udplist-fix udps) interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-udplist-equiv-congruence-on-udps (implies (vl-udplist-equiv udps udps-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps-equiv interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-interfacelist-fix-interfaces (equal (vl-sort-descriptions-fn x modules udps (vl-interfacelist-fix interfaces) programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-interfacelist-equiv-congruence-on-interfaces (implies (vl-interfacelist-equiv interfaces interfaces-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces-equiv programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-programlist-fix-programs (equal (vl-sort-descriptions-fn x modules udps interfaces (vl-programlist-fix programs) packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-programlist-equiv-congruence-on-programs (implies (vl-programlist-equiv programs programs-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs-equiv packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-packagelist-fix-packages (equal (vl-sort-descriptions-fn x modules udps interfaces programs (vl-packagelist-fix packages) configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-packagelist-equiv-congruence-on-packages (implies (vl-packagelist-equiv packages packages-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages-equiv configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-configlist-fix-configs (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages (vl-configlist-fix configs) taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-configlist-equiv-congruence-on-configs (implies (vl-configlist-equiv configs configs-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs-equiv taskdecls fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-taskdecllist-fix-taskdecls (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs (vl-taskdecllist-fix taskdecls) fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-taskdecllist-equiv-congruence-on-taskdecls (implies (vl-taskdecllist-equiv taskdecls taskdecls-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls-equiv fundecls paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-fundecllist-fix-fundecls (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls (vl-fundecllist-fix fundecls) paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-fundecllist-equiv-congruence-on-fundecls (implies (vl-fundecllist-equiv fundecls fundecls-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls-equiv paramdecls imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-paramdecllist-fix-paramdecls (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls (vl-paramdecllist-fix paramdecls) imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-paramdecllist-equiv-congruence-on-paramdecls (implies (vl-paramdecllist-equiv paramdecls paramdecls-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls-equiv imports fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-importlist-fix-imports (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls (vl-importlist-fix imports) fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-importlist-equiv-congruence-on-imports (implies (vl-importlist-equiv imports imports-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports-equiv fwdtypedefs typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-fwdtypedeflist-fix-fwdtypedefs (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports (vl-fwdtypedeflist-fix fwdtypedefs) typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-fwdtypedeflist-equiv-congruence-on-fwdtypedefs (implies (vl-fwdtypedeflist-equiv fwdtypedefs fwdtypedefs-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs-equiv typedefs))) :rule-classes :congruence)
Theorem:
(defthm vl-sort-descriptions-fn-of-vl-typedeflist-fix-typedefs (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs (vl-typedeflist-fix typedefs)) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs)))
Theorem:
(defthm vl-sort-descriptions-fn-vl-typedeflist-equiv-congruence-on-typedefs (implies (vl-typedeflist-equiv typedefs typedefs-equiv) (equal (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs) (vl-sort-descriptions-fn x modules udps interfaces programs packages configs taskdecls fundecls paramdecls imports fwdtypedefs typedefs-equiv))) :rule-classes :congruence)