Remember, False = we didn't/couldn't prove it was True, so the first one is annoying but technically ok.
As to the original post, we must be preprocessing things not quite right. Maxima:
(%i1) assume(x-2<=0);
(%o1)                              [x <= 2]
(%i2) assume(x-1<=0);
(%o2)                              [x <= 1]
(%i3) assumptions;
(%o3)                             assumptions
(%i4) facts();
(%o4)                          [2 >= x, 1 >= x]
And indeed
sage: c = (x-2<=0)
sage: maxima.assume(c._maxima_init_assume_())
[x<=2]
sage: c = (x-2<=0)
sage: maxima.assume(c._maxima_init_assume_())
[redundant]
But we don't use "facts()" per se, we instead append the relation x-2<=0 directly to the assumption list.
sage: sage.symbolic.assumptions._assumptions
sage: if a in sage.symbolic.assumptions._assumptions:
    print 'yes'
....:     
yes
Aack!  Something horrible is happening here.  Okay, John, now I understand your somewhat cryptic post; since 
assumptions thinks this is already in the list.  And this is already true in a Sage from two years ago (4.4.4).  Why on earth is a == c True?   Apparently Ginac thinks so?
cdef int _cmp_c_impl(left, Element right) except -2:
    return left._gobj.compare((<Expression>right)._gobj)
I must be missing something here.  Burcin, any ideas - maybe this is already on some ticket that should have been merged but got hung up on a technicality, there was some stuff about symbolic expression comparisons a while back.
Sorry I had to go through all this - hopefully it clarifies things a little for the original poster.