This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author skrah
Recipients Austin Bingham, christian.heimes, facundobatista, mark.dickinson, rhettinger, robert_smallshire, serhiy.storchaka, skrah, tim.peters
Date 2016-04-05.14:37:38
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <20160405143725.GA5902@bytereef.org>
In-reply-to <1459866019.75.0.0135797844922.issue26680@psf.upfronthosting.co.za>
Content
On Tue, Apr 05, 2016 at 02:20:19PM +0000, Robert Smallshire wrote:
> >> Were float to inherit from Rational, rather than Real ...
> 
> > This would break the Liskov substitution principle.
> 
> How so?  Rational extends Real with only numerator, denominator and __float__. Isn't the existence of float.as_integer_ratio demonstration that numerator and denominator could be implemented?

Substitution principle:

Let phi(x) be a property provable about objects x of type T. Then phi(y) should
be true for objects y of type S where S is a subtype of T.

Use:

  Let phi(n) = forall n: n elt nat => (1 / n) * n == 1

Counterexample:

   n == 9992
History
Date User Action Args
2016-04-05 14:37:39skrahsetrecipients: + skrah, tim.peters, rhettinger, facundobatista, mark.dickinson, christian.heimes, serhiy.storchaka, robert_smallshire, Austin Bingham
2016-04-05 14:37:39skrahlinkissue26680 messages
2016-04-05 14:37:38skrahcreate