Check if a binary operator is strict.
(binary-op-strictp op) → yes/no
These are all the operators that are not non-strict, i.e. that are strict.
Function:
(defun binary-op-strictp (op) (declare (xargs :guard (binary-opp op))) (let ((__function__ 'binary-op-strictp)) (declare (ignorable __function__)) (not (binary-op-nonstrictp op))))
Theorem:
(defthm booleanp-of-binary-op-strictp (b* ((yes/no (binary-op-strictp op))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm binary-op-strictp-of-binary-op-fix-op (equal (binary-op-strictp (binary-op-fix op)) (binary-op-strictp op)))
Theorem:
(defthm binary-op-strictp-binary-op-equiv-congruence-on-op (implies (binary-op-equiv op op-equiv) (equal (binary-op-strictp op) (binary-op-strictp op-equiv))) :rule-classes :congruence)