From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.stack.nl!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: spec/body/rep (Was: Compilation error (GNAT bug?)) Date: Tue, 27 May 2014 18:41:46 +0200 Organization: cbb software GmbH Message-ID: <1loe63h8q0q1g.r9u22ub67h47.dlg@40tude.net> References: <537bd591$0$6621$9b4e6d93@newsspool4.arcor-online.net> <5384b302$0$6663$9b4e6d93@newsspool3.arcor-online.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: AuYlnUSfTZrfhAkRjyySpQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:20071 Date: 2014-05-27T18:41:46+02:00 List-Id: On Tue, 27 May 2014 17:45:07 +0200, G.B. wrote: > On 27.05.14 10:55, Dmitry A. Kazakov wrote: >> I have issues with this approach in general. The problem is that there is >> no any check that the interfaces of the target-specific packages are same >> in the sense that all target-independent clients were compilable with any >> "implementation." > > Assuming that a universal expression of "compilability" in any > configuration is nice, but likely impossible, It is surely possible at the same level of scrutiny the language mandates certain programs legal <=> compilable. > would you still think > that what Randy has called a semantics-denying fiction could > be preserved for some aspects? For example, > > procedure Doubled (X : in out Natural) > with Post => (if > X'Old <= Natural'Last / 2 > then > X = X'Old * 2 > else > False), > Import, > External_Name => "d2"; > > If the External_Name aspect of Doubled were moved to > a representation unit tied to whatever Doubled lives in, That is what I suggested. I don't care about aspects, there is no such thing in real-life at all. There are specifications and implementations, nothing else. External_Name certainly belongs to the implementation as any definition of a body does. No difference. So if you moved it to the implementation and then switched implementations with the targets, that will be all OK to me. Some implementations could have a proper body of Doubled. > then developing the program that calls Doubled should work > up to a point, namely when Natural's representation finally > matters. It never matters if post-condition you wrote was meant proper post-condition = checked at compile time. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de