TYPE= should not be certain about (not (satisfies pred))
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
New
|
Undecided
|
Unassigned |
Bug Description
example 1: suppose P returns NIL, so that all objects satisfy (NOT P).
Then (NOT P) is a specifier for *Universal-Type* "in disguise" (as the comments refer to such constructs).
But:
(type= (specifier-type '(not (satisfies P))) (specifier-type 't)) => NIL and T
example 2: suppose P returns T so that no object satisfies (NOT P).
Then (NOT P) is *EMPTY-TYPE* in disguise. But:
(type= (specifier-type '(not (satisfies p))) (specifier-type 'nil)) => NIL and T
example 3: (an appropriate P is left to your imagination)
(type= (specifier-type '(not (satisfies p))) (specifier-type '(double-float 0d0 0d0))) = NIL and T
And this example is not commutative.
example 4: change 'double-float' to REAL. Same issue.
This one is related to https:/