From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Seeking for papers about tagged types vs access to subprograms
Date: Sun, 12 May 2013 08:02:16 +0200
Date: 2013-05-12T08:02:16+02:00 [thread overview]
Message-ID: <otnq8fecgbel.1itrfodtky6d0.dlg@40tude.net> (raw)
In-Reply-To: wcc61ypi100.fsf@shell01.TheWorld.com
On Sat, 11 May 2013 18:51:27 -0400, Robert A Duff wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>
>> The condition is moved to the post-condition. E.g.
>>
>> # require X >= 0.0
>> function sqrt (X : Float) return Float;
>> # ensure sqrt (X)**2 = X
>>
>> is replaced with
>>
>> # require true
>> function sqrt (X : Float) return Float;
>> # ensure sqrt (X)**2 = X or else Constraint_Error raised
>
> It seems to me that this replacement loses information (the info that
> X is "supposed to be nonnegative").
# ensure
(X >= 0.0 and then sqrt (X)**2 = X)
or else
(X < 0.0 and then Constraint_Error raised)
> For example, a body of sqrt that says "return X / 0.0;" obeys the second
> contract but not the first above. But that's obviously wrong to anyone
> who thinks that "sqrt" means "approximate square root of X".
As "approximate square root" any implementation is OK. A more realistic
contract that defines accuracy of the result could be like:
sqrt (X)**2 in Float'Max (0.0, X'Pred)..Float'Min (Float'Last, X'Succ)
[It was just an illustration of the idea how preconditions of operations
are relaxed.]
> (Never mind the accuracy issues -- sqrt(X) might not be representable as
> a Float. ;-) )
No, because sqrt(X) < X, if X > 0.
But considering mathematical sqrt, yes, it is not even complex-valued. sqrt
is a multi-valued complex function. If we are lucky one value of sqrt(X)
might have zero imaginary part.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2013-05-12 6:02 UTC|newest]
Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-28 5:14 Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-04-30 0:31 ` Yannick Duchêne (Hibou57)
2013-04-30 0:41 ` Shark8
2013-04-30 1:00 ` Yannick Duchêne (Hibou57)
2013-05-02 1:18 ` Randy Brukardt
2013-05-02 2:29 ` Jeffrey Carter
2013-05-06 10:00 ` Yannick Duchêne (Hibou57)
2013-05-06 10:18 ` Dmitry A. Kazakov
2013-05-06 10:55 ` Yannick Duchêne (Hibou57)
2013-05-06 12:11 ` Dmitry A. Kazakov
2013-05-06 13:16 ` Yannick Duchêne (Hibou57)
2013-05-06 14:16 ` Dmitry A. Kazakov
2013-05-06 15:15 ` Yannick Duchêne (Hibou57)
2013-05-06 18:55 ` Dmitry A. Kazakov
2013-05-06 20:05 ` Adam Beneschan
2013-05-07 7:30 ` Dmitry A. Kazakov
2013-05-10 4:33 ` Yannick Duchêne (Hibou57)
2013-05-07 20:35 ` Jacob Sparre Andersen news
2013-05-07 20:44 ` Yannick Duchêne (Hibou57)
2013-05-07 22:32 ` Dennis Lee Bieber
2013-05-07 23:10 ` Adam Beneschan
2013-05-08 0:18 ` Shark8
2013-05-10 4:34 ` Yannick Duchêne (Hibou57)
2013-05-10 8:27 ` Simon Wright
2013-05-10 18:08 ` Niklas Holsti
2013-05-08 7:38 ` Dmitry A. Kazakov
2013-05-08 7:59 ` Yannick Duchêne (Hibou57)
2013-05-08 8:23 ` Dmitry A. Kazakov
2013-05-08 9:39 ` Yannick Duchêne (Hibou57)
2013-05-08 9:51 ` Yannick Duchêne (Hibou57)
2013-05-08 10:23 ` Dmitry A. Kazakov
2013-05-08 11:08 ` Yannick Duchêne (Hibou57)
2013-05-08 15:29 ` Dmitry A. Kazakov
2013-05-08 16:13 ` Yannick Duchêne (Hibou57)
2013-05-08 18:17 ` Dmitry A. Kazakov
2013-05-10 4:35 ` Yannick Duchêne (Hibou57)
2013-05-08 20:27 ` Randy Brukardt
2013-05-09 7:33 ` Dmitry A. Kazakov
2013-05-09 22:19 ` Randy Brukardt
2013-05-10 3:29 ` Yannick Duchêne (Hibou57)
2013-05-10 4:16 ` Yannick Duchêne (Hibou57)
2013-05-10 8:42 ` Dmitry A. Kazakov
2013-05-10 11:18 ` Yannick Duchêne (Hibou57)
2013-05-10 12:15 ` Dmitry A. Kazakov
2013-05-10 12:40 ` Yannick Duchêne (Hibou57)
2013-05-10 12:59 ` Yannick Duchêne (Hibou57)
2013-05-10 13:54 ` Dmitry A. Kazakov
2013-05-10 14:01 ` Yannick Duchêne (Hibou57)
2013-05-10 14:27 ` Dmitry A. Kazakov
2013-05-10 15:20 ` Yannick Duchêne (Hibou57)
2013-05-11 7:22 ` Georg Bauhaus
2013-05-10 18:04 ` Niklas Holsti
2013-05-10 19:33 ` Yannick Duchêne (Hibou57)
2013-05-11 0:18 ` Randy Brukardt
2013-05-11 7:14 ` Yannick Duchêne (Hibou57)
2013-05-11 21:06 ` Niklas Holsti
2013-05-11 23:19 ` Shark8
2013-05-12 6:09 ` Niklas Holsti
2013-05-14 2:02 ` Randy Brukardt
2013-05-12 6:44 ` Yannick Duchêne (Hibou57)
2013-05-12 8:10 ` Niklas Holsti
2013-05-12 8:49 ` Yannick Duchêne (Hibou57)
2013-05-12 18:56 ` Jeffrey Carter
2013-05-12 22:15 ` Robert A Duff
2013-05-13 0:26 ` Jeffrey Carter
2013-05-13 7:03 ` Yannick Duchêne (Hibou57)
2013-05-13 13:15 ` Robert A Duff
2013-05-13 17:30 ` Jeffrey Carter
2013-05-13 18:01 ` J-P. Rosen
2013-05-13 18:39 ` Bill Findlay
2013-05-13 18:57 ` Jeffrey Carter
2013-05-13 19:13 ` Robert A Duff
2013-05-13 20:38 ` J-P. Rosen
2013-05-14 7:26 ` Dmitry A. Kazakov
2013-05-14 20:00 ` Robert A Duff
2013-05-15 10:10 ` Dmitry A. Kazakov
2013-05-14 19:56 ` Robert A Duff
2013-05-15 4:24 ` Yannick Duchêne (Hibou57)
2013-05-15 9:28 ` Dmitry A. Kazakov
2013-05-15 11:31 ` Peter C. Chapin
2013-05-15 12:32 ` Yannick Duchêne (Hibou57)
2013-05-15 19:59 ` Peter C. Chapin
2013-05-15 20:56 ` Dmitry A. Kazakov
2013-05-15 12:46 ` Dmitry A. Kazakov
2013-05-15 18:15 ` Jeffrey Carter
2013-05-15 19:18 ` Eryndlia Mavourneen
2013-05-15 19:57 ` Dmitry A. Kazakov
2013-05-15 20:37 ` Yannick Duchêne (Hibou57)
2013-05-15 20:48 ` Dmitry A. Kazakov
2013-05-16 12:45 ` Eryndlia Mavourneen
2013-05-16 17:16 ` Jeffrey Carter
2013-05-16 9:41 ` G.B.
2013-05-16 12:35 ` J-P. Rosen
2013-05-15 14:21 ` J-P. Rosen
2013-05-14 2:14 ` Randy Brukardt
2013-05-14 19:35 ` Robert A Duff
2013-05-15 4:11 ` Yannick Duchêne (Hibou57)
2013-05-16 23:36 ` Randy Brukardt
2013-05-13 5:21 ` Niklas Holsti
2013-05-13 7:22 ` Dmitry A. Kazakov
2013-05-13 8:23 ` Yannick Duchêne (Hibou57)
2013-05-13 19:20 ` Niklas Holsti
2013-05-14 8:14 ` Dmitry A. Kazakov
2013-05-10 3:47 ` Yannick Duchêne (Hibou57)
2013-05-11 0:22 ` Randy Brukardt
2013-05-11 7:22 ` Yannick Duchêne (Hibou57)
2013-05-10 3:59 ` Yannick Duchêne (Hibou57)
2013-05-10 4:03 ` Yannick Duchêne (Hibou57)
2013-05-10 7:48 ` Dmitry A. Kazakov
2013-05-10 8:12 ` Yannick Duchêne (Hibou57)
2013-05-10 15:11 ` Yannick Duchêne (Hibou57)
2013-05-11 0:42 ` Randy Brukardt
2013-05-11 6:37 ` Dmitry A. Kazakov
2013-05-11 7:06 ` Georg Bauhaus
2013-05-11 7:42 ` Dmitry A. Kazakov
2013-05-11 8:14 ` Yannick Duchêne (Hibou57)
2013-05-14 2:29 ` Randy Brukardt
2013-05-14 7:44 ` Dmitry A. Kazakov
2013-05-14 11:34 ` Yannick Duchêne (Hibou57)
2013-05-14 12:16 ` Dmitry A. Kazakov
2013-05-14 13:13 ` Yannick Duchêne (Hibou57)
2013-05-14 18:41 ` Randy Brukardt
2013-05-15 11:20 ` Peter C. Chapin
2013-05-15 13:00 ` Dmitry A. Kazakov
2013-05-15 21:12 ` Peter C. Chapin
2013-05-15 22:08 ` Dmitry A. Kazakov
2013-05-16 11:31 ` Peter C. Chapin
2013-05-16 11:56 ` Yannick Duchêne (Hibou57)
2013-05-16 12:20 ` Dmitry A. Kazakov
2013-05-16 13:10 ` Peter C. Chapin
2013-05-16 13:54 ` Dmitry A. Kazakov
2013-05-16 17:15 ` G.B.
2013-05-16 18:09 ` Peter C. Chapin
2013-05-16 19:16 ` Dmitry A. Kazakov
2013-05-16 21:59 ` Georg Bauhaus
2013-05-17 19:57 ` Dmitry A. Kazakov
2013-05-16 21:20 ` Niklas Holsti
2013-05-16 23:20 ` Peter C. Chapin
2013-05-17 5:25 ` Niklas Holsti
2013-05-17 7:53 ` Georg Bauhaus
2013-05-16 13:09 ` Eryndlia Mavourneen
2013-05-11 7:58 ` Yannick Duchêne (Hibou57)
2013-05-11 9:08 ` Dmitry A. Kazakov
2013-05-11 18:14 ` Niklas Holsti
2013-05-11 8:03 ` Yannick Duchêne (Hibou57)
2013-05-11 9:16 ` Dmitry A. Kazakov
2013-05-11 11:49 ` Georg Bauhaus
2013-05-11 12:25 ` Dmitry A. Kazakov
2013-05-11 22:51 ` Robert A Duff
2013-05-12 6:02 ` Dmitry A. Kazakov [this message]
2013-05-12 6:25 ` Yannick Duchêne (Hibou57)
2013-05-12 7:14 ` Dmitry A. Kazakov
2013-05-12 7:37 ` Simon Wright
2013-05-12 7:59 ` Dmitry A. Kazakov
2013-05-12 8:21 ` Yannick Duchêne (Hibou57)
2013-05-12 9:25 ` Dmitry A. Kazakov
2013-05-12 9:32 ` Yannick Duchêne (Hibou57)
2013-05-12 10:07 ` Dmitry A. Kazakov
2013-05-11 7:32 ` Yannick Duchêne (Hibou57)
2013-05-11 7:46 ` Yannick Duchêne (Hibou57)
2013-05-14 12:46 ` Weaker typing as a part of the way to stronger typing? (Was: Seeking for papers about tagged types vs access to subprograms) Jacob Sparre Andersen
2013-05-14 19:08 ` Randy Brukardt
2013-05-10 16:02 ` Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-05-08 20:12 ` Randy Brukardt
2013-05-09 7:50 ` Dmitry A. Kazakov
2013-05-09 21:43 ` Randy Brukardt
2013-05-10 4:39 ` Yannick Duchêne (Hibou57)
2013-05-10 7:49 ` Dmitry A. Kazakov
2013-05-11 0:09 ` Randy Brukardt
2013-05-11 6:40 ` Dmitry A. Kazakov
2013-05-14 3:01 ` Randy Brukardt
2013-05-14 8:32 ` Dmitry A. Kazakov
2013-05-14 19:02 ` Randy Brukardt
2013-05-15 4:43 ` Yannick Duchêne (Hibou57)
2013-05-16 23:27 ` Randy Brukardt
2013-05-15 9:14 ` G.B.
2013-05-15 12:08 ` Dmitry A. Kazakov
2013-05-15 14:43 ` G.B.
2013-05-15 15:02 ` Dmitry A. Kazakov
2013-05-14 19:21 ` Robert A Duff
2013-05-10 4:29 ` Yannick Duchêne (Hibou57)
2013-05-07 1:14 ` Randy Brukardt
2013-05-07 2:42 ` Yannick Duchêne (Hibou57)
2013-05-07 1:09 ` Randy Brukardt
2013-05-07 7:41 ` Dmitry A. Kazakov
2013-05-07 20:27 ` Jacob Sparre Andersen news
2013-05-07 20:40 ` Yannick Duchêne (Hibou57)
2013-05-08 7:57 ` Dmitry A. Kazakov
2013-05-08 20:37 ` Randy Brukardt
2013-05-09 8:04 ` Dmitry A. Kazakov
2013-05-09 21:33 ` Randy Brukardt
2013-05-10 7:15 ` Dmitry A. Kazakov
2013-05-11 1:00 ` Randy Brukardt
2013-05-11 7:08 ` Yannick Duchêne (Hibou57)
2013-05-11 7:12 ` Dmitry A. Kazakov
2013-05-14 2:52 ` Randy Brukardt
2013-05-11 5:31 ` Simon Wright
2013-05-11 7:22 ` Dmitry A. Kazakov
2013-05-02 1:09 ` Randy Brukardt
2013-05-02 6:56 ` Dmitry A. Kazakov
2013-05-02 21:49 ` Randy Brukardt
2013-05-03 6:49 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox