From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 0C2E37FE36 for ; Thu, 30 Jun 2016 18:28:56 +0200 (CEST) IronPort-PHdr: 9a23:+Tc85hCJwYH0zW9TkN7sUyQJP3N1i/DPJgcQr6AfoPdwSP79oMbcNUDSrc9gkEXOFd2CrakV06yP7OuxAyQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6kO74TNaIBjjLw09fr2zQd+KyZ3onLHos7ToICxwzAKnZr1zKBjk5S7wjeIxxbVYF6Aq1xHSqWFJcekFjUlhJFaUggqurpzopM0roGxsvKdr/MdFVeD+fr8kZb1eFjUvdW4vroW/vhDGSU6L52AAemQQiBtBRQbfukLURJD052HBsedyxDOdJYm+aLE/WT2v6+0jHBrpgycOOjp/62bahdBqi7pzoRS9qhg5yInRNtLGfMFid7/QKItJDVFKWdxcAnRM Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=michael.soegtrop@intel.com; spf=Pass smtp.mailfrom=michael.soegtrop@intel.com; spf=None smtp.helo=postmaster@mga01.intel.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of michael.soegtrop@intel.com) identity=pra; client-ip=192.55.52.88; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michael.soegtrop@intel.com"; x-sender="michael.soegtrop@intel.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of michael.soegtrop@intel.com designates 192.55.52.88 as permitted sender) identity=mailfrom; client-ip=192.55.52.88; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michael.soegtrop@intel.com"; x-sender="michael.soegtrop@intel.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mga01.intel.com) identity=helo; client-ip=192.55.52.88; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michael.soegtrop@intel.com"; x-sender="postmaster@mga01.intel.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BNAACFR3VXh1g0N8BbgnCBJH0GpkCOOBuENIF8GoV4AwICgTs4FAEBAQEBAQEBEQEBAQgNCQkhJAuCMoIhBSAIARtCASUBAQECGQ0FEAEODCYBBBIBBgIGiCEBo1ugAQEBCAEBAQEVDoIlhASJDhWDFYIvBZkFBgGBMINpAZhQkAUegj4RCxeBNW6IQgF+AQEB X-IPAS-Result: A0BNAACFR3VXh1g0N8BbgnCBJH0GpkCOOBuENIF8GoV4AwICgTs4FAEBAQEBAQEBEQEBAQgNCQkhJAuCMoIhBSAIARtCASUBAQECGQ0FEAEODCYBBBIBBgIGiCEBo1ugAQEBCAEBAQEVDoIlhASJDhWDFYIvBZkFBgGBMINpAZhQkAUegj4RCxeBNW6IQgF+AQEB X-IronPort-AV: E=Sophos;i="5.26,552,1459807200"; d="png'150?scan'150,208,217,150";a="224933271" Received: from mga01.intel.com ([192.55.52.88]) by mail2-smtp-roc.national.inria.fr with ESMTP; 30 Jun 2016 18:28:53 +0200 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 30 Jun 2016 09:28:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,552,1459839600"; d="png'150?scan'150,208,217,150";a="1012889154" Received: from irsmsx103.ger.corp.intel.com ([163.33.3.157]) by fmsmga002.fm.intel.com with ESMTP; 30 Jun 2016 09:28:51 -0700 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.10]) by IRSMSX103.ger.corp.intel.com ([169.254.3.240]) with mapi id 14.03.0248.002; Thu, 30 Jun 2016 17:28:50 +0100 From: "Soegtrop, Michael" To: "caml-list@inria.fr" Thread-Topic: How to define a module type for NAxioms.NAxiomsSig + Orders.UsualOrderedTypeFull + ... effectively? Thread-Index: AdHS7HrPjL14Sd+6SuCtvGTsrAmAmw== Date: Thu, 30 Jun 2016 16:28:50 +0000 Message-ID: <0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CA@IRSMSX102.ger.corp.intel.com> Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.180] Content-Type: multipart/related; boundary="_004_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_"; type="multipart/alternative" MIME-Version: 1.0 Subject: [Caml-list] How to define a module type for NAxioms.NAxiomsSig + Orders.UsualOrderedTypeFull + ... effectively? --_004_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_ Content-Type: multipart/alternative; boundary="_000_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_" --_000_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Dear Coq Users, the file Coq.NArith.BinNat contains this definition: Module N <: NAxiomsSig <: UsualOrderedTypeFull <: UsualDecidableTypeFull <: TotalOrder. I wonder if there is an effective way to define a Module Type with the same= interface as the 4 module types given above combined? Just chaining them w= ith <+ like this: Module Type NatInt :=3D NAxioms.NAxiomsSig <+ Orders.UsualOrderedTypeFull <+ Equalities.UsualDecidableTypeFull <+ Orders.TotalOrder. fails, because all of them contain a type t. The only way I see is to inclu= de e.g. UsualOrderedTypeFull is to include all its components as shown in t= his image: [cid:image001.png@01D1D2F8.57A8D5E0] the colored boxes are module type functors, the white ones module types inc= luding a type t. Blue are functions, red are specifications, the darker one= s contain definitions/lemmas, the light ones contain parameters/axioms. Is there a smart way of doing this without essentially copying the definiti= on of UsualOrderedTypeFull, UsualDecidableTypeFull and TotalOrder? Should I create Module Type functors matching all the white boxes above? Best regards, Michael Intel Deutschland GmbH Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Christian Lamprechter Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 --_000_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_ Content-Type: text/html; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Dear Coq Users,

 

