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!.POSTED!not-for-mail From: "G.B." Newsgroups: comp.lang.ada Subject: Re: Ada 2012 Constraints (WRT an Ada IR) Date: Mon, 12 Dec 2016 16:31:12 +0100 Organization: A noiseless patient Spider Message-ID: References: <3ef819e8-55f7-4ef7-9f37-77e6abc33f98@googlegroups.com> <47366b42-c0a3-41bf-a44a-5241c109d60f@googlegroups.com> Reply-To: nonlegitur@notmyhomepage.de Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Mon, 12 Dec 2016 15:29:48 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="2bd15e9ad73c93509b7db25068f7dfe4"; logging-data="30649"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1972YJl00B6T3tYk+mFMQYdjh5j84gn8gI=" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 In-Reply-To: Cancel-Lock: sha1:MWq01LPJng2enFxP0xYT9mvldos= Xref: news.eternal-september.org comp.lang.ada:32751 Date: 2016-12-12T16:31:12+01:00 List-Id: On 12/12/2016 09:27, Dmitry A. Kazakov wrote: >> I.e., the programmer writing Y (X (A, B)) has ensured that >> the assumption expressed as X'Pre is actually true before >> calling X. > > So what? Programmers program programs, and how is that related to contracts etc? Informing is contracts' primary purpose, informing about contractual obligations in particular. For X, True means void IMHO. As in "Warranty void if called with unsuitable parameters". >>>> How much should a function declaration tell a programmer about >>>> the relation between parameters A and B in the following? >>> >>> Remainder is not a relation. Relation is a Boolean-valued function. >> >> Given parameters A, B : T and >> >> Pre => A > B >> >> the ">" is the relation, ((A, B) ∈ ">") ≣ (A > B). > > Right, ">" is a relation, Remainder is not. And the point was? The point was: How much should the declaration of function Remainder tell a programmer about the relation between parameters A and B? My answer: The declaration should include that they must be related by A > B.