Leo tuple construction operation.
(op-tuple-make vals) → result
A tuple in Leo is constructed from two or more values. However, here we also allow tuples of zero or one value. Tuples of zero values are constructed from the unit expression. There is no syntax in Leo to construct tuples of 1 value. The values may have any types. This operation never fails.
Function:
(defun op-tuple-make (vals) (declare (xargs :guard (value-listp vals))) (let ((__function__ 'op-tuple-make)) (declare (ignorable __function__)) (value-tuple vals)))
Theorem:
(defthm valuep-of-op-tuple-make (b* ((result (op-tuple-make vals))) (valuep result)) :rule-classes :rewrite)
Theorem:
(defthm op-tuple-make-of-value-list-fix-vals (equal (op-tuple-make (value-list-fix vals)) (op-tuple-make vals)))
Theorem:
(defthm op-tuple-make-value-list-equiv-congruence-on-vals (implies (value-list-equiv vals vals-equiv) (equal (op-tuple-make vals) (op-tuple-make vals-equiv))) :rule-classes :congruence)