this post was submitted on 29 Aug 2024
774 points (99.0% liked)
196
16449 readers
2194 users here now
Be sure to follow the rule before you head out.
Rule: You must post before you leave.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Let us model the poop rule as a predicate keep that maps the set of real world objects to {true, false} and a function poopy that maps the set of real world objects to the set of real world objects with poop on them.
For all x, keep(poopy(x)) = keep(poopy(poopy(x))), thus we can say that poopy is idempotent under keep.
Further, poopy is injective because there exist distinct x and y such that keep(poopy(x)) ≠ keep(poopy(y)). The proof by example is that you would keep a poopy million dollar bill, but you would not keep a poopy poop.
Your model is lacking in one area - poopy() has an inverse poopwash() where for some set of poopy objects Y, poopwash maps Y to a subset of the set of real world objects, but there exists a set of poopy objects Z for which poopwash maps Z to a subset of poopy objects.
My initial instinct was to suggest that for all z in Z, keep(z) = false, however I believe your million dollar example runs counter to this. Nonetheless, I suspect there is a useful subset of Z, let's say S, for which we can say, for all s in S, keep(s) = false.