For me, it /does/ make a difference (using Python vs. Sage literals):
$ ./sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 7.3, Release Date: 2016-08-04 │
│ Type "notebook()" for the browser-based notebook interface. │
│ Type "help()" for help. │
└────────────────────────────────────────────────────────────────────┘
sage: from sage.combinat.posets.poset_examples import Posets
sage: from sage.misc.functional import log
sage: P = Posets.BooleanLattice(3); n = P.cardinality(); s =
P._hasse_diagram.size()
sage: if 2*s > n*log(n, 2): print "True"
sage: from sage.combinat.posets.poset_examples import Posets
sage: from sage.misc.functional import log
sage: P = Posets.BooleanLattice(3r); n = P.cardinality(); s =
P._hasse_diagram.size()
sage: if 2r*s > n*log(n, 2r): print "True"
True
sage:
And it's caused by this:
sage: type(n*log(n, 2))
<type 'sage.rings.integer.Integer'>
sage: type(n*log(n, 2r))
<type 'sage.symbolic.expression.Expression'>
(FWIW, while .cardinality() returns Integer, ._hasse_diagram.size()
returns int, but that doesn't matter here.)
-leif