Jim,
Thanks for the feedback and that looks like a good article. To be completely honest this isn't being done in Java, it was being done in SciLab, I just used Java as an example since its known by more people. I'm not targeting the smallest possible number, I'm targeting the smallest possible number that is less than one so I can multiply that .999999... by some value that has a known maximum (in this case 1 since its fuzzy logic) ensuring that the value never actually reaches one. In my code I used something like 999/1000 since 1000 is large enough for this case. When it comes to defining this formula mathematically I should be able to be more precise than computers can handle. As of now I'm sticking with the sigma notation as that seems to be the most readable and least likely to cause computational problems.
Is = 1 - (1/Ʃx)
If 0 <= G(z) <= 1 Then
0 <= Is * G(z) < 1
So ...
Where Y = {0,1}
0 <= Y + ( (1 - Y) * Is) * G(z) <= 1
And that is why I need an infinitesimal because I don't want G(z) to be able to imply that Y is known to be true.
[edit] This formula seems to still work if Y is also a fuzzy number 0 <= Y <= 1, but I haven't yet tested that case since in the final application, which will be in PHP+MySQL, the value of Y is a boolean value. It would be interesting to see what the behavior is for a fuzzy Y, as far as I can tell though even a fuzzy Y with this formula cannot imply that Y is fully known unless Y actually equals 1.