Total order on expression priorities: greater than or equal to.
(expr-priority->= prio1 prio2) → yes/no
Function:
(defun expr-priority->= (prio1 prio2) (declare (xargs :guard (and (expr-priorityp prio1) (expr-priorityp prio2)))) (expr-priority-<= prio2 prio1))
Theorem:
(defthm booleanp-of-expr-priority->= (b* ((yes/no (expr-priority->= prio1 prio2))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm expr-priority->=-of-expr-priority-fix-prio1 (equal (expr-priority->= (expr-priority-fix prio1) prio2) (expr-priority->= prio1 prio2)))
Theorem:
(defthm expr-priority->=-expr-priority-equiv-congruence-on-prio1 (implies (expr-priority-equiv prio1 prio1-equiv) (equal (expr-priority->= prio1 prio2) (expr-priority->= prio1-equiv prio2))) :rule-classes :congruence)
Theorem:
(defthm expr-priority->=-of-expr-priority-fix-prio2 (equal (expr-priority->= prio1 (expr-priority-fix prio2)) (expr-priority->= prio1 prio2)))
Theorem:
(defthm expr-priority->=-expr-priority-equiv-congruence-on-prio2 (implies (expr-priority-equiv prio2 prio2-equiv) (equal (expr-priority->= prio1 prio2) (expr-priority->= prio1 prio2-equiv))) :rule-classes :congruence)