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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Type invariants and private extensions? Date: Tue, 12 Sep 2017 09:30:13 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <364ff8e0-c7dd-4980-b19f-5d438edd8353@googlegroups.com> <7df81b3c-1fde-4395-8b9b-1a945820a7f7@googlegroups.com> NNTP-Posting-Host: vZYCW951TbFitc4GdEwQJg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:48035 Date: 2017-09-12T09:30:13+02:00 List-Id: On 12/09/2017 00:00, Victor Porton wrote: > It seems that you don't understand me: I need different boolean functions > for different derived tagged types. Well, but that is not invariant, at least not formally. The invariant of the parent type must hold on the derived type, otherwise the instances of the latter would not be substitutable for the former. In effect this means that you can only strengthen the invariant by adding new conjunction elements, if you inherit any in-operation or use it in any class-wide in-operations, i.e. basically anywhere. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de