the file Coq.NArith.BinNat contains this definition:=

 

Module N

<: NAxiomsSig

<: UsualOrderedTypeFull

<: UsualDecidableTypeFull

<: TotalOrder.

 

I wonder if there is an effective way to define a Mo= dule Type with the same interface as the 4 module types given above combine= d? Just chaining them with <+ like this:

 

Module Type NatInt :=3D

     NAxioms.NAxiomsSig=

  <+ Orders.UsualOrderedTypeFull

  <+ Equalities.UsualDecidableTypeFu= ll

  <+ Orders.TotalOrder.

 

fails, because all of them contain a type t. The onl= y way I see is to include e.g. UsualOrderedTypeFull is to include all its c= omponents as shown in this image:

 

 

the colored boxes are module type functors, the whit= e ones module types including a type t. Blue are functions, red are specifi= cations, the darker ones contain definitions/lemmas, the light ones contain= parameters/axioms.

 

Is there a smart way of doing this without essential= ly copying the definition of UsualOrderedTypeFull, UsualDecidableTypeFull a= nd TotalOrder?

 

Should I create Module Type functors matching all th= e white boxes above?

 

Best regards,

 

Michael

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

--_000_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_-- --_004_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_ Content-Type: image/png; name="image001.png" Content-Description: image001.png Content-Disposition: inline; filename="image001.png"; size=11242; creation-date="Thu, 30 Jun 2016 16:28:50 GMT"; modification-date="Thu, 30 Jun 2016 16:28:50 GMT" Content-ID: Content-Transfer-Encoding: base64 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 eTaZ/eeq7crIpatVTc+VGBEaZodPzltOPVaYL5aPno/tkT9YmPdnOzx5qw3f TRDgBNLpv7kDpz6ikuf+ieCSj70w7gtsNpfC0z8b3zvzys7r/5vv7v6gpHOr 6JB2jMv93nXv+a7s/R679+S+G8FjISHZ8R22oUzctxX+ZueVre/tZ5I/XnlO rVjb9hUzRG39W2Tva/e+32mIxXtdW/rZ2PYw+89HNv7zgyx1jm5zlUD9xbde pE1nLFU+sPFcizCTXhWT+8krz24y17MP3eFbz+T73w3v73qT7T93e7WMvr7C 27Jw31xxj9+YNpzzrWcyg1010TQkV51dddp25UiIt63qKb/Jt5pTzL1zol7m w/eH3pixNrfHCvPF8mlL3noBvfbizCmjR+i5VN4rNrHjAgEPCKS5fii9KdZk TFivg9P7Y76loJevhxds/VB6thguDZp77miq7eqH/vlq709Xmi51bzK/Cg/e 3Tjx1anj20rW/N0g//2yceiTv2Gq9b/HKGY2nH1k3a7c/fdjz4idggku1A9N RCi9n+dq/VB6f4xtShf72uJc3tV/pPe+2KZ0sa8t0ZWUcDxlqB+aCHV6P/fu +5NeO5200/cnrfG3MXl7KDr6zs5I0Wt6CbQcvkS1ycWPS+edXoOgHQRAAAQK nUBa/Tfcdza/Pqt3fkYBLv/52dU/kSUUKB8Jqow4Req9d1eFgX+62ywlNQEH 22PUOo3xQVDqfHeW9Ku+sokEfYMACIBA4RBIq/9mR6tGnqRadvQjL5PnhTMP sSP53pmLWvI86ZH+6e5rN7/2loyJf9L2VBwFD4L/aLzJJad2l4xOmE7dtoVb tfSscDm0++95RP4/Zk7fWkh6AGhQtARK26YSJ889pcPe83aXPKdukxL21Ewo A4FIAmz9G1e+ECB3GGmq8/o3hbynb5Uf1pbGWfytLZbbrpSzVv/v8D+8QOuA 9uvfDmq19e+/fouaa3qYwQ6r8lj/zu4Xj9bPsmsAeqc3zfIXQq7un3BLtADW v9O8f80tScglJkA79ZLw36SP+1oKfM0NZY7+m1LiDTdXTQu4A3by3wnVCi3k sAcMoQf+O/HUZkmC/v/9w6O/ZKlzdGt8ff1X4L+z+D0oAP+d1vx5FqemiLoO /ZdVH3X1v/7TGvlT28ZY+vpQ+c2fWsvesWAevNugMu2nd1UmJOdG7ZNfTawn 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 76o+eSYeN5JGhwYgEEVgZXjnV55/2yrL8ujt576+8/KjZDmtXn5+/Vdobzb7 SaF5st3lhPzqwJ6ImrNU+SbJI+uZBnnSPh1373C0vjnWaOGoWnk5gQRGuCCQ s/7bhe0eiWiFwNN1ZAsdBuNaNZNlF6t8WtMXFr/IGi4ejRhqQCBXCdw99vVt v3z+7l/oxTb6+dftv3xVeyDIVaNzxa62K6JWLPv5sL0kvllbOqel8JWWq/sj nh5yZTywIxGBvPTfWtQsotrImFaP1DXRZFLmKgg+OEkaZOicei9mLp1p8FFF U177jLRG5tjZp04JAAdJYZyyVm+tpxaSGXqibww+B4FUCGhR9Ym7UgEL0GWo /dzwKt2cOfHStX1vf3DAdD3rX/rgVy+VcmkW3JvCx+5IBXSTGs6ckErovhIT CkVDXUbdp4qrVqBvmkSqnht++xjvSPRi228qAFJvQ5VheUhNPypQZgG6vKmV mrXpY7ZDinVNkR7bMnS1Zz6/0nKvZ3hKNtej8y7zJi9QG2NG6oNCSy8I5KH/ Xu5vpQKi8jXl+GecTh5sNa6Z0axZ3DshNlb9m+qW8nY7bjN/G/9y3wsVR+Vx NQ/5yfTGHX6zgDk9hIyPzdU0by+z7cxZci7go0JpImKn8qfSVU8eZFVWzUh+ sSlNCwMJWUIABBiBmRPHjJ+LkDpY/c4veFJ99fKr3d+8xm/+4RH32avhJaP1 h9tikZET/e7p/35dBuXBj1ulcyXJ+6e3TfyQafjt6aprreu/G/470Ytx+phK 3ZPMz3w8pmf3twnHbGcSu3//dLfBrbrwjGHcORXZbxby+bMdx40hHlLPU2H4 SyNsfWJ1xN9TflOG2rIord0XjTzxgQcyzq4frzt7z+nbWFvfZoyOz7KPp7pY 9VsRms93hnZLlz/bUXfWkKqGDWEGrmwTyEP/zZAN3Z50Q65x0PTvZduba+aW wnaNtELg3PkxP+oPHhV+lNUST9STq17slWhuOaLbWGlnSf+EHGTZ0aDfWAxR QmK5v3uopu84r5FuUEn1oH9ubJwlKnCBQHoJ/K77u2aU/JXvd983O6s7/96h 9fyX9c/86NvzYXNR/Nr/MWNx9tmj8O9srVud+tV867WzdeLD9S/9ZJ/x8cNV KbrvbeZoDaP02e3VxgvXz3P3v379Nw2rF0PF9FpbJ5NIWChkTxj971af9mv9 zv/yQ7NfzzneE3Xc+U9Vz4Kpv/bijXaRguBl41dMxyndrW4GpcFNDTxuXr37 3nzLCZlIr714pSWxzasj569XvnGgVkiWth9pm5/4gIY8O33V0FSZJiVWCIl0 EshD/01BbLhvkWWgE283s5LIzmG0tv7Nl5nDS4kC7ugJcdOLwyQ2Hu+r4Q8j 3H3vkB7XTtilpHpIobhcbYBrGkrndwi6QUAR+HbwtyJKFqG2um+lyrcFpZMu OfSru91LL7GsuL7rzQZmtF9f76u6rx4Bkocv29qYZKOLYneVt9/7TvKduW9h LUjzUFs1tFLlKoAuaf9w5tQD7q2fHSHvKi9t/ftMA937dMUx4I5n1sLJOvUc cOCqkqwqFY8RuHKHQE77bx5Lyms5tGhRY3louiY2q3yxLdHIJHKNS+q+CreS QmFqvZjGsMQAOfCE7pvCaFeSNRU+oVrfliey9S7HDzEQ8JrA3WPfV6nyu93f VurJhTNPf72i+7tsBXpb0z4jMiIXkut9VhP2+6PwfLVPhPOpXLytk0nRClvN DL+W50+l01TbzHZVqVT5zKktFrr2D1mKe3hTT73j7vGnSy35+P3z8Hq7jLpb zMy82Apn5uet0D/VsaCd1wRy1n/zhHeg10yTT/YGrKS2CUF52rLyzWZKnS1e 20SbrL1LdlxZN98XxzbGWdq860V/MOFuuYnSA3Gjb2aMg+SQubjNs+Z8AZ1L yiG4HDXEQCAjBO4MmfG31R3F0+KXuldodfwla4sZhcgsNC9peJ7Wtk/NCKFH b//snaofPVuShLlKp21bO5O4ct5vf85sgJ8ajl3AfrpcorOjUbJhkzF6XgTo tPts/6g9Mv7Rls4DLGQv2bazymyiS/MFcqnKmO2w3QeXxIRA1BsCOeu/adVW pckpD8w2lMmXqKwXpNkWLXGTLVOLdWzfUlCtWFt313VX9DmtY2vr3yIh3zjI d4JFa1tbL2q6xIMJaTe3lLEb9GlC9y3ccqykfyK4JIwlHGop/KNw85iVQE+8 0uDN1wlaQMCOwLYL116gzWUsEd1f1r1PiNCrYnLfONsjJtetX/qAbzGTKevv j//o52z/eemB967ve3evkKeb/2quprvEve/tn4S5TpYGEG1tTYpWR/3+9vlx a0U/C++j1565uXd0N18UP196qk1YONtlrnOzvWYXZdxsaOvfIq9ee3HmlCGW 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 9q9h/3n2v0awAARAoAgJ0P5/+O8sznsB+G/kz7P4/UHXIAACIAACIJAiAfjv FMGhGQiAAAiAAAhkkQD8dxbho2sQAAEQAAEQSJEA/HeK4NBsjQTY+bDxqrKs UX2am5P18Qqxprl3qAcBEAABw4D/xrcgDgFWmDTCyabFb1nlT8Vh6ym6devE eEtDzABiBhvZOZwy/j2AAAjkCwH473yZqQK3s6YvLEuM8hItSftRXvfMLFY6 YchqaImgkctn1WFkz0lVR0+kGp+DAAiAQHoJwH+nl28Ba9cCV+FtI2NdPVLX RBPH1o2DX074tZqqeoCstbbRqeqiNg6yEmtMwkf1VHnFNm4it6mfEvciyF/u 76aKqGFR241dVC/N6jpKWIxPXFv7Q/rE2loY07yAvwoYGgiAQDYIwH9ng3oB 9Lnc32oFrrIgqcOwJg+2Gtd4iEuVRV3VA2/c4TcLnU8etALkcN+iWZGc3TZk yM6jbVkMVY/bWQVUVsuUR+WmiXOBgMHj7cHG5fGxuZrm7WURZrOuVVF0TZi8 d6vqMbgUsIqvO1hIWvXmBTDlGAIIgEBuEYD/zq35yCtrhm5PurFXRMM8vt3e XDO3lMSJUyJCPi4D5LKjQf/c2DgLpG8PGf6g1Cr083rlFLezKuTxsu9+WUtd WL65PNJ985uWiZYwc/Zaj6r4upOFXFFkX25YQQYEQAAE3BKA/3ZLCnIRBMhd snBYZJNZ9jzOZeWXWTo72Uu4ZHE1WWGvSpZr+ij1zqN8I+BLaJRopkJt3So7 1eElZ8sdLEx2oJAHARAAgWQIwH8nQ6soZXUXtxxatBiwiJeuic0BX7xV7cj8 co0bhjy83iGjbnNTmtxkphLhjnF82dFrfW7C/LLyzVqoLe1iXdsF5b4KZ8sd LHQzUsiAAAiAQKoE4L9TJVcU7cSqcq+ZJp/sDVhJZBOA8mzMH8qUOt8NHkuI tU/IjbeVSXPWv92KOV8gN/eYTx7c2j/Zv9WKuFk3WgxtG2MzMxqP03q8uaLO buhdR9nJByd71EfnZGHCYUIABEAABNZGAP57bfwKvbWWJmfp60W1W9t62Zrt LxNbuBsH+btfdPmWgmqF2Lq7rruiz+9AzMpB+8aaw2q7Geu/ecxKoJvJ+sZB niXnSfXuimtHG49es8SYmTJMl9vaHJL8fM2c0gdmej6i6yhDtR5pdGxfnLic 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 --_004_0F7D3B1B3C4B894D824F5B822E3E5A172CF1E2CAIRSMSX102gercor_--