From max.haslbeck at gmx.de Tue Nov 03 12:15:54 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:48854) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZvEA-0006Yu-Au (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:15:54 +0000 X-Cam-SpamDetails: score -0.8 from SpamAssassin-3.4.4-1883033 * -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low * trust * [212.227.15.19 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [212.227.15.19 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [max.haslbeck[at]gmx.de] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout.gmx.net ([212.227.15.19]:44671) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kZvE9-000kMm-l5 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:15:54 +0000 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from clusers-mbp.fritz.box ([83.175.65.71]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mof5H-1jyQbI0GlN-00p8Iz for ; Tue, 03 Nov 2020 13:15:53 +0100 From: Max Haslbeck Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.15\)) Message-Id: Date: Tue, 3 Nov 2020 13:15:52 +0100 To: cl-isabelle-users at lists.cam.ac.uk X-Mailer: Apple Mail (2.3445.104.15) X-Provags-ID: V03:K1:cFf8EhvgArYgDnai9NBBEGIeiTGaLHGdUgWTYNuMAg/8juroimF /owb/YrlgSRvcz148iT57O6Bqif6ZjdCGk25v2UIgXUezbUq0fwCnHjSAS3gVkBcGk8plWS UQ+n5TMAU5z/e2I3JvH6e/ZtwuxEO+SMR1/JS7YPvATxJQ2dTwNHyav5bSX8Y03ZmYyUFiD JHL17kck+e9CnNAG2p7qg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:YwQht7OHuJM=:8F43jFIOvcjZvV+7Jh/Uu4 kvA/OuHkMHQXg4KGv1b4DKLdN+hRsbTczxX/JjwImfc1iC4CpmctNy5l3+a5V5/WpZqjwPGr5 1gB/MNqo+8MNvU9X51mGCW1oUbRAVOk8Kn9zpFrPJCVnwrSle6WbEQBrHC0eM+FZz4mako7Bb lRyZt/GjF2jO2CGOypwtRVXkjU7Z37MGciuxK8BP0lD2y06SnmrKhG3irxZtnD2NhbBj1xNsd 84GLVGpB+GSF1ubbt3vq2aLvoLadzwjPXz6thNMuLgDTFSMpwYBIAtE5sQ3N42w+YuNOlZTSb mUkNfGeAq1SkoiS+a25cOOG290CZNc7gEXETlO+LwhgrNWAumm7BN3FntS4B5lJ5zeDi4c7dP eQXIdhgVw1ZiOmdolWq+kVBqbpYZjUmngyl/Fz2Gidvxgiq1IqSllDaEZ5mBEWiWZz2g4NrBL jn+pyG2BWAU60KY23mMwFL+zM37pSS3ZeC5Q29/Q0OfAT/7wIS3bErztQtb7m/y+KLirT5kkC PqnzzV5Ae3XQluvF+jDjT5g61JKX2ZdaoYch5GYDMHVgSCyxQ+Lwu9zT7ObdOFGNoffPdwJzO tpm6UszBXz4YMcVWNr7OEE7DQqh6j9YOOQEjld2vGfrGTD3HMhba55THBj9FKG2eZfFtK3FNP Gdd7Fu0W/NHM8HRTZIaf+PEYv8pOp8b9AzF4yLmsQLgLbMOiWpTqjIuNAvmm9SO4Xpqh1+PDL dDKG934wXlh2L3Zh5ow3a0uXeAZoPW5RVNTeug5NOmitxqr/HQy5ETLcGRx/1+nEPpUQSPYZ3 ktaNbw6n6NcSt6ltng7VEksYGcvrdwK0KqlUT4MQBR2/3KwdcLaXIIXFNLUIO0bMQz2+MByGa +MZLfwpmEDtgP02G1yMA== Subject: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 12:15:54 -0000 Hi, is it possible to have a general timeout for all tactics or for all = `apply` and `by` commands? For example, fastforce loops in the following proof: ``` lemma assumes A: "x =3D y" "y =3D x" shows "x =3D z" apply(fastforce simp add: A) ``` Can I just have it timeout after 10 seconds? I often run into this problem when working on Isabelle code and simply = changing a definition or a lemma. I then go through the failed proofs = coming after the change. And often there is a `metis` or `blast` command = simply clogging up the CPU and making my laptop unresponsive. The documentation [1] says on page 97 in a footnote: =E2=80=9CThe lack = of memoing and the strict nature of ML requires some care when working = with low-level sequence operations, to avoid duplicate or premature = evaluation of results. It also means that modified runtime behavior, = such as timeout, is very hard to achieve for general tactics.=E2=80=9D Is there maybe a hack which I can activate when doing interactive proof = development in Isabelle/jedit? Gru=C3=9F Max [1]: https://isabelle.in.tum.de/dist/Isabelle2020/doc/implementation.pdf= From mikhail.chekhov.w at gmail.com Tue Nov 03 12:43:13 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:55632) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZveb-0008E7-JY (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:43:13 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883033 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.68 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.68 listed in wl.mailspike.net] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f68.google.com ([209.85.166.68]:35402) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kZvea-000dWV-fr (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:43:13 +0000 Received: by mail-io1-f68.google.com with SMTP id n12so6622058ioc.2 for ; Tue, 03 Nov 2020 04:43:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=6oc/IfV3Q/HswJyyqQ5r4tHwtEMFN2wTklpd3xLKTTk=; b=UsKapMy20qiRvFoJMRw/qCo8lLlYT9ZZJvIkP16+i3rx/QVsaWZ6WSArP0f2cj2icr TI7GPIpmF5voOOYcu1452cmdvfzqbryY8kq4/Soszh5g2XOXAHqFvwMy+txDZTwm7WI+ rr3QWK8IAQJVZ+HatDF0JRRjLfoOWrZkinPLXPX4lTCypjhQ0VY6JcxtzTnQ+dv6SvUs q+oi8sBrIb7ZYsrAReGO+xhB2HlsbQVl7MtU4K2XA5G5Iq2wGp8sNgLcIWbKlxJzKD6j NMVYoIdWZy/DbC5qWNiApf4E5qF9dikDLmgCNp3B0yff3Mgh6iZ3olVBZv/XGhAqzf++ cXRA== X-Gm-Message-State: AOAM532Dh3C1bdPc8p54aRqSDWkFDdVM0bvYCaEOBt6HIPdVP/nqmG5q olej8X/cWsqhHB5+dMYpi8b6CTy3Nri1bOXsB/6vQMSgc3M= X-Google-Smtp-Source: ABdhPJwj4qCod27/pvMQy+nisjXDvjy4upj2Wt2YY6GmX/qIVfHk0SvsMVu+UI+1E5ZJJVbWvnUUozH65Zwasv8hIcU= X-Received: by 2002:a02:c547:: with SMTP id g7mr15184060jaj.88.1604407391869; Tue, 03 Nov 2020 04:43:11 -0800 (PST) MIME-Version: 1.0 From: Mikhail Chekhov Date: Tue, 3 Nov 2020 14:43:01 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Cc: max.haslbeck at gmx.de Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 12:43:13 -0000 Dear Max Haslbeck, There exists at least one example in Isabelle/HOL's source code: look for atp_tac in atp_problem_import.ML. At some point in the past, I was able to use it to implement a timeout for one of my own tactics (this was done for experiments and debugging only, of course) using elements of the code borrowed from the implementation of atp_tac. Also, I would like to make note on the subject of debugging rules for classical reasoner. In the past, I found it useful to use the single-step tactics, as described in section 9.4.6 of the manual. However, I am sure that you are aware of them already. I hope you will find my comments useful. However, of course, this is not an official reply and there may be a more canonical solution available. Kind Regards, Mikhail Chekhov From eberlm at in.tum.de Tue Nov 03 12:48:31 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:60936) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZvjj-0008UE-MF (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:48:31 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883033 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.159.0.8 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.159.0.8 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-out1.in.tum.de ([131.159.0.8]:48852 helo=mail-out1.informatik.tu-muenchen.de) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kZvji-000Y2W-lU (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:48:31 +0000 Received: by mail.in.tum.de (Postfix, from userid 107) id EB3B71C0D0C; Tue, 3 Nov 2020 13:48:29 +0100 (CET) Received: (Authenticated sender: eberlm) by mail.in.tum.de (Postfix) with ESMTPSA id A52541C0D0B for ; Tue, 3 Nov 2020 13:48:27 +0100 (CET) (Extended-Queue-bit tech_hlzxn at fff.in.tum.de) To: cl-isabelle-users at lists.cam.ac.uk References: From: Manuel Eberl Autocrypt: addr=eberlm at in.tum.de; prefer-encrypt=mutual; keydata= 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 Message-ID: <51096b57-fa2c-f964-29b7-419356eb4ee3 at in.tum.de> Date: Tue, 3 Nov 2020 13:48:27 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: 8bit Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 12:48:31 -0000 I know that problem well. Every once in a while, a rogue call of some tactic (e.g. a heavily backgracking "transfer") loops and takes the entire Isabelle/jEdit session with it. Sometimes one can delete the offending tactic call and the session recovers eventually, but most of the time it's faster to just kill it and restart everything. Manuel On 03/11/2020 13:15, Max Haslbeck wrote: > Hi, > > is it possible to have a general timeout for all tactics or for all `apply` and `by` commands? > > For example, fastforce loops in the following proof: > ``` > lemma assumes A: "x = y" "y = x" > shows "x = z" > apply(fastforce simp add: A) > ``` > Can I just have it timeout after 10 seconds? > > I often run into this problem when working on Isabelle code and simply changing a definition or a lemma. I then go through the failed proofs coming after the change. And often there is a `metis` or `blast` command simply clogging up the CPU and making my laptop unresponsive. > > The documentation [1] says on page 97 in a footnote: “The lack of memoing and the strict nature of ML requires some care when working with low-level sequence operations, to avoid duplicate or premature evaluation of results. It also means that modified runtime behavior, such as timeout, is very hard to achieve for general tactics.” > Is there maybe a hack which I can activate when doing interactive proof development in Isabelle/jedit? > > Gruß > Max > > [1]: https://isabelle.in.tum.de/dist/Isabelle2020/doc/implementation.pdf > From nipkow at in.tum.de Tue Nov 03 12:49:45 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:53320) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZvkv-00007x-H9 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:49:45 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883033 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.159.0.36 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.159.0.36 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:34700) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kZvku-000Rv8-LH (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:49:45 +0000 Received: from ppsw-41.csi.cam.ac.uk ([2001:630:212:8::e:f41]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kZvku-000Ofw-Ff for isabelle-users at cl.cam.ac.uk; Tue, 03 Nov 2020 12:49:44 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883033 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.159.0.36 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.159.0.36 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-out2.in.tum.de ([131.159.0.36]:59004 helo=mail-out2.informatik.tu-muenchen.de) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kZvkt-000FHN-RU (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Tue, 03 Nov 2020 12:49:44 +0000 Received: by mail.in.tum.de (Postfix, from userid 107) id 40C641C0D0C; Tue, 3 Nov 2020 13:49:42 +0100 (CET) Received: (Authenticated sender: nipkow) by mail.in.tum.de (Postfix) with ESMTPSA id EB1EA1C0D04 for ; Tue, 3 Nov 2020 13:49:39 +0100 (CET) (Extended-Queue-bit tech_vueai at fff.in.tum.de) To: Isabelle Users From: Tobias Nipkow Message-ID: <03b9b8d9-9ca5-a79e-55ba-2ebf69ff2389 at in.tum.de> Date: Tue, 3 Nov 2020 13:49:38 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="------------ms010902040105020907010909" X-debug-header: local_aliases has suffix Subject: [isabelle] pat_completeness exception X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 12:49:45 -0000 This is a cryptographically signed message in MIME format. --------------ms010902040105020907010909 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Dear pat_completeness experts, pat_completeness does not seem to like ~=3D, eg lemma exception: "(=E2=8B=80x y. x =E2=89=A0 y =E2=9F=B9 P True) =E2=9F=B9= P t" apply(pat_completeness) exception TERM raised (line 271 of "~~/src/HOL/Tools/hologic.ML") This came up in trying to prove (via induction_schema) an induction schem= a with=20 two subcases, one with x =3D y and the other with x ~=3D y. Probably pat_completness was not designed to handle this. Tobias --------------ms010902040105020907010909 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC EX4wggUSMIID+qADAgECAgkA4wvV+K8l2YEwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYT AkRFMSswKQYDVQQKDCJULVN5c3RlbXMgRW50ZXJwcmlzZSBTZXJ2aWNlcyBHbWJIMR8wHQYD VQQLDBZULVN5c3RlbXMgVHJ1c3QgQ2VudGVyMSUwIwYDVQQDDBxULVRlbGVTZWMgR2xvYmFs Um9vdCBDbGFzcyAyMB4XDTE2MDIyMjEzMzgyMloXDTMxMDIyMjIzNTk1OVowgZUxCzAJBgNV BAYTAkRFMUUwQwYDVQQKEzxWZXJlaW4genVyIEZvZXJkZXJ1bmcgZWluZXMgRGV1dHNjaGVu IEZvcnNjaHVuZ3NuZXR6ZXMgZS4gVi4xEDAOBgNVBAsTB0RGTi1QS0kxLTArBgNVBAMTJERG Ti1WZXJlaW4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAMtg1/9moUHN0vqHl4pzq5lN6mc5WqFggEcVToyVsuXPztNXS43O+FZs FVV2B+pG/cgDRWM+cNSrVICxI5y+NyipCf8FXRgPxJiZN7Mg9mZ4F4fCnQ7MSjLnFp2uDo0p eQcAIFTcFV9Kltd4tjTTwXS1nem/wHdN6r1ZB+BaL2w8pQDcNb1lDY9/Mm3yWmpLYgHurDg0 WUU2SQXaeMpqbVvAgWsRzNI8qIv4cRrKO+KA3Ra0Z3qLNupOkSk9s1FcragMvp0049ENF4N1 xDkesJQLEvHVaY4l9Lg9K7/AjsMeO6W/VRCrKq4Xl14zzsjz9AkH4wKGMUZrAcUQDBHHWekC AwEAAaOCAXQwggFwMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUk+PYMiba1fFKpZFK4OpL 4qIMz+EwHwYDVR0jBBgwFoAUv1kgNgB5oKAia4zV8mHSuCzLgkowEgYDVR0TAQH/BAgwBgEB /wIBAjAzBgNVHSAELDAqMA8GDSsGAQQBga0hgiwBAQQwDQYLKwYBBAGBrSGCLB4wCAYGZ4EM AQICMEwGA1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9wa2kwMzM2LnRlbGVzZWMuZGUvcmwvVGVs ZVNlY19HbG9iYWxSb290X0NsYXNzXzIuY3JsMIGGBggrBgEFBQcBAQR6MHgwLAYIKwYBBQUH MAGGIGh0dHA6Ly9vY3NwMDMzNi50ZWxlc2VjLmRlL29jc3ByMEgGCCsGAQUFBzAChjxodHRw Oi8vcGtpMDMzNi50ZWxlc2VjLmRlL2NydC9UZWxlU2VjX0dsb2JhbFJvb3RfQ2xhc3NfMi5j ZXIwDQYJKoZIhvcNAQELBQADggEBAIcL/z4Cm2XIVi3WO5qYi3FP2ropqiH5Ri71sqQPrhE4 eTizDnS6dl2e6BiClmLbTDPo3flq3zK9LExHYFV/53RrtCyD2HlrtrdNUAtmB7Xts5et6u5/ MOaZ/SLick0+hFvu+c+Z6n/XUjkurJgARH5pO7917tALOxrN5fcPImxHhPalR6D90Bo0fa3S PXez7vTXTf/D6OWST1k+kEcQSrCFWMBvf/iu7QhCnh7U3xQuTY+8npTD5+32GPg8SecmqKc2 2CzeIs2LgtjZeOJVEqM7h0S2EQvVDFKvaYwPBt/QolOLV5h7z/0HJPT8vcP9SpIClxvyt7bP ZYoaorVyGTkwggWsMIIElKADAgECAgcbY7rQHiw9MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD VQQGEwJERTFFMEMGA1UEChM8VmVyZWluIHp1ciBGb2VyZGVydW5nIGVpbmVzIERldXRzY2hl biBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQLEwdERk4tUEtJMS0wKwYDVQQDEyRE Rk4tVmVyZWluIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IDIwHhcNMTYwNTI0MTEzODQwWhcN MzEwMjIyMjM1OTU5WjCBjTELMAkGA1UEBhMCREUxRTBDBgNVBAoMPFZlcmVpbiB6dXIgRm9l cmRlcnVuZyBlaW5lcyBEZXV0c2NoZW4gRm9yc2NodW5nc25ldHplcyBlLiBWLjEQMA4GA1UE CwwHREZOLVBLSTElMCMGA1UEAwwcREZOLVZlcmVpbiBHbG9iYWwgSXNzdWluZyBDQTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ07eRxH3h+Gy8Zp1xCeOdfZojDbchwFfylf S2jxrRnWTOFrG7ELf6Gr4HuLi9gtzm6IOhDuV+UefwRRNuu6cG1joL6WLkDh0YNMZj0cZGnl m6Stcq5oOVGHecwX064vXWNxSzl660Knl5BpBb+Q/6RAcL0D57+eGIgfn5mITQ5HjUhfZZkQ 0tkqSe3BuS0dnxLLFdM/fx5ULzquk1enfnjK1UriGuXtQX1TX8izKvWKMKztFwUkP7agCwf9 TRqaA1KgNpzeJIdl5Of6x5ZzJBTN0OgbaJ4YWa52fvfRCng8h0uwN89Tyjo4EPPLR22MZD08 WkVKusqAfLjz56dMTM0CAwEAAaOCAgUwggIBMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0P AQH/BAQDAgEGMCkGA1UdIAQiMCAwDQYLKwYBBAGBrSGCLB4wDwYNKwYBBAGBrSGCLAEBBDAd BgNVHQ4EFgQUazqYi/nyU4na4K2yMh4JH+iqO3QwHwYDVR0jBBgwFoAUk+PYMiba1fFKpZFK 4OpL4qIMz+EwgY8GA1UdHwSBhzCBhDBAoD6gPIY6aHR0cDovL2NkcDEucGNhLmRmbi5kZS9n bG9iYWwtcm9vdC1nMi1jYS9wdWIvY3JsL2NhY3JsLmNybDBAoD6gPIY6aHR0cDovL2NkcDIu cGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1nMi1jYS9wdWIvY3JsL2NhY3JsLmNybDCB3QYIKwYB BQUHAQEEgdAwgc0wMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1T ZXJ2ZXIvT0NTUDBKBggrBgEFBQcwAoY+aHR0cDovL2NkcDEucGNhLmRmbi5kZS9nbG9iYWwt cm9vdC1nMi1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwSgYIKwYBBQUHMAKGPmh0dHA6Ly9j ZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtZzItY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0 MA0GCSqGSIb3DQEBCwUAA4IBAQCBeEWkTqR/DlXwCbFqPnjMaDWpHPOVnj/z+N9rOHeJLI21 rT7H8pTNoAauusyosa0zCLYkhmI2THhuUPDVbmCNT1IxQ5dGdfBi5G5mUcFCMWdQ5UnnOR7L n8qGSN4IFP8VSytmm6A4nwDO/afr0X9XLchMX9wQEZc+lgQCXISoKTlslPwQkgZ7nu7YRrQb tQMMONncsKk/cQYLsgMHM8KNSGMlJTx6e1du94oFOO+4oK4v9NsH1VuEGMGpuEvObJAaguS5 Pfp38dIfMwK/U+d2+dwmJUFvL6Yb+qQTkPp8ftkLYF3sv8pBoGH7EUkp2KgtdRXYShjqFu9V NCIaE40GMIIGtDCCBZygAwIBAgIMI5/lGur5RMzYJ/WbMA0GCSqGSIb3DQEBCwUAMIGNMQsw CQYDVQQGEwJERTFFMEMGA1UECgw8VmVyZWluIHp1ciBGb2VyZGVydW5nIGVpbmVzIERldXRz Y2hlbiBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQLDAdERk4tUEtJMSUwIwYDVQQD DBxERk4tVmVyZWluIEdsb2JhbCBJc3N1aW5nIENBMB4XDTIwMTAwOTEzMzcxOFoXDTIxMTIw MzE1MzYxN1owgcAxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11 ZW5jaGVuMSkwJwYDVQQKDCBUZWNobmlzY2hlIFVuaXZlcnNpdGFldCBNdWVuY2hlbjEiMCAG A1UECwwZRmFrdWx0YWV0IGZ1ZXIgSW5mb3JtYXRpazEWMBQGA1UEAwwNVG9iaWFzIE5pcGtv dzEmMCQGCSqGSIb3DQEJARYXdG9iaWFzLm5pcGtvd0Bpbi50dW0uZGUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDUbnZWpbMWc0L36pKuee6yTHzlyzNHFmR8kbLounLgje8w 6j9bH8D7kbzEnlrh31Sa1alxP58+/NQ2d7lUuzPz/RDRXVl4d+NJ7tVMi1GrW9tS35yyV1/c 4dgAIlMoe2USxwg+b3UXmmdosbs9W6RJ/639htMAFWbUUTnj77qNMDbr9zEmdskIkOvJPmJG E3bAYMr4xh5ApkcuL0adZmyjLdFHIeIDgvgYp2dzh1L7h0qMs8npjdVYZhbaM6JL0XLc83Fj 9hw0QDt82YAHrKB0syh626JPqizlONVUiHnGoiVS/R0Xn2a+XIl4+pn2ufUbqAOfv3YTPOYD yh4FV6TVAgMBAAGjggLdMIIC2TA+BgNVHSAENzA1MA8GDSsGAQQBga0hgiwBAQQwEAYOKwYB BAGBrSGCLAEBBAgwEAYOKwYBBAGBrSGCLAIBBAgwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMC BeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBRbgDDEK6sjPfEN p3HCLZWLbSJuyTAfBgNVHSMEGDAWgBRrOpiL+fJTidrgrbIyHgkf6Ko7dDCBrgYDVR0RBIGm MIGjgRBuaXBrb3dAaW4udHVtLmRlgRd0b2JpYXMubmlwa293QGluLnR1bS5kZYEgbmlwa293 QGluZm9ybWF0aWsudHUtbXVlbmNoZW4uZGWBJ3RvYmlhcy5uaXBrb3dAaW5mb3JtYXRpay50 dS1tdWVuY2hlbi5kZYERbmlwa293QGNzLnR1bS5lZHWBGHRvYmlhcy5uaXBrb3dAY3MudHVt LmVkdTCBjQYDVR0fBIGFMIGCMD+gPaA7hjlodHRwOi8vY2RwMS5wY2EuZGZuLmRlL2Rmbi1j YS1nbG9iYWwtZzIvcHViL2NybC9jYWNybC5jcmwwP6A9oDuGOWh0dHA6Ly9jZHAyLnBjYS5k Zm4uZGUvZGZuLWNhLWdsb2JhbC1nMi9wdWIvY3JsL2NhY3JsLmNybDCB2wYIKwYBBQUHAQEE gc4wgcswMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1TZXJ2ZXIv T0NTUDBJBggrBgEFBQcwAoY9aHR0cDovL2NkcDEucGNhLmRmbi5kZS9kZm4tY2EtZ2xvYmFs LWcyL3B1Yi9jYWNlcnQvY2FjZXJ0LmNydDBJBggrBgEFBQcwAoY9aHR0cDovL2NkcDIucGNh LmRmbi5kZS9kZm4tY2EtZ2xvYmFsLWcyL3B1Yi9jYWNlcnQvY2FjZXJ0LmNydDANBgkqhkiG 9w0BAQsFAAOCAQEAOCUU6IMxIBv685lR6sshbAl9YdfybY4Z8+MJxQ+/Uj0I+PE4i4JqqOiX vZbS+BqQXYs52i1eLvHsilp3vGU+iLoEAgAgaDKs+YKrYBTUQWHUJyMlgA9yKBgUge0uDNYZ kt8lleS0lT7aIg6bUfInHIaAN6fd7taz11CyC3WvPx2N9r6ZE6kzxN6whx/CvAzEZ9R5MVD8 Trk29zBUATA4KPiCxj48OTyR3e19fbXQ54dtF+aR0aPIUdknIFxMFcsZGRVEbhFSmDSasDuw LfRfDamQEPv0ZeCds8XzDcPovGuH8SLwtRQq5Dq5nCIeAP+ywJZwo+o5nX+lRBivQ7YRtjGC BAswggQHAgEBMIGeMIGNMQswCQYDVQQGEwJERTFFMEMGA1UECgw8VmVyZWluIHp1ciBGb2Vy ZGVydW5nIGVpbmVzIERldXRzY2hlbiBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQL DAdERk4tUEtJMSUwIwYDVQQDDBxERk4tVmVyZWluIEdsb2JhbCBJc3N1aW5nIENBAgwjn+Ua 6vlEzNgn9ZswDQYJYIZIAWUDBAIBBQCgggI9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEw HAYJKoZIhvcNAQkFMQ8XDTIwMTEwMzEyNDkzOVowLwYJKoZIhvcNAQkEMSIEIL7MTURH5usV dgqSRL38g0NSOE6HK6sLtQaztYX9ZDPwMGwGCSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEq MAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwIC AUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwga8GCSsGAQQBgjcQBDGBoTCBnjCBjTELMAkG A1UEBhMCREUxRTBDBgNVBAoMPFZlcmVpbiB6dXIgRm9lcmRlcnVuZyBlaW5lcyBEZXV0c2No ZW4gRm9yc2NodW5nc25ldHplcyBlLiBWLjEQMA4GA1UECwwHREZOLVBLSTElMCMGA1UEAwwc REZOLVZlcmVpbiBHbG9iYWwgSXNzdWluZyBDQQIMI5/lGur5RMzYJ/WbMIGxBgsqhkiG9w0B CRACCzGBoaCBnjCBjTELMAkGA1UEBhMCREUxRTBDBgNVBAoMPFZlcmVpbiB6dXIgRm9lcmRl cnVuZyBlaW5lcyBEZXV0c2NoZW4gRm9yc2NodW5nc25ldHplcyBlLiBWLjEQMA4GA1UECwwH REZOLVBLSTElMCMGA1UEAwwcREZOLVZlcmVpbiBHbG9iYWwgSXNzdWluZyBDQQIMI5/lGur5 RMzYJ/WbMA0GCSqGSIb3DQEBAQUABIIBAMyUh6Ml3UpNcI26VII7eQsU7PjEhEW6NwxoQtIY 5R//FyKQXBWotK5RT0BPUpu3VXOxTcIwQugGag3cpemuKJlqp27oH4VBxiEsOYF5ECnjc+OX DPnytPxEP+/yHk08ixB7ZyN1yahLzgGEQjKtHy2rEKLy3k09uuzJ/7SGT5SMuw7rLW5msoMq uKGd8WH5wXvSOKuOvkDIjDmNq8zK/8qANMquqlBI844ju3+D0ydYvVQTLh/3k5tJuqhNmkQN bBj9EvX4N5xfwj5uxl38EN4hU7nEia1gQzhE2zZgm3kVGiyzNk5LhZgWN3jV/uk9acquOvQw JvefgBTl3kxsCTkAAAAAAAA= --------------ms010902040105020907010909-- From freek at cs.ru.nl Tue Nov 03 13:44:15 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:46458) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZwbf-0006VJ-9e (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 13:44:15 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883033 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.174.16.145 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.174.16.145 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from smtp2.science.ru.nl ([131.174.16.145]:33958) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kZwbe-000dSW-RX (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 13:44:14 +0000 Received: from xb982-stretch.fritz.box (cust.10.72.adsl.cistron.nl [82.94.35.228]) (authen=freek) by smtp2.science.ru.nl (8.15.2/5.32) with ESMTPSA id 0A3DiDq5008562 for ; Tue, 3 Nov 2020 14:44:14 +0100 Received: from freek by xb982-stretch.fritz.box with local (Exim 4.89) (envelope-from ) id 1kZwbd-00021Z-P6 for cl-isabelle-users at lists.cam.ac.uk; Tue, 03 Nov 2020 14:44:13 +0100 Date: Tue, 3 Nov 2020 14:44:13 +0100 From: Freek Wiedijk To: cl-isabelle-users at lists.cam.ac.uk Message-ID: <20201103134413.g5orxmwbx2feqrwa at xb27-stretch.fritz.box> References: <51096b57-fa2c-f964-29b7-419356eb4ee3 at in.tum.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <51096b57-fa2c-f964-29b7-419356eb4ee3 at in.tum.de> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 13:44:15 -0000 Dear all, It's not really relevant for this list, but in HOL Light it is trivial to hack something like this together: exception Timeout;; Sys.set_signal Sys.sigalrm (Sys.Signal_handle (fun _ -> raise Timeout));; let TIMED_TAC n tac g = let _ = Unix.alarm n in try let gs = tac g in let _ = Unix.alarm 0 in gs with x -> let _ = Unix.alarm 0 in raise x;; If you do (TIMED_TAC 3 (MESON_TAC[...])), it will run (MESON_TAC[...]) but if that doesn't succeed in 3 seconds, it will fail with a Timeout exception. Freek From mikhail.chekhov.w at gmail.com Tue Nov 03 15:04:04 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:35972) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kZxqu-0004wd-9R (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 15:04:04 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883033 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.193 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.193 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-il1-f193.google.com ([209.85.166.193]:38952) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kZxqt-000x8p-KE (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 15:04:04 +0000 Received: by mail-il1-f193.google.com with SMTP id q1so16382002ilt.6 for ; Tue, 03 Nov 2020 07:04:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/IfaX0wUsPBz/ursD/VGLa8J/A+QWsg+PZJOPgf7CHs=; b=W47cCVcwS4UD1UD0TiEFa3rKMuDyMYFWpKSmvFqDK9IbmY/X00S8yfYx1opog7QW7Y pvYW+hy9CmivN1uT4oIUD3jPAf2OvG78Y/YS8DEmDGtPTHiEFeJrNelkkEVghDY445kc sVcNlClQZYD8K05wWJUWphXDL1Lwhn6Ew/GlelRs3i3vT8NklYgANkkO5nnsYBuHnXoh 9RQA3SEUSRgbhix537qw1nZ3KQHSVnKfSCZAGg+CWCwxYGV++6Q8Pg8SVy21KgXV2n6L dwvDNXKGQVH0u0Rrd8ENoO+i0BDHr0O/8OfYVday0o8RnFOPZKgQQx9/YUQRsjoiqEIF V0Xw== X-Gm-Message-State: AOAM530QD+GzyMd7Iw4urLTFoIxC7IyuivtJj/Kj9/MiVKRnTiRQ+dvZ 5F/DCJswzq/TOWRtP2wsZeTrmEPiFc7TiMQNJCDMM/mpaLs= X-Google-Smtp-Source: ABdhPJynZWWqt3Wudeck0X3noza+oi2ezK/4l238yvkvXIf5h95S0/2mmXIsSUx0UsJRouebVoQ8bFMww6ly0XyGoNg= X-Received: by 2002:a92:d3c1:: with SMTP id c1mr15272745ilh.271.1604415841900; Tue, 03 Nov 2020 07:04:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Mikhail Chekhov Date: Tue, 3 Nov 2020 17:03:50 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Cc: max.haslbeck at gmx.de Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 15:04:04 -0000 Dear All, I had a little bit more time now and implemented a rough sketch of a plausible solution based on my own suggestion (its only purpose is to demonstrate that the functionality that you seek can be implemented easily). Of course, it will need to be refined for any serious applications. Also, with some further work, it can be integrated in the apply/by infrastructure: theory Scratch imports Main begin ML=E2=80=B9 val timeout_parser =3D Method.text_closure fun process_timeout ctxt m =3D ctxt (* timeout configuration *) val timeout_cfg =3D Attrib.setup_config_int \<^binding>=E2=80=B9mtime=E2=80= =BA (K 0) (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) fun SOLVE_TIMEOUT mseconds tac st =3D let val result =3D Timeout.apply (Time.fromMilliseconds mseconds) (fn () =3D> SINGLE (SOLVE tac) st)= () handle Timeout.TIMEOUT _ =3D> NONE | ERROR _ =3D> NONE in ( case result of NONE =3D> Seq.empty | SOME st' =3D> Seq.single st' ) end fun timeout_tac ctxt t m =3D let val tac =3D (Method.evaluate m ctxt) [] |> Context_Tactic.NO_CONTEXT_TACTIC ctxt |> SOLVE_TIMEOUT t in SIMPLE_METHOD tac end; fun process_timeout m ctxt =3D timeout_tac ctxt (Config.get ctxt timeout_cf= g) m val _ =3D Theory.setup ( Method.setup \<^binding>=E2=80=B9timeout=E2=80=BA (timeout_parser >> process_timeout) "higher order timeout method" ); =E2=80=BA declare[[mtime=3D1]] lemma assumes A: "x =3D z" shows "x =3D z" apply(timeout=E2=80=B9simp add: A=E2=80=BA) done lemma assumes A: "x =3D y" "y =3D x" shows "x =3D z" apply(timeout=E2=80=B9fastforce simp add: A=E2=80=BA) oops end Kind Regards, Mikhail Chekhov On Tue, Nov 3, 2020 at 2:43 PM Mikhail Chekhov wrote: > Dear Max Haslbeck, > > There exists at least one example in Isabelle/HOL's source code: look > for atp_tac in atp_problem_import.ML. At some point in the past, I was ab= le > to use it to implement a timeout for one of my own tactics (this was done > for experiments and debugging only, of course) using elements of the code > borrowed from the implementation of atp_tac. > > Also, I would like to make note on the subject of debugging rules for > classical reasoner. In the past, I found it useful to use the single-step > tactics, as described in section 9.4.6 of the manual. However, I am sure > that you are aware of them already. > > I hope you will find my comments useful. However, of course, this is not > an official reply and there may be a more canonical solution available. > > Kind Regards, > Mikhail Chekhov > From mikhail.chekhov.w at gmail.com Tue Nov 03 19:57:59 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:60414) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1ka2RL-0003y2-N9 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 19:57:59 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883033 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.68 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.68 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f68.google.com ([209.85.166.68]:34754) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1ka2RK-0003Sm-ev (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 19:57:59 +0000 Received: by mail-io1-f68.google.com with SMTP id s10so5474532ioe.1 for ; Tue, 03 Nov 2020 11:57:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=CjEr/HnnJvmsSnEgWet4zJJBqDWpGv2/g0/w7K3Xm6w=; b=nB+3siIKsn3RAJk7I7FcjvGJDm+BlIaYuWQBrN7WIgSQAjNAaJ0+evjQr+ywBOy9py fQE6ENeNPFAtNnD4ycPOoSlQAAcV26ZXKmHpliVCHBhcrdZDHJ6Wld6eAG2fE4aAAmm2 4Ge1B4mjeAWu8+im1Xu/DqirMsGZMaTlLdesoPHfKmtjwgUlFoqLtiX+0qJD0kmtR++e YfUb4qm/rf8weKkx4YvM35CXA7V8haPakODDrentMkXT/BPzEKiPQJTyosJgb3yC2J+4 w6nzrQW9FOlF0a5JCxbBdXjPunhqpyb7ZMWt5IkkpSXOtdnQmFraT5xsPzV9D9HJci0P fDOA== X-Gm-Message-State: AOAM530ELd+WeYW9SksZyU+we9NjnJpn3hVe9bgCjILpVANMUXKusbNp rpFXK4452FFIdb7KuWD8+1rl2ahje/Cj02AthfeGogK8JL8= X-Google-Smtp-Source: ABdhPJz6NT247yQzXs/aM8DFR8vJJf3GjrJUozH1yMbhPTVj7b26p8W5vn+k6UsCo2g6Cb9bodgR2khq5vwhTgm62aU= X-Received: by 2002:a6b:8f8d:: with SMTP id r135mr11828352iod.134.1604433477375; Tue, 03 Nov 2020 11:57:57 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Mikhail Chekhov Date: Tue, 3 Nov 2020 21:57:46 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 19:57:59 -0000 Dear All, I have to admit that my previous replies were slightly rushed: I was trying to do too many things at the same time after consuming a substantial amount of caffeine :). Having had a look at my own replies, I noticed a few typographical/style errors. 1. The first sentence of the second paragraph of the first email should read "Also, I would like to make a note on the subject of debugging of the rules for certain proof methods for classical reasoning." 2. The ML part of the code in the second email was meant to look like the code shown below (more specifically, I noticed that a wrong naming convention was used for the function for the specification of the method and there were a few redundancies). Keep in mind, this is still only a sketch. ML=E2=80=B9 val timeout_cfg =3D Attrib.setup_config_int \<^binding>=E2=80=B9mtime=E2=80= =BA (K 0) (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) fun SOLVE_TIMEOUT mseconds tac st =3D let val result =3D Timeout.apply (Time.fromMilliseconds mseconds) (fn () =3D> SINGLE (SOLVE tac) st)= () handle Timeout.TIMEOUT _ =3D> NONE | ERROR _ =3D> NONE in ( case result of NONE =3D> Seq.empty | SOME st' =3D> Seq.single st' ) end fun timeout_tac ctxt t m =3D Method.evaluate m ctxt [] |> Context_Tactic.NO_CONTEXT_TACTIC ctxt |> SOLVE_TIMEOUT t; fun process_timeout m ctxt =3D SIMPLE_METHOD (timeout_tac ctxt (Config.get ctxt timeout_cfg) m); val _ =3D Theory.setup ( Method.setup \<^binding>=E2=80=B9timeout=E2=80=BA (Method.text_closure >> process_timeout) "higher order timeout method" ); =E2=80=BA Kind Regards, Mikhail Chekhov On Tue, Nov 3, 2020 at 5:03 PM Mikhail Chekhov wrote: > Dear All, > > I had a little bit more time now and implemented a rough sketch of a > plausible solution based on my own suggestion (its only purpose is to > demonstrate that the functionality that you seek can be implemented > easily). Of course, it will need to be refined for any > serious applications. Also, with some further work, it can be integrated = in > the apply/by infrastructure: > > theory Scratch > imports > Main > begin > > ML=E2=80=B9 > > val timeout_parser =3D Method.text_closure > > fun process_timeout ctxt m =3D ctxt > > (* timeout configuration *) > val timeout_cfg =3D Attrib.setup_config_int \<^binding>=E2=80=B9mtime=E2= =80=BA (K 0) > > (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) > fun SOLVE_TIMEOUT mseconds tac st =3D > let > val result =3D > Timeout.apply > (Time.fromMilliseconds mseconds) (fn () =3D> SINGLE (SOLVE tac) s= t) > () > handle Timeout.TIMEOUT _ =3D> NONE | ERROR _ =3D> NONE > in > ( > case result of > NONE =3D> Seq.empty > | SOME st' =3D> Seq.single st' > ) > end > > fun timeout_tac ctxt t m =3D > let > val tac =3D (Method.evaluate m ctxt) [] > |> Context_Tactic.NO_CONTEXT_TACTIC ctxt > |> SOLVE_TIMEOUT t > in SIMPLE_METHOD tac end; > > fun process_timeout m ctxt =3D timeout_tac ctxt (Config.get ctxt > timeout_cfg) m > > val _ =3D Theory.setup > ( > Method.setup > \<^binding>=E2=80=B9timeout=E2=80=BA > (timeout_parser >> process_timeout) > "higher order timeout method" > ); > > =E2=80=BA > > declare[[mtime=3D1]] > > lemma > assumes A: "x =3D z" > shows "x =3D z" > apply(timeout=E2=80=B9simp add: A=E2=80=BA) > done > > lemma > assumes A: "x =3D y" "y =3D x" > shows "x =3D z" > apply(timeout=E2=80=B9fastforce simp add: A=E2=80=BA) > oops > > end > > Kind Regards, > Mikhail Chekhov > > On Tue, Nov 3, 2020 at 2:43 PM Mikhail Chekhov < > mikhail.chekhov.w at gmail.com> wrote: > >> Dear Max Haslbeck, >> >> There exists at least one example in Isabelle/HOL's source code: look >> for atp_tac in atp_problem_import.ML. At some point in the past, I was a= ble >> to use it to implement a timeout for one of my own tactics (this was don= e >> for experiments and debugging only, of course) using elements of the cod= e >> borrowed from the implementation of atp_tac. >> >> Also, I would like to make note on the subject of debugging rules for >> classical reasoner. In the past, I found it useful to use the single-ste= p >> tactics, as described in section 9.4.6 of the manual. However, I am sure >> that you are aware of them already. >> >> I hope you will find my comments useful. However, of course, this is not >> an official reply and there may be a more canonical solution available. >> >> Kind Regards, >> Mikhail Chekhov >> > From david.k at posteo.de Tue Nov 03 17:24:58 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:59778) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1ka03G-00078D-Mz (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 17:24:58 +0000 X-Cam-SpamDetails: score -1.2 from SpamAssassin-3.4.4-1883033 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.65 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) * [185.67.36.65 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * 1.4 URI_DOTEDU Has .edu URI X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout01.posteo.de ([185.67.36.65]:43302) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1ka03F-000nq8-fD (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 03 Nov 2020 17:24:58 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 9E4B716005C for ; Tue, 3 Nov 2020 18:24:56 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CQc9N25X9z6tmB for ; Tue, 3 Nov 2020 18:24:56 +0100 (CET) To: cl-isabelle-users at lists.cam.ac.uk From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> Date: Tue, 3 Nov 2020 18:25:01 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Wed, 04 Nov 2020 10:35:17 +0000 Subject: [isabelle] Code generation: transitive closure of inductive predicate does not terminate X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Nov 2020 17:24:58 -0000 Hi all, I have defined the transitive closure of an inductive predicate as follows: inductive less_equal_step :: "nat ⇒ nat ⇒ bool" where "a + 1 = b ⟹ less_equal_step a b" definition less_equal :: "nat ⇒ nat ⇒ bool" where (* Define the transitive closure using the provided `rtranclp` *) "less_equal a b ≡ (rtranclp less_equal_step) a b" code_pred(modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) less_equal_step . code_pred (modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) [inductify] less_equal . (* Terminates *) value "less_equal 1 2" (* Does not terminate *) value "less_equal 2 1" Whenever `less_equal` does not hold execution does not terminate. In an older email (https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2009-April/msg00051.html) I read that this is being worked on. Then in Section 2.3 of the paper "Animating the Formalised Semanticsof a Java-like Language" (https://pp.ipd.kit.edu/uploads/publikationen/lochbihler11itp.pdf) it sounds like a tabled version has already been implemented. Do I have to activate this feature somehow? Or are there other problems with the above inductive predicate? Best regards, David From lukas.bulwahn at gmail.com Wed Nov 04 11:35:10 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:51552) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaH4I-00038D-J5 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 11:35:10 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.2 from SpamAssassin-3.4.4-1883064 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.173 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.173 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [lukas.bulwahn[at]gmail.com] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 1.5 URI_DOTEDU Has .edu URI X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-il1-f173.google.com ([209.85.166.173]:46153) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kaH4H-000sCx-Qs (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 11:35:10 +0000 Received: by mail-il1-f173.google.com with SMTP id a20so19029106ilk.13 for ; Wed, 04 Nov 2020 03:35:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=VrJYEQ2eP8m7uhRF3i3twb/0zCfMUL6Utpg8HljPClE=; b=kP6JNH/CSrxYTadFhGTbO/QIl8yiZJHUxyeSorwJGLhDSgELd7w9uGz3X5jub9QZc1 Xsbwm09cU6axOO+p4qSzLIPE9eB3mZRJJy8KPxZuDa7ai06cR0diy3fzg2KZuJ0DkYdY B8Vbbtv4vBsC82PAsTUFdyMVcOM+jw4fFC2D6dD0Axxt+x+H9/JpIIV9edm+1Rc0F33X VvIjYYAILb7Oe/gi4zFvyq9eTp8DNeYxMDJsS9RYhc4vKUskH0yIOB3/fZlegAzPFyXj gsWyLpMWFFUvUkyjnQEBIgJI/i9Li/2LpmHe9oeiNAugNBHRxW0ar7cD4c0wexM4u0RJ 1AVg== X-Gm-Message-State: AOAM531OShsj7J5iY8XvKsLzusMeSZWwVNLnvgpYl5lqnzBC80nt8z0l Hj0lMoMQmBG6KwHq0qxPKhjQxamoNyztqNUL4qLVo/g5CAI= X-Google-Smtp-Source: ABdhPJwuLCy8rAOj0koecorbK3/Im4m+QsBoUBYrSLEn6j0yqTllqZ54uapShphRO5fp+GvS/9GmPjhy4aSy+2pGT64= X-Received: by 2002:a92:35c7:: with SMTP id c68mr6388621ilf.251.1604489708348; Wed, 04 Nov 2020 03:35:08 -0800 (PST) MIME-Version: 1.0 References: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> In-Reply-To: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> From: Lukas Bulwahn Date: Wed, 4 Nov 2020 12:34:53 +0100 Message-ID: To: David Kretzmer Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Cc: Cl-isabelle Users Subject: Re: [isabelle] Code generation: transitive closure of inductive predicate does not terminate X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 11:35:10 -0000 On Wed, Nov 4, 2020 at 11:36 AM David Kretzmer wrote: > > Hi all, > > I have defined the transitive closure of an inductive predicate as follow= s: > > inductive less_equal_step :: "nat =E2=87=92 nat =E2=87=92 bool" where > "a + 1 =3D b =E2=9F=B9 less_equal_step a b" > > definition less_equal :: "nat =E2=87=92 nat =E2=87=92 bool" where > (* Define the transitive closure using the provided `rtranclp` *) > "less_equal a b =E2=89=A1 (rtranclp less_equal_step) a b" > > code_pred(modes: i =E2=87=92 i =E2=87=92 bool, i =E2=87=92 o =E2=87=92 = bool) less_equal_step . > > code_pred > (modes: i =E2=87=92 i =E2=87=92 bool, i =E2=87=92 o =E2=87=92 bool) > [inductify] > less_equal . > > (* Terminates *) > value "less_equal 1 2" > > (* Does not terminate *) > value "less_equal 2 1" > > Whenever `less_equal` does not hold execution does not terminate. > > In an older email > (https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2009-April/msg00= 051.html) > I read that this is being worked on. Then in Section 2.3 of the paper > "Animating the Formalised Semanticsof a Java-like Language" > (https://pp.ipd.kit.edu/uploads/publikationen/lochbihler11itp.pdf) it > sounds like a tabled version has already been implemented. Do I have to > activate this feature somehow? Or are there other problems with the > above inductive predicate? > There is no automatic tabled execution support; that would be actually interesting but quite tricky to get properly done in full generality. However, I think even a tabled version would not terminate because the table would just be filled with infinite entries following this sequence (2, 1), (3, 1), (4, 1), (5, 1), ... and never terminate. For this simple example, it is of course better to just use a different but equivalent definition of less_equal_step, that terminates under all modes. Non-terminating rules are well known in Logic Programming; it is a programming language paradigm that provides enough rope to hang yourself, and it requires some knowledge of the underlying execution principles to get a program that is reasonable executable. I hope that helps. Lukas From tals4 at cam.ac.uk Wed Nov 04 11:39:59 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:57884) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaH8x-0003LW-Mx (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 11:39:59 +0000 X-Cam-AntiVirus: not scanned (internal relaying) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from webmail-1a.csi.cam.ac.uk ([131.111.9.32]:57394) by ppsw-40.csi.cam.ac.uk (ppsw.cam.ac.uk [131.111.8.138]:25) with esmtp id 1kaH8x-0006ab-lV (Exim 4.92.3) (return-path ); Wed, 04 Nov 2020 11:39:59 +0000 Received: from [127.0.0.1] (helo=webmail-1.hermes.cam.ac.uk) by webmail-1a.csi.cam.ac.uk with esmtp id 1kaH8x-000570-Mz (Exim 4.92.3) (return-path ); Wed, 04 Nov 2020 11:39:59 +0000 Received: from dhcp-10-248-114-116.eduroam.wireless.private.cam.ac.uk ([10.248.114.116]) by webmail-1.hermes.cam.ac.uk with HTTP (HTTP/1.1 POST); Wed, 04 Nov 2020 11:39:59 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Wed, 04 Nov 2020 11:39:59 +0000 From: Thomas Sewell To: Mikhail Chekhov In-Reply-To: References: User-Agent: Roundcube Webmail/1.4.9 Message-ID: X-Sender: tals4 at cam.ac.uk X-Authenticated-User: tals4 X-Mailman-Approved-At: Wed, 04 Nov 2020 11:59:31 +0000 Cc: cl-isabelle-users at lists.cam.ac.uk Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 11:39:59 -0000 I just want to make sure that somebody points out the obvious issue. Wrapping a timeout around fastforce, metis etc sounds like a good thing. Failures are easier to find and address than divergence. However, it would be a disaster if there were lots of proofs that mostly worked but failed outright if some machine was running particularly slowly for whatever reason. So, it's easy enough to implement a timeout mechanism on a tactic or method, but it's probably not useful for the purpose you really want, which is to set timeouts throughout your theories by default. Years ago I spent some time wondering whether there was some kind of objective timing that would make sense, e.g. the number of classical steps in a fastforce/auto proof. Limiting those would be safer. I never got around to implementing anything though. Best regards, Thomas. On 2020-11-03 19:57, Mikhail Chekhov wrote: > Dear All, > > I have to admit that my previous replies were slightly rushed: I was > trying > to do too many things at the same time after consuming a substantial > amount > of caffeine :). Having had a look at my own replies, I noticed a few > typographical/style errors. > > 1. The first sentence of the second paragraph of the first email should > read "Also, I would like to make a note on the subject of debugging of > the > rules for certain proof methods for classical reasoning." > > 2. The ML part of the code in the second email was meant to look like > the > code shown below (more specifically, I noticed that a wrong naming > convention was used for the function for the specification of the > method > and there were a few redundancies). Keep in mind, this is still only a > sketch. > > ML‹ > > val timeout_cfg = Attrib.setup_config_int \<^binding>‹mtime› (K 0) > > (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) > fun SOLVE_TIMEOUT mseconds tac st = > let > val result = > Timeout.apply > (Time.fromMilliseconds mseconds) (fn () => SINGLE (SOLVE tac) > st) () > handle Timeout.TIMEOUT _ => NONE | ERROR _ => NONE > in > ( > case result of > NONE => Seq.empty > | SOME st' => Seq.single st' > ) > end > > fun timeout_tac ctxt t m = Method.evaluate m ctxt [] > |> Context_Tactic.NO_CONTEXT_TACTIC ctxt > |> SOLVE_TIMEOUT t; > > fun process_timeout m ctxt = > SIMPLE_METHOD (timeout_tac ctxt (Config.get ctxt timeout_cfg) m); > > val _ = Theory.setup > ( > Method.setup > \<^binding>‹timeout› > (Method.text_closure >> process_timeout) > "higher order timeout method" > ); > > › > > Kind Regards, > Mikhail Chekhov > > On Tue, Nov 3, 2020 at 5:03 PM Mikhail Chekhov > > wrote: > >> Dear All, >> >> I had a little bit more time now and implemented a rough sketch of a >> plausible solution based on my own suggestion (its only purpose is to >> demonstrate that the functionality that you seek can be implemented >> easily). Of course, it will need to be refined for any >> serious applications. Also, with some further work, it can be >> integrated in >> the apply/by infrastructure: >> >> theory Scratch >> imports >> Main >> begin >> >> ML‹ >> >> val timeout_parser = Method.text_closure >> >> fun process_timeout ctxt m = ctxt >> >> (* timeout configuration *) >> val timeout_cfg = Attrib.setup_config_int \<^binding>‹mtime› (K 0) >> >> (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) >> fun SOLVE_TIMEOUT mseconds tac st = >> let >> val result = >> Timeout.apply >> (Time.fromMilliseconds mseconds) (fn () => SINGLE (SOLVE tac) >> st) >> () >> handle Timeout.TIMEOUT _ => NONE | ERROR _ => NONE >> in >> ( >> case result of >> NONE => Seq.empty >> | SOME st' => Seq.single st' >> ) >> end >> >> fun timeout_tac ctxt t m = >> let >> val tac = (Method.evaluate m ctxt) [] >> |> Context_Tactic.NO_CONTEXT_TACTIC ctxt >> |> SOLVE_TIMEOUT t >> in SIMPLE_METHOD tac end; >> >> fun process_timeout m ctxt = timeout_tac ctxt (Config.get ctxt >> timeout_cfg) m >> >> val _ = Theory.setup >> ( >> Method.setup >> \<^binding>‹timeout› >> (timeout_parser >> process_timeout) >> "higher order timeout method" >> ); >> >> › >> >> declare[[mtime=1]] >> >> lemma >> assumes A: "x = z" >> shows "x = z" >> apply(timeout‹simp add: A›) >> done >> >> lemma >> assumes A: "x = y" "y = x" >> shows "x = z" >> apply(timeout‹fastforce simp add: A›) >> oops >> >> end >> >> Kind Regards, >> Mikhail Chekhov >> >> On Tue, Nov 3, 2020 at 2:43 PM Mikhail Chekhov < >> mikhail.chekhov.w at gmail.com> wrote: >> >>> Dear Max Haslbeck, >>> >>> There exists at least one example in Isabelle/HOL's source code: look >>> for atp_tac in atp_problem_import.ML. At some point in the past, I >>> was able >>> to use it to implement a timeout for one of my own tactics (this was >>> done >>> for experiments and debugging only, of course) using elements of the >>> code >>> borrowed from the implementation of atp_tac. >>> >>> Also, I would like to make note on the subject of debugging rules for >>> classical reasoner. In the past, I found it useful to use the >>> single-step >>> tactics, as described in section 9.4.6 of the manual. However, I am >>> sure >>> that you are aware of them already. >>> >>> I hope you will find my comments useful. However, of course, this is >>> not >>> an official reply and there may be a more canonical solution >>> available. >>> >>> Kind Regards, >>> Mikhail Chekhov >>> >> From david.k at posteo.de Wed Nov 04 14:50:07 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:50322) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaK6x-0000Wz-NE (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 14:50:07 +0000 X-Cam-SpamDetails: score -1.1 from SpamAssassin-3.4.4-1883064 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.65 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) * [185.67.36.65 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) * 1.5 URI_DOTEDU Has .edu URI X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout01.posteo.de ([185.67.36.65]:38544) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kaK6w-000D3m-lu (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 14:50:07 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 278E2160062 for ; Wed, 4 Nov 2020 15:50:04 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CR8hD0tgDz6tmY; Wed, 4 Nov 2020 15:50:04 +0100 (CET) To: Lukas Bulwahn References: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: Date: Wed, 4 Nov 2020 15:50:08 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Cc: Cl-isabelle Users Subject: Re: [isabelle] Code generation: transitive closure of inductive predicate does not terminate X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 14:50:07 -0000 Thanks, good to know! The example I gave apparently doesn't really capture my use case, which is defining a subclass relation for a programming language (slightly simplified version below). Since there exists a top-most class from which all other classes derive the problem of infinite sequences should not arise, I think. Do you know what one has to do to get tabled execution? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ type_synonym class_name = string record class_def = cname :: class_name super :: "class_name option" type_synonym program = "class_def list" definition lookup_class :: "program ⇒ class_name ⇒ class_def option" where "lookup_class P C ≡ find (λcl. (class_def.cname cl) = C) P" inductive is_subclass1 :: "program ⇒ class_name ⇒ class_name ⇒ bool" where "⟦ Some cl = lookup_class P C; (class_def.super cl) = Some C' ⟧ ⟹ is_subclass1 P C C'" definition is_subclass_rtc :: "program ⇒ class_name ⇒ class_name ⇒ bool" where "is_subclass_rtc P C C' ≡ (is_subclass1 P)⇧*⇧* C C'" code_pred(modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) is_subclass1 . code_pred (modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) [inductify] is_subclass_rtc . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On 04.11.20 12:34, Lukas Bulwahn wrote: > On Wed, Nov 4, 2020 at 11:36 AM David Kretzmer wrote: >> >> Hi all, >> >> I have defined the transitive closure of an inductive predicate as follows: >> >> inductive less_equal_step :: "nat ⇒ nat ⇒ bool" where >> "a + 1 = b ⟹ less_equal_step a b" >> >> definition less_equal :: "nat ⇒ nat ⇒ bool" where >> (* Define the transitive closure using the provided `rtranclp` *) >> "less_equal a b ≡ (rtranclp less_equal_step) a b" >> >> code_pred(modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) less_equal_step . >> >> code_pred >> (modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) >> [inductify] >> less_equal . >> >> (* Terminates *) >> value "less_equal 1 2" >> >> (* Does not terminate *) >> value "less_equal 2 1" >> >> Whenever `less_equal` does not hold execution does not terminate. >> >> In an older email >> (https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2009-April/msg00051.html) >> I read that this is being worked on. Then in Section 2.3 of the paper >> "Animating the Formalised Semanticsof a Java-like Language" >> (https://pp.ipd.kit.edu/uploads/publikationen/lochbihler11itp.pdf) it >> sounds like a tabled version has already been implemented. Do I have to >> activate this feature somehow? Or are there other problems with the >> above inductive predicate? >> > > There is no automatic tabled execution support; that would be actually > interesting but quite tricky to get properly done in full generality. > > However, I think even a tabled version would not terminate because the > table would just be filled with infinite entries following this > sequence (2, 1), (3, 1), (4, 1), (5, 1), ... and never terminate. > > For this simple example, it is of course better to just use a > different but equivalent definition of less_equal_step, that > terminates under all modes. > > Non-terminating rules are well known in Logic Programming; it is a > programming language paradigm that provides enough rope to hang > yourself, and it requires some knowledge of the underlying execution > principles to get a program that is reasonable executable. > > I hope that helps. > > Lukas > From mikhail.chekhov.w at gmail.com Wed Nov 04 19:09:05 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:42272) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaO9Z-0007i2-Rx (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:09:05 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883064 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.65 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.65 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f65.google.com ([209.85.166.65]:41724) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kaO9Y-000DZE-Lx (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:09:05 +0000 Received: by mail-io1-f65.google.com with SMTP id u62so23327694iod.8 for ; Wed, 04 Nov 2020 11:09:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=gh9YoCWE203FNI8Z2yTiyJRiLTSpvKvfUsQqrcFpqnE=; b=ulL6LS4W3ejKWO4/d0765Bt+pMZNefavR/MENAG1DYBtg3/gzmwXcEYc7iNmjbDAPh 2sxCHzukDGWu+4imUPFXKgDc1MbCBu8VNPDwAHo+DvydtiCfUH8UL63p3ZAu2ifC1QmC 3wLBL/XwL2ltqC+jaqZTCZObGlmsyxElrAb9FNEFudpLGUH8IzNgIUyrv+jhqFKVLO+W E666OhyyDAIvauXF05Ulqsq+nULkHtzxwtSL1NnXLFBdvV0YPdiTtW5AmT2cVe7YNer2 dtPLdNDCkkI4x8adOxqcTxVVgrzy/TM5zSSR+WaqPpy6O0KLUrEgx9rvLNV4BpHLYZFp 5Rqw== X-Gm-Message-State: AOAM532ho9YoqpJtnvkMO8OjDaC3BvOLYk7Mr7dT9Uwlluawo2NohFp6 jGz8wBvBR6jaBHFXfAfR8LRMg9FezH1F4Jo3PHtpxCtb X-Google-Smtp-Source: ABdhPJxkZTXWdwuPJtXcMo6J3sxYbQ0Hw6wojWvLiUkanSFbTFMi9Bmd/CS+PglB2tx5k0H7LjBcpQ8iTeLmZ5quLKE= X-Received: by 2002:a02:a001:: with SMTP id a1mr8112866jah.66.1604516942855; Wed, 04 Nov 2020 11:09:02 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Mikhail Chekhov Date: Wed, 4 Nov 2020 21:08:51 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 19:09:06 -0000 Dear Thomas Sewell/All, Thank you for your remarks. It was never my intention to advocate the use of this feature in production-level code. However, it can be useful for debugging and experimentation (e.g. when designing a new simpset/intro/dest/elim rules or a new tactic/proof method). Of course, once a simpset/rule set/tactic/method is designed, the timeout should be removed. Kind Regards, Mikhail Chekhov On Wed, Nov 4, 2020 at 1:40 PM Thomas Sewell wrote: > I just want to make sure that somebody points out the obvious issue. > > Wrapping a timeout around fastforce, metis etc sounds like a good thing. > Failures are easier to find and address than divergence. However, it > would be a disaster if there were lots of proofs that mostly worked > but failed outright if some machine was running particularly slowly for > whatever reason. > > So, it's easy enough to implement a timeout mechanism on a tactic or > method, > but it's probably not useful for the purpose you really want, which is > to > set timeouts throughout your theories by default. > > Years ago I spent some time wondering whether there was some kind of > objective > timing that would make sense, e.g. the number of classical steps in a > fastforce/auto proof. Limiting those would be safer. I never got around > to > implementing anything though. > > Best regards, > Thomas. > > On 2020-11-03 19:57, Mikhail Chekhov wrote: > > Dear All, > > > > I have to admit that my previous replies were slightly rushed: I was > > trying > > to do too many things at the same time after consuming a substantial > > amount > > of caffeine :). Having had a look at my own replies, I noticed a few > > typographical/style errors. > > > > 1. The first sentence of the second paragraph of the first email should > > read "Also, I would like to make a note on the subject of debugging of > > the > > rules for certain proof methods for classical reasoning." > > > > 2. The ML part of the code in the second email was meant to look like > > the > > code shown below (more specifically, I noticed that a wrong naming > > convention was used for the function for the specification of the > > method > > and there were a few redundancies). Keep in mind, this is still only a > > sketch. > > > > ML=E2=80=B9 > > > > val timeout_cfg =3D Attrib.setup_config_int \<^binding>=E2=80=B9mtime= =E2=80=BA (K 0) > > > > (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) > > fun SOLVE_TIMEOUT mseconds tac st =3D > > let > > val result =3D > > Timeout.apply > > (Time.fromMilliseconds mseconds) (fn () =3D> SINGLE (SOLVE tac) > > st) () > > handle Timeout.TIMEOUT _ =3D> NONE | ERROR _ =3D> NONE > > in > > ( > > case result of > > NONE =3D> Seq.empty > > | SOME st' =3D> Seq.single st' > > ) > > end > > > > fun timeout_tac ctxt t m =3D Method.evaluate m ctxt [] > > |> Context_Tactic.NO_CONTEXT_TACTIC ctxt > > |> SOLVE_TIMEOUT t; > > > > fun process_timeout m ctxt =3D > > SIMPLE_METHOD (timeout_tac ctxt (Config.get ctxt timeout_cfg) m); > > > > val _ =3D Theory.setup > > ( > > Method.setup > > \<^binding>=E2=80=B9timeout=E2=80=BA > > (Method.text_closure >> process_timeout) > > "higher order timeout method" > > ); > > > > =E2=80=BA > > > > Kind Regards, > > Mikhail Chekhov > > > > On Tue, Nov 3, 2020 at 5:03 PM Mikhail Chekhov > > > > wrote: > > > >> Dear All, > >> > >> I had a little bit more time now and implemented a rough sketch of a > >> plausible solution based on my own suggestion (its only purpose is to > >> demonstrate that the functionality that you seek can be implemented > >> easily). Of course, it will need to be refined for any > >> serious applications. Also, with some further work, it can be > >> integrated in > >> the apply/by infrastructure: > >> > >> theory Scratch > >> imports > >> Main > >> begin > >> > >> ML=E2=80=B9 > >> > >> val timeout_parser =3D Method.text_closure > >> > >> fun process_timeout ctxt m =3D ctxt > >> > >> (* timeout configuration *) > >> val timeout_cfg =3D Attrib.setup_config_int \<^binding>=E2=80=B9mtime= =E2=80=BA (K 0) > >> > >> (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) > >> fun SOLVE_TIMEOUT mseconds tac st =3D > >> let > >> val result =3D > >> Timeout.apply > >> (Time.fromMilliseconds mseconds) (fn () =3D> SINGLE (SOLVE tac= ) > >> st) > >> () > >> handle Timeout.TIMEOUT _ =3D> NONE | ERROR _ =3D> NONE > >> in > >> ( > >> case result of > >> NONE =3D> Seq.empty > >> | SOME st' =3D> Seq.single st' > >> ) > >> end > >> > >> fun timeout_tac ctxt t m =3D > >> let > >> val tac =3D (Method.evaluate m ctxt) [] > >> |> Context_Tactic.NO_CONTEXT_TACTIC ctxt > >> |> SOLVE_TIMEOUT t > >> in SIMPLE_METHOD tac end; > >> > >> fun process_timeout m ctxt =3D timeout_tac ctxt (Config.get ctxt > >> timeout_cfg) m > >> > >> val _ =3D Theory.setup > >> ( > >> Method.setup > >> \<^binding>=E2=80=B9timeout=E2=80=BA > >> (timeout_parser >> process_timeout) > >> "higher order timeout method" > >> ); > >> > >> =E2=80=BA > >> > >> declare[[mtime=3D1]] > >> > >> lemma > >> assumes A: "x =3D z" > >> shows "x =3D z" > >> apply(timeout=E2=80=B9simp add: A=E2=80=BA) > >> done > >> > >> lemma > >> assumes A: "x =3D y" "y =3D x" > >> shows "x =3D z" > >> apply(timeout=E2=80=B9fastforce simp add: A=E2=80=BA) > >> oops > >> > >> end > >> > >> Kind Regards, > >> Mikhail Chekhov > >> > >> On Tue, Nov 3, 2020 at 2:43 PM Mikhail Chekhov < > >> mikhail.chekhov.w at gmail.com> wrote: > >> > >>> Dear Max Haslbeck, > >>> > >>> There exists at least one example in Isabelle/HOL's source code: look > >>> for atp_tac in atp_problem_import.ML. At some point in the past, I > >>> was able > >>> to use it to implement a timeout for one of my own tactics (this was > >>> done > >>> for experiments and debugging only, of course) using elements of the > >>> code > >>> borrowed from the implementation of atp_tac. > >>> > >>> Also, I would like to make note on the subject of debugging rules for > >>> classical reasoner. In the past, I found it useful to use the > >>> single-step > >>> tactics, as described in section 9.4.6 of the manual. However, I am > >>> sure > >>> that you are aware of them already. > >>> > >>> I hope you will find my comments useful. However, of course, this is > >>> not > >>> an official reply and there may be a more canonical solution > >>> available. > >>> > >>> Kind Regards, > >>> Mikhail Chekhov > >>> > >> > From eberlm at in.tum.de Wed Nov 04 19:17:41 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:45338) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaOHt-0007yi-00 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:17:41 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883064 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.159.0.36 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.159.0.36 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-out2.in.tum.de ([131.159.0.36]:37350 helo=mail-out2.informatik.tu-muenchen.de) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kaOHr-000c2a-dJ (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:17:40 +0000 Received: by mail.in.tum.de (Postfix, from userid 107) id F0C921C0D14; Wed, 4 Nov 2020 20:17:35 +0100 (CET) Received: (Authenticated sender: eberlm) by mail.in.tum.de (Postfix) with ESMTPSA id C88D11C0D05 for ; Wed, 4 Nov 2020 20:17:33 +0100 (CET) (Extended-Queue-bit tech_zubji at fff.in.tum.de) To: cl-isabelle-users at lists.cam.ac.uk References: From: Manuel Eberl Autocrypt: addr=eberlm at in.tum.de; prefer-encrypt=mutual; keydata= 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 Message-ID: <4246cb58-c85f-b15f-c7bf-37eb3759173a at in.tum.de> Date: Wed, 4 Nov 2020 20:17:32 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: 8bit Subject: Re: [isabelle] General timeout for tactics X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 19:17:41 -0000 Some users (perhaps including me) might find this very useful even as an "always switched on" option in the IDE – although I am not sure how well that works in practice. The main use case would be to kill those rogue "transfer" calls that block the entire system. But it's quite possible that after 10 seconds (or whatever a suitable timeout would be) it might already have done too much damage for the system to recover in a reasonable amount of time. Thomas is of course right to point out that this is not something that should run in batch mode because reproducibility goes completely out of the window if you switch it on. Manuel On 04/11/2020 20:08, Mikhail Chekhov wrote: > Dear Thomas Sewell/All, > > Thank you for your remarks. It was never my intention to advocate the use > of this feature in production-level code. However, it can be useful for > debugging and experimentation (e.g. when designing a new > simpset/intro/dest/elim rules or a new tactic/proof method). Of course, > once a simpset/rule set/tactic/method is designed, the timeout should be > removed. > > Kind Regards, > Mikhail Chekhov > > On Wed, Nov 4, 2020 at 1:40 PM Thomas Sewell wrote: > >> I just want to make sure that somebody points out the obvious issue. >> >> Wrapping a timeout around fastforce, metis etc sounds like a good thing. >> Failures are easier to find and address than divergence. However, it >> would be a disaster if there were lots of proofs that mostly worked >> but failed outright if some machine was running particularly slowly for >> whatever reason. >> >> So, it's easy enough to implement a timeout mechanism on a tactic or >> method, >> but it's probably not useful for the purpose you really want, which is >> to >> set timeouts throughout your theories by default. >> >> Years ago I spent some time wondering whether there was some kind of >> objective >> timing that would make sense, e.g. the number of classical steps in a >> fastforce/auto proof. Limiting those would be safer. I never got around >> to >> implementing anything though. >> >> Best regards, >> Thomas. >> >> On 2020-11-03 19:57, Mikhail Chekhov wrote: >>> Dear All, >>> >>> I have to admit that my previous replies were slightly rushed: I was >>> trying >>> to do too many things at the same time after consuming a substantial >>> amount >>> of caffeine :). Having had a look at my own replies, I noticed a few >>> typographical/style errors. >>> >>> 1. The first sentence of the second paragraph of the first email should >>> read "Also, I would like to make a note on the subject of debugging of >>> the >>> rules for certain proof methods for classical reasoning." >>> >>> 2. The ML part of the code in the second email was meant to look like >>> the >>> code shown below (more specifically, I noticed that a wrong naming >>> convention was used for the function for the specification of the >>> method >>> and there were a few redundancies). Keep in mind, this is still only a >>> sketch. >>> >>> ML‹ >>> >>> val timeout_cfg = Attrib.setup_config_int \<^binding>‹mtime› (K 0) >>> >>> (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) >>> fun SOLVE_TIMEOUT mseconds tac st = >>> let >>> val result = >>> Timeout.apply >>> (Time.fromMilliseconds mseconds) (fn () => SINGLE (SOLVE tac) >>> st) () >>> handle Timeout.TIMEOUT _ => NONE | ERROR _ => NONE >>> in >>> ( >>> case result of >>> NONE => Seq.empty >>> | SOME st' => Seq.single st' >>> ) >>> end >>> >>> fun timeout_tac ctxt t m = Method.evaluate m ctxt [] >>> |> Context_Tactic.NO_CONTEXT_TACTIC ctxt >>> |> SOLVE_TIMEOUT t; >>> >>> fun process_timeout m ctxt = >>> SIMPLE_METHOD (timeout_tac ctxt (Config.get ctxt timeout_cfg) m); >>> >>> val _ = Theory.setup >>> ( >>> Method.setup >>> \<^binding>‹timeout› >>> (Method.text_closure >> process_timeout) >>> "higher order timeout method" >>> ); >>> >>> › >>> >>> Kind Regards, >>> Mikhail Chekhov >>> >>> On Tue, Nov 3, 2020 at 5:03 PM Mikhail Chekhov >>> >>> wrote: >>> >>>> Dear All, >>>> >>>> I had a little bit more time now and implemented a rough sketch of a >>>> plausible solution based on my own suggestion (its only purpose is to >>>> demonstrate that the functionality that you seek can be implemented >>>> easily). Of course, it will need to be refined for any >>>> serious applications. Also, with some further work, it can be >>>> integrated in >>>> the apply/by infrastructure: >>>> >>>> theory Scratch >>>> imports >>>> Main >>>> begin >>>> >>>> ML‹ >>>> >>>> val timeout_parser = Method.text_closure >>>> >>>> fun process_timeout ctxt m = ctxt >>>> >>>> (* timeout configuration *) >>>> val timeout_cfg = Attrib.setup_config_int \<^binding>‹mtime› (K 0) >>>> >>>> (* copied from HOL/TPTP/atp_problem_import.ML with minor amendments *) >>>> fun SOLVE_TIMEOUT mseconds tac st = >>>> let >>>> val result = >>>> Timeout.apply >>>> (Time.fromMilliseconds mseconds) (fn () => SINGLE (SOLVE tac) >>>> st) >>>> () >>>> handle Timeout.TIMEOUT _ => NONE | ERROR _ => NONE >>>> in >>>> ( >>>> case result of >>>> NONE => Seq.empty >>>> | SOME st' => Seq.single st' >>>> ) >>>> end >>>> >>>> fun timeout_tac ctxt t m = >>>> let >>>> val tac = (Method.evaluate m ctxt) [] >>>> |> Context_Tactic.NO_CONTEXT_TACTIC ctxt >>>> |> SOLVE_TIMEOUT t >>>> in SIMPLE_METHOD tac end; >>>> >>>> fun process_timeout m ctxt = timeout_tac ctxt (Config.get ctxt >>>> timeout_cfg) m >>>> >>>> val _ = Theory.setup >>>> ( >>>> Method.setup >>>> \<^binding>‹timeout› >>>> (timeout_parser >> process_timeout) >>>> "higher order timeout method" >>>> ); >>>> >>>> › >>>> >>>> declare[[mtime=1]] >>>> >>>> lemma >>>> assumes A: "x = z" >>>> shows "x = z" >>>> apply(timeout‹simp add: A›) >>>> done >>>> >>>> lemma >>>> assumes A: "x = y" "y = x" >>>> shows "x = z" >>>> apply(timeout‹fastforce simp add: A›) >>>> oops >>>> >>>> end >>>> >>>> Kind Regards, >>>> Mikhail Chekhov >>>> >>>> On Tue, Nov 3, 2020 at 2:43 PM Mikhail Chekhov < >>>> mikhail.chekhov.w at gmail.com> wrote: >>>> >>>>> Dear Max Haslbeck, >>>>> >>>>> There exists at least one example in Isabelle/HOL's source code: look >>>>> for atp_tac in atp_problem_import.ML. At some point in the past, I >>>>> was able >>>>> to use it to implement a timeout for one of my own tactics (this was >>>>> done >>>>> for experiments and debugging only, of course) using elements of the >>>>> code >>>>> borrowed from the implementation of atp_tac. >>>>> >>>>> Also, I would like to make note on the subject of debugging rules for >>>>> classical reasoner. In the past, I found it useful to use the >>>>> single-step >>>>> tactics, as described in section 9.4.6 of the manual. However, I am >>>>> sure >>>>> that you are aware of them already. >>>>> >>>>> I hope you will find my comments useful. However, of course, this is >>>>> not >>>>> an official reply and there may be a more canonical solution >>>>> available. >>>>> >>>>> Kind Regards, >>>>> Mikhail Chekhov >>>>> >>>> >> From mail at andreas-lochbihler.de Wed Nov 04 19:56:31 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:43746) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaOtT-0000qG-7u (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:56:31 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.4 from SpamAssassin-3.4.4-1883064 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 1.5 URI_DOTEDU Has .edu URI * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from wp589.webpack.hosteurope.de ([80.237.130.111]:53756) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kaOtS-000tRs-R8 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 19:56:31 +0000 Received: from [185.132.18.4] (helo=[192.168.1.62]); authenticated by wp589.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) id 1kaOtR-0004uD-OQ; Wed, 04 Nov 2020 20:56:29 +0100 To: David Kretzmer , Lukas Bulwahn References: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> From: Andreas Lochbihler Message-ID: Date: Wed, 4 Nov 2020 20:56:28 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-bounce-key: webpack.hosteurope.de; mail at andreas-lochbihler.de; 1604519790; 94b0938a; X-HE-SMSGID: 1kaOtR-0004uD-OQ Cc: Cl-isabelle Users Subject: Re: [isabelle] Code generation: transitive closure of inductive predicate does not terminate X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 19:56:31 -0000 Dear David, The tabled execution for the reflexive transitive closure is implemented in the theory "HOL-Library.Transitive_Closure_Table", so you have to import the theory. You may also want to have a look at the theories in JinjaThreads, where I've used tabulation for a similar subclass relation. In particular, https://www.isa-afp.org/browser_info/current/AFP/JinjaThreads/TypeRel.html Section "Code Generation". Hope this helps Andreas On 04.11.20 15:50, David Kretzmer wrote: > Thanks, good to know! The example I gave apparently doesn't really > capture my use case, which is defining a subclass relation for a > programming language (slightly simplified version below). Since there > exists a top-most class from which all other classes derive the problem > of infinite sequences should not arise, I think. > > Do you know what one has to do to get tabled execution? > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > type_synonym class_name = string > > record class_def = > cname :: class_name > super :: "class_name option" > > type_synonym program = "class_def list" > > definition lookup_class :: "program ⇒ class_name ⇒ class_def option" where > "lookup_class P C ≡ find (λcl. (class_def.cname cl) = C) P" > > inductive is_subclass1 :: "program ⇒ class_name ⇒ class_name ⇒ bool" > where > "⟦ > Some cl = lookup_class P C; > (class_def.super cl) = Some C' > ⟧ ⟹ is_subclass1 P C C'" > > > definition is_subclass_rtc :: "program ⇒ class_name ⇒ class_name ⇒ > bool" where > "is_subclass_rtc P C C' ≡ (is_subclass1 P)⇧*⇧* C C'" > > > code_pred(modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) is_subclass1 . > > code_pred > (modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) > [inductify] > is_subclass_rtc . > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > On 04.11.20 12:34, Lukas Bulwahn wrote: >> On Wed, Nov 4, 2020 at 11:36 AM David Kretzmer wrote: >>> >>> Hi all, >>> >>> I have defined the transitive closure of an inductive predicate as follows: >>> >>> inductive less_equal_step :: "nat ⇒ nat ⇒ bool" where >>> "a + 1 = b ⟹ less_equal_step a b" >>> >>> definition less_equal :: "nat ⇒ nat ⇒ bool" where >>> (* Define the transitive closure using the provided `rtranclp` *) >>> "less_equal a b ≡ (rtranclp less_equal_step) a b" >>> >>> code_pred(modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) less_equal_step . >>> >>> code_pred >>> (modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) >>> [inductify] >>> less_equal . >>> >>> (* Terminates *) >>> value "less_equal 1 2" >>> >>> (* Does not terminate *) >>> value "less_equal 2 1" >>> >>> Whenever `less_equal` does not hold execution does not terminate. >>> >>> In an older email >>> (https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2009-April/msg00051.html) >>> I read that this is being worked on. Then in Section 2.3 of the paper >>> "Animating the Formalised Semanticsof a Java-like Language" >>> (https://pp.ipd.kit.edu/uploads/publikationen/lochbihler11itp.pdf) it >>> sounds like a tabled version has already been implemented. Do I have to >>> activate this feature somehow? Or are there other problems with the >>> above inductive predicate? >>> >> >> There is no automatic tabled execution support; that would be actually >> interesting but quite tricky to get properly done in full generality. >> >> However, I think even a tabled version would not terminate because the >> table would just be filled with infinite entries following this >> sequence (2, 1), (3, 1), (4, 1), (5, 1), ... and never terminate. >> >> For this simple example, it is of course better to just use a >> different but equivalent definition of less_equal_step, that >> terminates under all modes. >> >> Non-terminating rules are well known in Logic Programming; it is a >> programming language paradigm that provides enough rope to hang >> yourself, and it requires some knowledge of the underlying execution >> principles to get a program that is reasonable executable. >> >> I hope that helps. >> >> Lukas >> > > From david.k at posteo.de Wed Nov 04 20:21:15 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:54404) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kaPHP-0001co-Eq (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 20:21:15 +0000 X-Cam-SpamDetails: score -1.1 from SpamAssassin-3.4.4-1883064 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) * 1.5 URI_DOTEDU Has .edu URI X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:43191) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kaPHO-000XZh-eW (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 04 Nov 2020 20:21:15 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 961CD2400FC for ; Wed, 4 Nov 2020 21:21:13 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CRJ2J3nv3z6tmL; Wed, 4 Nov 2020 21:21:12 +0100 (CET) To: Andreas Lochbihler , Lukas Bulwahn References: <63c936ab-840c-1f75-0d04-d081ae07c506 at posteo.de> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <07b37b91-92ec-5873-38c2-a69366e7ac2c at posteo.de> Date: Wed, 4 Nov 2020 21:21:17 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: de-LU Content-Transfer-Encoding: 8bit Cc: Cl-isabelle Users Subject: Re: [isabelle] Code generation: transitive closure of inductive predicate does not terminate X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2020 20:21:15 -0000 Hello Andreas, I imported "HOL-Library.Transitive_Closure_Table" and it just worked. Thank you! I will also have a look at JinjaThreads. Best regards, David On 04.11.20 20:56, Andreas Lochbihler wrote: > Dear David, > > The tabled execution for the reflexive transitive closure is implemented > in the theory "HOL-Library.Transitive_Closure_Table", so you have to > import the theory. You may also want to have a look at the theories in > JinjaThreads, where I've used tabulation for a similar subclass > relation. In particular, > > https://www.isa-afp.org/browser_info/current/AFP/JinjaThreads/TypeRel.html > > Section "Code Generation". > > Hope this helps > Andreas > > > > On 04.11.20 15:50, David Kretzmer wrote: >> Thanks, good to know! The example I gave apparently doesn't really >> capture my use case, which is defining a subclass relation for a >> programming language (slightly simplified version below). Since there >> exists a top-most class from which all other classes derive the problem >> of infinite sequences should not arise, I think. >> >> Do you know what one has to do to get tabled execution? >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>    type_synonym class_name = string >> >>    record class_def = >>      cname :: class_name >>      super :: "class_name option" >> >>    type_synonym program = "class_def list" >> >>    definition lookup_class :: "program ⇒ class_name ⇒ class_def >> option" where >>      "lookup_class P C ≡ find (λcl. (class_def.cname cl) = C) P" >> >>    inductive is_subclass1 :: "program ⇒ class_name ⇒ class_name ⇒ bool" >> where >>      "⟦ >>        Some cl = lookup_class P C; >>        (class_def.super cl) = Some C' >>      ⟧ ⟹ is_subclass1 P C C'" >> >> >>    definition is_subclass_rtc :: "program ⇒ class_name ⇒ class_name ⇒ >> bool" where >>      "is_subclass_rtc P C C' ≡ (is_subclass1 P)⇧*⇧* C C'" >> >> >>    code_pred(modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) is_subclass1 . >> >>    code_pred >>      (modes: i ⇒ i ⇒ i ⇒ bool, i ⇒ i ⇒ o ⇒ bool) >>      [inductify] >>      is_subclass_rtc . >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> >> On 04.11.20 12:34, Lukas Bulwahn wrote: >>> On Wed, Nov 4, 2020 at 11:36 AM David Kretzmer >>> wrote: >>>> >>>> Hi all, >>>> >>>> I have defined the transitive closure of an inductive predicate as >>>> follows: >>>> >>>>    inductive less_equal_step :: "nat ⇒ nat ⇒ bool"  where >>>>      "a + 1 = b ⟹ less_equal_step a b" >>>> >>>>    definition less_equal :: "nat ⇒ nat ⇒ bool" where >>>>      (* Define the transitive closure using the provided `rtranclp` *) >>>>      "less_equal a b ≡ (rtranclp less_equal_step) a b" >>>> >>>>    code_pred(modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) less_equal_step . >>>> >>>>    code_pred >>>>      (modes: i ⇒ i ⇒ bool, i ⇒ o ⇒ bool) >>>>      [inductify] >>>>      less_equal . >>>> >>>>    (* Terminates *) >>>>    value "less_equal 1 2" >>>> >>>>    (* Does not terminate *) >>>>    value "less_equal 2 1" >>>> >>>> Whenever `less_equal` does not hold execution does not terminate. >>>> >>>> In an older email >>>> (https://lists.cam.ac.uk/mailman/htdig/cl-isabelle-users/2009-April/msg00051.html) >>>> >>>> I read that this is being worked on. Then in Section 2.3 of the paper >>>> "Animating the Formalised Semanticsof a Java-like Language" >>>> (https://pp.ipd.kit.edu/uploads/publikationen/lochbihler11itp.pdf) it >>>> sounds like a tabled version has already been implemented. Do I have to >>>> activate this feature somehow? Or are there other problems with the >>>> above inductive predicate? >>>> >>> >>> There is no automatic tabled execution support; that would be actually >>> interesting but quite tricky to get properly done in full generality. >>> >>> However, I think even a tabled version would not terminate because the >>> table would just be filled with infinite entries following this >>> sequence (2, 1), (3, 1), (4, 1), (5, 1), ... and never terminate. >>> >>> For this simple example, it is of course better to just use a >>> different but equivalent definition of less_equal_step, that >>> terminates under all modes. >>> >>> Non-terminating rules are well known in Logic Programming; it is a >>> programming language paradigm that provides enough rope to hang >>> yourself, and it requires some knowledge of the underlying execution >>> principles to get a program that is reasonable executable. >>> >>> I hope that helps. >>> >>> Lukas >>> >> >> From carsten at dcs.bbk.ac.uk Fri Nov 06 13:32:09 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:33884) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kb1qb-0004zd-5x (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 13:32:09 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883134 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [193.61.29.4 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 MAY_BE_FORGED Relay IP's reverse DNS does not resolve to IP X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mailer2.dcs.bbk.ac.uk ([193.61.29.4]:36154) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kb1qa-000p8r-K0 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 13:32:09 +0000 Received: from [192.168.10.134] (193-28-39-130.customers.pinemedia.net [193.28.39.130] (may be forged)) (authenticated bits=0) by mailer2.dcs.bbk.ac.uk (8.15.2+Sun/8.15.2) with ESMTPSA id 0A6DW6Pu017387 (version=TLSv1.2 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Fri, 6 Nov 2020 13:32:07 GMT From: Carsten Fuhs Autocrypt: addr=carsten at dcs.bbk.ac.uk; prefer-encrypt=mutual; keydata= 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 To: cl-isabelle-users at lists.cam.ac.uk Message-ID: Date: Fri, 6 Nov 2020 13:32:06 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: fr_FR Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 193.61.29.4 Subject: [isabelle] FSCD 2021: First Call for Papers X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 13:32:09 -0000 CALL FOR PAPERS Sixth International Conference on Formal Structures for Computation and Deduction (FSCD 2021) July 17 - July 24, 2021, Buenos Aires, Argentina https://fscd2021.dc.uba.ar/ In-cooperation with ACM SIGLOG and SIGPLAN NOTE: Due to the Covid 19 pandemic situation, the 2021 edition of FSCD and its satellite workshops will be held online. IMPORTANT DATES --------------- All deadlines are midnight anywhere-on-earth (AoE); late submissions will not be considered. Abstract: February 12, 2021 Submission: February 15, 2021 Rebuttal: April 2-5, 2021 Notification: April 19, 2021 Final version: May 3, 2021 FSCD (http://fscd-conference.org/) covers all aspects of formal structures for computation and deduction from theoretical foundations to applications. Building on two communities, RTA (Rewriting Techniques and Applications) and TLCA (Typed Lambda Calculi and Applications), FSCD embraces their core topics and broadens their scope to closely related areas in logics, models of computation, semantics and verification in new challenging areas. The suggested, but not exclusive, list of topics for submission is: 1. Calculi: - Rewriting systems (string, term, higher-order, graph, conditional, modulo, infinitary, etc.); - Lambda calculus; - Logics (first-order, higher-order, equational, modal, linear, classical, constructive, etc.); - Proof theory (natural deduction, sequent calculus, proof nets, etc.); - Type theory and logical frameworks; - Homotopy type theory; - Quantum calculi. 2. Methods in Computation and Deduction: - Type systems (polymorphism, dependent, recursive, intersection, session, etc.); - Induction, coinduction; - Matching, unification, completion, orderings; - Strategies (normalization, completeness, etc.); - Tree automata; - Model building and model checking; - Proof search and theorem proving; - Constraint solving and decision procedures. 3. Semantics: - Operational semantics and abstract machines; - Game Semantics and applications; - Domain theory and categorical models; - Quantitative models (timing, probabilities, etc.); - Quantum computation and emerging models in computation. 4. Algorithmic Analysis and Transformations of Formal Systems: - Type Inference and type checking; - Abstract Interpretation; - Complexity analysis and implicit computational complexity; - Checking termination, confluence, derivational complexity and related properties; - Symbolic computation. 5. Tools and Applications: - Programming and proof environments; - Verification tools; - Proof assistants and interactive theorem provers; - Applications in industry; - Applications of formal systems in other sciences. 6. Semantics and Verification in new challenging areas: - Certification; - Security; - Blockchain protocols; - Data Bases; - Deep learning and machine learning algorithms; - Planning. PUBLICATION ----------- The proceedings will be published as an electronic volume in the Leibniz International Proceedings in Informatics (LIPIcs) of Schloss Dagstuhl. All LIPIcs proceedings are open access. SPECIAL ISSUE ------------- Authors of selected papers will be invited to submit an extended version to a special issue of Logical Methods in Computer Science. SUBMISSION GUIDELINES --------------------- The submission site is: https://easychair.org/conferences/?conf=fscd2021 Submissions can be made in two categories. Regular research papers are limited to 15 pages, excluding references and appendices. They must present original research which is unpublished and not submitted elsewhere. System descriptions are limited to 15 pages (including references) and must present new software tools in which FSCD topics play an important role, or significantly new versions of such tools. An archive of the code with instructions on how to install and run the tool must be submitted. In addition, a webpage where the system can be experimented with should be provided. Complete instructions on submitting a paper can be found on the conference web site: https://fscd2021.dc.uba.ar/ One author of an accepted paper is expected to present it at the conference BEST PAPER AWARD BY JUNIOR RESEARCHERS -------------------------------------- The program committee will select a paper in which at least one author is a junior researcher, i.e. either a student or whose PhD award date is less than three years from the first day of the meeting. Other authors should declare to the PC Chair that at least 50% of contribution is made by the junior researcher(s). PROGRAM COMMITTEE CHAIR ----------------------- Naoki Kobayashi, The University of Tokyo fscd2021 at easychair.org PROGRAM COMMITTEE ----------------- M. Ayala-Rincón, Universidade de Brasília S. Berardi, University of Torino F. Blanqui, INRIA E. Bonelli, Stevens Institute of Technology É. Contejean, CNRS, Université Paris-Saclay T. Coquand, University of Gothenburg T. Ehrhard, Université de Paris, CNRS S. Escobar, Univ. Politècnica de València J. Espírito Santo, University of Minho C. Faggian, Université de Paris, CNRS A. Felty, University of Ottawa S. Figueira, Universidad de Buenos Aires M. Fiore, University of Cambridge M. Gaboardi, Boston University S. Ghilezan, University of Novi Sad I. Hasuo, National Institute of Informatics D. Kesner, Université de Paris R. Krebbers, Radboud University Nijmegen T. Kutsia, Johannes Kepler University Linz B. König, University of Duisburg-Essen M. Lenisa, University of Udine N. Nishida, Nagoya University L. Ong, University of Oxford P. Parys, University of Warsaw J. Rehof, TU Dortmund University C. Rocha, Pontificia Univ. Javeriana Cali A. Silva, University College London N. Szasz, Universidad ORT Uruguay A. Tiu, Australian National University S. Winkler, University of Verona H. Yang, KAIST, South Korea CONFERENCE CHAIR ---------------- Alejandro Díaz-Caro, Quilmes Univ. & ICC/CONICET WORKSHOP CHAIRS -------------- Mauricio Ayala-Rincón, Universidade de Brasília Carlos López Pombo, Universidad de Buenos Aires STEERING COMMITTEE WORKSHOP CHAIR -------------------------------- Jamie Vicary, Oxford University PUBLICITY CHAIR --------------- Carsten Fuhs, Birkbeck, University of London FSCD STEERING COMMITTEE ----------------------- Z. Ariola, University of Oregon M. Ayala-Rincón, University of Brasilia C. Fuhs, Birkbeck, University of London H. Geuvers, Radboud University S. Ghilezan, University of Novi Sad S. Guerrini, University of Paris 13 D. Kesner (Chair), University of Paris Diderot H. Kirchner, Inria C. Kop, Radboud University D. Mazza, University of Paris 13 L. Ong, Oxford University J. Rehof, TU Dortmund J. Vicary, Oxford University From david.k at posteo.de Fri Nov 06 16:59:24 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:35676) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kb55A-0002oV-IG (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 16:59:24 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:57785) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kb55A-000itM-jS (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 16:59:24 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 2DB6B2400FD for ; Fri, 6 Nov 2020 17:59:23 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CSRSV5c99z6tmJ for ; Fri, 6 Nov 2020 17:59:22 +0100 (CET) To: cl-isabelle-users at lists.cam.ac.uk From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> Date: Fri, 6 Nov 2020 17:59:28 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: [isabelle] Document preparation from within Isabelle/jEdit X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 16:59:24 -0000 Dear all, is there a way to do PDF generation from within Isabelle/jEdit in a way that avoids rebuilding the whole session? In the documentation it only says how to preview the generated HTML, but not how to generate a PDF. Currently I simply run `isabelle build ...`, but if I do this then I have to close Isabelle/jEdit because I don't have enough RAM for both. Best regards, David From makarius at sketis.net Fri Nov 06 20:59:20 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:46376) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kb8pM-0004gL-DN (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 20:59:20 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.2 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server * [62.216.204.219 listed in dnsbl.sorbs.net] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.98 listed in list.dnswl.dnsbl.ja.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([188.68.63.98]:41949) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kb8pL-000B1T-eg (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 20:59:20 +0000 Received: from mors-relay-2501.netcup.net (localhost [127.0.0.1]) by mors-relay-2501.netcup.net (Postfix) with ESMTPS id 4CSXnL16FBz6Bd5; Fri, 6 Nov 2020 21:59:18 +0100 (CET) Received: from policy02-mors.netcup.net (unknown [46.38.225.53]) by mors-relay-2501.netcup.net (Postfix) with ESMTPS id 4CSXnL0jmHz55L6; Fri, 6 Nov 2020 21:59:18 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy02-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy02-mors.netcup.net (Postfix) with ESMTPS id 4CSXnK2b9fz8sb2; Fri, 6 Nov 2020 21:59:16 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-219.dynamic.mnet-online.de [62.216.204.219]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 6A82AA56D2; Fri, 6 Nov 2020 21:59:16 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.219) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: David Kretzmer , cl-isabelle-users at lists.cam.ac.uk References: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <14d6178d-96af-b13d-9b94-379ed4e99655 at sketis.net> Date: Fri, 6 Nov 2020 21:59:16 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <160469635665.10120.10531946395580598977 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: +Gxc9Pz+u1/n6MIVjVLVXBqh0CsXpEaO8ZDVzcDFQ5PIKEM= Subject: Re: [isabelle] Document preparation from within Isabelle/jEdit X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 20:59:20 -0000 On 06/11/2020 17:59, David Kretzmer wrote: > > is there a way to do PDF generation from within Isabelle/jEdit in a way > that avoids rebuilding the whole session? In the documentation it only > says how to preview the generated HTML, but not how to generate a PDF. > Currently I simply run `isabelle build ...`, but if I do this then I > have to close Isabelle/jEdit because I don't have enough RAM for both. This is certainly desirable, but still not supported. For now you can save some time and space like this: * Edit $ISABELLE_HOME_USER/etc/settings and restrict the ML heap, depending on your total RAM and the size of your Isabelle/HOL application: ML_OPTIONS="--minheap 500 --maxheap 2g" (Restart the Isabelle/jEdit afterwards.) * Open the Console/Scala plugin in Isabelle/jEdit and run the Isabelle build tool within the Java process of Isabelle/jEdit: Build.build(PIDE.options.value, progress = new Console_Progress, select_dirs = List(Path.explode("~/tmp/Test"))) The arguments for Build.build may be seen here: https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Tools/build.scala#l392 and the mapping of command-line options to arguments here: https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Tools/build.scala#l726 Makarius From david.k at posteo.de Fri Nov 06 22:16:39 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:41362) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbA2B-0006xZ-FO (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:16:39 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883134 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.65 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) * [185.67.36.65 listed in wl.mailspike.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout01.posteo.de ([185.67.36.65]:38362) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbA2A-000v6M-Ll (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:16:39 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id B796816005C for ; Fri, 6 Nov 2020 23:16:37 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CSZVX6W2nz9rxT; Fri, 6 Nov 2020 23:16:36 +0100 (CET) To: Makarius , cl-isabelle-users at lists.cam.ac.uk References: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> <14d6178d-96af-b13d-9b94-379ed4e99655 at sketis.net> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: Date: Fri, 6 Nov 2020 23:16:41 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <14d6178d-96af-b13d-9b94-379ed4e99655 at sketis.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [isabelle] Document preparation from within Isabelle/jEdit X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 22:16:39 -0000 Hello Makarius, thanks, it's still tight, but it does seem to just fit into main memory. When I saw the -P option for `isabelle build` I had hoped that this would somehow reuse the current session from Isabelle/jEdit, but this does not seem to be the case. Anyway, thanks for the help! Best regards, David On 06.11.20 21:59, Makarius wrote: > On 06/11/2020 17:59, David Kretzmer wrote: >> >> is there a way to do PDF generation from within Isabelle/jEdit in a way >> that avoids rebuilding the whole session? In the documentation it only >> says how to preview the generated HTML, but not how to generate a PDF. >> Currently I simply run `isabelle build ...`, but if I do this then I >> have to close Isabelle/jEdit because I don't have enough RAM for both. > > This is certainly desirable, but still not supported. For now you can save > some time and space like this: > > * Edit $ISABELLE_HOME_USER/etc/settings and restrict the ML heap, depending > on your total RAM and the size of your Isabelle/HOL application: > > ML_OPTIONS="--minheap 500 --maxheap 2g" > > (Restart the Isabelle/jEdit afterwards.) > > * Open the Console/Scala plugin in Isabelle/jEdit and run the Isabelle build > tool within the Java process of Isabelle/jEdit: > > Build.build(PIDE.options.value, progress = new Console_Progress, select_dirs > = List(Path.explode("~/tmp/Test"))) > > The arguments for Build.build may be seen here: > https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Tools/build.scala#l392 > and the mapping of command-line options to arguments here: > https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Tools/build.scala#l726 > > > Makarius > From makarius at sketis.net Fri Nov 06 22:29:06 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:42278) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbAEE-0007Kj-7I (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:29:06 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.2 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.98 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 1.5 RCVD_IN_SORBS_WEB RBL: SORBS: sender is an abusable web server * [62.216.204.219 listed in dnsbl.sorbs.net] * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([188.68.63.98]:57113) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbAED-000g8g-Ru (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:29:06 +0000 Received: from mors-relay-2501.netcup.net (localhost [127.0.0.1]) by mors-relay-2501.netcup.net (Postfix) with ESMTPS id 4CSZmw6jXDz6Bds; Fri, 6 Nov 2020 23:29:04 +0100 (CET) Received: from policy01-mors.netcup.net (unknown [46.38.225.53]) by mors-relay-2501.netcup.net (Postfix) with ESMTPS id 4CSZmw6K3fz554M; Fri, 6 Nov 2020 23:29:04 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy01-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.901 X-Spam-Level: X-Spam-Status: No, score=-2.901 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy01-mors.netcup.net (Postfix) with ESMTPS id 4CSZmw2q7Gz8tsj; Fri, 6 Nov 2020 23:29:03 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-219.dynamic.mnet-online.de [62.216.204.219]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 7475AA73A9; Fri, 6 Nov 2020 23:29:03 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.219) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: David Kretzmer , cl-isabelle-users at lists.cam.ac.uk References: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> <14d6178d-96af-b13d-9b94-379ed4e99655 at sketis.net> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <5d20c18e-b233-b2ba-52e8-d113b0190d2b at sketis.net> Date: Fri, 6 Nov 2020 23:29:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-PPP-Message-ID: <160470174372.16783.4460932936335378693 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: eIea2GZgwjrtzyTvuODI4w1p/aLpUEygmmf/pg0i2TgJ0hE= Subject: Re: [isabelle] Document preparation from within Isabelle/jEdit X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 22:29:06 -0000 On 06/11/2020 23:16, David Kretzmer wrote: > > thanks, it's still tight, but it does seem to just fit into main memory. > When I saw the -P option for `isabelle build` I had hoped that this > would somehow reuse the current session from Isabelle/jEdit, but this > does not seem to be the case. In Isabelle2020, "isabelle build -P" will make a batch-build with a PIDE session for that process --- it was somewhat experimental and unused back then. In Isabelle2021 (presumably Feb-2021), "isabelle build" will always do this and generally require more resources. So you might run into resource problems again. How much memory do you actually have? As a spin-off from this unification --- PIDE sessions always used in batch-mode and interaction --- it has now become more feasible to integrate document preparation into Isabelle/jEdit. I was considering to do it some weeks ago, but it is still a bit unclear if I manage for the coming release. Makarius From david.k at posteo.de Fri Nov 06 22:50:28 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:45896) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbAYu-0007us-Lo (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:50:28 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883134 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:58053) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbAYt-000sQw-MW (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 06 Nov 2020 22:50:28 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id DBA7E2400FB for ; Fri, 6 Nov 2020 23:50:26 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CSbFZ3FZ6z6tml; Fri, 6 Nov 2020 23:50:26 +0100 (CET) To: Makarius , cl-isabelle-users at lists.cam.ac.uk References: <8f94bde8-d362-c047-bb25-eb7c8c75c21a at posteo.de> <14d6178d-96af-b13d-9b94-379ed4e99655 at sketis.net> <5d20c18e-b233-b2ba-52e8-d113b0190d2b at sketis.net> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <53e8169c-c3fd-c752-a995-f0a93ff75aee at posteo.de> Date: Fri, 6 Nov 2020 23:50:31 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <5d20c18e-b233-b2ba-52e8-d113b0190d2b at sketis.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [isabelle] Document preparation from within Isabelle/jEdit X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 22:50:28 -0000 On 06.11.20 23:29, Makarius wrote:> In Isabelle2021 (presumably Feb-2021), "isabelle build" will always do this > and generally require more resources. > > So you might run into resource problems again. How much memory do you actually > have? I have 12GB in total, where roughly 2/3 are used when running `Build.build(...)` in the Scala console inside Isabelle/jEdit, and 1/3 are used by other applications. So if I close some of the other applications I still have some breathing room. > As a spin-off from this unification --- PIDE sessions always used in > batch-mode and interaction --- it has now become more feasible to integrate > document preparation into Isabelle/jEdit. I was considering to do it some > weeks ago, but it is still a bit unclear if I manage for the coming release. If that becomes possible it would definitely be great! Best regards, David From a.w.laarman at liacs.leidenuniv.nl Fri Nov 06 12:11:11 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:38158) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kb0aF-00088r-Fq (Exim 4.92.3) (return-path ); Fri, 06 Nov 2020 12:11:11 +0000 X-Cam-SpamDetails: score -0.9 from SpamAssassin-3.4.4-1883134 * -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low * trust * [145.0.1.21 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [145.0.1.21 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from out21-ams.mf.surf.net ([145.0.1.21]:54170) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kb0aE-0004ux-dh (Exim 4.92.3) (return-path ); Fri, 06 Nov 2020 12:11:11 +0000 Received: from out36-ams.mf.surf.net (out36-ams.mf.surf.net [145.0.1.36]) by outgoing1-ams.mf.surf.net (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id 0A6C5P4C023937 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Fri, 6 Nov 2020 13:05:25 +0100 Received: from SPMXM14.VUW.leidenuniv.nl (emcon14.campus.leidenuniv.nl [132.229.101.214]) by outgoing6-ams.mf.surf.net (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 0A6C4sC4111426 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Fri, 6 Nov 2020 13:04:55 +0100 Received: from SPMXM13.VUW.leidenuniv.nl (132.229.101.213) by SPMXM14.VUW.leidenuniv.nl (132.229.101.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Fri, 6 Nov 2020 13:04:54 +0100 Received: from SPMXM13.VUW.leidenuniv.nl ([fe80::c183:1fb6:5bce:815a]) by SPMXM13.VUW.leidenuniv.nl ([fe80::c183:1fb6:5bce:815a%11]) with mapi id 15.01.2106.002; Fri, 6 Nov 2020 13:04:54 +0100 From: "Laarman, A.W." To: "hol-info at lists.sourceforge.net" , "fmcad at utlists.utexas.edu" , "ecoop-info at ecoop.org" , "theory-a at listserv.nodak.edu" , "theorynt at listserv.nodak.edu" , "relmics-l at mcmaster.ca" , "stp at macs.hw.ac.uk" , "comm-theory at ieee.org" , "cphc-conf at jiscmail.ac.uk" , "caml-list at inria.fr" , "gdr.gpl at imag.fr" , "haskell at haskell.org" , "ifip-tc11 at dlist.uni-frankfurt.de" , "tccc-announce at comsoc.org" , "cistc-distribution at comsoc.org" , "cl-isabelle-users at lists.cam.ac.uk" , "cl-theory at lists.cam.ac.uk" , "itmatters at lab.imtlucca.it" , "ifip at ifip.or.at" , "ifip113 at unimi.it" , "grin-eventi at grin-informatica.it" , "seworld at sigsoft.org" , "theory-logic at cs.cmu.edu" , "agents at cs.umbc.edu" , "alp-diffusion at univ-lille1.fr" , "appsem at tcs.informatik.uni-muenchen.de" , "asci at twi.tudelft.nl" , "ast at cs.vu.nl" , "CABERNET-EVENTS at jiscmail.ac.uk" , "calendar at computer.org" , "categories at mta.ca" , "ccal at math.ist.utl.pt" , "cees-l at sbc.org.br" , "clp at comp.nus.edu.sg" , "complog at cs.nmsu.edu" , "compulognet-parimp at dia.fi.upm.es" , "conferences at computer.org" , "dbworld at cs.wisc.edu" , "dreamers at inf.ed.ac.uk" , "elsnet-list at let.uu.nl" , "events at fmeurope.org" , "fg-arc at lists.uni-paderborn.de" , "fmics at inrialpes.fr" , "FMnet at jiscmail.ac.uk" , "FMxSOCandBPM at cs.unibo.it" , "fm-announcements at lists.nasa.gov" , "gratra at upb.de" , "harning at sigchi.dk" , "ic.eatcs at di.unipi.it" , "infi at mpi-sb.mpg.de" , "kbcsl at uni-paderborn.de" , "las-lics at lists.tu-berlin.de" , "lfcs-interest at dcs.ed.ac.uk" , "linear at cs.stanford.edu" , "logic-list at helsinki.fi" , "logic at cs.stanford.edu" , "math.logik at gmx.net" , "maude-users at cs.uiuc.edu" , "metaprl-users at metaprl.org" , "mizar-forum at mizar.uwb.edu.pl" , "moca-announce at list.it.uu.se" , "mowgli-dev at cs.unibo.it" , "om-announce at openmath.org" , "petrinet at informatik.uni-hamburg.de" , "prin.cina at lab.imtlucca.it" , "procos at jiscmail.ac.uk" , "prog-lang at cs.uiuc.edu" , "proofpower at lemma-one.com" , "qest-announce at iti.uiuc.edu" , "resist at laas.fr" , "reus at informatik.uni-muenchen.de" , "safety-critical at cs.york.ac.uk" , "security at fosad.org" , "sicstus-users at sics.se" , "softtech at cs.uu.nl" , "tfsbc-l at sbc.org.br" , "theorem-provers at ai.mit.edu" , "theory at cl.cam.ac.uk" , "twelf-list at itu.dk" , "users-prolog at gnu.org" , "vki-list at dfki.de" , "webmaster at eatcs.org" , "zforum at comlab.ox.ac.uk" Thread-Topic: Call for Papers - SPIN 2021 Thread-Index: AQHWtDUJ4zyHxKg1KEGUQKDDC93qoQ== Date: Fri, 6 Nov 2020 12:04:54 +0000 Message-ID: Accept-Language: en-US, nl-NL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.17.132.10] MIME-Version: 1.0 X-Bayes-Prob: 0.9999 (Score 4.9, tokens from: leidenuniv-out:default, leidenuniv:default, base:default, @@RPTN) X-Spam-Score: 4.40 (****) [Tag at 7.00] HTML_MESSAGE:0.001, CC(NL:-0.5), Bayes(0.9999:4.9) X-CanIt-Geo: ip=145.0.1.36; country=NL; latitude=52.3824; longitude=4.8995; http://maps.google.com/maps?q=52.3824,4.8995&z=6 X-CanItPRO-Stream: leidenuniv-out:default (inherits from leidenuniv:default, base:default) X-Canit-Stats-ID: 0u3N05pLF - 705f6146cb27 - 20201106 X-Scanned-By: CanIt (www . roaringpenguin . com) X-Scanned-By: CanIt (www . roaringpenguin . com) X-Mailman-Approved-At: Sat, 07 Nov 2020 10:32:08 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Call for Papers - SPIN 2021 X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Nov 2020 12:11:11 -0000 KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDYWxsIGZvciBQYXBlcnMNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1BJTiAyMDIxDQoNCiAgICAgICAgICBJbnRlcm5hdGlvbmFsIFN5 bXBvc2l1bSBvbiBNb2RlbCBDaGVja2luZyBvZiBTb2Z0d2FyZQ0KDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSnVseSAxNC0xNSwgMjAyMQ0KDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBYXJodXMsIERlbm1hcmsNCg0KQ29uZmVyZW5jZSB3 ZWJzaXRlOiBodHRwczovL2NvbmYucmVzZWFyY2hyLm9yZy9ob21lL3NwaW4tMjAyMQ0KDQpTdWJt aXNzaW9uIGxpbms6IGh0dHBzOi8vZWFzeWNoYWlyLm9yZy9jb25mZXJlbmNlcy8/Y29uZj1zcGlu MjAyMTANCg0KDQpUaGUgMjd0aCBlZGl0aW9uIG9mIHRoZSBTUElOIHN5bXBvc2l1bSBhaW1zIGF0 IGJyaW5naW5nIHRvZ2V0aGVyIHJlc2VhcmNoZXJzIGFuZCBwcmFjdGl0aW9uZXJzIGludGVyZXN0 ZWQgaW4gYXV0b21hdGVkIHRvb2wtYmFzZWQgdGVjaG5pcXVlcyBmb3IgdGhlIGFuYWx5c2lzIG9m IHNvZnR3YXJlIGFzIHdlbGwgYXMgbW9kZWxzIG9mIHNvZnR3YXJlLCBmb3IgdGhlIHB1cnBvc2Ug b2YgdmVyaWZpY2F0aW9uIGFuZCB2YWxpZGF0aW9uLiBUaGUgc3ltcG9zaXVtIHNwZWNpZmljYWxs eSBmb2N1c2VzIG9uIGNvbmN1cnJlbnQgc29mdHdhcmUgYnV0IGRvZXMgbm90IGV4Y2x1ZGUgdGhl IGFuYWx5c2lzIG9mIHNlcXVlbnRpYWwgc29mdHdhcmUuIFN1Ym1pc3Npb25zIGFyZSBzb2xpY2l0 ZWQgb24gdGhlb3JldGljYWwgcmVzdWx0cywgbm92ZWwgYWxnb3JpdGhtcyAoY2xhc3NpY2FsIGFu ZCBxdWFudHVtKSwgdG9vbCBkZXZlbG9wbWVudCwgaW5jbHVkaW5nIGZvciBtb2Rlcm4gaGFyZHdh cmUgKHBhcmFsbGVsIGFuZCBkaXN0cmlidXRlZCksIGFuZCBlbXBpcmljYWwgZXZhbHVhdGlvbi4N Cg0KDQpUb3BpY3Mgb2YgaW50ZXJlc3QgaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bzoN CiogRm9ybWFsIHZlcmlmaWNhdGlvbiB0ZWNobmlxdWVzIGZvciBhdXRvbWF0ZWQgYW5hbHlzaXMg b2Ygc29mdHdhcmUNCiogRm9ybWFsIGFuYWx5c2lzIGZvciBtb2RlbGluZyBsYW5ndWFnZXMsIHN1 Y2ggYXMgVU1ML3N0YXRlIGNoYXJ0cw0KKiBGb3JtYWwgc3BlY2lmaWNhdGlvbiBsYW5ndWFnZXMs IHRlbXBvcmFsIGxvZ2ljLCBkZXNpZ24tYnktY29udHJhY3QNCiogTW9kZWwgY2hlY2tpbmcNCiog QXV0b21hdGVkIHRoZW9yZW0gcHJvdmluZywgaW5jbHVkaW5nIFNBVCBhbmQgU01UDQoqIFZlcmlm eWluZyBjb21waWxlcnMNCiogQWJzdHJhY3Rpb24gYW5kIHN5bWJvbGljIGV4ZWN1dGlvbiB0ZWNo bmlxdWVzDQoqIFN0YXRpYyBhbmFseXNpcyBhbmQgYWJzdHJhY3QgaW50ZXJwcmV0YXRpb24NCiog Q29tYmluYXRpb24gb2YgdmVyaWZpY2F0aW9uIHRlY2huaXF1ZXMNCiogTW9kdWxhciBhbmQgY29t cG9zaXRpb25hbCB2ZXJpZmljYXRpb24gdGVjaG5pcXVlcw0KKiBWZXJpZmljYXRpb24gb2YgdGlt ZWQgYW5kIHByb2JhYmlsaXN0aWMgc3lzdGVtcw0KKiBBdXRvbWF0ZWQgdGVzdGluZyB1c2luZyBh ZHZhbmNlZCBhbmFseXNpcyB0ZWNobmlxdWVzDQoqIENvbWJpbmF0aW9uIG9mIHN0YXRpYyBhbmQg ZHluYW1pYyBhbmFseXNlcw0KKiBEZXJpdmF0aW9uIG9mIHNwZWNpZmljYXRpb25zLCB0ZXN0IGNh c2VzLCBvciBvdGhlciB1c2VmdWwgbWF0ZXJpYWwgdmlhIGZvcm1hbCBhbmFseXNpcw0KKiBDYXNl IHN0dWRpZXMgb2YgaW50ZXJlc3Rpbmcgc3lzdGVtcyBvciB3aXRoIGludGVyZXN0aW5nIHJlc3Vs dHMNCiogRW5naW5lZXJpbmcgYW5kIGltcGxlbWVudGF0aW9uIG9mIHNvZnR3YXJlIHZlcmlmaWNh dGlvbiBhbmQgYW5hbHlzaXMgdG9vbHMNCiogQmVuY2htYXJrIGFuZCBjb21wYXJhdGl2ZSBzdHVk aWVzIGZvciBmb3JtYWwgdmVyaWZpY2F0aW9uIGFuZCBhbmFseXNpcyB0b29scw0KKiBGb3JtYWwg bWV0aG9kcyBvZiBlZHVjYXRpb24gYW5kIHRyYWluaW5nDQoqIEluc2lnaHRmdWwgc3VydmV5cyBv ciBoaXN0b3JpY2FsIGFjY291bnRzIG9uIHRvcGljcyBvZiByZWxldmFuY2UgdG8gdGhlIHN5bXBv c2l1bQ0KKiBSZWxldmFudCB0b29scyBhbmQgYWxnb3JpdGhtcyBmb3IgbW9kZXJuIGhhcmR3YXJl LCBlLmcuOiBwYXJhbGxlbCwgR1BVLCBUUFUsIEZQR0EsIGNsb3VkLCBhbmQgcXVhbnR1bQ0KDQoN CkltcG9ydGFudCBEYXRlcw0KDQpTdWJtaXNzaW9uOiAgICAgICAgTWFyY2ggMSwgMjAyMQ0KTm90 aWZpY2F0aW9uOiAgICAgICAgIE1heSAxNCwgMjAyMQ0KQ2FtZXJhLXJlYWR5OiAgICBKdW5lIDEs IDIwMjENCkNvbmZlcmVuY2U6ICAgICAgICBKdWx5IDE0LTE1LCAyMDIxDQoNCg0KU3VibWlzc2lv biBHdWlkZWxpbmVzDQoNClRoZSBwcm9jZWVkaW5ncyBvZiBTUElOIDIwMjAgd2lsbCBiZSBwdWJs aXNoZWQgaW4gU3ByaW5nZXIncyBMZWN0dXJlIE5vdGVzIGluIENvbXB1dGVyIFNjaWVuY2Ugc2Vy aWVzLiBTdWJtaXNzaW9ucyBzaG91bGQgYWRoZXJlIHRvIHRoZSBMTkNTIGZvcm1hdDogTE5DUyBJ bmZvcm1hdGlvbiBmb3IgQXV0aG9ycw0KDQpXaXRoIHRoZSBleGNlcHRpb24gb2Ygc3VydmV5IGFu ZCBoaXN0b3J5IHBhcGVycywgdGhlIHBhcGVycyBzaG91bGQgY29udGFpbiBvcmlnaW5hbCB3b3Jr IHRoYXQgaGFzIG5vdCBiZWVuIHN1Ym1pdHRlZCBvciBhY2NlcHRlZCBmb3IgcHVibGljYXRpb24g ZWxzZXdoZXJlLiBXZSBhcmUgc29saWNpdGluZyB0aHJlZSBjYXRlZ29yaWVzIG9mIHBhcGVyczoN Cg0KKiAgRnVsbCBSZXNlYXJjaCAvIFRvb2wgUGFwZXJzIGRlc2NyaWJpbmcgZnVsbHkgZGV2ZWxv cGVkIHdvcmsgYW5kIGNvbXBsZXRlIHJlc3VsdHMgKDE2IHBhZ2VzIC0gcmVmZXJlbmNlcyBhcmUg bm90IGluY2x1ZGVkIGluIHRoaXMgbGltaXQpOw0KKiAgU2hvcnQgUGFwZXJzIHByZXNlbnRpbmcg dG9vbHMsIHRlY2hub2xvZ3ksIGV4cGVyaWVuY2VzIHdpdGggbGVzc29ucyBsZWFybmVkLCBuZXcg aWRlYXMsIHdvcmsgaW4gcHJvZ3Jlc3Mgd2l0aCBwcmVsaW1pbmFyeSByZXN1bHRzLCBhbmQgbm92 ZWwgY29udHJpYnV0aW9ucyB0byBmb3JtYWwgbWV0aG9kcyAoNiBwYWdlcyAtIHJlZmVyZW5jZXMg YXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIGxpbWl0KS4NCiogIFRvb2wgRGVtbyBQYXBlcnMgcHJl c2VudGluZyB0aGUgZm91bmRhdGlvbnMsIGNhcGFiaWxpdGllcywgYXBwbGljYXRpb24gZG9tYWlu cyBhbmQgcmVsZXZhbnQgZXhhbXBsZXMgdXNpbmcgdGhlIHRvb2xzLCB3aXRoIGEgY2xlYXIgZGVz Y3JpcHRpb24gb2Ygd2hhdCBpcyBleHBlY3RlZCB0byBiZSBzaG93biBpbiBhIGxpdmUgZGVtb25z dHJhdGlvbiAoNCBwYWdlcyB0byBkZXNjcmliZSB0aGUgdG9vbCBmb3VuZGF0aW9ucywgZmVhdHVy ZXMgYW5kIHVzZSBleGFtcGxlcywgcGx1cyBhbiBhcHBlbmRpeCBleHBsYWluaW5nIHRoZSBjb250 ZW50IG9mIHRoZSBkZW1vKS4NClBhcGVycyBzaG91bGQgYmUgc3VibWl0dGVkIHZpYSB0aGUgRWFz eUNoYWlyIFNQSU4gMjAyMSBzdWJtaXNzaW9uIHdlYnNpdGU6IGh0dHBzOi8vZWFzeWNoYWlyLm9y Zy9jb25mZXJlbmNlcy8/Y29uZj1zcGluMjAyMTANCkFsbCBwYXBlcnMgdGhhdCBjb25mb3JtIHRv IHN1Ym1pc3Npb24gZ3VpZGVsaW5lcyB3aWxsIGJlIHBlZXItcmV2aWV3ZWQgYnkgbWVtYmVycyBv ZiB0aGUgcHJvZ3JhbSBjb21taXR0ZWUuIFN1Ym1pc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIG9u IHRoZSBiYXNpcyBvZiBvcmlnaW5hbGl0eSwgdGhlIGltcG9ydGFuY2Ugb2YgY29udHJpYnV0aW9u LCBzb3VuZG5lc3MsIGV2YWx1YXRpb24sIHF1YWxpdHkgb2YgcHJlc2VudGF0aW9uLCBhbmQgYXBw cm9wcmlhdGUgY29tcGFyaXNvbiB0byByZWxhdGVkIHdvcmsuDQoNCkF0IGxlYXN0IG9uZSBhdXRo b3Igb2YgZWFjaCBhY2NlcHRlZCBwYXBlciBtdXN0IGF0dGVuZCB0aGUgc3ltcG9zaXVtIGFuZCBw cmVzZW50IHRoZSBwYXBlci4NCg0KDQpTVFRUDQoNCkEgc2VsZWN0aW9uIG9mIHBhcGVycyB3aWxs IGJlIGludml0ZWQgdG8gYSBzcGVjaWFsIGlzc3VlIG9mIHRoZSBJbnRlcm5hdGlvbmFsIEpvdXJu YWwgb24gU29mdHdhcmUgVG9vbHMgZm9yIFRlY2hub2xvZ3kgVHJhbnNmZXIgKFNUVFQpLg0KDQoN ClByb2dyYW0gQ29tbWl0dGVlIE1lbWJlcnMNCg0KSmnFmcOtIEJhcm5hdCwgTWFzYXJ5ayBVbml2 ZXJzaXR5DQpNYXVyaWNlIEguIHRlciBCZWVrLCBJU1RJLUNOUg0KVG9tIHZhbiBEaWprLCBVbml2 ZXJzaXR5IG9mIFR3ZW50ZQ0KVmVkcmFuIER1bmprbywgTGVpZGVuIFVuaXZlcnNpdHkNClN0ZWZh biBFZGVsa2FtcCwgVW5pdmVyc2l0eSBvZiBLb2JsZW56DQpHcmlnb3J5IEZlZHl1a292aWNoLCBG bG9yaWRhIFN0YXRlIFVuaXZlcnNpdHkNCkhlbnJpIEhhbnNlbiwgVGFtcGVyZSBVbml2ZXJzaXR5 IG9mIFRlY2hub2xvZ3kNCkFybmQgSGFydG1hbm5zLCBVbml2ZXJzaXR5IG9mIFR3ZW50ZQ0KR2Vy YXJkIEhvbHptYW5uLCBOaW1ibGUgcmVzZWFyY2gNCkFudHRpIEh5dsOkcmluZW4sIFVuaXZlcnNp dMOgIGRlbGxhIFN2aXp6ZXJhIGl0YWxpYW5hDQpOaWxzIEphbnNlbiwgUmFkYm91ZCBVbml2ZXJz aXR5IE5pam1lZ2VuDQpQZXRlciBHasO4bCBKZW5zZW4sIEFhbGJvcmcgVW5pdmVyc2l0eQ0KU3Vu Zy1TaGlrIEpvbmdtYW5zLCBPcGVuIFVuaXZlcnNpdHkgTkwsIENXSQ0KSmVyb2VuIEtlaXJlbiwg RWluZGhvdmVuIFVuaXZlcnNpdHkgb2YgVGVjaG5vbG9neQ0KSWdvciBLb25ub3YsIEluZm9ybWFs IFN5c3RlbXMgSW5jDQpBbGJlcnRvIExsdWNoIExhZnVlbnRlLCBUZWNobmljYWwgVW5pdmVyc2l0 eSBvZiBEZW5tYXJrDQpLdWxkZWVwIFMuIE1lZWwsIE5hdGlvbmFsIFVuaXZlcnNpdHkgb2YgU2lu Z2Fwb3JlDQpBbGljZSBNaWxsZXIsIFVuaXZlcnNpdHkgb2YgR2xhc2dvdw0KU2VyZ2lvIE1vdmVy LCDDiWNvbGUgUG9seXRlY2huaXF1ZQ0KUmFqYWdvcGFsIE5hZ2FyYWphbiwgTWlkZGxlc2V4IFVu aXZlcnNpdHkNCkRvcm9uIFBlbGVkLCBCYXIgSWxhbiBVbml2ZXJzaXR5DQpUYXRqYW5hIFBldHJv diwgVW5pdmVyc2l0eSBvZiBLb25zdGFueg0KSmFjbyB2YW4gZGUgUG9sLCBBYXJodXMgVW5pdmVy c2l0eQ0KU3RlcGhlbiBGLiBTaWVnZWwsIFVuaXZlcnNpdHkgb2YgRGVsYXdhcmUNCkNhcnN0ZW4g U2lueiwgS2FybHNydWhlIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5DQpKaXJpIFNyYmEsIEFhbGJv cmcgVW5pdmVyc2l0eQ0KTWljaGFlbCBUYXV0c2NobmlnLCBBbWF6b24gV2ViIFNlcnZpY2VzDQpZ YW5uIFRoaWVycnktTWllZywgU29yYm9ubmUgVW5pdmVyc2l0eSAtIExJUDYNCllha2lyIFZpemVs LCBUZWNobmlvbg0KR2VvcmcgV2Vpc3NlbmJhY2hlciwgVmllbm5hIFVuaXZlcnNpdHkgb2YgVGVj aG5vbG9neQ0KQW50b24gV2lqcywgRWluZGhvdmVuIFVuaXZlcnNpdHkgb2YgVGVjaG5vbG9neQ0K DQoNCk9yZ2FuaXppbmcgY29tbWl0dGVlDQoNCkFsZm9ucyBMYWFybWFuLCBMZWlkZW4gVW5pdmVy c2l0eQ0KQW5hIFNva29sb3ZhLCBVbml2ZXJzaXR5IG9mIFNhbHpidXJnDQoNCg0KVmVudWUNCg0K RXN0YWJsaXNoZWQgaW4gMTkyOCwgQWFyaHVzIFVuaXZlcnNpdHkgaGFzIHNpbmNlIGRldmVsb3Bl ZCBpbnRvIGEgbWFqb3IgRGFuaXNoIHVuaXZlcnNpdHkgd2l0aCBhIHN0cm9uZyBpbnRlcm5hdGlv bmFsIHJlcHV0YXRpb24gd2l0aCBhcHByb3hpbWF0ZWx5IDM4LDAwMCBzdHVkZW50cyBhbmQgOCww MDAgbWVtYmVycyBvZiBzdGFmZi4gTG9jYXRlZCBpbiBiZWF1dGlmdWwgbmF0dXJlIGFuZCB3aWxk bGlmZSBhcmVhcywgQWFyaHVzIGlzIHRoZSBzZWNvbmQgbGFyZ2VzdCBjaXR5IG9mIERlbm1hcmss IHdpdGggYSByaWNoIHRyYWRlIGFuZCBhbmNpZW50IFZpa2luZyBoaXN0b3J5Lg0KDQoNCkNvbnRh Y3QNCg0KQWxsIHF1ZXN0aW9ucyBhYm91dCBzdWJtaXNzaW9ucyBzaG91bGQgYmUgZW1haWxlZCB0 byBhLncubGFhcm1hbkBsaWFjcy5sZWlkZW51bml2Lm5sPG1haWx0bzphLncubGFhcm1hbkBsaWFj cy5sZWlkZW51bml2Lm5sPi4NCg== From makarius at sketis.net Sat Nov 07 16:31:18 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:40738) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbR7W-000309-5X (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 16:31:18 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [194.59.206.189 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:54443) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbR7R-000yoB-Qn (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 16:31:18 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kbR7Q-0000NM-71 for isabelle-users at cl.cam.ac.uk; Sat, 07 Nov 2020 16:31:12 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [194.59.206.189 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([194.59.206.189]:51643) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbR7K-000GIw-Ju (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 07 Nov 2020 16:31:12 +0000 Received: from relay02-mors.netcup.net (localhost [127.0.0.1]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CT2nP0Gd6z4Dg0; Sat, 7 Nov 2020 17:31:05 +0100 (CET) Received: from policy02-mors.netcup.net (unknown [46.38.225.53]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CT2nN70b6z7tGF; Sat, 7 Nov 2020 17:31:04 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy02-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy02-mors.netcup.net (Postfix) with ESMTPS id 4CT2nN2TF4z8ssl; Sat, 7 Nov 2020 17:31:03 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-92.dynamic.mnet-online.de [62.216.204.92]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 17DEAA20EE; Sat, 7 Nov 2020 17:31:03 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.92) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: "Devant, Pascal" , "isabelle-users at cl.cam.ac.uk" References: From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= mQINBFcrF+4BEADMcXMnu3XHg6bRsGe3tajAHqvm89+ecn/Y0WhjI2FplhkZs1LwM+ZA9eXh hiBrC/yX0FJ+qjzVIfm66CX4nzVG1f8qwaervMpvpA+gbhtQiXc0t+LDcqV+5cdtpKplPHSu oW+KzJKyCdkDB5fYMOzuaXQwYi12YAEQH2r6K7Q7Np+k82Xli1pWe+Tha/BH0pKJ5Q01aPep ASrNW9F+moX7C0fxWl65LiXGmF0UJep6fqKruhy8oNF4p6I2oZhktvaR/x6tkL2PkT3r+xUS 6g5i3BOjfwhoGY57nsioeK+8VFvdRH5DK4CbrTgDl7ddcrEeENrfpDiPLs/afVbe/T9oDXmJ OJAO4WMpfZNiFhx9SSVTHohw29Fyzn0N1UQGjPqAY1jg32DAxlnMQ0co/KabEFAcoQsW1/6U ZGiNxYVIyEKGrnSY4WuLuNC8CmU1RaYSdTk1y9tYdxufM9lH9ynzJwac6FdalOOxMR2G9JG8 L9/dk3ytlP6DVwkPBSCpJaTkTyMp1wSkF1oK/BDu5xKUQh0zvvLCuZ16hiKRBBSjpVExXRZC u+NC1Y4wqm1HOH7HBwgZ1Hv9S/EPmI9iwgcW0SpDJqPf2Cm7oFMZsZ5Dbs6/nOQoe4Zegy45 ymqDRlIekP7zj+vOoR80XAYfmAH5DElJHldcjmgLBMdpvvqGZwARAQABtB5NYWthcml1cyA8 bWFrYXJpdXNAc2tldGlzLm5ldD6JAj0EEwEIACcFAlcrF+4CGyMFCQlmAYAFCwkIBwIGFQgJ CgsCBBYCAwECHgECF4AACgkQ89KUEoG/TbiVrw/9FjEBgh2CB7Qof7Y4k0yc7j+x/A0Wmkc0 iwP5jaKJuxRv1JJT8CFqm392+/cdh3EkRUk/UWD+hpNndYJwxZltrEpKVqFAWoVOg3ZJ4cuI MYhlp4tk/T0KSl/gKT16dc6uJ7M/FzW0zv50vjFtAdianEDuqLXHKaGDUwWoOTDly0gdZ7aH /eNby6ONHUSJMdTNOErh2N+uESM4aZqUuuL/dTb6xiVzCpV5saT8EMakoazUd7QhoBaHvqfs BL7DEmvcTtA79GF3ufHrF/UndIcx8aMznZ2PGNjmy5seDCoKX0EYHdLam8vgo/TuU4dRw5Zn 6E/ouyNOliXT1Mn+SomeBSXTR5MXRq4TQ9MKVGiP0Yl+7GJQU0JFtDC1ZZEOyjIiwGWOhbUR pYujVm8C1iQ7NcEn2BqOAmRML6IR6+En4RLbgCNsBNXlmTPRJOaI+iV6DZzg3x9zcaDGhoYt jkBTEFpb0F3jU9yuaEU5401NV34fUxg8tqXs0R9CKinO7kQ8N+RDjyyY8k2KZiDYBJ6r+OK0 d7TaTj7F9tmpAu2pmQ8lxOKjDZIwlbGTsC4lxISmcPzBGTKXja5nakcWYx/lZ4vje0WZ12HN amnD1weakFixRYit0d+Kz7cuj684NSbhwC0oN2t9R06Nfq8UPEWRKEitCly0OtRgio8zVZ/L eAC5Ag0EVysX7gEQAKs5NVOvYkE/r8KLsJ8/L/9eulpJDOFilZ9fyuqii7t1UpHZLb58QghW JM+IB2GSGsB+pOi6Je7hmwxcVdXYbGlYZ4Btqqw48/XptfbNZ8alCk6AqoVFP4MbYxij/Qqv f/Yw6GR0p1RIC/W4GF/JgDDwDFEiMT6Pv6dpM8acdNFCERDZdoOJiC+XJRwy5lZ2g5FOJkT9 rVI9EnA7mBXLLjPOMUp2/eZxN6gKOZzI3ej9vixg3adWR2yfKPgacHP/ujnVfITOl0OyLE5f zIHq85dEV4zW6Mpx7+Um0tdkwlUVMaW2nQ1bcwejgVAuD/MLSF/lSs3N5D1ctw5QUemYh7/e 2dC12UJuFDFxNPzcltQTlkBCVWV1D0SjScDHdlF6HhzpZOlt52/rwTn5GHtY4nwAL4IJ+Yvl WX8YKmyILH4Ai8c/N2IVRERQ2qorWFlsQnqrXV+hXf8aUwjc/pq4K9rsWxvle3TpeZfoBefU /s1PEX0SepZFAqAXHlQ9DZPsdPDo9EFK695G5w4nf03EhE9TV1MKGUuc1XJ6f1ZLaxu0TwTA 6qYtKIyBcU0Yn61S2Kh7Dgb5LdLV8nfl71+n/xIt2IWH5UJ9YuwEgGEP0c6ImnAUZ+nRodFI 0RwtCWlRkSJWtQln1vcphrz8PjWZH6e/nWnceXR/Al5P0WexQgtvABEBAAGJAiUEGAEIAA8F AlcrF+4CGwwFCQlmAYAACgkQ89KUEoG/Tbh7VQ/9Fc4bdwJYc3jH/LiuXv6uMg50Cv6lg2NT bL9DClWGNiYzejfM2A4c5K+GRUXhyD7S9U203MOv3z7uTbtyQL8XVolNnQlRIkB00f8nJ2sw HMXx/hemjXBvtlneq+vrMORJexldXUMFq19ZZrvj0zZL+pUnGFqt+IWTEE5GpL7wu20Demaj jYyGyKcDZyJOWZcl4e45Yn3hl0EI2xVmVh7ZinVsb3+nqgcltFy4Jt+drezwV2EiLGJHfGsT jEQb3C9VpneU4Jo+hHtfqLK4Q8+WlIOzSfyvwbabxrhyqg7i11fu8yckNW3dCURPYigV07HK 4dN0zhj53M0Q3eTwegJRPJb8XoLDcSdbsaU2HIShlGDKmzS9KL4JzLikQ9dXROC4cae3jRKH aexFi4B55Ab6FxIfXj09wUCO6Nm0owDfIBDMgiywvi2Rb2etCjBgRbSj71S2nntd9ZitoYvE yKirLkWmJRbp3ln8cHi8Uc/jr1cDPVRWuLUN0uceMj5+AR+NZVakcNUHWJCinMMjacho0SyP QmocdU8pzzupreaVWruqaSzqcpWBPwrE5OxEtJ+OyIBjKmRJ5eptjh4rKgNaVnKjhqbvr+Yz pUAgPp38jjf4HJghUGIfWArKNelKJEJOYk94DAbmT67LgqEdZ0yaA2BCHmreN727WIzV9vkX NMc= Message-ID: Date: Sat, 7 Nov 2020 17:31:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <160476666335.13714.6032954080997094669 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: tyftw6dp0JEI11+su8c4AHd4OUO2JEdqYpJFaJ0D6OLqmAU= X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Improvement suggestion for isabelle process X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 16:31:18 -0000 On 10/10/2020 00:43, Devant, Pascal wrote: > Lately I have been working on a script that automatically runs sledgehammer on unproven lemmas in a given theory. The subcommand 'isabelle process' seemed to be sufficient for this purpose. And this is true if the only goal is to find proofs. However, when it comes to evaluating search times you quickly run into a problem with this approach because 'isabelle process' only returns the output of the underlaying poly process after its' termination. > > This "output-after-termination" behaviour has two unpleasant effects: > 1. There is no way to measure the actual search time of specific provers. > 2. A prover might find a proof fairly quick (e.g. after a few seconds) but the user will only get to see the proof ones all other provers have terminated. Since for most non-trivial lemmas there is almost always a prover that will run into a timeout. Hence the whole process is blocked for the set sledgehammer timeout. This old thread is still open, but it is about potential refinements for the next release, so an answer now is still on time. > After some code inspection, I backtracked the described behaviour to the scala definition of 'result' in "Pure/System/bash.scala". In this definition Isabelle is waiting synchronously for the termination of the poly process by waiting for the result of "File.read_lines". I was at first confused by the proposed changes to Process.result, because the existing operation already supports incremental output via progress_stdout/progress_stderr. So here is my minor change to "isabelle process" for incremental output on stdout/stderr (separately): https://isabelle-dev.sketis.net/rISABELLE6345cce0e576 > Is there a special resason why this whole procedure is not made async in the current implementation of Isabelle? Historically, we used to have sophisticated interaction between the prover process and Proof General / Emacs: it worked to some extent, but was more delicate and fragile than one would hope for. So with the emergence of Isabelle/PIDE process management and interaction independently of stdin/stdout/stderr, I downgraded old-fashioned processes to become atomic functions (non-interactive). Only gradually, I added things like progress_stdout later on. Depending what you are actually trying to do, the above incremental stdout/stderr stream might be OK for the purpose. More ambitious applications could work better with "isabelle server" and and its explicit JSON message protocol: but that is some extra complexity. You could also try to implement your tool directly in Isabelle/Scala and use the underlying Headless.Session directly, without the extra JSON non-sense. There is quite some documentation on the server in the "system" manual, chapter 4. For its Headless.Session, the "isabelle dump" tool may serve as canonical example. Note that you can browse Isabelle/Scala sources easily with IntelliJ IDEA, using the project generated by "isabelle scala_project" (see "system" manual section 5.5). Makarius From mikhail.chekhov.w at gmail.com Sat Nov 07 18:09:34 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:38150) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbSec-000626-29 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 18:09:34 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.45 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.45 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f45.google.com ([209.85.166.45]:45963) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kbSea-000SPf-eD (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 18:09:34 +0000 Received: by mail-io1-f45.google.com with SMTP id u21so5594324iol.12 for ; Sat, 07 Nov 2020 10:09:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=brrcp3DCGXLeoyaoD2JhKOoMUWUNXlHQ9c1l9Xun4pM=; b=N1BmGd0qI0ckMIIyLM+7GstDytkzFNFl2UwMJ/DgXJBlr+yVKB+Wx8K2odB3YMV7PV yiCdMxXBpGvSTt469ZXY5RqJbXFxwg2xRxGAvvm7hx78lXBEvlGUqhZxUUHeAFEqlpZ2 NdgEj0qTyKKtMVPV1/1ZSvvcBYfs71Ql3dvZjXznSHALiqEHHQnSA3JnKck6jz6IRRSl ZKWBh9Y/++qfNoEJTkIWbSlQ72ROf75DWT1H1XEraC0C7ork2HAtO51GUp+l/rDRalzq L3MhC53VUeCUSRYN+bDavYheV/MEm6TAc9tVlgNbq32JMMezE8vdHwaoXThvpfBWb0Ko aCZA== X-Gm-Message-State: AOAM530uvEcPh0SOVqz+FFsktPVcn+xKGkPEktmzoFqZXx4Trzws2iZR 0zD4f3mr3KKwqPkNTJ4gDH5r9D8iannx4XmoVF3w3TWEbto= X-Google-Smtp-Source: ABdhPJxuGW1lIrpcKRJXyzxq+VFpFOBPtcNFKQz0yPqTUpQH7CD5CDMz8LU+6Sr75KTywpiDQUnlenM2FfaiZ+ilkoQ= X-Received: by 2002:a6b:4e0b:: with SMTP id c11mr5442486iob.125.1604772571206; Sat, 07 Nov 2020 10:09:31 -0800 (PST) MIME-Version: 1.0 From: Mikhail Chekhov Date: Sat, 7 Nov 2020 20:09:20 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Definitional axioms in Isabelle/ML? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 18:09:34 -0000 Dear All, I would like to understand if it is possible to recover the original definitional axioms (i.e. the ones of the form c=E2=89=A1t) in the form of = a theorem for any given constant by the end-users of Isabelle/ML. If so, how can this be achieved? If not, what are the reasons for not allowing this? Kind Regards, Mikhail Chekhov From mikhail.chekhov.w at gmail.com Sat Nov 07 19:11:26 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:44624) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbTcU-0007sD-Hr (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 19:11:26 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.51 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.51 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f51.google.com ([209.85.166.51]:42108) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kbTcS-000caj-dq (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 19:11:26 +0000 Received: by mail-io1-f51.google.com with SMTP id k21so5721315ioa.9 for ; Sat, 07 Nov 2020 11:11:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ACNQb853Zo9qZ49bYDYNx7bO60oMWRo8h1IEFPqEzEM=; b=ZsoaBUx3c+zjnvoasw3AnyNKpjGZWVsavS2BOvDnoqYTiumUq9tUryVoBYtzo0v6kp M3in05cK4H2e0L4CLMJMpuVMLlog7+xTMyG79NGT4GkBhg7MLj7GQ/H0dGK8qMg/wcRy PAr1GWVIvsM96e6FMmzZOZyC3IfQIyoeB7Vc7wnMgX5Oaf1iI56NrDnYP7WpyqnUSPGD NPFfEfoR9+MY9lHI0PLvK9Io7bYmzGcvPESufgS1Z1B1ril/SbDrgPpYz9pHSoyAVS1F pRu6C7qhExwI56vd4seGBTR88On+2uvpC2egFUxbiVDSm8Z/wKtBtWYSLjksDUi5NY9u nxeA== X-Gm-Message-State: AOAM5304U2FY65prOhX0UAtl1JJqGmlKzejFJ59O+AfgtMXxspZyhFn2 2gezWLmr/WnwrQ6fRd5Sn//cHRKQ27o252qtk6ezxiSl3LA= X-Google-Smtp-Source: ABdhPJxu6jXKh0zuWqi+di4xKtHrVHvPvZM/WBMpPJfw4o6p3Ht0lXm44o3fgVifC3Myk5ccwhHJa0pjiXaB9wIpArY= X-Received: by 2002:a6b:6a0b:: with SMTP id x11mr5364267iog.205.1604776273122; Sat, 07 Nov 2020 11:11:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Mikhail Chekhov Date: Sat, 7 Nov 2020 21:11:01 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: Re: [isabelle] Definitional axioms in Isabelle/ML? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 19:11:26 -0000 Dear All, Please accept my apologies for a premature question. I found a way to do it: it can be done using the function Thm.axiom, if one knows the name of the definitional axiom (which is also sufficiently easy to obtain). Kind Regards, Mikhail Chekhov On Sat, Nov 7, 2020 at 8:09 PM Mikhail Chekhov wrote: > Dear All, > > I would like to understand if it is possible to recover the original > definitional axioms (i.e. the ones of the form c=E2=89=A1t) in the form o= f a > theorem for any given constant by the end-users of Isabelle/ML. If so, ho= w > can this be achieved? If not, what are the reasons for not allowing this? > > Kind Regards, > Mikhail Chekhov > From makarius at sketis.net Sat Nov 07 21:09:37 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:43244) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbVSr-0002vr-Bs (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 21:09:37 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [46.38.247.119 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta0.cl.cam.ac.uk ([128.232.25.20]:32983) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbVSq-000KLa-SM (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 21:09:37 +0000 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]) by mta0.cl.cam.ac.uk with esmtp (Exim 4.93) (envelope-from ) id 1kbVSq-001K5Q-A2 for isabelle-users at cl.cam.ac.uk; Sat, 07 Nov 2020 21:09:36 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [46.38.247.119 listed in list.dnswl.dnsbl.ja.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([46.38.247.119]:42137) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbVSp-000lQt-eK (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 07 Nov 2020 21:09:36 +0000 Received: from mors-relay-8404.netcup.net (localhost [127.0.0.1]) by mors-relay-8404.netcup.net (Postfix) with ESMTPS id 4CT8yk5PDtz8Pr3; Sat, 7 Nov 2020 22:09:34 +0100 (CET) Received: from policy02-mors.netcup.net (unknown [46.38.225.53]) by mors-relay-8404.netcup.net (Postfix) with ESMTPS id 4CT8yk51Svz4xQh; Sat, 7 Nov 2020 22:09:34 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy02-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.901 X-Spam-Level: X-Spam-Status: No, score=-2.901 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy02-mors.netcup.net (Postfix) with ESMTPS id 4CT8yk0yMwz8sXD; Sat, 7 Nov 2020 22:09:33 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-92.dynamic.mnet-online.de [62.216.204.92]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 71C67A66DA; Sat, 7 Nov 2020 22:09:33 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.92) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: Mikhail Mandrykin , isabelle-users References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> Date: Sat, 7 Nov 2020 22:09:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-PPP-Message-ID: <160478337367.19942.9172085680370166253 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: MSGNDzGYU7FbRYnh2cWcvGk0hWuG7moN5kOIrOTSIrKTRtM= X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 21:09:37 -0000 On 17/09/2020 19:00, Mikhail Mandrykin wrote: > > Recently, I experimented with implementation of Isabelle proof methods, > commands and proof elements to learn Isabelle internals more deeply as we plan > to implement Isabelle commands and methods for our program verification > framework. At some point, I encountered quite puzzling behavior of commands > `done`, `by` and `qed` with respect to implicit exporting of the resulting > goal state (actually, the protected initial statement as a theorem) into the > outer context. I attached an example exposing the various behaviors. The > question is whether these various differences in behavior are expected, > especially the situation when the proof is successfully finished inside jEdit, > but then fails during build by `isabelle build` command. > I understand that> normally Isabelle methods do not introduce local assumptions or fixed > variables, so this seems not really critical (no intent to actually implement > such methods for the users), but it would help with the general understanding > to know whether this is totally unspecified to introduce those assumptions or > is merely a pragmatic constraint Yes, proof methods cannot extend the logical context and expect to work properly. There are certain principles how proof contexts are constructed/deconstructed by the Isar language, according to its structure. Some of this is explained in the "implementation" manual, but the general principle of survival is to do this in the "usual way", e.g. by looking at existing implementations in the sources. Your theory "Bug" looks very non-standard in various respects. Can you say, what you are actually trying to do? Makarius From makarius at sketis.net Sat Nov 07 21:14:18 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:41220) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbVXO-00033y-KK (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 21:14:18 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [185.244.194.184 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([185.244.194.184]:37243) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbVXO-000z07-jJ (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 21:14:18 +0000 Received: from relay01-mors.netcup.net (localhost [127.0.0.1]) by relay01-mors.netcup.net (Postfix) with ESMTPS id 4CT9490G2qz8sgX; Sat, 7 Nov 2020 22:14:17 +0100 (CET) Received: from policy02-mors.netcup.net (unknown [46.38.225.53]) by relay01-mors.netcup.net (Postfix) with ESMTPS id 4CT9486zjNz86w6; Sat, 7 Nov 2020 22:14:16 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy02-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.901 X-Spam-Level: X-Spam-Status: No, score=-2.901 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy02-mors.netcup.net (Postfix) with ESMTPS id 4CT9482Gyhz8sWT; Sat, 7 Nov 2020 22:14:16 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-92.dynamic.mnet-online.de [62.216.204.92]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 88E75A18D1; Sat, 7 Nov 2020 22:14:15 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.92) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: stark at cs.stonybrook.edu, cl-isabelle-users at lists.cam.ac.uk References: <24bf53b0-8bfa-85b4-d2e3-e4c4ae3b421f at starkeffect.com> <4a511749-3a95-f037-ab4a-fa201818b2b0 at starkeffect.com> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <76813efd-7d88-45be-9b1f-b7c863cd6e6f at sketis.net> Date: Sat, 7 Nov 2020 22:14:15 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <4a511749-3a95-f037-ab4a-fa201818b2b0 at starkeffect.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-PPP-Message-ID: <160478365579.21237.9279612910221476782 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: 96A1e/KFYUgx9f1DSZ8fU4TdtqyxB5LiieYYy7qzz52/7Z8= Subject: Re: [isabelle] How do I set --maxheap greater than 16G on Linux? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 21:14:18 -0000 On 10/10/2020 18:57, Eugene W. Stark wrote: > After reading various of the Isabelle settings and start-up scripts, and also some trial and error, > I found that the following in my settings file produced the behavior I wanted: > > ML_SYSTEM="polyml-5.8.1-20200228" > ML_HOME=$ISABELLE_HOME/contrib/$ML_SYSTEM/x86_64-linux > ML_OPTIONS="--maxheap 20G" > ML_PLATFORM="x86_64-linux" > > I don't have any idea whether this is the "right" way of doing it, though. Did it work out for you? 20G for x86_64 is not so much, compared to 16G for x86_64_32 (where everything is more compact). Note that the minimum setup works like this: * $ISABELLE_HOME_USER/etc/settings: ML_OPTIONS="--maxheap 20G" * $ISABELLE_HOME_USER/etc/preferences: ML_system_64 = true If you have Isabelle/jEdit running, you can edit ML_system_64 in the Plugin Options dialog; on shutdown the preferences will be saved/overwritten. Makarius From isabelle-users at starkeffect.com Sat Nov 07 22:14:28 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:37972) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbWTc-0004iv-Mw (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:14:28 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from cloud2.starkeffect.com ([45.55.83.152]:57468) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtp id 1kbWTc-000Odc-Je (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:14:28 +0000 Received: from home.starkeffect.com (localhost [127.0.0.1]) by cloud2.starkeffect.com (Postfix) with ESMTPS id 82D253F2F5; Sat, 7 Nov 2020 22:14:21 +0000 (UTC) To: cl-isabelle-users at lists.cam.ac.uk References: <24bf53b0-8bfa-85b4-d2e3-e4c4ae3b421f at starkeffect.com> <4a511749-3a95-f037-ab4a-fa201818b2b0 at starkeffect.com> <76813efd-7d88-45be-9b1f-b7c863cd6e6f at sketis.net> From: "Eugene W. Stark" Message-ID: <63192923-8d6d-004b-bf31-5e820e4fa143 at starkeffect.com> Date: Sat, 7 Nov 2020 17:14:21 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <76813efd-7d88-45be-9b1f-b7c863cd6e6f at sketis.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Cc: Makarius Subject: Re: [isabelle] How do I set --maxheap greater than 16G on Linux? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list Reply-To: stark at cs.stonybrook.edu List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 22:14:28 -0000 Thanks for the reply. Yes, it did work out. I was able to process the session in a reasonable amount of time with a heap limit of 20-22G. The 16GB heap under x86_64_32 was no longer cutting the mustard. I replaced my existing 2x4GB DRAM with 2x8GB, to get a total of 32GB, which maxes out this motherboard. It is a stretch to run Isabelle/JEdit on this system with a heap limit of more than about 22GB, because Java takes a few GB itself and thrashing starts to set in when the heap reaches the maximum. I did notice that the "cold start" time on x86_64 was slower than on x86_64_32. Perhaps this is because I didn't bother to set the minimum heap size. If I start feeling rich due to all the money I am saving by not going anywhere or doing anything during the pandemic, I will build an i9 system to replace this 6-year-old i5 and put more memory on it. But I am not there yet. On 11/7/20 4:14 PM, Makarius wrote: > On 10/10/2020 18:57, Eugene W. Stark wrote: >> After reading various of the Isabelle settings and start-up scripts, and also some trial and error, >> I found that the following in my settings file produced the behavior I wanted: >> >> ML_SYSTEM="polyml-5.8.1-20200228" >> ML_HOME=$ISABELLE_HOME/contrib/$ML_SYSTEM/x86_64-linux >> ML_OPTIONS="--maxheap 20G" >> ML_PLATFORM="x86_64-linux" >> >> I don't have any idea whether this is the "right" way of doing it, though. > > Did it work out for you? 20G for x86_64 is not so much, compared to 16G for > x86_64_32 (where everything is more compact). > > > Note that the minimum setup works like this: > > * $ISABELLE_HOME_USER/etc/settings: > ML_OPTIONS="--maxheap 20G" > > * $ISABELLE_HOME_USER/etc/preferences: > ML_system_64 = true > > If you have Isabelle/jEdit running, you can edit ML_system_64 in the Plugin > Options dialog; on shutdown the preferences will be saved/overwritten. > > > Makarius > From mandrykin at ispras.ru Sat Nov 07 22:33:43 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:57466) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbWmF-0005Bn-I3 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:33:43 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:40363) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbWmE-000InQ-jF (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:33:43 +0000 Received: from ppsw-41.csi.cam.ac.uk ([2001:630:212:8::e:f41]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kbWmD-0003bY-Ue for isabelle-users at cl.cam.ac.uk; Sat, 07 Nov 2020 22:33:41 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail.ispras.ru ([83.149.199.84]:59816) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) id 1kbWmC-000uA3-Qm (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:33:41 +0000 Received: from mail.ispras.ru (unknown [83.149.199.84]) by mail.ispras.ru (Postfix) with ESMTPSA id 1BFE640D403E; Sat, 7 Nov 2020 22:33:38 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 08 Nov 2020 01:33:38 +0300 From: Mikhail Mandrykin To: Makarius In-Reply-To: <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> User-Agent: Roundcube Webmail/1.4.4 Message-ID: <712a55388423b9355fb1c9d66d984c5c at ispras.ru> X-Sender: mandrykin at ispras.ru Organization: ISP RAS Content-Type: multipart/mixed; boundary="=_f1ebf531e210f5f84886c3aef56674e8" X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 22:33:43 -0000 --=_f1ebf531e210f5f84886c3aef56674e8 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Hello, > Your theory "Bug" looks very non-standard in various respects. Can you > say, > what you are actually trying to do? Actually, I was preparing a small Isabelle/ML programing tutorial for relatively experienced functional programmers (in Haskell and OCaml), primarily for internal use, to emphasize the features that are needed to implement custom proof methods. The tutorial was meant to be very practically-oriented and so consisted of a set of example implementations that would use only the interfaces from a documented set of ML interfaces. So I proceeded in the following way: I just came up with a problem, implemented a solution and then documented all the interfaces used in the solution using the available documentation as well as the knowledge obtained from inspection of the sources during the implementation. As one of the final, more complex examples, I decided to implement a sample triple of a proof method, an Isar command and a local context command to support introduction of obtained facts into the local context that would also support goal refinement with obtained variables. This is not possible in Pure, but in HOL the Hilbert epsilon operator can be used to extract the corresponding witness. I actually implemented the tactic and the commands (attached the resulting sample theory as Proof_Context.thy) and they seem to work as expected, the simplest way to observe them in action is in the schematic_goal wf_min'' that directly refines the statement using the obtained epsilon-expressions. However, I myself did not fully understand the limitations of the proof methods since they are actually context-tactics and can return a modified context as a result, but I had not found any real examples of methods that would alter the context in any way other than by introduction of cases. So indeed, the logical context is never modified, only the extra-logical part is changed. The sample method `hilbert_guess` (in Proof_Context.thy) thus is not a proper method as it breaks this convention by introducing obtained facts into the logical context. So when I tried to compile the resulting tutorial document I experienced the problems I described and decided to clarify whether this is an intended limitation of proof methods, because in practice in many cases extending the logical context with assumptions actually works (the assumptions are exported by the `done`/`qed` commands). So because this method is only intended as experimental exploratory code, this is not a real issue, the real methods we implemented so far (those that work in auxiliary local contexts) all perform the export internally and only alter the context for extra-logical purposes e.g. remembering a counterexample model extracted from an SMT solver (Z3). The repository with the tutorial is available at https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks . Currently, we switched to different parts of our framework (implementing the shallow embedding and the translator), so the tutorial is currently not actively used, but may soon be needed as constructing the embedding also requires the use of custom automated proofs. Regards, Mikhail Makarius писал 2020-11-08 00:09: > On 17/09/2020 19:00, Mikhail Mandrykin wrote: >> >> Recently, I experimented with implementation of Isabelle proof >> methods, >> commands and proof elements to learn Isabelle internals more deeply as >> we plan >> to implement Isabelle commands and methods for our program >> verification >> framework. At some point, I encountered quite puzzling behavior of >> commands >> `done`, `by` and `qed` with respect to implicit exporting of the >> resulting >> goal state (actually, the protected initial statement as a theorem) >> into the >> outer context. I attached an example exposing the various behaviors. >> The >> question is whether these various differences in behavior are >> expected, >> especially the situation when the proof is successfully finished >> inside jEdit, >> but then fails during build by `isabelle build` command. > >> I understand that> normally Isabelle methods do not introduce local > assumptions or fixed >> variables, so this seems not really critical (no intent to actually >> implement >> such methods for the users), but it would help with the general >> understanding >> to know whether this is totally unspecified to introduce those >> assumptions or >> is merely a pragmatic constraint > > Yes, proof methods cannot extend the logical context and expect to > work properly. > > There are certain principles how proof contexts are > constructed/deconstructed > by the Isar language, according to its structure. Some of this is > explained in > the "implementation" manual, but the general principle of survival is > to do > this in the "usual way", e.g. by looking at existing implementations in > the > sources. > > Your theory "Bug" looks very non-standard in various respects. Can you > say, > what you are actually trying to do? > > > Makarius --=_f1ebf531e210f5f84886c3aef56674e8 Content-Transfer-Encoding: base64 Content-Type: text/plain; name=Proof_Context.thy Content-Disposition: attachment; filename=Proof_Context.thy; size=22983 KCo8KikKdGhlb3J5IFByb29mX0NvbnRleHQKICBpbXBvcnRzIE1haW4KICBrZXl3b3JkcyAiZ3Vl c3NfYnlfcnVsZSIgOjogcHJmX2FzbSAlICJwcm9vZiIgYW5kICJydWxlX2NvbnRleHQiIDo6IHRo eV9kZWZuCmJlZ2luCigqPiopCgpzZWN0aW9uIFw8b3Blbj5Mb2NhbCBjb250ZXh0LCBwcm9vZiBz dGFjayBhbmQgbG9jYWwgdGhlb3JpZXNcPGNsb3NlPgoKc3Vic2VjdGlvbiBcPG9wZW4+UHJvYmxl bXNcPGNsb3NlPgoKdGV4dCBcPG9wZW4+CiAgVGhlIHdpbGwta25vd24gc2hhcGUgb2YgZWxpbWlu YXRpb24gKGJ1dCBub3QgaW5kdWN0aW9uKCEpKSBydWxlcyB3aXRoIGEgc2luZ2xlIGNhc2U6XFwK ICBcPG9wZW4+QVw8XnN1Yj4xIFw8TG9uZ3JpZ2h0YXJyb3c+IFw8ZG90cz4gXDxMb25ncmlnaHRh cnJvdz4gQVw8XnN1Yj5uIFw8TG9uZ3JpZ2h0YXJyb3c+IChcPEFuZD4gXDxeYm9sZD54LiBCXDxe c3ViPjEgXDxeYm9sZD54IFw8TG9uZ3JpZ2h0YXJyb3c+IFw8ZG90cz4gXDxMb25ncmlnaHRhcnJv dz4gQlw8XnN1Yj5tIFw8XmJvbGQ+eCBcPExvbmdyaWdodGFycm93PiA/dGhlaXNzKSBcPExvbmdy aWdodGFycm93PiA/dGhlc2lzXDxjbG9zZT5cXAogIHN1Z2dlc3QgYSBxdWl0ZSBuYXR1cmFsIHVz ZSBvZiB0aGVzZSBydWxlcyBhcyBtZWFucyB0byBlbnJpY2ggdGhlIGxvY2FsIGNvbnRleHQgd2l0 aCB0aGUKICB2YXJpYWJsZXMgXDxvcGVuPlw8XmJvbGQ+eFw8Y2xvc2U+IGFuZCBhc3N1bXB0aW9u cyBcPG9wZW4+Qlw8XnN1Yj4xIFw8XmJvbGQ+eCwgXDxkb3RzPiwgQlw8XnN1Yj5tIFw8XmJvbGQ+ eFw8Y2xvc2U+IGdpdmVuIHRoZSBmYWN0cyBcPG9wZW4+QVw8XnN1Yj4xLCBcPGRvdHM+LCBBXDxe c3ViPm5cPGNsb3NlPi4gSG93ZXZlciwgdGhlcmUgYXJlCiAgc2V2ZXJhbCBsaW1pdGF0aW9ucyB0 aGUgc3VjaCB1c2Ugb2YgZWxpbWluYXRpb24gcnVsZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24gb2YgSXNhYmVsbGUvUHVyZS4gTm90YWJseSwKICBvYnRhaW5lZCB2YXJpYWJsZXMgXDxv cGVuPlw8XmJvbGQ+eFw8Y2xvc2U+IGNhbm5vdCBiZSB1c2VkIHRvIGluc3RhbnRpYXRlIHNjaGVt YXRpYyB2YXJpYWJsZXMgaW4gdGhlIGdvYWwgZHVyaW5nIGdvYWwgcmVmaW5lbWVudC4KICBBbHNv LCB0aGVyZSBpcyBubyBtZXRob2QgZXF1aXZhbGVudCBvZiB0aGUgQHtjb21tYW5kICJvYnRhaW4i fSBjb21tYW5kLCBuZWl0aGVyIHRoZXJlIGlzIGFuIGVxdWl2YWxlbnQgZm9yIGxvY2FsCiAgdGhl b3JpZXMgKHRvIGludHJvZHVjZSBuZXcgdmFyaWFibGVzIGFuZCBhc3N1bXB0aW9ucyBpbnRvIGEg bG9jYWxlKS4gU28gdG8gZW5zdXJlIHRoYXQgdGhlc2UgbGltaXRhdGlvbnMgYXJlCiAgXDxeZW1w aD5cPG9wZW4+aW4gZmFjdCBhbGwgcHVyZWx5IHByYWdtYXRpY1w8Y2xvc2U+LCBsZXQncyBpbXBs ZW1lbnQgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBpbiBJc2FiZWxsZS9NTDoKICBcPF5lbnVtPiBJ bXBsZW1lbnQgYSBmb3J3YXJkIHRyYW5zZm9ybWF0aW9uIG9mIHRoZW9yZW1zIGRlcGVuZGluZyBv biB0aGUgbG9jYWwgY29udGV4dCBvYnRhaW5lZCBmcm9tIHRoZSBlbGltaW5hdGlvbiBydWxlCiAg ICBpbnRvIHRoZSBleHRlcm5hbCBjb250ZXh0LCBldmVuIGZvciB0aGUgY2FzZSBvZiBvYnRhaW5l ZCBwYXJhbWV0ZXJzLiBVc2UgSGlsYmVydCBFcHNpbG9uLW9wZXJhdG9yIHRvIGNpcmN1bXZlbnQg dGhlCiAgICBsaW1pdGF0aW9uIChpdCBpcyBwYXJ0IG9mIEhPTCwgbm90IFB1cmUsIHRoYXQgaXMg b25lIG9mIHRoZSByZWFzb25zIHRoaXMgZmVhdHVyZSBpcyBub3QgcGFydCBvZiBJc2FyKS4KICBc PF5lbnVtPiBCYXNlZCBvbiB0aGF0IHRyYW5zZm9ybWF0aW9uLCBpbXBsZW1lbnQgYWxsIHRoZSBk ZXNpcmVkIGZlYXR1cmVzOiB0aGUgbWV0aG9kIHRvIGVucmljaCB0aGUgcHJvb2YgY29udGV4dAog ICAgYXMgcHJvdmlkZWQgYnkgdGhlIGVsaW1pbmF0aW9uIHJ1bGUgYXMgd2VsbCBhcyB0aGUgbmV3 IGFuYWxvZ3VlIG9mIHRoZSBAe2NvbW1hbmQgIm9idGFpbiJ9IGNvbW1hbmQgYW5kCiAgICB0aGUg bG9jYWwgdGhlb3J5IGVxdWl2YWxlbnQgb2YgaXQuIFRvIHNpbXBsaWZ5IHRoZSB0YXNrLCBkbyBu b3QgcmUtaW1wbGVtZW50IHRoZSBmdWxsIGNhcGFiaWxpdGllcyBvZgogICAgQHtjb21tYW5kICJv YnRhaW4ifSwganVzdCBleHRyYWN0IHRoZSBuZWNlc3NhcnkgbmFtZXMgZnJvbSB0aGUgQHthdHRy aWJ1dGUgY2FzZV9uYW1lc30gYXR0cmlidXRlIGFuZCB0aGUKICAgIG5hbWVzIG9mIHRoZSBsYWJt ZGEtYm91bmQgdmFyaWFibGVzIGluIHRoZSBydWxlIGl0c2VsZi4gU28gdGhlIGNvbW1hbmRzIHdv dWxkIG9ubHkgaGF2ZSBqdXN0IGEgc2luZ2xlIGFyZ3VtZW50IC0tCiAgICB0aGUgZWxpbWluYXRp b24gcnVsZS4gVGhlIG1ldGhvZCBhbmQgdGhlIElzYXIgcHJvb2YgZWxlbWVudCBjYW4gYWxzbyBu YXR1cmFsbHkgdXNlIGNoYWluZWQgZmFjdHMgdG8gcmVzb2x2ZSB0aGVtCiAgICB3aXRoIHRoZSBy dWxlIGFzc3VtcHRpb25zLiBUaGUgbG9jYWwgdGhlb3J5IGNvbW1hbmQgY2FuIGp1c3QgcmVxdWly ZSB0aGUgcnVsZSB3aXRoIG5vIGFzc3VtcHRpb25zIChpdCBjYW4KICAgIGJlIHByZWxpbWluYXJp bHkgb2J0YWluZWQgYXMgYSBzZXBhcmF0ZSBsZW1tYSkuClw8Y2xvc2U+CgpzdWJzZWN0aW9uIFw8 b3Blbj5Tb2x1dGlvbnMgKGFsbCBhdCBvbmNlLCB3aXRoIHRlc3RzKVw8Y2xvc2U+CgpNTCBcPG9w ZW4+CmluZml4IDAgQ0NPTVBOIENDT01QCnNpZ25hdHVyZSBCQVNJQ19VVElMID0gc2lnCiAgdmFs IENDT01QTiA6IHRobSAqIChpbnQgKiB0aG0pIC0+IHRobQogIHZhbCBDQ09NUCA6IHRobSAqIHRo bSAtPiB0aG0KZW5kCnN0cnVjdHVyZSBVdGlsID0gc3RydWN0CiAgZnVuIHN1cGVyX3RoeSAodGh5 MSwgdGh5MikgPQogICAgaWYgQ29udGV4dC5zdWJ0aHkgKHRoeTEsIHRoeTIpIHRoZW4gdGh5MQog ICAgZWxzZSBpZiBDb250ZXh0LnN1YnRoeSAodGh5MiwgdGh5MSkgdGhlbiB0aHkyCiAgICBlbHNl IHJhaXNlIFRIRU9SWSAoIk5vIHByb3BlciBzdXBlcnRoZW9yeSIsIFt0aHkxLCB0aHkyXSkKICB2 YWwgc3VwZXJfdGh5X29mID0gYXBwbHkyIFRobS50aGVvcnlfb2ZfdGhtICM+IHN1cGVyX3RoeQog IGZ1biB1bmlmaWVycyBjb250ZXh0IG1heCAodDEsIHQyKSA9CiAgICBVbmlmeS51bmlmaWVycyAo Y29udGV4dCwgRW52aXIuZW1wdHkgbWF4LCBbKHQxLCB0MildKQogICAgfD4gU2VxLm1hcAogICAg ICAoZm4gKGUgYXMgRW52aXIuRW52aXIgeyB0eWVudiwgdGVudiwgLi4uIH0sIF8pID0+CiAgICAg ICAgKHR5ZW52IHw+IFZhcnRhYi5kZXN0IHw+CiAgICAgICAgIG1hcAogICAgICAgICAgIChmbiAo eGksIChTLCBUKSkgPT4KICAgICAgICAgICAgICgoeGksIFMpLCBUIHw+IEVudmlyLm5vcm1fdHlw ZSB0eWVudiB8PiBDb250ZXh0LmNhc2VzIFRobS5nbG9iYWxfY3R5cF9vZiBUaG0uY3R5cF9vZiBj b250ZXh0KSksCiAgICAgICAgIHRlbnYgfD4gVmFydGFiLmRlc3QgfD4KICAgICAgICAgbWFwCiAg ICAgICAgICAgKGZuICh4aSwgKFQsIHQpKSA9PgogICAgICAgICAgICAgKCh4aSwgRW52aXIubm9y bV90eXBlIHR5ZW52IFQpLAogICAgICAgICAgICAgIEVudmlyLm5vcm1fdGVybSBlIHQgfD4gQ29u dGV4dC5jYXNlcyBUaG0uZ2xvYmFsX2N0ZXJtX29mIFRobS5jdGVybV9vZiBjb250ZXh0KSkpKQog IGZ1biByIENDT01QTiAoaSwgcykgPQogICAgbGV0CiAgICAgIHZhbCB0aHkgPSBzdXBlcl90aHlf b2YgKHIsIHMpCiAgICAgIHZhbCBtYXggPSBUaG0ubWF4aWR4X29mIHIgKyBUaG0ubWF4aWR4X29m IHMgKyAyCiAgICBpbgogICAgICBMb2dpYy5nZXRfZ29hbCAoVGhtLnByb3Bfb2YgcykgaQogICAg ICB8PiBwYWlyIFtdIHw+IHBlcmhhcHMgKEkgIyM+PiBMb2dpYy5kZXN0X2FsbCAjPj4gc3dhcCAj Pj4gdW5jdXJyeSBjb25zIHw+IHRyeSB8PiBwZXJoYXBzX2xvb3ApCiAgICAgIHw+PiBUZXJtLnJl bmFtZV93cnRfdGVybSAoVGhtLnByb3Bfb2YgcikKICAgICAgfHw+IHBhaXIgKFRobS5mb3JhbGxf ZWxpbV92YXJzIChUaG0ubWF4aWR4X29mIHIgKyAxKSByIHw+IERydWxlLmluY3JfaW5kZXhlcyBz KQogICAgICB8fD4gYChhcGZzdCBUaG0ucHJvcF9vZiAjPiB1bmlmaWVycyAoQ29udGV4dC5UaGVv cnkgdGh5KSBtYXggIz4gU2VxLmhkKSB8fD4gYXBzbmQgZnN0CiAgICAgIHx8PiBgKHVuY3Vycnkg aW5zdGFudGlhdGVfbm9ybWFsaXplKSB8fD4gYXBzbmQgKGZzdCBvIGZzdCkKICAgICAgfD4gKGZu ICh2YXJzLCAociwgdHlzKSkgPT4KICAgICAgICB2YXJzCiAgICAgICAgfD4gbWFwICh0eXBfc3Vi c3RfVFZhcnMgKG1hcCAoZnN0IHw+IGFwZnN0ICMjPiBUaG0udHlwX29mKSB0eXMpIHw+IGFwc25k ICM+IEZyZWUgIz4gVGhtLmdsb2JhbF9jdGVybV9vZiB0aHkpCiAgICAgICAgfD4gcnBhaXIgciB8 LT4gZm9yYWxsX2ludHJfbGlzdAogICAgICAgIHw+IHJwYWlyIChpLCBzKSB8PiBTY2FuLnRyaXBs ZTIgfD4gRHJ1bGUuY29tcG9zZSB8PiB6ZXJvX3Zhcl9pbmRleGVzKQogICAgZW5kCiAgZnVuIHIg Q0NPTVAgcyA9IHIgQ0NPTVBOICgxLCBzKQogIHZhbCBpZF90ID0gVW5zeW5jaHJvbml6ZWQucmVm IE5PTkUKICBmdW4gcmVnaXN0ZXJfaWRfICh0IDogdGVybSkgPSAoaWRfdCA6PSBTT01FIHQ7IHQp CiAgZnVuIGlkXyBUID0gIWlkX3QgfD4gdGhlIHw+IGRlc3RfQ29uc3QgfHw+IEsgKFQgLS0+IFQp IHw+IENvbnN0CmVuZApzdHJ1Y3R1cmUgQmFzaWNfVXRpbCA6IEJBU0lDX1VUSUwgPSBVdGlsCm9w ZW4gQmFzaWNfVXRpbApcPGNsb3NlPgoKc2V0dXAgXDxvcGVuPlNpZ24uZGVjbGFyZV9jb25zdF9n bG9iYWwgKChcPF5iaW5kaW5nPlw8b3Blbj5pZF9cPGNsb3NlPiwgXDxedHlwPlw8b3Blbj4nYSBc PFJpZ2h0YXJyb3c+ICdhXDxjbG9zZT4pLCBOb1N5bikgIz4+IFV0aWwucmVnaXN0ZXJfaWRfICM+ IHNuZFw8Y2xvc2U+CgpzZXR1cCBcPG9wZW4+CiAgcGFpciAoXDxeYmluZGluZz5cPG9wZW4+aWRf X2RlZlw8Y2xvc2U+LCBcPF50ZXJtPlw8b3Blbj5JIHggXDxlcXVpdj4geFw8Y2xvc2U+IHw+IHN1 YnN0X2ZyZWUgWyhcPF50ZXJtPlw8b3Blbj5JIDo6ICdhIFw8UmlnaHRhcnJvdz4gJ2FcPGNsb3Nl PiwgVXRpbC5pZF8gXDxedHlwPlw8b3Blbj4nYVw8Y2xvc2U+KV0pCiAgIz4+IFRobS5zaW1wbGVf ZmFjdCAjLT4gR2xvYmFsX1RoZW9yeS5hZGRfZGVmcyBmYWxzZSAjPiBzbmQKXDxjbG9zZT4KCk1M IFw8b3Blbj4Kc3RydWN0dXJlIEhpbGJlcnRfR3Vlc3MgPSBzdHJ1Y3QKICBmdW4gbWV0YV9lcSBl ID0gZSBSUyBAe3RobSBhdG9taXplX2VxW1RIRU4gZXF1YWxfZWxpbV9ydWxlMl19CiAgdmFsIHBy b2RfY29udl90aG1zID0gW0B7dGhtIGZzdF9jb252fSwgQHt0aG0gc25kX2NvbnZ9XSB8PiBtYXAg bWV0YV9lcQogIGZ1biBwcm9kX3NlbF90YWMgY3R4dCA9IHJld3JpdGVfZ29hbF90YWMgY3R4dCBw cm9kX2NvbnZfdGhtcyBUSEVOJyByZXNvbHZlX3RhYyBjdHh0IFtAe3RobSByZWZsfV0KICBmdW4g d3JhcF9pZF8gdCA9IFV0aWwuaWRfICh0eXBlX29mIHQpICQgdAogIGZ1biBudGhfY29udiBjdHh0 IG4gayA9CiAgICBsZXQKICAgICAgdmFsICh4cywgVHMpID0KICAgICAgICAoImEiLCBOYW1lLmFU KSB8PiBhcHBseTIgKGZuIHMgPT4gTmFtZS5pbnZlbnQgKFZhcmlhYmxlLm5hbWVzX29mIGN0eHQp IHMgbikKICAgICAgICB8fD4gbWFwIChycGFpciAoUHJvb2ZfQ29udGV4dC50aGVvcnlfb2YgY3R4 dCB8PiBTaWduLmRlZmF1bHRTKSAjPiBURnJlZSkKICAgICAgdmFsIHRzID0geHMgfn4gVHMgfD4g bWFwIEZyZWUKICAgICAgdmFsIHQgPSBudGggdHMgKGsgLSAxKQogICAgICB2YWwgKGxhc3QsIG0p ID0gaWYgbiA9IGsgdGhlbiAoSE9Mb2dpYy5ta19zbmQsIG4gLSAyKSBlbHNlIChIT0xvZ2ljLm1r X2ZzdCwgayAtIDEpCiAgICAgIHZhbCBsaHMgPSBIT0xvZ2ljLm1rX3R1cGxlIHRzIHw+IHdyYXBf aWRfIHw+IGZ1bnBvdyBtIEhPTG9naWMubWtfc25kIHw+IGxhc3QKICAgIGluCiAgICAgIEdvYWwu cHJvdmUgY3R4dCB4cyBbXSAoSE9Mb2dpYy5ta19lcSAobGhzLCB0KSB8PiBIT0xvZ2ljLm1rX1Ry dWVwcm9wKQogICAgICAgIChIRUFER09BTCAocmV3cml0ZV9nb2FsX3RhYyBjdHh0IFtAe3RobSBp ZF9fZGVmfV0gVEhFTicgcHJvZF9zZWxfdGFjIGN0eHQpIHw+IEspCiAgICBlbmQKICB2YWwgbnRo X2NvbnYgPSBmbiBjdHh0ID0+IGZuIG4gPT4gaWYgbiA9IDEgdGhlbiBLIChAe3RobSBpZF9fZGVm fSBSUyBAe3RobSBtZXRhX2VxX3RvX29ial9lcX0pIGVsc2UgbnRoX2NvbnYgY3R4dCBuCiAgdmFs IFRydWVfc2ltcCA9IEB7bGVtbWEgIihUcnVlIFw8YW5kPiBBKSA9IEEiIGJ5IHNpbXB9IHw+IG1l dGFfZXEKICBmdW4gY29ual9lbGltX3RhYyBjdHh0ID0gKFJFUEVBVF9BTExfTkVXIChlcmVzb2x2 ZV90YWMgY3R4dCBbQHt0aG0gY29uakV9XSkgT1JFTFNFJyAoSyBhbGxfdGFjKSkgVEhFTicgYXNz dW1lX3RhYyBjdHh0CiAgZnVuIG1heWJlX3Nrb2xlbSBjdHh0ID0gVmFyaWFibGUuaXNfYm9keSBj dHh0ID8gTmFtZS5za29sZW0KICBmdW4gbWF5YmVfZGVzdF9za29sZW0gY3R4dCA9IFZhcmlhYmxl LmlzX2JvZHkgY3R4dCA/IE5hbWUuZGVzdF9za29sZW0KICBcPGNvbW1lbnQ+IFw8b3Blbj4KICBF eHBvcnQgbG9jYWwgdGhlb3JlbSBcPG9wZW4+RyBcPF5ib2xkPnhcPGNsb3NlPiAoXDxvcGVuPnRo bVw8Y2xvc2U+IG92ZXIgXDxvcGVuPnZhcnNcPGNsb3NlPikgdmFsaWQgdW5kZXIgXDxvcGVuPlw8 XmJvbGQ+SCBcPF5ib2xkPnhcPGNsb3NlPiAoXDxvcGVuPmNoeXBzXDxjbG9zZT4pCiAgaW50byB0 aGUgZ2xvYmFsIGNvbnRleHQuIE5vdGUgdGhhdCBcPG9wZW4+XDxeYm9sZD54XDxjbG9zZT4gXDxe ZW1waD5cPG9wZW4+bWF5XDxjbG9zZT4gb2NjdXIgaW4gXDxvcGVuPkdcPGNsb3NlPiwgaGVuY2Ug dGhlIG5lZWQgaW4gYWxsIHRob3NlIEhpbGJlcnQgRXBzaWxvbiB0cmlja3MuCiAgV2hhdCB3ZSB3 YW50IHRvIGdldCBpcyBiYXNpY2FsbHkgXDxvcGVuPlw8XmJvbGQ+SCA/XDxeYm9sZD54IFw8TG9u Z3JpZ2h0YXJyb3c+IEcnIChcPGVwc2lsb24+KFw8XmJvbGQ+eCkgKFw8QW5kPlw8XmJvbGQ+SCkg XDxeYm9sZD54KSlcPGNsb3NlPiwgd2hlcmUgYm9sZCBmb250IGRlbm90ZXMgdmVjdG9ycywgYm9s ZCBpbgogIHBhcmVudGhlc2lzIGRlbm90ZXMgdHVwbGVzIGFuZCBcPG9wZW4+XDxlcHNpbG9uPlw8 Y2xvc2U+IGlzIHRoZSBIaWxiZXJ0IEVwc2lsb24tb3BlcmF0b3IuCiAgSGVyZSdzIHRoZSBiYXNp YyBhcHByb2FjaDpcXAogIOKAlCAoMSkuIFw8b3Blbj5cPF5ib2xkPkggXDxeYm9sZD54IFw8dHVy bnN0aWxlPiBHIFw8XmJvbGQ+eCBcPExvbmdyaWdodGFycm93PiAoXDxeYm9sZD5IIFw8XmJvbGQ+ eCBcPExvbmdyaWdodGFycm93PiBHIFw8XmJvbGQ+eClcPGNsb3NlPlxcCiAg4oCUICgyKS4gXDxv cGVuPlw8ZG90cz4gXDxMb25ncmlnaHRhcnJvdz4gKChcPEFuZD5cPF5ib2xkPkgpIFw8XmJvbGQ+ eCBcPExvbmdyaWdodGFycm93PiBHIFw8XmJvbGQ+eClcPGNsb3NlPlxcCiAg4oCUICgzKS4gXDxv cGVuPlw8ZG90cz4gXDxMb25ncmlnaHRhcnJvdz4gKChcPEFuZD5cPF5ib2xkPkgnKSAoXDxeYm9s ZD54KSBcPExvbmdyaWdodGFycm93PiBHJyAoXDxeYm9sZD54KSlcPGNsb3NlPlxcCiAg4oCUICg0 KS4gXDxvcGVuPlw8ZG90cz4gXDxMb25ncmlnaHRhcnJvdz4gKChcPEFuZD5cPF5ib2xkPkgnKSA/ eCBcPExvbmdyaWdodGFycm93PiBHJyA/eClcPGNsb3NlPlxcCiAg4oCUICg1KS4gXDxvcGVuPlw8 ZG90cz4gXDxMb25ncmlnaHRhcnJvdz4gKChcPEFuZD5cPF5ib2xkPkgnKSA/eCBcPExvbmdyaWdo dGFycm93PiBHJyAoXDxlcHNpbG9uPnggKFw8QW5kPlw8XmJvbGQ+SCcpIHgpKVw8Y2xvc2U+XFwK ICDigJQgKDYpLiBcPG9wZW4+XDxkb3RzPiBcPExvbmdyaWdodGFycm93PiAoKFw8QW5kPlw8XmJv bGQ+SCcpIChcPF5ib2xkPngpIFw8TG9uZ3JpZ2h0YXJyb3c+IEcnIChcPGVwc2lsb24+eCAoXDxB bmQ+XDxeYm9sZD5IJykgeCkpXDxjbG9zZT5cXAogIOKAlCAoNykuIFw8b3Blbj5cPGRvdHM+IFw8 TG9uZ3JpZ2h0YXJyb3c+IChcPF5ib2xkPkggXDxeYm9sZD54IFw8TG9uZ3JpZ2h0YXJyb3c+IEcn IChcPGVwc2lsb24+eCAoXDxBbmQ+XDxeYm9sZD5IJykgeCkpXDxjbG9zZT5cXAogIOKAlCAoOCku IFw8b3Blbj5cPGRvdHM+IFw8TG9uZ3JpZ2h0YXJyb3c+IChcPF5ib2xkPkggP1w8XmJvbGQ+eCBc PExvbmdyaWdodGFycm93PiBHJyAoXDxlcHNpbG9uPihcPF5ib2xkPngpIChcPEFuZD5cPF5ib2xk PkgpIFw8XmJvbGQ+eCkpXDxjbG9zZT5cXAogIFw8Y2xvc2U+CiAgZnVuIGV4cG9ydDAgY3R4dCB2 YXJzIGNoeXBzIHRobSA9CiAgICBsZXQKICAgICAgdmFsIGdlbnMgPSAoW10sIG1hcCBmc3QgdmFy cykKICAgICAgdmFsIChndGhtLCBpbnRybykgPSBcPGNvbW1lbnQ+IFw8b3Blbj4oMSwgMilcPGNs b3NlPgogICAgICAgIGxldAogICAgICAgICAgdmFsIHBoeXBzID0gbWFwIFRobS50ZXJtX29mIGNo eXBzCiAgICAgICAgICB2YWwgYWh5cHMgPSBtYXAgKE9iamVjdF9Mb2dpYy5hdG9taXplX3Rlcm0g Y3R4dCkgcGh5cHMKICAgICAgICAgIHZhbCBwY29uaiA9CiAgICAgICAgICAgIGFoeXBzCiAgICAg ICAgICAgIHw+IExpc3QuZm9sZGwgKEhPTG9naWMubWtfY29uaiBvIHN3YXApIFw8XnRlcm0+XDxv cGVuPlRydWVcPGNsb3NlPgogICAgICAgICAgICB8PiBSYXdfU2ltcGxpZmllci5yZXdyaXRlX3Rl cm0gKFByb29mX0NvbnRleHQudGhlb3J5X29mIGN0eHQpIFtUcnVlX3NpbXBdIFtdCiAgICAgICAg ICAgIHw+IEhPTG9naWMubWtfVHJ1ZXByb3AKICAgICAgICAgIHZhbCBjY29uaiA9IFRobS5jdGVy bV9vZiBjdHh0IHBjb25qCiAgICAgICAgICB2YWwgaW50cm9zID0KICAgICAgICAgICAgbWFwCiAg ICAgICAgICAgICAgKEhPTG9naWMubWtfVHJ1ZXByb3AKICAgICAgICAgICAgICAgIz4gY3Vycnkg TG9naWMubWtfaW1wbGllcyBwY29uagogICAgICAgICAgICAgICAjPiBUaG0uY3Rlcm1fb2YgY3R4 dAogICAgICAgICAgICAgICAjPiBycGFpciAoSEVBREdPQUwgKGNvbmpfZWxpbV90YWMgY3R4dCkg fD4gSykgIy0+IEdvYWwucHJvdmVfaW50ZXJuYWwgY3R4dCBbXQogICAgICAgICAgICAgICAjPiBD b252LmZjb252X3J1bGUgKE9iamVjdF9Mb2dpYy5hdG9taXplIGN0eHQpKQogICAgICAgICAgICAg IGFoeXBzIHw+CiAgICAgICAgICAgIHJwYWlyIChtYXAgKGN1cnJ5IExvZ2ljLm1rX2ltcGxpZXMg cGNvbmogIz4gVGhtLmN0ZXJtX29mIGN0eHQpIHBoeXBzKSB8PgogICAgICAgICAgICBvcCB+fiB8 PgogICAgICAgICAgICBtYXAKICAgICAgICAgICAgICAoZm4gKGEsIGcpID0+CiAgICAgICAgICAg ICAgICBHb2FsLnByb3ZlX2ludGVybmFsIGN0eHQgW10gZwogICAgICAgICAgICAgICAgICAoSEVB REdPQUwgKE9iamVjdF9Mb2dpYy5mdWxsX2F0b21pemVfdGFjIGN0eHQgVEhFTicgcmVzb2x2ZV90 YWMgY3R4dCBbYV0pIHw+IEspCiAgICAgICAgICAgICAgICB8PiBjdXJyeSBvcCBSUyAoVGhtLmFz c3VtZSBjY29uaikpCiAgICAgICAgICB2YWwgaW50cm8gPQogICAgICAgICAgICBHb2FsLnByb3Zl X2ludGVybmFsIGN0eHQgW10gKExpc3QuZm9sZHIgTG9naWMubWtfaW1wbGllcyBwY29uaiBwaHlw cyB8PiBUaG0uY3Rlcm1fb2YgY3R4dCkKICAgICAgICAgICAgICAoSEVBREdPQUwKICAgICAgICAg ICAgICAgIChPYmplY3RfTG9naWMuYXRvbWl6ZV9wcmVtc190YWMgY3R4dAogICAgICAgICAgICAg ICAgIFRIRU4nIHJld3JpdGVfZ29hbF90YWMgY3R4dCBbQHt0aG0gY29ual9hc3NvY31dCiAgICAg ICAgICAgICAgICAgVEhFTicgUkVQRUFUX0FMTF9ORVcgKGFyZXNfdGFjIGN0eHQgW0B7dGhtIGNv bmpJfSwgQHt0aG0gVHJ1ZUl9XSkpIHw+IEspCiAgICAgICAgaW4KICAgICAgICAgIGZvbGRfcmV2 IFRobS5pbXBsaWVzX2ludHIgY2h5cHMgdGhtIFw8Y29tbWVudD4gXDxvcGVuPigxKVw8Y2xvc2U+ CiAgICAgICAgICB8PiBmb2xkIChjdXJyeSBvcCBDQ09NUCkgaW50cm9zIHw+IFRobS5pbXBsaWVz X2ludHIgY2NvbmogXDxjb21tZW50PiBcPG9wZW4+KDIpXDxjbG9zZT4KICAgICAgICAgIHw+IHJw YWlyIGludHJvCiAgICAgICAgZW5kCiAgICAgIHZhbCBmcmVlcyA9IG1hcCBGcmVlIHZhcnMKICAg ICAgdmFsIGNmcmVlcyA9IG1hcCAoVGhtLmN0ZXJtX29mIGN0eHQpIGZyZWVzCiAgICAgIHZhbCBu ID0gbGVuZ3RoIHZhcnMKICAgICAgdmFsIHN1YnMgPSAxIHVwdG8gbiB8PiBtYXAgKG50aF9jb252 IGN0eHQgbiAjPiBtZXRhX2VxICM+IGluZmVyX2luc3RhbnRpYXRlJyBjdHh0IChtYXAgU09NRSBj ZnJlZXMpKQogICAgICBcPGNvbW1lbnQ+IFw8b3Blbj5wcm9wIG9mICgzKTpcPGNsb3NlPgogICAg ICB2YWwgZ3Byb3AgPSBndGhtIHw+IFRobS5wcm9wX29mIHw+IHN1YnN0X2ZyZWUgKG1hcCAoc3dh cCBvIExvZ2ljLmRlc3RfZXF1YWxzIG8gVGhtLnByb3Bfb2YpIHN1YnMpCiAgICAgIGZ1biBpbmR1 Y3QgayA9IFw8Y29tbWVudD4gXDxvcGVuPmluZHVjdGlvbiBydWxlcyBmb3IgKDQpXDxjbG9zZT4K ICAgICAgICBsZXQKICAgICAgICAgIHZhbCBtID0gbiAtIGsgLSAxCiAgICAgICAgICB2YWwgc3Vi ID0gSE9Mb2dpYy5ta190dXBsZSAoZHJvcCBtIGZyZWVzKQogICAgICAgICAgdmFsIHggPSBUZXJt LnZhcmlhbnRfZnJlZXMgZ3Byb3AgWygieCIsIHR5cGVfb2Ygc3ViKV0gfD4gdGhlX3NpbmdsZQog ICAgICAgICAgdmFsIHN1YnMgPSBhcHBseTIgKGZuIHggPT4gdGFrZSBtIGZyZWVzIEAgW3hdIHw+ IEhPTG9naWMubWtfdHVwbGUgfD4gd3JhcF9pZF8pIChzdWIsIEZyZWUgeCkgfD4gc2luZ2xlCiAg ICAgICAgaW4KICAgICAgICAgIGdwcm9wCiAgICAgICAgICB8PiBPYmplY3RfTG9naWMuYXRvbWl6 ZV90ZXJtIGN0eHQKICAgICAgICAgIHw+IFBhdHRlcm4ucmV3cml0ZV90ZXJtIChQcm9vZl9Db250 ZXh0LnRoZW9yeV9vZiBjdHh0KSBzdWJzIFtdCiAgICAgICAgICB8PiBsYW1iZGEgKEZyZWUgeCkg fD4gVGhtLmN0ZXJtX29mIGN0eHQgfD4gU09NRSB8PiBzaW5nbGUKICAgICAgICAgIHw+IHJwYWly IEB7dGhtIHByb2QuaW5kdWN0fSB8LT4gaW5mZXJfaW5zdGFudGlhdGUnIGN0eHQgfD4gRHJ1bGUu Z2VuZXJhbGl6ZSBnZW5zCiAgICAgICAgZW5kCiAgICAgIHZhbCBndGhtID0gXDxjb21tZW50PiBc PG9wZW4+KDMsNCw1KVw8Y2xvc2U+CiAgICAgICAgR29hbC5wcm92ZV9pbnRlcm5hbCBjdHh0IFtd IChUaG0uY3Rlcm1fb2YgY3R4dCBncHJvcCkKICAgICAgICAgIChIRUFER09BTCAocmV3cml0ZV9n b2FsX3RhYyBjdHh0IHN1YnMgVEhFTicgc29sdmVfdGFjIGN0eHQgW2d0aG1dKSB8PiBLKSBcPGNv bW1lbnQ+IFw8b3Blbj4oMylcPGNsb3NlPgogICAgICAgIHw+IENvbnYuZmNvbnZfcnVsZSAoT2Jq ZWN0X0xvZ2ljLmF0b21pemUgY3R4dCkKICAgICAgICB8PiBmb2xkX3JldiBUaG0uZm9yYWxsX2lu dHIgY2ZyZWVzCiAgICAgICAgfD4gZm9sZCAoZm4gbiA9PiBmbiB0aG0gPT4gdGhtIENDT01QIGlu ZHVjdCBuKSAoMSB1cHRvIG4gLSAxKSBcPGNvbW1lbnQ+IFw8b3Blbj4oNClcPGNsb3NlPgogICAg ICAgIHw+IHJwYWlyIEB7dGhtIG1wfSB8PiBvcCBDQ09NUCB8PiBycGFpciAoMiwgQHt0aG0gc29t ZUkyfSkgfD4gb3AgQ0NPTVBOIFw8Y29tbWVudD4gXDxvcGVuPig1KVw8Y2xvc2U+CiAgICAgdmFs IHUgPSBcPGNvbW1lbnQ+IFw8b3Blbj5pbnN0YW50aWF0aW9uIGZvciAoNilcPGNsb3NlPgogICAg ICAgIChncHJvcCwgVGhtLnByb3Bfb2YgZ3RobSkgfD4gYXBwbHkyIChMb2dpYy5kZXN0X2ltcGxp ZXMgIz4gZnN0KQogICAgICAgIHw+IFV0aWwudW5pZmllcnMgKENvbnRleHQuUHJvb2YgY3R4dCkg KFRobS5tYXhpZHhfb2YgZ3RobSkgfD4gU2VxLmhkCiAgICAgdmFsIGVwc19zaW1wcyA9IFw8Y29t bWVudD4gXDxvcGVuPm9wdGlvbmFsIHJld3JpdGUgcnVsZSBmb3IgKDgpXDxjbG9zZT4KICAgICAg IGxldAogICAgICAgICB2YWwgdmFycycgPSBtYXAgKG1heWJlX2Rlc3Rfc2tvbGVtIGN0eHQgfD4g YXBmc3QpIHZhcnMKICAgICAgICAgdmFsIGZyZWVzJyA9IHZhcnMnIHw+IFRlcm0udmFyaWFudF9m cmVlcyAoZ3Byb3AgfD4gc3Vic3RfZnJlZSAobWFwIChycGFpciBUZXJtLmR1bW15KSBmcmVlcykp IHw+IG1hcCBGcmVlCiAgICAgICAgIHZhbCBwcm9wID0gZ3Byb3AgfD4gTG9naWMuZGVzdF9pbXBs aWVzIHw+IGZzdCB8PiBIT0xvZ2ljLmRlc3RfVHJ1ZXByb3AKICAgICAgICAgdmFsIHJocyA9CiAg ICAgICAgICAgcHJvcAogICAgICAgICAgIHw+IFJhd19TaW1wbGlmaWVyLnJld3JpdGVfdGVybSAo UHJvb2ZfQ29udGV4dC50aGVvcnlfb2YgY3R4dCkgKChAe3RobSBjb25qX2Fzc29jfSB8PiBtZXRh X2VxKSA6OiBzdWJzKSBbXQogICAgICAgICAgIHw+IHN1YnN0X2ZyZWUgKGZyZWVzIH5+IGZyZWVz JykgfD4gSE9Mb2dpYy50dXBsZWRfbGFtYmRhIChIT0xvZ2ljLm1rX3R1cGxlIGZyZWVzJykKICAg ICAgICAgdmFsIGxocyA9IHByb3AgfD4gbGFtYmRhIChIT0xvZ2ljLm1rX3R1cGxlIGZyZWVzIHw+ IHdyYXBfaWRfKQogICAgICAgaW4KICAgICAgICAgaWYgbGhzIGFjb252IHJocyB0aGVuIFtdCiAg ICAgICAgIGVsc2UKICAgICAgICAgICBbR29hbC5wcm92ZSBjdHh0IFtdIFtdIChIT0xvZ2ljLm1r X2VxIChsaHMsIHJocykgfD4gSE9Mb2dpYy5ta19UcnVlcHJvcCkKICAgICAgICAgICAgIChIRUFE R09BTAogICAgICAgICAgICAgICAocmV3cml0ZV9nb2FsX3RhYyBjdHh0IChtYXAgbWV0YV9lcSBb QHt0aG0gc3BsaXRfYmV0YSd9LCBAe3RobSBjb25qX2Fzc29jfV0pCiAgICAgICAgICAgICAgICBU SEVOJyByZXNvbHZlX3RhYyBjdHh0IFtAe3RobSByZWZsfV0pIHw+IEspIHw+IG1ldGFfZXFdCiAg ICAgICBlbmQKICAgIGluCiAgICAgIGluc3RhbnRpYXRlX25vcm1hbGl6ZSB1IGd0aG0gXDxjb21t ZW50PiBcPG9wZW4+KDYpXDxjbG9zZT4KICAgICAgfD4gcmV3cml0ZV9ydWxlIGN0eHQgc3VicyB8 PiBjdXJyeSBvcCBSUyBpbnRybyBcPGNvbW1lbnQ+IFw8b3Blbj4oNylcPGNsb3NlPgogICAgICB8 PiByZXdyaXRlX3J1bGUgY3R4dCAoQHt0aG0gaWRfX2RlZn0gOjogZXBzX3NpbXBzKSB8PiBEcnVs ZS5nZW5lcmFsaXplIGdlbnMgfD4gemVyb192YXJfaW5kZXhlcyBcPGNvbW1lbnQ+IFw8b3Blbj4o OClcPGNsb3NlPgogICAgZW5kCiAgZnVuIGRlc3RfcHJlbWlzZSBjdHh0IGV0aG0gPQogICAgbGV0 CiAgICAgIHZhbCBwcmVtID0gZXRobSB8PiBUaG0ucHJlbXNfb2YgfD4gaGQKICAgICAgdmFsIGZp eF90eXAgPSBtYXBfdHlwZV90dmFyIChURnJlZSBvIGFwZnN0IGZzdCkKICAgICAgdmFsIHZhcnMg PSBMb2dpYy5zdHJpcF9wYXJhbXMgcHJlbSB8PiBtYXAgKGFwZnN0IChtYXliZV9za29sZW0gY3R4 dCkgIyM+IGZpeF90eXApCiAgICAgIHZhbCBjaHlwcyA9CiAgICAgICAgTG9naWMuc3RyaXBfYXNz dW1zX2h5cCBwcmVtCiAgICAgICAgfD4gbWFwIChwYWlyICh2YXJzIHw+IHJldiB8PiBtYXAgRnJl ZSkgIz4gc3Vic3RfYm91bmRzICM+IG1hcF90eXBlcyBmaXhfdHlwICM+IFRobS5jdGVybV9vZiBj dHh0KQogICAgaW4KICAgICAgKHZhcnMsIGNoeXBzKQogICAgZW5kCiAgZnVuIGV4cG9ydCBjdHh0 IGV0aG0gdGhtID0KICAgIGxldAogICAgICB2YWwgKHZhcnMsIGNoeXBzKSA9IGRlc3RfcHJlbWlz ZSBjdHh0IGV0aG0KICAgICAgdmFsIGlkeCA9IFRobS5tYXhpZHhfb2YgdGhtICsgMQogICAgICB2 YWwgcHJvcCA9IFRobS5wcm9wX29mIHRobQogICAgICB2YWwgcHJvcCcgPQogICAgICAgIHByb3AK ICAgICAgICB8PiBtYXBfYXRlcm1zCiAgICAgICAgICAoZm4gRnJlZSAodiwgVCkgPT4KICAgICAg ICAgICAgaWYgbWVtYmVyIChvcCA9IG8gYXBzbmQgZnN0KSB2YXJzIHYKICAgICAgICAgICAgdGhl biBWYXIgKCh2LCBpZHgpLCBUKQogICAgICAgICAgICBlbHNlIEZyZWUgKHYsIFQpIHwgdCA9PiB0 KQogICAgICAgIHw+IG1hcF90eXBlcyAobWFwX3R5cGVfdGZyZWUgKGZuICh0LCBTKSA9PiBUVmFy ICgodCwgaWR4KSwgUykpKQogICAgICB2YWwgdGhtID0gcmV3cml0ZV9ydWxlIGN0eHQgW0B7dGht IHByb3BfZGVmfV0gdGhtCiAgICAgIHZhbCBhdGhtID0KICAgICAgICBpZiBpbnRlciAob3AgPSkg dmFycyAoVGVybS5hZGRfZnJlZXMgcHJvcCBbXSkgfD4gbnVsbAogICAgICAgIHRoZW4KICAgICAg ICAgIHRobSB8PiBDb252LmZjb252X3J1bGUgKE9iamVjdF9Mb2dpYy5hdG9taXplIGN0eHQpCiAg ICAgICAgICB8PiBmb2xkX3JldiBUaG0uaW1wbGllc19pbnRyIGNoeXBzCiAgICAgICAgICB8PiBE cnVsZS5nZW5lcmFsaXplIChbXSwgbWFwIGZzdCB2YXJzKQogICAgICAgICAgfD4gcnBhaXIgZXRo bSB8PiBvcCBDQ09NUAogICAgICAgIGVsc2UgZXhwb3J0MCBjdHh0IHZhcnMgY2h5cHMgdGhtIEND T01QIGV0aG0KICAgIGluCiAgICAgIEdvYWwucHJvdmUgY3R4dCBbXSBbXSBwcm9wJwogICAgICAg IChIRUFER09BTAogICAgICAgICAgKHJld3JpdGVfZ29hbF90YWMgY3R4dCBbQHt0aG0gcHJvcF9k ZWZ9XQogICAgICAgICAgIFRIRU4nIE9iamVjdF9Mb2dpYy5mdWxsX2F0b21pemVfdGFjIGN0eHQK ICAgICAgICAgICBUSEVOJyByZXNvbHZlX3RhYyBjdHh0IFthdGhtXSkgfD4gSykKICAgIGVuZAog IGZ1biBleHBvcnRfdGVybSBjdHh0IGV0aG0gPQogICAgVGhtLmN0ZXJtX29mIGN0eHQgIz4gVGht LnJlZmxleGl2ZQogICAgIz4gZXhwb3J0IGN0eHQgZXRobQogICAgIz4gVGhtLnByb3Bfb2YgIz4g TG9naWMuZGVzdF9lcXVhbHMgIz4gZnN0CiAgZnVuIGd1ZXNzIGN0eHQnIGN0eHQgKHRobSwgcG9z KSBmYWN0cyA9CiAgICBsZXQKICAgICAgdmFsIHRobSA9IHNpbmdsZXRvbiAoQXR0cmliLmV2YWxf dGhtcyBjdHh0JykgdGhtCiAgICAgIHZhbCBldGhtID0gTGlzdC5mb2xkbCAob3AgQ0NPTVApIHRo bSBmYWN0cwogICAgICB2YWwgYmluZHMgPSBSdWxlX0Nhc2VzLmdldCB0aG0gfD4gZnN0IHw+IHRo ZV9zaW5nbGUgfD4gZnN0IHw+IHNuZAogICAgICB2YWwgKHZhcnMsIGh5cHMpID0gZGVzdF9wcmVt aXNlIGN0eHQgZXRobSB8Pj4gbWFwIChtYXliZV9kZXN0X3Nrb2xlbSBjdHh0IHw+IGFwZnN0KSB8 fD4gbWFwIFRobS50ZXJtX29mCiAgICAgIGZ1biBleHBvcnRzIF8gXyA9IChleHBvcnQgY3R4dCBl dGhtLCBleHBvcnRfdGVybSBjdHh0IGV0aG0pCiAgICAgIHZhbCBmaXhlcyA9IHZhcnMgfD4gbWFw IChhcGZzdCAocnBhaXIgcG9zICM+IEJpbmRpbmcubWFrZSkgIz4gYXBzbmQgU09NRSAjPiBycGFp ciBOb1N5biAjPiBTY2FuLnRyaXBsZTEpCiAgICAgIHZhbCBhc3NtcyA9CiAgICAgICAgYmluZHMg fn4gaHlwcyB8PiBtYXAgKGFwc25kIChycGFpciBbXSkgIyM+IHNpbmdsZSAjPj4gcnBhaXIgcG9z ICM+PiBCaW5kaW5nLm1ha2UgIz4+IFRobS5ub19hdHRyaWJ1dGVzKQogICAgaW4KICAgICAgeyBl eHBvcnRzID0gZXhwb3J0cywgZml4ZXMgPSBmaXhlcywgYXNzbXMgPSBhc3NtcyB9CiAgICBlbmQK ICBzdHJ1Y3R1cmUgQ3R4dCA9IFByb29mX0RhdGEgKHR5cGUgVCA9IFByb29mLmNvbnRleHQgb3B0 aW9uIGZ1biBpbml0IF8gPSBOT05FKQogIGZ1biBoaWxiZXJ0X2d1ZXNzX21ldGggdGhtX3BvcyBj dHh0JyBmYWN0cyAoY3R4dCwgc3QpID0KICAgIGxldAogICAgICB2YWwgeyBleHBvcnRzLCBmaXhl cywgYXNzbXMgfSA9IGd1ZXNzIGN0eHQnIGN0eHQgdGhtX3BvcyBmYWN0cwogICAgaW4KICAgICAg Y3R4dAogICAgICB8PiBDdHh0LnB1dCAoU09NRSBjdHh0KQogICAgICB8PiBQcm9vZl9Db250ZXh0 LmFkZF9maXhlcyBmaXhlcyB8PiBzbmQKICAgICAgfD4gUHJvb2ZfQ29udGV4dC5hZGRfYXNzbXMg ZXhwb3J0cyBhc3NtcyB8PiBzbmQKICAgICAgfD4gcnBhaXIgc3QgfD4gU2VxLnN1Y2NlZWQgfD4g U2VxLm1ha2VfcmVzdWx0cwogICAgZW5kCiAgICBoYW5kbGUgTGlzdFBhaXIuVW5lcXVhbExlbmd0 aHMgPT4gU2VxLnNpbmdsZSAoU2VxLkVycm9yIChmbiAoKSA9PiAiTm8gZW5vdWdoIGNoYWluZWQg ZmFjdHMgb3IgaHlwIG5hbWVzIikpCiAgZnVuIGV4cG9ydF9tZXRoIF8gXyAoY3R4dCwgc3QpID0K ICAgIGlmIGNhbiAoVGhtLnByb3Bfb2YgIz4gVGVybS5ub19kdW1teV9wYXR0ZXJucykgc3QKICAg IHRoZW4gVEFDVElDX0NPTlRFWFQgY3R4dCAoc2luZ2xldG9uIChDdHh0LmdldCBjdHh0IHw+IHRo ZSB8PiBQcm9vZl9Db250ZXh0LmdvYWxfZXhwb3J0IGN0eHQpIHN0IHw+IFNlcS5zaW5nbGUpCiAg ICBlbHNlIFNlcS5zaW5nbGUgKFNlcS5FcnJvciAoZm4gKCkgPT4gIklsbGVnYWwgZHVtbXkgcGF0 dGVybnMgaW4gZ29hbCIpKQogIGZ1biBndWVzc19mcm9tX3J1bGVfY21kIHRobV9wb3Mgc3RhdGUg PQogICAgbGV0CiAgICAgIHZhbCBjdHh0ID0gUHJvb2YuY29udGV4dF9vZiBzdGF0ZQogICAgICB2 YWwgZmFjdHMgPSBpZiBjYW4gUHJvb2YuYXNzZXJ0X2NoYWluIHN0YXRlIHRoZW4gUHJvb2YudGhl X2ZhY3RzIHN0YXRlIGVsc2UgW10KICAgICAgdmFsIHsgZXhwb3J0cywgZml4ZXMsIGFzc21zIH0g PSBndWVzcyBjdHh0IGN0eHQgdGhtX3BvcyBmYWN0cwogICAgaW4KICAgICAgc3RhdGUKICAgICAg fD4gUHJvb2YuYXNzZXJ0X2ZvcndhcmRfb3JfY2hhaW4KICAgICAgfD4gUHJvb2YuZW50ZXJfZm9y d2FyZAogICAgICB8PiBQcm9vZi5maXggZml4ZXMKICAgICAgfD4gUHJvb2YuYXNzbSBleHBvcnRz IFtdIFtdIGFzc21zCiAgICBlbmQKICBmdW4gcnVsZV9jb250ZXh0X2NtZCB0aG1fcG9zIGx0aHkg PQogICAgbGV0CiAgICAgIHZhbCB7IGV4cG9ydHMsIGZpeGVzLCBhc3NtcyB9ID0gZ3Vlc3MgbHRo eSBsdGh5IHRobV9wb3MgW10KICAgICAgdmFsIGFiYnJldnMgPQogICAgICAgIGZpeGVzIHw+IG1h cCAoZm4gKGIsIHR5cCwgbXgpID0+ICgoYiwgbXgpLCBGcmVlIChCaW5kaW5nLm5hbWVfb2YgYiwg dGhlIHR5cCkgfD4gc25kIChleHBvcnRzIGZhbHNlIFtdKSkpCiAgICAgIHZhbCBub3RlcyA9IGFz c21zIHw+IG1hcCAobWFwIChmc3QgIz4gVGhtLmN0ZXJtX29mIGx0aHkgIz4gVGhtLmFzc3VtZSAj PiBmc3QgKGV4cG9ydHMgZmFsc2UgW10pKSB8PiBhcHNuZCkKICAgICAgZnVuIGFiYnJldmlhdGUg YSA9CiAgICAgICAgTG9jYWxfVGhlb3J5LmFiYnJldiBTeW50YXgubW9kZV9kZWZhdWx0IGEgIz4g c25kICM+CiAgICAgICAgKGZuIGx0aHkgPT4KICAgICAgICAgIExvY2FsX1RoZW9yeS5tYXBfY29u dGV4dHMKICAgICAgICAgICAgKFByb29mX0NvbnRleHQucmV2ZXJ0X2FiYnJldgogICAgICAgICAg ICAgICIiIChCaW5kaW5nLm5hbWVfb2YgKGEgfD4gZnN0IHw+IGZzdCkgfD4gTG9uZ19OYW1lLnF1 YWxpZnkgKE5hbWVkX1RhcmdldC5sb2NhbGVfb2YgbHRoeSB8PiB0aGUpKSB8PiBLKQogICAgICAg ICAgICBsdGh5KQogICAgaW4KICAgICAgbHRoeQogICAgICB8PiBmb2xkIGFiYnJldmlhdGUgYWJi cmV2cwogICAgICB8PiBmb2xkIChzbmQgb28gTG9jYWxfVGhlb3J5Lm5vdGUpIG5vdGVzCiAgICBl bmQKICB2YWwgbWV0aCA6IChQcm9vZi5jb250ZXh0IC0+IE1ldGhvZC5tZXRob2QpIGNvbnRleHRf cGFyc2VyID0KICAgIFNjYW4ubGlmdCAoUGFyc2UucG9zaXRpb24gUGFyc2UudGhtKSA+PiBoaWxi ZXJ0X2d1ZXNzX21ldGgKICB2YWwgZXhwb3J0X21ldGggOiAoUHJvb2YuY29udGV4dCAtPiBNZXRo b2QubWV0aG9kKSBjb250ZXh0X3BhcnNlciA9CiAgICBTY2FuLmxpZnQgKFNjYW4uc3VjY2VlZCAo KSkgPj4gSyBleHBvcnRfbWV0aAogIHZhbCBfID0KICAgIE91dGVyX1N5bnRheC5jb21tYW5kIFw8 XmNvbW1hbmRfa2V5d29yZD5cPG9wZW4+Z3Vlc3NfYnlfcnVsZVw8Y2xvc2U+ICJ3aWxkIGd1ZXNz aW5nIHVzaW5nIGFuIGVsaW1pbmF0aW9uIHJ1bGUiCiAgICAgIChQYXJzZS5wb3NpdGlvbiBQYXJz ZS50aG0gPj4gKFRvcGxldmVsLnByb29mIG8gZ3Vlc3NfZnJvbV9ydWxlX2NtZCkpCiAgdmFsIF8g PQogICAgT3V0ZXJfU3ludGF4LmNvbW1hbmQgXDxeY29tbWFuZF9rZXl3b3JkPlw8b3Blbj5ydWxl X2NvbnRleHRcPGNsb3NlPiAiaW50b2R1Y2luZyBkZWNsYXJhdGlvbnMgZnJvbSBhbiBlbGltaW5h dGlvbiBydWxlIgogICAgICAoUGFyc2UucG9zaXRpb24gUGFyc2UudGhtID4+IChUb3BsZXZlbC5s b2NhbF90aGVvcnkgTk9ORSBOT05FIG8gcnVsZV9jb250ZXh0X2NtZCkpCmVuZApcPGNsb3NlPgoK bWV0aG9kX3NldHVwIGhpbGJlcnRfZ3Vlc3MgPSBcPG9wZW4+SGlsYmVydF9HdWVzcy5tZXRoXDxj bG9zZT4gIkVsaW1pbmF0aW9uIGludG8gbG9jYWwgY29udGV4dCIKbWV0aG9kX3NldHVwIGV4cG9y dCA9IFw8b3Blbj5IaWxiZXJ0X0d1ZXNzLmV4cG9ydF9tZXRoXDxjbG9zZT4gIlByZXZlbnRpdmVs eSBleHBvcnQgdGhlIGdvYWwgc3RhdGUgaW50byB0aGUgb3V0ZXIgY29udGV4dCIKCnRobSB3Zl9h c3ltIHdmRV9taW4gYmlqX3BvaW50RSBmaW5pdGVfc3Vic2V0X1VuaW9uIGludF9kaWZmX2Nhc2Vz IHppcF9lcV9Db25zRSBwcm9kX2Nhc2VzCgpsZW1tYSB3Zl9hc3ltJzogYXNzdW1lcyB3ZjogIndm IFIiIHNob3dzICJhc3ltIFIiIHByb29mIChpbnRybyBhc3ltSSkKICBmaXggYSBiIGFzc3VtZSAi KGEsIGIpIFw8aW4+IFIiCiAgd2l0aCB3ZiBzaG93ICIoYiwgYSkgXDxub3Rpbj4gUiIgYXBwbHkg KGhpbGJlcnRfZ3Vlc3Mgd2ZfYXN5bVtjYXNlX25hbWVzIF9bYXN5bV1dKSBieSAocnVsZSBhc3lt KQpxZWQKCmxlbW1hIHdmX2FzeW0nJzoKICBhc3N1bWVzIHdmOiAid2YgUiIgYW5kIGFiOiAiKGEs IGIpIFw8aW4+IFIiCiAgc2hvd3MKICAgICIoYiwgYykgXDxpbj4gUiBcPExvbmdyaWdodGFycm93 PiBjID0gYSBcPExvbmdyaWdodGFycm93PiBGYWxzZSIKICAgICJiID0gYyBcPExvbmdyaWdodGFy cm93PiAoYywgYSkgXDxpbj4gUiBcPExvbmdyaWdodGFycm93PiBGYWxzZSIKcHJvb2YtCiAgcHJl c3VtZSBiYTogIihiLCBhKSBcPGluPiBSIgogIGZyb20gd2YgYWIgc2hvdyBGYWxzZSBhcHBseSAo aGlsYmVydF9ndWVzcyB3Zl9hc3ltW2Nhc2VfbmFtZXMgX1thc3ltXV0pIGJ5IChydWxlIGNuZi5j bGF1c2UycmF3X25vdEVbT0YgYmEgYXN5bV0pCiAgdGh1cyBGYWxzZSAuCm5leHQKICBhc3N1bWUg IihiLCBjKSBcPGluPiBSIiAiYyA9IGEiCiAgdGh1cyAiKGIsIGEpIFw8aW4+IFIiIGJ5IChlbGlt IHN1YnN0KQpuZXh0CiAgYXNzdW1lICJiID0gYyIgIihjLCBhKSBcPGluPiBSIgogIHRodXMgIihi LCBhKSBcPGluPiBSIiBieSAoc3Vic3QgKGFzbSkgZXFfY29tbXV0ZSkgKGVsaW0gc3Vic3QpCnFl ZAoKbGVtbWEgdW5kZXJFOiBhc3N1bWVzICJ5IFw8aW4+IHVuZGVyIFIgeiIgb2J0YWlucyAiKHks IHopIFw8aW4+IFIiIHVzaW5nIGFzc21zIHVuZm9sZGluZyB1bmRlcl9kZWYgYnkgc2ltcAoKbGVt bWEgd2ZfbWluOgogIGFzc3VtZXMgd2Y6ICJ3ZiBSIiBhbmQgbm9uZW1wOiAieCBcPGluPiBRIgog IHNob3dzICJcPGV4aXN0cz56XDxpbj5RLlw8Zm9yYWxsPnlcPGluPnVuZGVyIFIgei4geSBcPG5v dGluPiBRIgogIHVzaW5nIHdmIG5vbmVtcAogIGFwcGx5IChoaWxiZXJ0X2d1ZXNzIHdmRV9taW5b cmVuYW1lX2FicyB6LCBjYXNlX25hbWVzIF9bbWVtYmVyIG1pbl1dKQpwcm9vZiAgKGludHJvIGJl eElbb2YgXyB6XSBiYWxsSSBpbXBJIG1lbWJlcikKICBmaXggeSBhc3N1bWUgInkgXDxpbj4gdW5k ZXIgUiB6IgogIGhlbmNlICIoeSwgeikgXDxpbj4gUiIgYXBwbHkgKGhpbGJlcnRfZ3Vlc3MgdW5k ZXJFW2Nhc2VfbmFtZXMgX1twcm9kXV0pIGJ5IChydWxlIHByb2QpCiAgdGh1cyAieSBcPG5vdGlu PiBRIiBieSAocnVsZSBtaW4pCnFlZCBleHBvcnQKCmxlbW1hIHdmX21pbic6CiAgYXNzdW1lcyB3 ZjogIndmIFIiIGFuZCBub25lbXA6ICJ4IFw8aW4+IFEiCiAgc2hvd3MgIlw8ZXhpc3RzPnpcPGlu PlEuXDxmb3JhbGw+eVw8aW4+dW5kZXIgUiB6LiB5IFw8bm90aW4+IFEiCiAgYXBwbHkgKGludHJv IGJleEkpCiAgdXNpbmcgd2Ygbm9uZW1wIGFwcGx5IChoaWxiZXJ0X2d1ZXNzIHdmRV9taW5bcmVu YW1lX2FicyB6LCBjYXNlX25hbWVzIF9bbWVtYmVyIG1pbl1dKQpwcm9vZiAoaW50cm8gYmFsbEkg aW1wSSkKICBmaXggeSBhc3N1bWUgInkgXDxpbj4gdW5kZXIgUiB6IgogIGhlbmNlICIoeSwgeikg XDxpbj4gUiIgYXBwbHkgKGhpbGJlcnRfZ3Vlc3MgdW5kZXJFW2Nhc2VfbmFtZXMgX1twcm9kXV0p IGJ5IChydWxlIHByb2QpCiAgdGh1cyAieSBcPG5vdGluPiBRIiBieSAocnVsZSBtaW4pCm5leHQK ICBzaG93ICJ6IFw8aW4+IFEiIGJ5IChydWxlIG1lbWJlcikKcWVkIGV4cG9ydAoKc2NoZW1hdGlj X2dvYWwgd2ZfbWluJyc6CiAgYXNzdW1lcyB3ZjogIndmIFIiIGFuZCBub25lbXA6ICJ4IFw8aW4+ IFEiCiAgc2hvd3MgIj96IFw8aW4+USIgIlw8Zm9yYWxsPnlcPGluPnVuZGVyIFIgP3ouIHkgXDxu b3Rpbj4gUSIKICB1c2luZyB3ZiBub25lbXAgYXBwbHkgKGhpbGJlcnRfZ3Vlc3Mgd2ZFX21pbltj YXNlX25hbWVzIF9bbWVtYmVyIG1pbl1dKQogICBhcHBseSAocnVsZSBtZW1iZXIpCnByb29mIChp bnRybyBiYWxsSSBpbXBJKQogIGZpeCB5IGFzc3VtZSAieSBcPGluPiB1bmRlciBSIHoiCiAgaGVu Y2UgIih5LCB6KSBcPGluPiBSIiBhcHBseSAoaGlsYmVydF9ndWVzcyB1bmRlckVbY2FzZV9uYW1l cyBfW3Byb2RdXSkgYnkgKHJ1bGUgcHJvZCkKICB0aHVzICJ5IFw8bm90aW4+IFEiIGJ5IChydWxl IG1pbikKcWVkCgpsZW1tYSBiaWpfcG9pbnQ6CiAgYXNzdW1lcyBiaWo6ICJiaWogZiIKICBzaG93 cyAiXDxleGlzdHM+IXguIHkgPSBmIHgiCnByb29mIChpbnRybyBleDFJKQogIGZyb20gYmlqIGd1 ZXNzX2J5X3J1bGUgYmlqX3BvaW50RVt3aGVyZSB5PXksIHJlbmFtZV9hYnMgeCwgY2FzZV9uYW1l cyBfW2V4IDFdXQogIGZyb20gZXggc2hvdyAieSA9IGYgeCIgLgogIGZyb20gMSBzaG93ICJ5ID0g ZiB4JyAgXDxMb25ncmlnaHRhcnJvdz4geCcgPSB4IiBmb3IgeCcgLgpxZWQKCnNjaGVtYXRpY19n b2FsIGJpal9wb2ludCc6CiAgYXNzdW1lcyBiaWo6ICJiaWogZiIKICBzaG93cyAieSA9IGYgP3gi IGFuZCAiXDxBbmQ+IHgnLiB5ID0gZiB4JyAgXDxMb25ncmlnaHRhcnJvdz4geCcgPSA/eCIKcHJv b2YtCiAgZnJvbSBiaWogZ3Vlc3NfYnlfcnVsZSBiaWpfcG9pbnRFW3doZXJlIHk9eSwgcmVuYW1l X2FicyB4LCBjYXNlX25hbWVzIF9bZXggMV1dCiAgZnJvbSBleCBzaG93ICJ5ID0gZiB4IiAuCiAg ZnJvbSAxIHNob3cgInkgPSBmIHgnICBcPExvbmdyaWdodGFycm93PiB4JyA9IHgiIGZvciB4JyAu CnFlZAoKbGVtbWEgYmlqX3BvaW50Jyc6CiAgYXNzdW1lcyBiaWo6ICJiaWogZiIKICBzaG93cyAi XDxleGlzdHM+IXguIHkgPSBmIHgiCnByb29mIChpbnRybyBleDFJKQogIGZyb20gYmlqX3BvaW50 RSBiaWogZ3Vlc3MgeCAuCiAgbm90ZSBFeCA9IHRoaXMKICBmcm9tIEV4KDEpIHNob3cgInkgPSBm IHgiIG9vcHMKCmxlbW1hIGZpbml0ZV9zdWJzZXRfVW5pb24nOgogIGFzc3VtZXMgImZpbml0ZSBB IiAiQSBcPHN1YnNldGVxPiBcPFVuaW9uPiBcPEI+IgogIG9idGFpbnMgXDxGPiB3aGVyZSAiZmlu aXRlIFw8Rj4iICJcPEY+IFw8c3Vic2V0ZXE+IFw8Qj4iICJBIFw8c3Vic2V0ZXE+IFw8VW5pb24+ IFw8Rj4iCnByb29mCiAgewogICAgZnJvbSBhc3NtcyBndWVzc19ieV9ydWxlIGZpbml0ZV9zdWJz ZXRfVW5pb25bcmVuYW1lX2FicyBcPEY+LCBjYXNlX25hbWVzIF9bZmluaXRlIHN1YiBzdWJzZXRd XQogICAgdGhtIGZpbml0ZSBzdWIgc3Vic2V0CiAgICB0aHVzICJmaW5pdGUgXDxGPiIgIlw8Rj4g XDxzdWJzZXRlcT4gXDxCPiIgIkEgXDxzdWJzZXRlcT4gXDxVbmlvbj4gXDxGPiIgLgogIH0KcWVk CgpsZW1tYSBmaW5pdGVfc3Vic2V0X1VuaW9uJyc6CiAgYXNzdW1lcyAiZmluaXRlIEEiICJBIFw8 c3Vic2V0ZXE+IFw8VW5pb24+IFw8Qj4iCiAgb2J0YWlucyBcPEY+IHdoZXJlICJmaW5pdGUgXDxG PiIgIlw8Rj4gXDxzdWJzZXRlcT4gXDxCPiIgIkEgXDxzdWJzZXRlcT4gXDxVbmlvbj4gXDxGPiIK cHJvb2YKICB7CiAgICBmcm9tIGZpbml0ZV9zdWJzZXRfVW5pb24gYXNzbXMgZ3Vlc3MgXDxGPiAu CiAgICB0aHVzICJmaW5pdGUgXDxGPiIgIlw8Rj4gXDxzdWJzZXRlcT4gXDxCPiIgIkEgXDxzdWJz ZXRlcT4gXDxVbmlvbj4gXDxGPiIgb29wcwoKbGVtbWEgaW50X25hdHM6ICJcPGV4aXN0cz4gbSBu LiB6ID0gaW50IG0gLSBpbnQgbiIKICBhcHBseSAoaW50cm8gZXhJKQogIGFwcGx5IChoaWxiZXJ0 X2d1ZXNzIGludF9kaWZmX2Nhc2VzW3JlbmFtZV9hYnMgbSBuLCBvZiB6LCBjYXNlX25hbWVzIF9b ZGlmZl1dKQogIGFwcGx5IChydWxlIGRpZmYpCiAgYnkgZXhwb3J0CgpsZW1tYSBleF90YWlsczoK ICBhc3N1bWVzICJ6aXAgeHMgeXMgPSB4eSAjIHh5cyIKICBvYnRhaW5zIHhzJyB5cycgd2hlcmUg Inh5cyA9IHppcCB4cycgeXMnIgpwcm9vZgogIHsKICAgIGZyb20gYXNzbXMgZ3Vlc3NfYnlfcnVs ZSB6aXBfZXFfQ29uc0VbcmVuYW1lX2FicyBfIHhzJyBfIHlzJywgY2FzZV9uYW1lcyBfW18gXyBf IHRhaWxzXV0KICAgIGZyb20gdGFpbHMgc2hvdyAieHlzID0gemlwICB4cycgeXMnIiAuCiAgfQpx ZWQKCnNjaGVtYXRpY19nb2FsICIoP2EsID9iKSA9IHgiCnByb29mCiAgewogICAgZ3Vlc3NfYnlf cnVsZSBwcm9kX2Nhc2VzW3JlbmFtZV9hYnMgYSBiLCBvZiBfIHhdCiAgICBoYXZlICJmc3QgKGEs IGIpID0gZnN0IHggXDxvcj4gZnN0IChhLCBiKSBcPG5vdGVxPiBmc3QgIHgiIGJ5IHNpbXAKICB9 CiAgb29wcwoKbG9jYWxlIGVtcHR5ID0gZml4ZXMgYSA6OiBpbnQgIGJlZ2luCnJ1bGVfY29udGV4 dCBpbnRfZGlmZl9jYXNlc1tvZiA1LCBjYXNlX25hbWVzIF9bZGlmZl1dCmxlbW1hIHU6ICJtID4g biIgdXNpbmcgZGlmZiBieSBzaW1wCmVuZAoKdGVybSBlbXB0eS5uCnRobSBlbXB0eS51CgooKjwq KQplbmQKKCo+KikK --=_f1ebf531e210f5f84886c3aef56674e8-- From mandrykin at ispras.ru Sat Nov 07 22:53:50 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:41214) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbX5i-0005q3-Nv (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:53:50 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:45643) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbX5h-000Y6e-M0 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:53:50 +0000 Received: from ppsw-30.csi.cam.ac.uk ([2001:630:212:8::e:f30]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kbX5h-0003lB-O1 for isabelle-users at cl.cam.ac.uk; Sat, 07 Nov 2020 22:53:49 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883134 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail.ispras.ru ([83.149.199.84]:56840) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) id 1kbX5g-000QJO-fM (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 07 Nov 2020 22:53:49 +0000 Received: from mail.ispras.ru (unknown [83.149.199.84]) by mail.ispras.ru (Postfix) with ESMTPSA id F051440D403E; Sat, 7 Nov 2020 22:53:47 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 08 Nov 2020 01:53:47 +0300 From: Mikhail Mandrykin To: Makarius In-Reply-To: <712a55388423b9355fb1c9d66d984c5c at ispras.ru> References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> <712a55388423b9355fb1c9d66d984c5c at ispras.ru> User-Agent: Roundcube Webmail/1.4.4 Message-ID: <2f2f7bff0f8ccfcec1c22f8a91c8363d at ispras.ru> X-Sender: mandrykin at ispras.ru Organization: ISP RAS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 22:53:50 -0000 Mikhail Mandrykin писал 2020-11-08 01:33: > The repository with the tutorial is available at > https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks Sorry, it seems this link won't work, if anyone is interested I uploaded a mirror on GitHub at https://github.com/schrodibear/isabelle-tasks Mikhail > Hello, >> Your theory "Bug" looks very non-standard in various respects. Can you >> say, >> what you are actually trying to do? > > Actually, I was preparing a small Isabelle/ML programing tutorial for > relatively experienced functional programmers (in Haskell and OCaml), > primarily for internal use, to emphasize the features that are needed > to implement custom proof methods. The tutorial was meant to be very > practically-oriented and so consisted of a set of example > implementations that would use only the interfaces from a documented > set of ML interfaces. So I proceeded in the following way: I just came > up with a problem, implemented a solution and then documented all the > interfaces used in the solution using the available documentation as > well as the knowledge obtained from inspection of the sources during > the implementation. As one of the final, more complex examples, I > decided to implement a sample triple of a proof method, an Isar > command and a local context command to support introduction of > obtained facts into the local context that would also support goal > refinement with obtained variables. This is not possible in Pure, but > in HOL the Hilbert epsilon operator can be used to extract the > corresponding witness. I actually implemented the tactic and the > commands (attached the resulting sample theory as Proof_Context.thy) > and they seem to work as expected, the simplest way to observe them in > action is in the schematic_goal wf_min'' that directly refines the > statement using the obtained epsilon-expressions. However, I myself > did not fully understand the limitations of the proof methods since > they are actually context-tactics and can return a modified context as > a result, but I had not found any real examples of methods that would > alter the context in any way other than by introduction of cases. So > indeed, the logical context is never modified, only the extra-logical > part is changed. The sample method `hilbert_guess` (in > Proof_Context.thy) thus is not a proper method as it breaks this > convention by introducing obtained facts into the logical context. So > when I tried to compile the resulting tutorial document I experienced > the problems I described and decided to clarify whether this is an > intended limitation of proof methods, because in practice in many > cases extending the logical context with assumptions actually works > (the assumptions are exported by the `done`/`qed` commands). So > because this method is only intended as experimental exploratory code, > this is not a real issue, the real methods we implemented so far > (those that work in auxiliary local contexts) all perform the export > internally and only alter the context for extra-logical purposes e.g. > remembering a counterexample model extracted from an SMT solver (Z3). > The repository with the tutorial is available at > https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks > . Currently, we switched to different parts of our framework > (implementing the shallow embedding and the translator), so the > tutorial is currently not actively used, but may soon be needed as > constructing the embedding also requires the use of custom automated > proofs. > > Regards, Mikhail > > Makarius писал 2020-11-08 00:09: >> On 17/09/2020 19:00, Mikhail Mandrykin wrote: >>> >>> Recently, I experimented with implementation of Isabelle proof >>> methods, >>> commands and proof elements to learn Isabelle internals more deeply >>> as we plan >>> to implement Isabelle commands and methods for our program >>> verification >>> framework. At some point, I encountered quite puzzling behavior of >>> commands >>> `done`, `by` and `qed` with respect to implicit exporting of the >>> resulting >>> goal state (actually, the protected initial statement as a theorem) >>> into the >>> outer context. I attached an example exposing the various behaviors. >>> The >>> question is whether these various differences in behavior are >>> expected, >>> especially the situation when the proof is successfully finished >>> inside jEdit, >>> but then fails during build by `isabelle build` command. >> >>> I understand that> normally Isabelle methods do not introduce local >> assumptions or fixed >>> variables, so this seems not really critical (no intent to actually >>> implement >>> such methods for the users), but it would help with the general >>> understanding >>> to know whether this is totally unspecified to introduce those >>> assumptions or >>> is merely a pragmatic constraint >> >> Yes, proof methods cannot extend the logical context and expect to >> work properly. >> >> There are certain principles how proof contexts are >> constructed/deconstructed >> by the Isar language, according to its structure. Some of this is >> explained in >> the "implementation" manual, but the general principle of survival is >> to do >> this in the "usual way", e.g. by looking at existing implementations >> in the >> sources. >> >> Your theory "Bug" looks very non-standard in various respects. Can you >> say, >> what you are actually trying to do? >> >> >> Makarius From makarius at sketis.net Sat Nov 07 23:02:53 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:36448) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kbXET-000639-Pw (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 23:02:53 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.102 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:35637) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbXES-000l4C-fF (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 07 Nov 2020 23:02:53 +0000 Received: from ppsw-41.csi.cam.ac.uk ([2001:630:212:8::e:f41]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kbXES-0003ov-Lr for isabelle-users at cl.cam.ac.uk; Sat, 07 Nov 2020 23:02:52 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883134 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.102 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([188.68.63.102]:41495) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kbXER-000iv6-SC (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 07 Nov 2020 23:02:52 +0000 Received: from mors-relay-2502.netcup.net (localhost [127.0.0.1]) by mors-relay-2502.netcup.net (Postfix) with ESMTPS id 4CTCTR2Bjlz6BpF; Sun, 8 Nov 2020 00:02:51 +0100 (CET) Received: from policy01-mors.netcup.net (unknown [46.38.225.53]) by mors-relay-2502.netcup.net (Postfix) with ESMTPS id 4CTCTR1n6sz59Y7; Sun, 8 Nov 2020 00:02:51 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy01-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy01-mors.netcup.net (Postfix) with ESMTPS id 4CTCTP310Xz8tsg; Sun, 8 Nov 2020 00:02:49 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-92.dynamic.mnet-online.de [62.216.204.92]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 98E17A31C8; Sun, 8 Nov 2020 00:02:48 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.92) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: Mikhail Mandrykin References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> <712a55388423b9355fb1c9d66d984c5c at ispras.ru> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <8486637a-1004-8868-0de8-f740edab4c2b at sketis.net> Date: Sun, 8 Nov 2020 00:02:48 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <712a55388423b9355fb1c9d66d984c5c at ispras.ru> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <160479016883.20318.10129620311340261845 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: SbB1CYzvloox6/Rx3kr7GZsXAqxokiKDka+NYYRdgZUwW+0= X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2020 23:02:53 -0000 On 07/11/2020 23:33, Mikhail Mandrykin wrote: > However, I myself did > not fully understand the limitations of the proof methods since they are > actually context-tactics and can return a modified context as a result, but I > had not found any real examples of methods that would alter the context in any > way other than by introduction of cases. So indeed, the logical context is > never modified, only the extra-logical part is changed. That is indeed an important observation, both for this concrete situation and as a general principle in Isabelle: things that are never done (or only in odd exceptional situations) can lead to undefined behaviour. Put to the extreme, you can do almost arbitrary non-sense with Isabelle, especially in conjunction with logical operations where the programming interfaces cannot guarantee the structural integrity of the concepts behind it: A theorem might be a theorem, but it could be non-sense or break other tools or infrastructure (like Isar proof language elements). > The > repository with the tutorial is available at > https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks That seems to be non-public. Makarius From mandrykin at ispras.ru Mon Nov 09 16:22:36 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:59844) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kc9wC-00006g-GO (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 09 Nov 2020 16:22:36 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883199 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:47350) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kc9wB-000K8L-Qq (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 09 Nov 2020 16:22:36 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kc9wA-000VWB-UI for isabelle-users at cl.cam.ac.uk; Mon, 09 Nov 2020 16:22:34 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883199 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail.ispras.ru ([83.149.199.84]:44788) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) id 1kc9w9-000znn-MA (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Mon, 09 Nov 2020 16:22:34 +0000 Received: from mail.ispras.ru (unknown [83.149.199.84]) by mail.ispras.ru (Postfix) with ESMTPSA id 3936840D3BFF; Mon, 9 Nov 2020 16:22:32 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 09 Nov 2020 19:22:32 +0300 From: Mikhail Mandrykin To: Buday Gergely In-Reply-To: References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> <712a55388423b9355fb1c9d66d984c5c at ispras.ru> <2f2f7bff0f8ccfcec1c22f8a91c8363d at ispras.ru> User-Agent: Roundcube Webmail/1.4.4 Message-ID: X-Sender: mandrykin at ispras.ru Organization: ISP RAS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Nov 2020 16:22:36 -0000 > Could you please fix your Isabelle theory? In Isabelle2020 it seems to be slight incompatibility in the definition of `asym` inductive predicate in `Relation.thy`: it was simplified in the development version (would-be 2021) by removing an extra premise `irrefl R`, which causes the failure. I pushed a fix into `Isabelle2020` compatibility branch Mikhail Buday Gergely писал 2020-11-09 12:29: > I cloned your github repository and ran > >   isabelle build -D . > > to get > > Running Tasks ... > Tasks FAILED > (see also > C:\Users\EKE\.isabelle\Isabelle2020\heaps\polyml-5.8.1_x86_64_32-windows\log\Tasks) > \ ?thesis > \bij ?f; >  \x. >     \?y = ?f x; >      \x'. ?y = ?f x' \ x' = x\ >     \ ?thesis\ > \ ?thesis > > Could you please fix your Isabelle theory? > > - Gergely > > 11/7/2020 11:53 PM keltezéssel, Mikhail Mandrykin írta: >> Mikhail Mandrykin писал 2020-11-08 01:33: >> >>> The repository with the tutorial is available at >>> https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks >> Sorry, it seems this link won't work, if anyone is interested I >> uploaded a mirror on GitHub at >> https://github.com/schrodibear/isabelle-tasks >> >> Mikhail >> >>> Hello, >>>> Your theory "Bug" looks very non-standard in various respects. Can >>>> you say, >>>> what you are actually trying to do? >>> >>> Actually, I was preparing a small Isabelle/ML programing tutorial for >>> relatively experienced functional programmers (in Haskell and OCaml), >>> primarily for internal use, to emphasize the features that are needed >>> to implement custom proof methods. The tutorial was meant to be very >>> practically-oriented and so consisted of a set of example >>> implementations that would use only the interfaces from a documented >>> set of ML interfaces. So I proceeded in the following way: I just >>> came >>> up with a problem, implemented a solution and then documented all the >>> interfaces used in the solution using the available documentation as >>> well as the knowledge obtained from inspection of the sources during >>> the implementation. As one of the final, more complex examples, I >>> decided to implement a sample triple of a proof method, an Isar >>> command and a local context command to support introduction of >>> obtained facts into the local context that would also support goal >>> refinement with obtained variables. This is not possible in Pure, but >>> in HOL the Hilbert epsilon operator can be used to extract the >>> corresponding witness. I actually implemented the tactic and the >>> commands (attached the resulting sample theory as Proof_Context.thy) >>> and they seem to work as expected, the simplest way to observe them >>> in >>> action is in the schematic_goal wf_min'' that directly refines the >>> statement using the obtained epsilon-expressions. However, I myself >>> did not fully understand the limitations of the proof methods since >>> they are actually context-tactics and can return a modified context >>> as >>> a result, but I had not found any real examples of methods that would >>> alter the context in any way other than by introduction of cases. So >>> indeed, the logical context is never modified, only the extra-logical >>> part is changed. The sample method `hilbert_guess` (in >>> Proof_Context.thy) thus is not a proper method as it breaks this >>> convention by introducing obtained facts into the logical context. So >>> when I tried to compile the resulting tutorial document I experienced >>> the problems I described and decided to clarify whether this is an >>> intended limitation of proof methods, because in practice in many >>> cases extending the logical context with assumptions actually works >>> (the assumptions are exported by the `done`/`qed` commands). So >>> because this method is only intended as experimental exploratory >>> code, >>> this is not a real issue, the real methods we implemented so far >>> (those that work in auxiliary local contexts) all perform the export >>> internally and only alter the context for extra-logical purposes e.g. >>> remembering a counterexample model extracted from an SMT solver (Z3). >>> The repository with the tutorial is available at >>> https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks >>> . Currently, we switched to different parts of our framework >>> (implementing the shallow embedding and the translator), so the >>> tutorial is currently not actively used, but may soon be needed as >>> constructing the embedding also requires the use of custom automated >>> proofs. >>> >>> Regards, Mikhail >>> >>> Makarius писал 2020-11-08 00:09: >>>> On 17/09/2020 19:00, Mikhail Mandrykin wrote: >>>>> >>>>> Recently, I experimented with implementation of Isabelle proof >>>>> methods, >>>>> commands and proof elements to learn Isabelle internals more deeply >>>>> as we plan >>>>> to implement Isabelle commands and methods for our program >>>>> verification >>>>> framework. At some point, I encountered quite puzzling behavior of >>>>> commands >>>>> `done`, `by` and `qed` with respect to implicit exporting of the >>>>> resulting >>>>> goal state (actually, the protected initial statement as a theorem) >>>>> into the >>>>> outer context. I attached an example exposing the various >>>>> behaviors. The >>>>> question is whether these various differences in behavior are >>>>> expected, >>>>> especially the situation when the proof is successfully finished >>>>> inside jEdit, >>>>> but then fails during build by `isabelle build` command. >>>> >>>>> I understand that> normally Isabelle methods do not introduce local >>>> assumptions or fixed >>>>> variables, so this seems not really critical (no intent to actually >>>>> implement >>>>> such methods for the users), but it would help with the general >>>>> understanding >>>>> to know whether this is totally unspecified to introduce those >>>>> assumptions or >>>>> is merely a pragmatic constraint >>>> >>>> Yes, proof methods cannot extend the logical context and expect to >>>> work properly. >>>> >>>> There are certain principles how proof contexts are >>>> constructed/deconstructed >>>> by the Isar language, according to its structure. Some of this is >>>> explained in >>>> the "implementation" manual, but the general principle of survival >>>> is to do >>>> this in the "usual way", e.g. by looking at existing implementations >>>> in the >>>> sources. >>>> >>>> Your theory "Bug" looks very non-standard in various respects. Can >>>> you say, >>>> what you are actually trying to do? >>>> >>>> >>>>     Makarius >> From prvs=5768a96bd=Gerwin.Klein at data61.csiro.au Tue Nov 10 02:20:08 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:59814) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kcJGS-0006p6-FO (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 02:20:08 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883199 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [150.229.64.42 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [150.229.64.42 listed in wl.mailspike.net] * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from vic-mtaout5.csiro.au ([150.229.64.42]:25528) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) id 1kcJGQ-000Yew-fF (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 02:20:08 +0000 IronPort-SDR: FMEBwjO7K03fRnOUVWI0wBMIvkbHxfpO5haDOkK37aAtBV7y16xenk0uV8RB/mIp5wAqB+bIfW N9GNdXl/Ug2A== X-SBRS: 5.1 IronPort-PHdr: =?us-ascii?q?9a23=3A++CdjRTAdhcpKudcDuLrOE3bc9psv++ubAcI9p?= =?us-ascii?q?oqja5Pea2//pPkeVbS/uhpkESQBtmJ7/Nfl/GQuKnlH2ULp4uC4zgOc51JAh?= =?us-ascii?q?kCj8he3wktG9WMBkCzKvn2Jzc7E8JPWB4AnTm7PEFZFdy4awjUpXu/vjoTAQ?= =?us-ascii?q?nkcwF8I6L8EcjPjJf/2+W74ZaGZQJOiXK0aq9zKxPjqwLXu6x0yYtvI6o80F?= =?us-ascii?q?3HuHxNLuhf2Wo2fBSYhBfm4YG54c1u?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A+EpAAB296lflwCwBSSYiIBxAISUgiF?= =?us-ascii?q?iDg8BAQEBCQESAQUFAUCBPgUBCwGBUVF7gTYKhDODSQONLZt6A1QLAQEBDQI?= =?us-ascii?q?jCgIEAQECgVOCdRmBfAIlNwYOAgMBAQsBAQYBAQEBAQYEAgIQAQEBAQEBAQE?= =?us-ascii?q?fBoYRDINUgQYBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE?= =?us-ascii?q?BBQIIVDAeAQE2EREMAQE4EQEiAiYCBDAVEgQ1gwQBglUDLQEBBAqifwKBO4g?= =?us-ascii?q?TGTx2gTKDBAEBBXuBUYJAGIIQAwYJAYEEKgGCcoN1hleCG4E4DAMNh0qDGDO?= =?us-ascii?q?CLJNlpEUHAQKCbYkNkgAigwYBnmmeR5Frg2ICBAIEBQIOAQEFgWqBfB1PfgG?= =?us-ascii?q?CCgEzPhIXAg2OHxqCEYFGihhAdAI2AgYBCQEBAwl8jDsBgRABAQ?= X-IPAS-Result: =?us-ascii?q?A+EpAAB296lflwCwBSSYiIBxAISUgiFiDg8BAQEBCQESA?= =?us-ascii?q?QUFAUCBPgUBCwGBUVF7gTYKhDODSQONLZt6A1QLAQEBDQIjCgIEAQECgVOCd?= =?us-ascii?q?RmBfAIlNwYOAgMBAQsBAQYBAQEBAQYEAgIQAQEBAQEBAQEfBoYRDINUgQYBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBQIIVDAeAQE2E?= =?us-ascii?q?REMAQE4EQEiAiYCBDAVEgQ1gwQBglUDLQEBBAqifwKBO4gTGTx2gTKDBAEBB?= =?us-ascii?q?XuBUYJAGIIQAwYJAYEEKgGCcoN1hleCG4E4DAMNh0qDGDOCLJNlpEUHAQKCb?= =?us-ascii?q?YkNkgAigwYBnmmeR5Frg2ICBAIEBQIOAQEFgWqBfB1PfgGCCgEzPhIXAg2OH?= =?us-ascii?q?xqCEYFGihhAdAI2AgYBCQEBAwl8jDsBgRABAQ?= Received: from exch1-mel.nexus.csiro.au ([IPv6:2405:b000:302:71::85:121]) by vic-ironport-int.csiro.au with ESMTP/TLS/ECDHE-RSA-AES256-SHA384; 10 Nov 2020 13:19:55 +1100 Received: from exch2-mel.nexus.csiro.au (2405:b000:302:71::85:122) by exch1-mel.nexus.csiro.au (2405:b000:302:71::85:121) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 10 Nov 2020 13:19:44 +1100 Received: from exedge2.csiro.au (150.229.64.34) by exch2-mel.nexus.csiro.au (138.194.85.122) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 10 Nov 2020 13:19:44 +1100 Received: from AUS01-SY4-obe.outbound.protection.outlook.com (104.47.71.175) by exedge2.csiro.au (150.229.64.34) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 10 Nov 2020 13:19:37 +1100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KgnZ69Gq2tHHWRGgvxGpG5vynT2HpbWj2wBMrpWXfW1uF742J6kmOx5rjfHHxDTJ1vD3m/gXkj+ZiTxXewtZ5cN5emBUtHaO+bzj6/9WR3x56DZjA/fhk91d2PD2UnId1Y1mJQH9pRJCfjNMAcBwuMjZaFZHx0IHNa0g3puKspH5Sl3QBAXagWtTuUdIl5dtDO4ssy+Z/9FjmZW6WR55fw6x4hlkuGclRHPgdTBXBUt8IXwJ2Hd2rg4mR2zLaw9BgkrmwNlvu8okbLj7hZJAYNNbXkP0TbBVgXI4Fk8IHuvJ4AhPMgtP/JTEH/0SB3TQT50gZ+NmYJ5qDeCaTa8R+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EPKU1d3XVk/SmIrZTkR15OO3MIB6T1rYBCjthEoY1pE=; b=VlfwVaGDbT2zVo/wLS28FLYQdwHUklYXx8Htuhll6sVEpiveitq5JwkdDM2NRW9gu/MwohFAW7fKgJLfpmUFgyK0cwPy7F9bb3yeo6FLyx+zeBoF6Cp40SQG5STqx4MPXmtgHb7nErXE6Rw66QKYiYDYkrSiBnxpBmymBEYmHWELbUp4Y5qG0hGVNkHPP+OIrznwTNTyfneUok1OrKsRL3DSP6jzna/6X8cVdvt7IZCSLHW+maUu80DbeSMpR/u0DPOYTHQ/Y5je9e6/WZW+tklxT8khFUGtj4lB4Y0Ngly5Hq4ZxAJRGO37M8aYuGKRe4ilI1bcE5oeMGKycVgK5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=data61.csiro.au; dmarc=pass action=none header.from=data61.csiro.au; dkim=pass header.d=data61.csiro.au; arc=none Received: from MEAPR01MB4726.ausprd01.prod.outlook.com (2603:10c6:220:10::15) by ME2PR01MB2562.ausprd01.prod.outlook.com (2603:10c6:201:25::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.22; Tue, 10 Nov 2020 02:19:43 +0000 Received: from MEAPR01MB4726.ausprd01.prod.outlook.com ([fe80::c152:7200:7573:d494]) by MEAPR01MB4726.ausprd01.prod.outlook.com ([fe80::c152:7200:7573:d494%6]) with mapi id 15.20.3541.025; Tue, 10 Nov 2020 02:19:43 +0000 From: "Klein, Gerwin (Data61, Kensington NSW)" To: isabelle-users Thread-Topic: AutoCorres 1.7 and CParser 1.17 for Isabelle2020 Thread-Index: AQHWtwfzBBwRZh1vlUOtiV8RVghLJw== Date: Tue, 10 Nov 2020 02:19:43 +0000 Message-ID: <7E5FFF52-9E72-40E1-89EA-3F062EEC26E7 at data61.csiro.au> Accept-Language: en-AU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.4) authentication-results: lists.cam.ac.uk; dkim=none (message not signed) header.d=none;lists.cam.ac.uk; dmarc=none action=none header.from=data61.csiro.au; x-originating-ip: [103.246.103.99] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b5f9e7d-d821-4abd-d13c-08d8851f165c x-ms-traffictypediagnostic: ME2PR01MB2562: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZoUaXcMXTPpqnv65bwmM1UkroF3FgXLHb2S/xTMPTWCkDLCdZ4T08NAJQ1UK2ABBvv8vLQjpT/Pk7BIljgc2xwjN+s1mSF1c6hZZRqMzyinEC4E9hX0H1n4No8WeOt7QrHcXNa3fV2T+gnVPeX+KdI9X2a0s9opkT8PUjj1mYxLVHOzwhvFsWteOyC57CsR7Sg5YNLCNH0UCji/i/ZhR7v8hE8G5JKsyNH9S7knCEANaM20YnMaCc21Gl9XgTubz6XvPcoJMe5lAHVTUPE8sQcrPEhOGgFgRoVWPT2ZYmzUX5x7b8FFZCWW2Byjl3VvyWHf3qNxMoNFSDBG2YqepVwnjhvXQudV+2nYHRsRSOdo6j7+aj4Dq8xycrgvsxQYN2BS+w9CRbpZxe1bmQ4XsSmkVUDT2QqE2z8ip0OdO9XlQBHMtHpVPZj2z0qoHI3xQSyg9p3eJ7oRMi62gLV9f8Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MEAPR01MB4726.ausprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(136003)(376002)(396003)(39850400004)(366004)(6512007)(316002)(5660300002)(83080400002)(8676002)(2616005)(8936002)(66556008)(6916009)(186003)(86362001)(478600001)(91956017)(66446008)(64756008)(2906002)(6506007)(966005)(66476007)(76116006)(66946007)(6486002)(71200400001)(83380400001)(26005)(33656002)(558084003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: dXYtIpFn/EoZyF+UbLCVU/P/T4dyzrn4P6agHveL5+cWHfVTOs3Ml2u/d6T8jxEOW98RirICDcGa8dSmSAZQKygmDSg8SnhY8uBtuuX8q0zRuR6leBUJ1zHFULSFk6A/Aygji2yYB0uRXgDQcMHHVH6jWajeeBQ+C0cV0hXoChnVSqeJb50MYBkxe9ZRrDoNrtNhHSYM6Cp3nSZP1zj1+FY2odG7vFenevFY83U9E+8qeQgJqT/jeA/AOSPMeZY8bTBWldEiWjtdt1tuJy2ZYetC3Z7UfMAwhHiknrJQwCjFauknNRmKOKusjZJUgWiMm9c6TK/wu/eFNkvxfKyLPXA5bEApK7+rIynxO8P6oZ17Qhu70yzrbFOvriCQNa6w/cuekFTzklaxKAIlTxeOOFayRLN7yQd6Ih6O/J0cus6TMLqwlf2C6iTw0jPH+AgTkqjooLBnjj3sX/cVejadXVxMA5c8vL2PyMbCxQAuN33SUO9FvsrFILe8RCDepTZTWrdCBsx0jkhDBF/yBmMB+AZtVn2Fds8l2VfBH/qevonthSWHV8Tkszf1FHy8NxLV5ySN+wC/osBs27ciFSe6HULccSKAzAn9F3kNrZUpeZixOsc6b1PG0/hUzAinsRe9lpFK65OIE63MBiX3xnMWqDjzXYbITYhYGLRzI8N4c2fezNyYziuBAH/kOHEMSirQkGyNjQb32PzHUrr8vVEiGNQlwUkRnxUxbKPdgyEAHcbxfXN0zkqOV1vEZL9cPfMf8pVCr6lTVVkbEhRLOPXQhXEWEDZKEQ9/m2VqEdpAQ1WGgtNe+CDbCWy2wTyIBizXx0Y7BSPwE6HHu7RAkhNC4zlrCuYaeqz5HWpjzOilNDj2DyYAGmBxffDNOo94p486oAEXSHy0tvrHg6CFiUWkVQ== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MEAPR01MB4726.ausprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b5f9e7d-d821-4abd-d13c-08d8851f165c X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2020 02:19:43.8167 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0fe05593-19ac-4f98-adbf-0375fce7f160 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aHtQ92bwPJqcjy0Du1DT7s8t3D3hp+stf6HTrX+6oU7uK59d8QTwQS6ePVggtHip X-MS-Exchange-Transport-CrossTenantHeadersStamped: ME2PR01MB2562 X-OriginatorOrg: data61.csiro.au Subject: [isabelle] AutoCorres 1.7 and CParser 1.17 for Isabelle2020 X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2020 02:20:08 -0000 SXTigJlzIGEgcGxlYXN1cmUgdG8gYW5ub3VuY2UgdGhhdCB0aGUgQyB2ZXJpZmljYXRpb24gdG9v bHMgZm9yIElzYWJlbGxlDQoNCkF1dG9Db3JyZXMgMS43IGF0IGh0dHBzOi8vdHMuZGF0YTYxLmNz aXJvLmF1L3Byb2plY3RzL1RTL2F1dG9jb3JyZXMvDQoNCmFuZA0KDQpDUGFyc2VyIDEuMTcgYXQg aHR0cHM6Ly90cy5kYXRhNjEuY3Npcm8uYXUvc29mdHdhcmUvVFMvYy1wYXJzZXIvDQoNCmFyZSBu b3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmb3IgSXNhYmVsbGUyMDIwLg0KDQpDaGVlcnMsDQpH ZXJ3aW4NCg0K From david.k at posteo.de Tue Nov 10 10:00:56 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:60310) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kcQSO-0003Ex-EB (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 10:00:56 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883223 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:55193) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kcQSN-000nbx-Sn (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 10:00:56 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 11956240101 for ; Tue, 10 Nov 2020 11:00:52 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CVjzl5WrLz9rxN for ; Tue, 10 Nov 2020 11:00:51 +0100 (CET) To: cl-isabelle-users at lists.cam.ac.uk From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <4dc55fc8-53b5-e10f-6a99-ff4f2215d445 at posteo.de> Date: Tue, 10 Nov 2020 11:00:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: [isabelle] Codegen for List.member overwrites List structure in SML X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2020 10:00:56 -0000 Dear all, it seems that the special code generation setup for List.member in theory "HOL-Library.Predicate_Compile_Alternative_Defs" overwrites SML's List structure, which means you cannot access any of the standard List functions after including the generated code. Minimal code: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ theory Scratch imports Main "HOL-Library.Predicate_Compile_Alternative_Defs" begin inductive is_member :: "'a list ⇒ 'a ⇒ bool" where "List.member xs x ⟹ is_member xs x" code_pred is_member . export_code is_member in SML end ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ My current fix is to assign the original List structure to another structure before importing the generated SML code. Best regards, David Kretzmer From buday.gergely.istvan at szie.hu Mon Nov 09 09:29:35 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:60488) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kc3UV-0007Qo-00 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 09 Nov 2020 09:29:35 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883199 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [192.188.242.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:55125) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kc3UT-000KgI-ek (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 09 Nov 2020 09:29:34 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kc3US-0007mR-8g for isabelle-users at cl.cam.ac.uk; Mon, 09 Nov 2020 09:29:32 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883199 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [192.188.242.66 listed in list.dnswl.dnsbl.ja.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mx1.szie.hu ([192.188.242.66]:51800) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtp id 1kc3UR-000J3K-Jj (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Mon, 09 Nov 2020 09:29:32 +0000 Received: from webmail.ih.szie.hu (wmail.ih.szie.hu [IPv6:2001:738:5800:1020:192:188:242:48]) by mx1.szie.hu (Postfix) with ESMTP id 4CV5Ky4SDcz34; Mon, 9 Nov 2020 10:29:26 +0100 (CET) Received: from [10.2.10.233] (wgfb.karolyrobert.hu [193.225.54.108]) by webmail.ih.szie.hu (Postfix) with ESMTPSA id 088E2140056; Mon, 9 Nov 2020 10:29:26 +0100 (CET) To: Mikhail Mandrykin , Makarius References: <5a35dad6e9cca0fdffd3409b4bed11df at ispras.ru> <3d116a95-481b-3325-bcdc-a9f9295333cb at sketis.net> <712a55388423b9355fb1c9d66d984c5c at ispras.ru> <2f2f7bff0f8ccfcec1c22f8a91c8363d at ispras.ru> Message-ID: Date: Mon, 9 Nov 2020 10:29:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <2f2f7bff0f8ccfcec1c22f8a91c8363d at ispras.ru> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: hu X-debug-header: local_aliases has suffix X-Mailman-Approved-At: Tue, 10 Nov 2020 10:10:50 +0000 Cc: isabelle-users Subject: Re: [isabelle] Implicit exporting of goal state by different commands (done, by, qed) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list From: Buday Gergely via Cl-isabelle-users Reply-To: Buday Gergely List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Nov 2020 09:29:35 -0000 I cloned your github repository and ran   isabelle build -D . to get Running Tasks ... Tasks FAILED (see also C:\Users\EKE\.isabelle\Isabelle2020\heaps\polyml-5.8.1_x86_64_32-windows\log\Tasks) \ ?thesis \bij ?f;  \x.     \?y = ?f x;      \x'. ?y = ?f x' \ x' = x\     \ ?thesis\ \ ?thesis Could you please fix your Isabelle theory? - Gergely 11/7/2020 11:53 PM keltezéssel, Mikhail Mandrykin írta: > Mikhail Mandrykin писал 2020-11-08 01:33: > >> The repository with the tutorial is available at >> https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks >> > Sorry, it seems this link won't work, if anyone is interested I > uploaded a mirror on GitHub at > https://github.com/schrodibear/isabelle-tasks > > Mikhail > >> Hello, >>> Your theory "Bug" looks very non-standard in various respects. Can >>> you say, >>> what you are actually trying to do? >> >> Actually, I was preparing a small Isabelle/ML programing tutorial for >> relatively experienced functional programmers (in Haskell and OCaml), >> primarily for internal use, to emphasize the features that are needed >> to implement custom proof methods. The tutorial was meant to be very >> practically-oriented and so consisted of a set of example >> implementations that would use only the interfaces from a documented >> set of ML interfaces. So I proceeded in the following way: I just came >> up with a problem, implemented a solution and then documented all the >> interfaces used in the solution using the available documentation as >> well as the knowledge obtained from inspection of the sources during >> the implementation. As one of the final, more complex examples, I >> decided to implement a sample triple of a proof method, an Isar >> command and a local context command to support introduction of >> obtained facts into the local context that would also support goal >> refinement with obtained variables. This is not possible in Pure, but >> in HOL the Hilbert epsilon operator can be used to extract the >> corresponding witness. I actually implemented the tactic and the >> commands (attached the resulting sample theory as Proof_Context.thy) >> and they seem to work as expected, the simplest way to observe them in >> action is in the schematic_goal wf_min'' that directly refines the >> statement using the obtained epsilon-expressions. However, I myself >> did not fully understand the limitations of the proof methods since >> they are actually context-tactics and can return a modified context as >> a result, but I had not found any real examples of methods that would >> alter the context in any way other than by introduction of cases. So >> indeed, the logical context is never modified, only the extra-logical >> part is changed. The sample method `hilbert_guess` (in >> Proof_Context.thy) thus is not a proper method as it breaks this >> convention by introducing obtained facts into the logical context. So >> when I tried to compile the resulting tutorial document I experienced >> the problems I described and decided to clarify whether this is an >> intended limitation of proof methods, because in practice in many >> cases extending the logical context with assumptions actually works >> (the assumptions are exported by the `done`/`qed` commands). So >> because this method is only intended as experimental exploratory code, >> this is not a real issue, the real methods we implemented so far >> (those that work in auxiliary local contexts) all perform the export >> internally and only alter the context for extra-logical purposes e.g. >> remembering a counterexample model extracted from an SMT solver (Z3). >> The repository with the tutorial is available at >> https://forge.ispras.ru/projects/isabelle-tutorial/repository/isabelle-tasks >> >> . Currently, we switched to different parts of our framework >> (implementing the shallow embedding and the translator), so the >> tutorial is currently not actively used, but may soon be needed as >> constructing the embedding also requires the use of custom automated >> proofs. >> >> Regards, Mikhail >> >> Makarius писал 2020-11-08 00:09: >>> On 17/09/2020 19:00, Mikhail Mandrykin wrote: >>>> >>>> Recently, I experimented with implementation of Isabelle proof >>>> methods, >>>> commands and proof elements to learn Isabelle internals more deeply >>>> as we plan >>>> to implement Isabelle commands and methods for our program >>>> verification >>>> framework. At some point, I encountered quite puzzling behavior of >>>> commands >>>> `done`, `by` and `qed` with respect to implicit exporting of the >>>> resulting >>>> goal state (actually, the protected initial statement as a theorem) >>>> into the >>>> outer context. I attached an example exposing the various >>>> behaviors. The >>>> question is whether these various differences in behavior are >>>> expected, >>>> especially the situation when the proof is successfully finished >>>> inside jEdit, >>>> but then fails during build by `isabelle build` command. >>> >>>> I understand that> normally Isabelle methods do not introduce local >>> assumptions or fixed >>>> variables, so this seems not really critical (no intent to actually >>>> implement >>>> such methods for the users), but it would help with the general >>>> understanding >>>> to know whether this is totally unspecified to introduce those >>>> assumptions or >>>> is merely a pragmatic constraint >>> >>> Yes, proof methods cannot extend the logical context and expect to >>> work properly. >>> >>> There are certain principles how proof contexts are >>> constructed/deconstructed >>> by the Isar language, according to its structure. Some of this is >>> explained in >>> the "implementation" manual, but the general principle of survival >>> is to do >>> this in the "usual way", e.g. by looking at existing implementations >>> in the >>> sources. >>> >>> Your theory "Bug" looks very non-standard in various respects. Can >>> you say, >>> what you are actually trying to do? >>> >>> >>>     Makarius > From david.k at posteo.de Tue Nov 10 19:57:40 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:51890) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kcZls-0000wj-QX (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 19:57:40 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883223 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:36187) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kcZls-000BK1-Qi (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 19:57:40 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 677F62400FB for ; Tue, 10 Nov 2020 20:57:39 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CVzDL5GCSz6tml; Tue, 10 Nov 2020 20:57:38 +0100 (CET) To: Florian Haftmann References: <4dc55fc8-53b5-e10f-6a99-ff4f2215d445 at posteo.de> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <65958b19-09f1-c689-3593-a874b7dd6835 at posteo.de> Date: Tue, 10 Nov 2020 21:14:01 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Cc: Cl-isabelle Users Subject: Re: [isabelle] Codegen for List.member overwrites List structure in SML X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2020 19:57:40 -0000 Hi Florian, ah, you are right. I was a bit confused because the theory "HOL-Library.Predicate_Compile_Alternative_Defs" already contains the following code_identifier: code_identifier constant member_i_i ⇀ (SML) "List.member_i_i" and (OCaml) "List.member_i_i" and (Haskell) "List.member_i_i" and (Scala) "List.member_i_i" Here, "List.member_i_i" for SML was the problem. But you are right, one can simply add another code_identifier later, which then overwrites the previous one. However, this feels more like a hack. Other List functions (fold etc) are put into a "Lista" structure so as to not collide with the standard "List" structure of SML. Why is this different for member_i_i? Anyway, thank you for this fix! Best regards, David On 10.11.20 20:09, Florian Haftmann wrote: > Hi David, > > you can influence names in generated code using the code_identifier Isar > command. See the tutorial on code generation and numerous applications > in the Isabelle distribution for further reference. > > Hope this helps, > Florian > > Am 10.11.20 um 11:00 schrieb David Kretzmer: >> Dear all, >> >> it seems that the special code generation setup for List.member in >> theory "HOL-Library.Predicate_Compile_Alternative_Defs" overwrites SML's >> List structure, which means you cannot access any of the standard List >> functions after including the generated code. >> >> Minimal code: >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> theory Scratch >> imports Main "HOL-Library.Predicate_Compile_Alternative_Defs" >> begin >> >> inductive is_member :: "'a list ⇒ 'a ⇒ bool" where >> "List.member xs x ⟹ is_member xs x" >> >> code_pred is_member . >> >> export_code is_member in SML >> >> end >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> My current fix is to assign the original List structure to another >> structure before importing the generated SML code. >> >> Best regards, >> David Kretzmer >> From s1724780 at sms.ed.ac.uk Tue Nov 10 15:26:50 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:34790) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kcVXm-0003tl-NS (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 15:26:50 +0000 X-Cam-SpamDetails: score -2.5 from SpamAssassin-3.4.4-1883223 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [129.215.16.10 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [129.215.16.10 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from loire.is.ed.ac.uk ([129.215.16.10]:50268) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kcVXl-000oEK-ln (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 10 Nov 2020 15:26:50 +0000 Received: from exseed.ed.ac.uk (hbdat3.is.ed.ac.uk [129.215.235.38]) by loire.is.ed.ac.uk (8.14.7/8.14.7) with ESMTP id 0AAFQgfM003467 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 10 Nov 2020 15:26:49 GMT Received: from hbdkb3.is.ed.ac.uk (129.215.235.37) by hbdat3.is.ed.ac.uk (129.215.235.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 10 Nov 2020 15:26:46 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (104.47.18.111) by hbdkb3.is.ed.ac.uk (129.215.235.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Tue, 10 Nov 2020 15:26:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XSqbru993vpH5/c8yn4AUfOsbY9oTH9dwbISojRGtTTRLoT0+OagEiaxFAaMum5B12vbZq3uc5fABqPaGQEGNdu0MPWt37R9JNe68YwThAA4BvSC+5Njs+cL5kIojgYuVggnDLkQZ8YbtsIoy1aM73i0RXl1a1dTT325Gl1VzxHyks78oSZS0uj3y7P4IdUWQiY++5O5TXvp8co0Q7DOxlGbwPrYhG4djY/VQKb8CorvLgUHiY8Yi81yI+XxCTnfYFekXT0g6eIPsUAuaOmeaRcpFsd2gIa6A68laBidL/2KgmpAwC/U4aDhQOvS3Qh5ePuiw2nAN5sxB1NNTtWFpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B0KSp8kza87fKFAIiGyb45/3vzYEP7ttxFYpn2x4c3Q=; b=EgpkT1G5wtSJb2vCm3OM0xwDZGQJ53eERygnn+4RhcfOBxGA1q42qwplC5mNbFRoW3lQp7Gdhwgg9hgKKp83j22tuulG0tzbhdxdX/YjAWzXHM77AmvjppBATny59lQkCpGlgNG48m4ukVcEZIkHYDJa5ber9zjQSnh2DzX5dqGGkVQZY7fjq1M3R1m2iJGdOAGGiWsQIij/DjL33c8bxndAkI0WyKrH1DFePgW/0rLQ9IEbENSSSdA+Px+eSZIO/Yot6sLrya3hQra5UVV1EBC1EhcSi1XcFJ4QYTUp8zb2GJK4KzJE9uOkLgKOUyJIpxwvXn/yHdNItOr8PHmFTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sms.ed.ac.uk; dmarc=pass action=none header.from=sms.ed.ac.uk; dkim=pass header.d=sms.ed.ac.uk; arc=none Received: from AM5PR0502MB2899.eurprd05.prod.outlook.com (2603:10a6:203:9e::17) by AM6PR0502MB3960.eurprd05.prod.outlook.com (2603:10a6:209:1c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Tue, 10 Nov 2020 15:26:45 +0000 Received: from AM5PR0502MB2899.eurprd05.prod.outlook.com ([fe80::7c5b:5642:2680:e4aa]) by AM5PR0502MB2899.eurprd05.prod.outlook.com ([fe80::7c5b:5642:2680:e4aa%8]) with mapi id 15.20.3541.025; Tue, 10 Nov 2020 15:26:45 +0000 From: MACKENZIE Carlin To: "cl-isabelle-users at lists.cam.ac.uk" Thread-Topic: Survey on the AFP Thread-Index: AQHWt3WxhT3iJtdfUUq42Gw9b8pBjw== Date: Tue, 10 Nov 2020 15:26:45 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.cam.ac.uk; dkim=none (message not signed) header.d=none;lists.cam.ac.uk; dmarc=none action=none header.from=sms.ed.ac.uk; x-originating-ip: [77.103.18.92] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d7de0fe8-739f-4dd3-9fe0-08d8858d08b5 x-ms-traffictypediagnostic: AM6PR0502MB3960: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZbToyBLz0raO+3xxTduaTPjZdJ5vPDJGZgO7O7VxtqS4XYmLrXds8DwjelthUQXia6y40LKgftxlRoupFYCS0QlXVYiKV6f+CkkJQ6BoOY18ZWXxqBklcXEudfPgliMR4SBtHhve8QVdn4yU4JTSqGatW6Hol+0E3Q6SOWbZfv2dUWogAJnpO4kQc+W9doJODxQSsAwhZg9oHfuYINVtRswNp7YVFSu8iupn0S5Qa1JqnCfAqZ8why8RaETnjNQsYf+K+LRYsvElHfFAWNriMfCjJZ0R58C809YHSxnBMqF3uIWjkLZXt+0vj0tpIf4fjI7weMtGSnUh/aN1EahtOc76pOwa+xVa4uC1mtmgiewFzinIQruJyqgySDEStX3zaPuhcrll9+RZPpJdDSj9mw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM5PR0502MB2899.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(9686003)(66556008)(64756008)(86362001)(66446008)(66946007)(19627405001)(7696005)(6916009)(966005)(66476007)(91956017)(186003)(76116006)(5660300002)(2906002)(52536014)(26005)(33656002)(8936002)(8676002)(71200400001)(498600001)(6506007)(166002)(55016002)(3480700007)(83380400001)(4744005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 6zxY4y1DGdT0V7CylOKvD3sSnYzR/5xJ2FtKJCvG1igzmnVbKY6G/tr5ryqYuc7YG8LdltFPYrzdbEL1vutL3lwDZKHKQ1pfGmifPxgxTR1R7B+4V9sKbf+XTbzJU0JZ8RQE9TfPGL72fqo5aWII/8cUZFmHUbD3A0JPLPoW7K20W4om2vwl9ICVCA0UIpzSOAxsITnDVcfe+O1pHHLDqKjxI4X4lbsxEDnHzDe8wXk1VMFBOdvlQSzErKx98ve/lNmJsh5xRYvVWf1+38Yd1pXpcbdpPWdTVNBc9UqSncoNPzs0oUdwFl+8Ob8TFVGCsY2eb+M/IlwZR1zOUjwuuvoFsUx1te2U0clWxbl3mcN/sCvHdN5AUR9AWD43MffgeRGhGyxfDLzMncxyr8MgPgmIMGoCkn3YybJQan7fWhERxcEb8Hdamc9T2xEMojZB+QAzv+JQZeSR8xamnpu5YGgOe6hJyyssDmR+4FtV3TXaproqns1YxVGlWadNT2pSw8yFHR3ePkhXTkwt5v9qRFsSzwzHA3tuBFXeBWisrD7Yz3cB9X5h4YCdtoMi65zRSY6ogmJANvCdsbV1iASPqp5D8ovdDVmqPmn0EmRohgYob+xSyvi7HcP09X33BBNdBQBDPlnmg9z93MYPPzJnngm8s2B76KAXXy6QfwqOzZ4tr6l1UrF4Pmy2PPvdz+RmhTDWX80neHjnG6DuiDiUM7Re3weqMBmfmy4hqwUCDPHuPlyn4E7eFNOcgxpiHevoJ8/ewl9qIyTZIJS2+won4DyDtqsKqDKo+SWaG6VvNlBhgC8OlVPF4kh+ydOq8boBsLlHVH3FJQvHAK8iLz5jG4IFAxpgXexRqSZ1kMTbDQAOANUoVKDAVEyQ/nKMy3sxqnyDfe9VXSiED9ax35wRyA== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM5PR0502MB2899.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7de0fe8-739f-4dd3-9fe0-08d8858d08b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2020 15:26:45.4639 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2e9f06b0-1669-4589-8789-10a06934dc61 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Y79nrtXRr+B+o30hspScftYMoZ+x12mBOnpWQofaBnvomTsydqzCrE4a/jcuzb4iPDWJCtn8tk7NuWvbKsCouw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0502MB3960 X-OriginatorOrg: sms.ed.ac.uk X-Edinburgh-Scanned: at loire.is.ed.ac.uk X-Mailman-Approved-At: Wed, 11 Nov 2020 09:59:04 +0000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Survey on the AFP X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2020 15:26:50 -0000 Dear all, I am a researcher from the University of Edinburgh and it would be apprecia= ted if you could complete the following survey by November 30th https://forms.office.com/Pages/ResponsePage.aspx?id=3DsAafLmkWiUWHiRCgaTTcY= d5u1bZghY9Ctm-DoMwrpWRUM002VUJBR0gyU1ZWTzlJWlRGOUk5SlNTSS4u It concerns the Archive of Formal Proofs website and will take 10-20 minute= s to complete. Your answers will help guide my research in evaluating the A= FP, by informing me of the needs of Isabelle users. All data collected is anonymised, unless contact information is provided at= the end of the survey. Data will only be used for research purposes and wi= ll be deleted after the project is completed in June 2021. Thank you, Carlin MacKenzie The University of Edinburgh The University of Edinburgh is a charitable body, registered in Scotland, w= ith registration number SC005336. From florian.haftmann at informatik.tu-muenchen.de Thu Nov 12 08:27:48 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:47928) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kd7xM-0003fm-BQ (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 08:27:48 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883301 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [131.159.0.8 listed in wl.mailspike.net] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [131.159.0.8 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-out1.in.tum.de ([131.159.0.8]:40209 helo=mail-out1.informatik.tu-muenchen.de) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kd7xL-000pZI-lu (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 08:27:48 +0000 Received: by mail.in.tum.de (Postfix, from userid 107) id 9C4431C0D3E; Thu, 12 Nov 2020 09:27:45 +0100 (CET) Received: (Authenticated sender: haftmann) by mail.in.tum.de (Postfix) with ESMTPSA id 9DDF01C0D10 for ; Thu, 12 Nov 2020 09:27:43 +0100 (CET) (Extended-Queue-bit tech_potqr at fff.in.tum.de) To: cl-isabelle-users at lists.cam.ac.uk References: <4dc55fc8-53b5-e10f-6a99-ff4f2215d445 at posteo.de> <65958b19-09f1-c689-3593-a874b7dd6835 at posteo.de> From: Florian Haftmann Autocrypt: addr=florian.haftmann at informatik.tu-muenchen.de; keydata= mDMEW4pH0BYJKwYBBAHaRw8BAQdAIIBLFhTF7RSAZredeYMftpgRJZSF5X3VVtso084X3660 PUZsb3JpYW4gSGFmdG1hbm4gPGZsb3JpYW4uaGFmdG1hbm5AaW5mb3JtYXRpay50dS1tdWVu Y2hlbi5kZT6IlgQTFggAPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBILJqbJrurlT 4Zn85KcHFyIyz6TpBQJeLBCDBQkEgvwzAAoJEKcHFyIyz6Tpn9IBAIB5MbdhX8sSEAyUFXno JFsGZ5GNvnVSJZeaIVeenYU3AQD6oFkHw2Excq1sFBatUUE95G6JVK1yKiotmjoodUpbALg4 BFuKR9ASCisGAQQBl1UBBQEBB0CU8ZQJlBvMpEyGnR4jpUF+HavpBguEs4uAxFQBY21SHgMB CAeIfgQYFggAJgIbDBYhBILJqbJrurlT4Zn85KcHFyIyz6TpBQJeLBDiBQkE8wwSAAoJEKcH FyIyz6TpMjAA/3EPMDrHDrRqgJESvyCogPvT1niAMkh45jd3PL93dtQsAP0XSnHTzDm/2xli F0vzgIpejtqgmuxkMEphagnedbc3ALgzBFuKSn4WCSsGAQQB2kcPAQEHQNf9JkHWQaDR5cRm q0x7ltlUFok5Z8rfCtOZxVITGGyWiPUEGBYIACYCGwIWIQSCyamya7q5U+GZ/OSnBxciMs+k 6QUCXiwQ4gUJBPMJZACBdiAEGRYIAB0WIQQ2aRv8hQWta5iN4IfgIQ1PG8W1PgUCW4pKfgAK CRDgIQ1PG8W1PnBCAQDX4Yp8i5GA7fZR8gysMIvUEqnewxPv5MVUrzjSxyNM9gEAvShATZq0 bLwrDJXiPvB+8WLvG9SXWgMLbvt8iSJ2wwwJEKcHFyIyz6Tp0+YA/jP9vJACDMmLItwjD9+C KGOR37Rlj+7AnuFUWeZHf04SAQCr8u9u8Ks3OqyfeVDY5A0G+wvzRIzBd0sit0ydjrRiAQ== Message-ID: <108dfa36-3e1f-6ba7-0e0b-e0b919c6f312 at informatik.tu-muenchen.de> Date: Thu, 12 Nov 2020 09:27:42 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <65958b19-09f1-c689-3593-a874b7dd6835 at posteo.de> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="gkytwIw3X4LMHWjApChPB6oKOSU2DfZTO" Subject: Re: [isabelle] Codegen for List.member overwrites List structure in SML X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2020 08:27:48 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --gkytwIw3X4LMHWjApChPB6oKOSU2DfZTO Content-Type: multipart/mixed; boundary="SQy1or5SpECtZHzK14ZvoZKaOnYHdCcV3"; protected-headers="v1" From: Florian Haftmann To: cl-isabelle-users at lists.cam.ac.uk Message-ID: <108dfa36-3e1f-6ba7-0e0b-e0b919c6f312 at informatik.tu-muenchen.de> Subject: Re: [isabelle] Codegen for List.member overwrites List structure in SML References: <4dc55fc8-53b5-e10f-6a99-ff4f2215d445 at posteo.de> <65958b19-09f1-c689-3593-a874b7dd6835 at posteo.de> In-Reply-To: <65958b19-09f1-c689-3593-a874b7dd6835 at posteo.de> --SQy1or5SpECtZHzK14ZvoZKaOnYHdCcV3 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi David, > However, this feels more like a hack. Other List functions (fold etc) > are put into a "Lista" structure so as to not collide with the standard= > "List" structure of SML. Why is this different for member_i_i? this seems to be a historic accident: String.thy contains a code_reserved SML string String Char List since the notoriously difficult conversions need List.map. This situation is not easily resolved. But I will think further about it= =2E Cheers, Florian --SQy1or5SpECtZHzK14ZvoZKaOnYHdCcV3-- --gkytwIw3X4LMHWjApChPB6oKOSU2DfZTO Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQQ2aRv8hQWta5iN4IfgIQ1PG8W1PgUCX6zx/gAKCRDgIQ1PG8W1 PqD9AP9oC/QO14F6XYw7WMy/sLnmKe3rI3IbtWVd3u/D8mza7QEAnTwbjsuFlVX4 SZRuLSbPXKTpcuhpGtkTpWUqWiYOVw0= =zVd7 -----END PGP SIGNATURE----- --gkytwIw3X4LMHWjApChPB6oKOSU2DfZTO-- From d.unruh at gmail.com Thu Nov 12 13:22:58 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:59018) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdCZ0-0001Sd-K0 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 13:22:58 +0000 X-Cam-SpamDetails: score 0.3 from SpamAssassin-3.4.4-1883301 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.208.51 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.208.51 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [d.unruh[at]gmail.com] * 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail * domains are different * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and * EnvelopeFrom freemail headers are different X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-ed1-f51.google.com ([209.85.208.51]:32834) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kdCYz-000XZv-la (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 13:22:58 +0000 Received: by mail-ed1-f51.google.com with SMTP id v4so6148600edi.0 for ; Thu, 12 Nov 2020 05:22:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:to:from:subject:message-id:date :user-agent:mime-version:content-language; bh=angeFmOrZ/Y5bupaDS+4+lrrVnI7v9NXusvWGZl34fk=; b=eQrWHwqebXLLPCPtZ4orwpPPjUmqVN3btDi3vMHg+GkmrCJJJxxtrqvuy8DUzHJMZ6 Jxrivs2b4F+ejeg5RiBlUJeppgkVEo6mjQdVFyqdXI2YLYvGW0gHxFVwFGt91UVx3RFE ZeeR5CdUISUMtAXxM3RJwpIcHYXrfA+wi7sgflCPu0EJazcO3d/SnaIWBZTO+4aCFqN6 xgFuCxz/nt1bQJL/DGySq4UNkHFNS84LmfoA/bl4sPIeAsfEBjajwGKzbcKglmxrqOtP PbOxYvnRcELfXINIOQKu68VX+fbUtBlu81Hm27VF0L96yeW60QMlhkALKuTQqsWyQ+9J qh0Q== X-Gm-Message-State: AOAM533L/TzeoDUZMTqq/Cn92tPLvlVcK8kSbES8ZpdhJ31QiDpzodzp E5exXEq9ABjVYCafJ5l6PXZ906gsE4CbMA== X-Google-Smtp-Source: ABdhPJzmyr91BqkWV6ORiWIeSRhvBcE/DTV6/KSr7RNl8Zw1vIRPhGSzf7BacGrG+of29d/GYEB5UQ== X-Received: by 2002:a05:6402:1c9b:: with SMTP id cy27mr5216916edb.161.1605187377013; Thu, 12 Nov 2020 05:22:57 -0800 (PST) Received: from ?IPv6:2001:bb8:2002:2400:c810:f2d1:2975:355c? ([2001:bb8:2002:2400:c810:f2d1:2975:355c]) by smtp.gmail.com with ESMTPSA id k2sm2139575ejp.6.2020.11.12.05.22.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Nov 2020 05:22:56 -0800 (PST) Sender: Dominique Unruh To: cl-isabelle-users From: Dominique Unruh Message-ID: <781a2046-085d-45f6-e57b-80f4cb0f1766 at ut.ee> Date: Thu, 12 Nov 2020 15:22:55 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] scala-isabelle: A library for interfacing with Isabelle from Scala (or Java) X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2020 13:22:58 -0000 Dear all, I would like to announce my library scala-isabelle which is a library for controlling and interacting with an Isabelle process from a Scala application (or Java, ...). Some highlights: * It enables fine-grained interactions (e.g., you can do pattern matching and similar operations on individual terms in the Scala application as if they were Scala types, but also apply Isabelle operations (e.g., simplification) on it, transparently). This means you can use it to build applications that reason about math and use the existing Isabelle theories/tools for some operations. (Such as the theorem prover qrhl-tool .) * It is extensible: besides built in support for Isabelle objects such as terms, contexts, theorems, ..., one can easily add support for new types and operations without changing the library itself. * Garbage collection is supported: Isabelle values can be garbage collected when they are released in Scala. * Speed: on my computer, the round-trip time for simple operations is 0.03ms, compared to ~20ms which seemed to be the round-trip time of the PIDE-based libisabelle. * It is supposed to be a replacement of the discontinued libisabelle by Lars Hupel. You can find more information in the README . Or ask me anything (especially if you are wondering whether scala-isabelle is useful for your project or has specific features), e.g., in the Gitter chat or by email. Best wishes, Dominique. From buday.gergely.istvan at szie.hu Thu Nov 12 14:12:17 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:35064) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdDKj-0005JZ-7d (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 14:12:17 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883301 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [192.188.242.67 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mx2.szie.hu ([192.188.242.67]:59406) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtp id 1kdDKi-000mAo-Ld (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 14:12:17 +0000 Received: from webmail.ih.szie.hu (wmail.ih.szie.hu [192.188.242.48]) by mx2.szie.hu (Postfix) with ESMTP id 4CX3St5yp5zKLK5s for ; Thu, 12 Nov 2020 15:12:14 +0100 (CET) Received: from [10.2.11.9] (wgfb.karolyrobert.hu [193.225.54.108]) by webmail.ih.szie.hu (Postfix) with ESMTPSA id AC94314005E for ; Thu, 12 Nov 2020 15:12:14 +0100 (CET) To: Isabelle Users Mailing List Message-ID: <9a7a0bff-d969-438d-0751-9eaeb6739ad8 at szie.hu> Date: Thu, 12 Nov 2020 15:12:14 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.3 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-2; format=flowed Content-Transfer-Encoding: 8bit Content-Language: hu Subject: [isabelle] ROOT file for imported theory X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list From: Buday Gergely via Cl-isabelle-users Reply-To: Buday Gergely List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2020 14:12:17 -0000 Hi, I import a theory from the HOL directory: imports "~~/src/HOL/IMP/Big_Step" and name it in the ROOT file: session induction = HOL + options [document = pdf, document_output = "output"] theories [document = false] "~~/src/HOL/IMP/Big_Step" theories "Induction" document_files "root.tex" "build" but then I get: $ isabelle build -D . *** Implicit use of directory "/cygdrive/d/isabelle/Isabelle2020/src/HOL/IMP" for theory "induction.AExp" *** Implicit use of directory "/cygdrive/d/isabelle/Isabelle2020/src/HOL/IMP" for theory "induction.BExp" *** Implicit use of directory "/cygdrive/d/isabelle/Isabelle2020/src/HOL/IMP" for theory "induction.Com" *** Implicit use of directory "/cygdrive/d/isabelle/Isabelle2020/src/HOL/IMP" for theory "induction.Big_Step" *** Implicit use of session directories: "/cygdrive/d/isabelle/Isabelle2020/src/HOL/IMP" I get this even without mentioning the imported theory file in ROOT. What shall I do? I use Isabelle 2020. - Gergely From kuba at kadziolka.net Thu Nov 12 14:36:40 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:39542) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdDiK-0006ve-1q (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 14:36:40 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883301 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from pat.zlotemysli.pl ([37.59.186.212]:34000) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtp id 1kdDiJ-000e03-eU (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 12 Nov 2020 14:36:40 +0000 Received: (qmail 6172 invoked by uid 1009); 12 Nov 2020 15:36:39 +0100 Received: from 188.123.215.55 (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/25985. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.017925 secs); 12 Nov 2020 14:36:39 -0000 Received: from unknown (HELO localhost) (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 12 Nov 2020 15:36:38 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= To: "Buday Gergely" , "Isabelle Users Mailing List" Date: Thu, 12 Nov 2020 15:25:31 +0100 Message-Id: In-Reply-To: <9a7a0bff-d969-438d-0751-9eaeb6739ad8 at szie.hu> Subject: Re: [isabelle] ROOT file for imported theory X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2020 14:36:40 -0000 On Thu Nov 12, 2020 at 3:12 PM CET, Buday Gergely via Cl-isabelle-users wro= te: > Hi, > > I import a theory from the HOL directory: > > imports "~~/src/HOL/IMP/Big_Step" > > and name it in the ROOT file: > > session induction =3D HOL + > options [document =3D pdf, document_output =3D "output"] > theories [document =3D false] > "~~/src/HOL/IMP/Big_Step" > theories > "Induction" > document_files > "root.tex" "build" If I understand correctly, the correct way to include a dependency outside of your session would be to do this: sessions "HOL-IMP" theories [document =3D false] "HOL-IMP.Big-step" However, you might want to base your entire session on HOL-IMP instead of just HOL. This will result in better caching; session induction =3D "HOL-IMP" + ... Regards, Jakub K=C4=85dzio=C5=82ka From buday.gergely.istvan at szie.hu Fri Nov 13 07:17:26 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:55326) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdTKo-0007no-K9 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 07:17:26 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883301 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [192.188.242.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mx1.szie.hu ([192.188.242.66]:40874) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtp id 1kdTKo-000Zy2-JR (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 07:17:26 +0000 Received: from webmail.ih.szie.hu (wmail.ih.szie.hu [192.188.242.48]) by mx1.szie.hu (Postfix) with ESMTP id 4CXVCn16cLz2f; Fri, 13 Nov 2020 08:17:25 +0100 (CET) Received: from [10.2.11.9] (wgfb.karolyrobert.hu [193.225.54.108]) by webmail.ih.szie.hu (Postfix) with ESMTPSA id C544D140056; Fri, 13 Nov 2020 08:17:24 +0100 (CET) To: =?UTF-8?B?SmFrdWIgS8SFZHppb8WCa2E=?= , Isabelle Users Mailing List References: Message-ID: <1b5556a3-b6da-26c8-62c3-e361d9420496 at szie.hu> Date: Fri, 13 Nov 2020 08:17:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.3 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: hu Subject: Re: [isabelle] ROOT file for imported theory X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list From: Buday Gergely via Cl-isabelle-users Reply-To: Buday Gergely List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 07:17:26 -0000 11/12/2020 3:25 PM keltezéssel, Jakub Kądziołka írta: > On Thu Nov 12, 2020 at 3:12 PM CET, Buday Gergely via Cl-isabelle-users wrote: >> Hi, >> >> I import a theory from the HOL directory: >> >> imports "~~/src/HOL/IMP/Big_Step" >> >> and name it in the ROOT file: >> >> session induction = HOL + >> options [document = pdf, document_output = "output"] >> theories [document = false] >> "~~/src/HOL/IMP/Big_Step" >> theories >> "Induction" >> document_files >> "root.tex" "build" > If I understand correctly, the correct way to include a dependency > outside of your session would be to do this: > > sessions > "HOL-IMP" > theories [document = false] > "HOL-IMP.Big-step" > > However, you might want to base your entire session on HOL-IMP instead > of just HOL. This will result in better caching; > > session induction = "HOL-IMP" + > ... > > Regards, > Jakub Kądziołka Thanks for your help. At last it was enough to refer to the HOL-IMP session in ROOT: sessions    "HOL-IMP" there was no need to name the imported theory. The key step was to refer to the imported theory in my theory file via the session name, not the file system path. When I entered Big_Step.thy into my import clause, Isabelle/Jedit autocompleted it into HOL-IMP.Big_Step. And it works:    imports "HOL-IMP.Big_Step" Interestingly, when I based my session on "HOL-IMP" with     session induction = "HOL-IMP" + and invoked     isabelle -c -D . it started to rebuild HOL-Library which I really didn't want. - Gergely From lp15 at cam.ac.uk Fri Nov 13 13:24:02 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:38102) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdZ3a-0006We-9d (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 13:24:02 +0000 X-Cam-SpamDetails: score -1.1 from SpamAssassin-3.4.4-1883301 * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:43994) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kdZ3Z-000O1C-LT (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 13:24:02 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kdZ3Z-0008Mp-Ie for isabelle-users at cl.cam.ac.uk; Fri, 13 Nov 2020 13:24:01 +0000 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from lpaulson.plus.com ([81.174.248.240]:59448 helo=selenium.lan) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:25) with esmtpsa (PLAIN:lp15) (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kdZ3Z-000O0v-L0 (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Fri, 13 Nov 2020 13:24:01 +0000 From: Lawrence Paulson Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Message-Id: Date: Fri, 13 Nov 2020 13:24:01 +0000 To: isabelle-users X-Mailer: Apple Mail (2.3608.120.23.2.4) X-debug-header: local_aliases has suffix Subject: [isabelle] New in the AFP: AI planning X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 13:24:02 -0000 I am happy to announce a pair of related submissions: AI Planning Languages Semantics Mohammad Abdulaziz and Peter Lammich This is an Isabelle/HOL formalisation of the semantics of the = multi-valued planning tasks language that is used by the planning system = Fast-Downward, the STRIPS fragment of the Planning Domain Definition = Language (PDDL), and the STRIPS soundness meta-theory developed by = Vladimir Lifschitz. It also contains formally verified checkers for = checking the well-formedness of problems specified in either language as = well the correctness of potential solutions. The formalisation in this = entry was described in an earlier publication. https://www.isa-afp.org/entries/AI_Planning_Languages_Semantics.html And also Verified SAT-Based AI Planning=20 Mohammad Abdulaziz and Friedrich Kurz We present an executable formally verified SAT encoding of classical AI = planning that is based on the encodings by Kautz and Selman and the one = by Rintanen et al. The encoding was experimentally tested and shown to = be usable for reasonably sized standard AI planning benchmarks. We also = use it as a reference to test a state-of-the-art SAT-based planner, = showing that it sometimes falsely claims that problems have no solutions = of certain lengths. The formalisation in this submission was described = in an independent publication. https://www.isa-afp.org/entries/Verified_SAT_Based_AI_Planning.html Larry Paulson From kuba at kadziolka.net Fri Nov 13 18:29:37 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:46684) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kddpJ-0008DD-DI (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 18:29:37 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883301 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from pat.zlotemysli.pl ([37.59.186.212]:49860) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtp id 1kddpI-0001Nz-lq (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 18:29:37 +0000 Received: (qmail 16543 invoked by uid 1009); 13 Nov 2020 19:29:36 +0100 Received: from 188.123.215.55 (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/25986. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.016858 secs); 13 Nov 2020 18:29:36 -0000 Received: from unknown (HELO localhost) (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 13 Nov 2020 19:29:36 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= To: Date: Fri, 13 Nov 2020 19:25:27 +0100 Message-Id: Subject: [isabelle] Weak lemma: HOL-Algebra.Multiplicative_Group.generate_pow_card X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 18:29:37 -0000 Greetings, currently, generate_pow_card assumes "finite (carrier G)". This is unnecessary, as evidenced by the modified proof I'm including below. I modified two lemmas above it to only assume that a relevant subgroup is finite, instead of the entire group. Also, the removed assumption leads to a simpler proof of ord_dvd_group_order. Regards, Jakub K=C4=85dzio=C5=82ka theory Scratch imports "HOL-Algebra.Algebra" begin context group begin lemma ord_elems_inf_carrier: assumes "a =E2=88=88 carrier G" "ord a =E2=89=A0 0" shows "{a[^]x | x. x =E2=88=88 (UNIV :: nat set)} =3D {a[^]x | x. x =E2= =88=88 {0 .. ord a - 1}}" (is "?L =3D ?R") proof show "?R =E2=8A=86 ?L" by blast { fix y assume "y =E2=88=88 ?L" then obtain x::nat where x: "y =3D a[^]x" by auto define r q where "r =3D x mod ord a" and "q =3D x div ord a" then have "x =3D q * ord a + r" by (simp add: div_mult_mod_eq) hence "y =3D (a[^]ord a)[^]q =E2=8A=97 a[^]r" using x assms by (metis mult.commute nat_pow_mult nat_pow_pow) hence "y =3D a[^]r" using assms by simp have "r < ord a" using assms by (simp add: r_def) hence "r =E2=88=88 {0 .. ord a - 1}" by (force simp: r_def) hence "y =E2=88=88 {a[^]x | x. x =E2=88=88 {0 .. ord a - 1}}" using =E2= =80=B9y=3Da[^]r=E2=80=BA by blast } thus "?L =E2=8A=86 ?R" by auto qed lemma generate_pow_nat: assumes a: "a =E2=88=88 carrier G" and "ord a =E2=89=A0 0" shows "generate G { a } =3D { a [^] k | k. k =E2=88=88 (UNIV :: nat set) = }" proof show "{ a [^] k | k. k =E2=88=88 (UNIV :: nat set) } =E2=8A=86 generate G= { a }" proof fix b assume "b =E2=88=88 { a [^] k | k. k =E2=88=88 (UNIV :: nat set) = }" then obtain k :: nat where "b =3D a [^] k" by blast hence "b =3D a [^] (int k)" by (simp add: int_pow_int) thus "b =E2=88=88 generate G { a }" unfolding generate_pow[OF a] by blast qed next show "generate G { a } =E2=8A=86 { a [^] k | k. k =E2=88=88 (UNIV :: nat = set) }" proof fix b assume "b =E2=88=88 generate G { a }" then obtain k :: int where k: "b =3D a [^] k" unfolding generate_pow[OF a] by blast show "b =E2=88=88 { a [^] k | k. k =E2=88=88 (UNIV :: nat set) }" proof (cases "k < 0") assume "=C2=AC k < 0" hence "b =3D a [^] (nat k)" by (simp add: k) thus ?thesis by blast next assume "k < 0" hence b: "b =3D inv (a [^] (nat (- k)))" using k a by (auto simp: int_pow_neg) obtain m where m: "ord a * m =E2=89=A5 nat (- k)" by (metis assms(2) dvd_imp_le dvd_triv_right le_zero_eq mult_eq_0_i= ff not_gr_zero) hence "a [^] (ord a * m) =3D =F0=9D=9F=AD" by (metis a nat_pow_one nat_pow_pow pow_ord_eq_1) then obtain k' :: nat where "(a [^] (nat (- k))) =E2=8A=97 (a [^] k')= =3D =F0=9D=9F=AD" using m a nat_le_iff_add nat_pow_mult by auto hence "b =3D a [^] k'" using b a by (metis inv_unique' nat_pow_closed nat_pow_comm) thus "b =E2=88=88 { a [^] k | k. k =E2=88=88 (UNIV :: nat set) }" by = blast qed qed qed lemma generate_pow_card: assumes a: "a =E2=88=88 carrier G" shows "ord a =3D card (generate G { a })" proof (cases "ord a =3D 0") case True then have "infinite (carrier (subgroup_generated G {a}))" using infinite_cyclic_subgroup_order[OF a] by auto then have "infinite (generate G {a})" unfolding subgroup_generated_def using a by simp then show ?thesis using `ord a =3D 0` by auto next case False note finite_subgroup =3D this then have "generate G { a } =3D (([^]) a) ` {0..ord a - 1}" using generate_pow_nat ord_elems_inf_carrier a by auto hence "card (generate G {a}) =3D card {0..ord a - 1}" using ord_inj[OF a] card_image by metis also have "... =3D ord a" using finite_subgroup by auto finally show ?thesis..=20 qed lemma ord_dvd_group_order:=20 assumes "a =E2=88=88 carrier G" shows "(ord a) dvd (order G)" proof - show ?thesis using lagrange[OF generate_is_subgroup[of "{a}"]] assms unfolding generate_pow_card[OF assms] by (metis dvd_triv_right empty_subsetI insert_subset) qed end end From kuba at kadziolka.net Fri Nov 13 18:35:59 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:38742) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kddvT-0000AL-4R (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 18:35:59 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883301 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from pat.zlotemysli.pl ([37.59.186.212]:36304) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtp id 1kddvS-000z6g-Rt (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 18:35:59 +0000 Received: (qmail 17520 invoked by uid 1009); 13 Nov 2020 19:35:57 +0100 Received: from 188.123.215.55 (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/25986. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.016464 secs); 13 Nov 2020 18:35:57 -0000 Received: from unknown (HELO localhost) (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 13 Nov 2020 19:35:57 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= To: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= , Date: Fri, 13 Nov 2020 19:34:09 +0100 Message-Id: In-Reply-To: Subject: Re: [isabelle] Weak lemma: HOL-Algebra.Multiplicative_Group.generate_pow_card X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 18:35:59 -0000 On Fri Nov 13, 2020 at 7:25 PM CET, Jakub K=C4=85dzio=C5=82ka wrote: > Greetings, > > currently, generate_pow_card assumes "finite (carrier G)". This is > unnecessary, as evidenced by the modified proof I'm including below. > I modified two lemmas above it to only assume that a relevant subgroup > is finite, instead of the entire group. Also, the removed assumption > leads to a simpler proof of ord_dvd_group_order. > > Regards, > Jakub K=C4=85dzio=C5=82ka I would also like to suggest the following alternative statement of the lemma, as I believe it would be easier to find with find_theorems in some situations: lemma (in group) cyclic_order_is_ord: assumes "g =E2=88=88 carrier G" shows "ord g =3D order (subgroup_generated G {g})" unfolding order_def subgroup_generated_def using assms generate_pow_card by simp Regards, Jakub K=C4=85dzio=C5=82ka From jasongross9 at gmail.com Sat Nov 14 04:11:02 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:36750) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdmty-0000i9-8h (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 14 Nov 2020 04:11:02 +0000 X-Cam-SpamDetails: score -0.0 from SpamAssassin-3.4.4-1883301 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.218.44 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in * digit * [jasongross9[at]gmail.com] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.218.44 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [jasongross9[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:60933) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kdmtx-000jYb-fT (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 14 Nov 2020 04:11:02 +0000 Received: from ppsw-31.csi.cam.ac.uk ([2001:630:212:8::e:f31]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kdmtx-0003nF-OR for isabelle-users at cl.cam.ac.uk; Sat, 14 Nov 2020 04:11:01 +0000 X-Cam-SpamDetails: score -0.0 from SpamAssassin-3.4.4-1883377 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.218.44 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.218.44 listed in wl.mailspike.net] * 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in * digit * [jasongross9[at]gmail.com] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [jasongross9[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-ej1-f44.google.com ([209.85.218.44]:45100) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kdmtx-000uo7-KP (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Sat, 14 Nov 2020 04:11:01 +0000 Received: by mail-ej1-f44.google.com with SMTP id dk16so16766570ejb.12 for ; Fri, 13 Nov 2020 20:11:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=NOl2RR//p4FB+XZA7gMnHBA16+8ageHdV3r0IdOIqbA=; b=GGNImNsl9zfRHSXpFqyD4U0C65jm6vSxmge/kT88JpXEKfmlnIIvLJMiime5cbEPq2 2/9h5L6phk44rChTi8WR7Cb+MofL41/SX4urYXUMNJT5+tkVt++cImP0Iqo63gE5WyDx /Sd1J5BCi/zTX0VI0ClmZWO3IpWM/LVZLazLlNpjM63OeNg9HWSCkBsmgnF56IJ5wW6y 24MHdICzn0YhWUz/70o3LfGVNyP93nmFe8n9JM4bvJWgS9N8BnBxzUQeV6Na4Ej0Klg+ j99Bfop8T2Oma45mcQ4i00eyh5lUbeRDL7m6n1WfUkexncCbtJ00V54oNGFV547eSInN y2+A== X-Gm-Message-State: AOAM5327QzjYCbMydokMPtFXrHr7FL7LfvJ2unNnSl9gBk7IITzKmfJb k+e2KCdX2jJ3ADUkNiSCkWXcXhZjxiNjXFeDPxNHpcijTpo= X-Google-Smtp-Source: ABdhPJzapghLGHq1qGyQbTDHZIKCrpc4T64j15LlXtkV6lls2rxD3uMdNE9GTkw/6duIJ05pB+GxkevCcXZdNIhpFM8= X-Received: by 2002:a17:906:4e90:: with SMTP id v16mr5412543eju.477.1605327060336; Fri, 13 Nov 2020 20:11:00 -0800 (PST) MIME-Version: 1.0 From: Jason Gross Date: Fri, 13 Nov 2020 23:10:32 -0500 Message-ID: To: isabelle-users at cl.cam.ac.uk X-debug-header: local_aliases has suffix Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Counting lines of code/definition vs proof? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Nov 2020 04:11:02 -0000 Hi, Is there a tool that can tell me how many lines in a .thy file are whitespace/comments vs definitions vs proofs? (I'm looking for something analogous to coqwc.) Thanks, Jason From kuba at kadziolka.net Sat Nov 14 11:41:35 2020 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]:51408) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdtvz-00013I-Mj (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 14 Nov 2020 11:41:35 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.4 from SpamAssassin-3.4.4-1883377 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 1.5 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from pat.zlotemysli.pl ([37.59.186.212]:60596) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtp id 1kdtvx-000rPl-m4 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 14 Nov 2020 11:41:35 +0000 Received: (qmail 521 invoked by uid 1009); 14 Nov 2020 12:41:33 +0100 Received: from 188.123.215.55 (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/25987. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.016399 secs); 14 Nov 2020 11:41:33 -0000 Received: from unknown (HELO localhost) (kuba at kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 14 Nov 2020 12:41:33 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= To: Date: Sat, 14 Nov 2020 00:49:31 +0100 Message-Id: Subject: [isabelle] Typos in lemma names X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Nov 2020 11:41:35 -0000 Good evening, I've just noticed that a typo in the name of HOL.Divides.zmod_trival_iff - I would expect it to be called zmod_trivial_iff (note the additional i in 'trivial'). A quick code grep shows that the same mistake is also present, apart from some comments, in HOL-Computational_Algebra.Polynomial.is_unit_monom_trival. Is fixing typos like these possible, or would that be a compatibility problem? Kind regards, Jakub K=C4=85dzio=C5=82ka From mariano.m.moscato at nasa.gov Fri Nov 13 13:37:29 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:42908) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kdZGb-0007kT-KW (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 13:37:29 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883301 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [198.117.0.153 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.0 FROM_GOV_DKIM_AU From Government address and DKIM signed X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from ndmsvnpf103.ndc.nasa.gov ([198.117.0.153]:45302) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kdZGZ-000tPp-fb (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 13 Nov 2020 13:37:29 +0000 X-Comment: SPF check N/A for local connections - client-ip=198.117.0.48; helo=ndmsppt203.ndc.nasa.gov; envelope-from=mariano.m.moscato at nasa.gov; receiver=cl-isabelle-users at lists.cam.ac.uk DKIM-Filter: OpenDKIM Filter v2.11.0 ndmsvnpf103.ndc.nasa.gov AA8E8401A33A Received: from ndmsppt203.ndc.nasa.gov (NDMSPPT203.ndc.nasa.gov [198.117.0.48]) by ndmsvnpf103.ndc.nasa.gov (Postfix) with ESMTP id AA8E8401A33A for ; Fri, 13 Nov 2020 07:37:24 -0600 (CST) Received: from pps.filterd (ndmsppt203.ndc.nasa.gov [127.0.0.1]) by ndmsppt203.ndc.nasa.gov (8.16.0.42/8.16.0.42) with SMTP id 0ADDbMIV192487 for ; Fri, 13 Nov 2020 07:37:24 -0600 Received: from autodiscover.nasa.gov (ndmslnscas1-pub.ndc.nasa.gov [198.117.0.214]) by ndmsppt203.ndc.nasa.gov with ESMTP id 34r2h9tyvf-1 for ; Fri, 13 Nov 2020 07:37:24 -0600 Received: from NDMSLNSCAS1.ndc.nasa.gov (198.117.3.111) by NDMSLNSCAS1.ndc.nasa.gov (198.117.3.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2044.4; Fri, 13 Nov 2020 07:37:23 -0600 Received: from GCC02-BL0-obe.outbound.protection.outlook.com (104.47.64.105) by NDMSLNSCAS1.ndc.nasa.gov (198.117.0.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2044.4 via Frontend Transport; Fri, 13 Nov 2020 07:37:23 -0600 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GijQuDc47SbjohEy3XU3ekflTsomk2djgRMc+Y5CTdFBbuOOamVVlNmWnzEHYLfbE79Q595lGWBaF31c8UA/Oj0fLLqEfqP2yUCvCfQ16awS/QbPFfnVJeIIi2H57XpM03YJ2BIl95eUDQXlJETkNcP/cZJPBaWyUQHcjN6gNtxnqWWJ+SrgtYI9U0MrjLy1Yy98ORXPUsu/h+JcClKthEFXk1Ac4gPavXVNu36A9dI/fyMm0EPNYPuCEmX97GlfoVvrzA0z65qzHggApySOc0V6onpdiiOzT/aROhTik5NmcGcu0BxOHNUHca+1dhGOHdDVHUUKJgm9+tvbThdzew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VcMViOpne5dcfbmx+k6KkUANf6g2QO2MbLfQnEloOpg=; b=f5njwWOHKtaSadaEj9OKtQ5KHLPwCUYEZ6kqO9sUrDnNlELrk67qASuQgJTsxu+CWPtM1KABMp0QJGcAkQe9102+35T/C9oxizzx3yRJNMw+Gwk21buaL3VjMIOO4JH4mLEzM9xwExjmP20KBiHs+RKhKNZN+fBZCMOGoXvUXoJ2prAbXg5Bckzy1zeBToUPbG/fWc0n0zSjlQmBG/Q4/blFeb+UnsEGtNe0SmqG1V1c2RkEO1iQVNIdQs2TunlTemww87w2RD3y5T9C4WA1KwtyJM7sgTDG37N15FpYItZuzQthe5adVpk0lwH919aRDhMXoZo9j+3vIwe6ULh1cA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nasa.gov; dmarc=pass action=none header.from=nasa.gov; dkim=pass header.d=nasa.gov; arc=none Received: from MN2PR09MB5307.namprd09.prod.outlook.com (2603:10b6:208:219::16) by MN2PR09MB5467.namprd09.prod.outlook.com (2603:10b6:208:215::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.28; Fri, 13 Nov 2020 13:37:22 +0000 Received: from MN2PR09MB5307.namprd09.prod.outlook.com ([fe80::855c:fd74:b2bf:5846]) by MN2PR09MB5307.namprd09.prod.outlook.com ([fe80::855c:fd74:b2bf:5846%6]) with mapi id 15.20.3541.025; Fri, 13 Nov 2020 13:37:22 +0000 To: "cl-isabelle-users at lists.cam.ac.uk" Thread-Topic: NFM2021 - Second Call for Papers Thread-Index: AQHWucIdC+SYxLhK2E+Dv+ym2x6Ytw== Date: Fri, 13 Nov 2020 13:37:22 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.cam.ac.uk; dkim=none (message not signed) header.d=none; lists.cam.ac.uk; dmarc=none action=none header.from=nasa.gov; x-originating-ip: [192.92.192.219] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fe31bb55-18b0-49ac-9f6f-08d887d9401c x-ms-traffictypediagnostic: MN2PR09MB5467: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ikjMWFcb+zz+qbH3ACoec2FNs7GV6ptms9aetusu9OhJ6020l3rtxwZFGTZmBSQJvIeA3N0Q/v6mZ5lJw+29ivH5UKrSfRYP3aZ2r2zm0csApFSk5TWvqJ01xaFZWYOAvzIQC7QjB1V7ReTA0vuWLt06vKtHAuYUl3xDYWX47KgVN5ucZyyMAAXbeAS7085OL8weNwH+5vzdFkM9dk4560vTMZnM50KdA97o60+ASnat3WjBSPyMig62tXRUYH67uoyBHsuxLiBNbqR5I75MMbVk7ZZmYX+f5oFE5cnphB6f1aZIeD6QLCCItrhCYOQhkuHPbGLnUDs/vzanG5bviFpBl+yltnsjTPYPSI4Nfzg/FsOB2kxs7NfEbeaUmFZOJOYi0ujMcBPr7g9qm/SQMjeS/FmvL1kp8EQ8L+p2W+OjYVK0umoAanF7MZhpRYmEb9okuQOKXdZL/VrCub3dI0NAkH8iZb+IdPfwZr/7TB7vTnf39Mw/wDvjmUrGSCk70V3GjVEeGx5SC9Ce273Smw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR09MB5307.namprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(396003)(346002)(39860400002)(376002)(45080400002)(2906002)(66946007)(966005)(64756008)(76116006)(186003)(71200400001)(2616005)(6486002)(66446008)(26005)(83380400001)(6916009)(33656002)(6506007)(36756003)(6512007)(8676002)(316002)(8936002)(66556008)(66476007)(478600001)(5660300002)(86362001)(225293001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: 6d+P3rYRbUI3smst5PerQ0uxcZ/8FsEPNi4BocStnmywLLR+ueh9uOuBCwXZNN9A9uzvPxsZxL/ZdmCI67C+o7Wp+u0bczdhA9KT3WYCKpsKIvx+2CDZZ6ZxtPBrEQk1c1QL2VFbnpbEWXuilwUSFPVogfgP3zN9b87a047/8CgUNc13zWb2VOaeDvZk4n+44NgTV+TYNYK8o9rLp2dQihhSyS7pyTf672yMI5DJkpUDP4fJrtMOofSwb+Uj1Zi54nedLDhOLey8Ctt1Eo+CPXHUVgIxHRx2XT6TySorN/tEcmnyBtf88NNN3ELrc7zq7SbA+1qoN+G5wUTQTiWga4JTCftZz2vcGSh+RpR0GHxA2fi/2WBHn8lHJ92ECQ/pPg6XJedysGXI6QFmlb8auqJ8iIlm0jDzEC6byyzeqoiiaIZ+DADItm8mmio4kWq4sfnPxSwI1kl2LC+Mg11RmxI70zTlyTS9BWX8FQ325GJHKo7WML2QYyNxVWe4V72OB2RPLoeOpu9iyI03/bcDwF5LfI+kz1TAffNM465YYZGHY1dJdgb4WJ0RDARtA45etgIkU3uSM43KxgPXzWqG+KwMH2Y2QoXdVonrhBp45x7xwWAQTYMNjYQNV6oDuy/evLHh14la0PhNpUAmvx0D5Q== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR09MB5307.namprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe31bb55-18b0-49ac-9f6f-08d887d9401c X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2020 13:37:22.5827 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7005d458-45be-48ae-8140-d43da96dd17b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nnkaWkFwTyM+3LqdyDxGYaM6eHXXIS/Z+nxj6FooQ76cx1xpJr6zFmE1NJ0cPEayg5ISP2gHwIhrBgj5dcHpWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR09MB5467 X-OriginatorOrg: nasa.gov X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.312, 18.0.737 definitions=2020-11-13_10:2020-11-13, 2020-11-13 signatures=0 X-Mailman-Approved-At: Sat, 14 Nov 2020 11:50:00 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] NFM2021 - Second Call for Papers X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list From: "Moscato, Mariano M. \(LARC-D320\)\[NATIONAL INSTITUTE OF AEROSPACE\] via Cl-isabelle-users" Reply-To: "Moscato, Mariano M. \(LARC-D320\)\[NATIONAL INSTITUTE OF AEROSPACE\]" List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Nov 2020 13:37:29 -0000 QXBvbG9naWVzIGZvciBwb3NzaWJsZSBjcm9zcy1wb3N0aW5nLg0KDQoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgICAgICAgICAybmQgQ2Fs bCBmb3IgUGFwZXJzDQogICBUaGUgVGhpcnRlZW50aCBOQVNBIEZvcm1hbCBNZXRob2RzIFN5bXBv c2l1bQ0KICAgICAgaHR0cHM6Ly9zaGVtZXNoLmxhcmMubmFzYS5nb3YvbmZtMjAyMS8NCiAgICAg ICAgICAgICAgICAyNC0yOCBNYXkgMjAyMQ0KICAgICAgICAgICAgICAgTm9yZm9saywgVkEsIFVT QQ0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0K VGhlIHN5bXBvc2l1bSB3aWxsIGJlIGhlbGQgaW4gYW4gaW4tcGVyc29uL3ZpcnR1YWwgaHlicmlk IGZvcm1hdCBpbg0KTm9yZm9saywgVkEsIFVTQSwgcG9zc2libHkgdHJhbnNpdGlvbmluZyB0byBm dWxseSB2aXJ0dWFsIGRlcGVuZGluZyBvbg0KdGhlIENPVklELTE5IHNpdHVhdGlvbi4gVmlydHVh bCBwcmVzZW50YXRpb24gb2YgcGFwZXJzIGlzIHBvc3NpYmxlIGV2ZW4gaWYNCnRoZSBjb25mZXJl bmNlIGlzIGhlbGQgaW4tcGVyc29uLg0KDQpJbXBvcnRhbnQgRGF0ZXM6DQotLS0tLS0tLS0tLS0t LS0tDQpBYnN0cmFjdCBTdWJtaXNzaW9uOiAyNyBOb3ZlbWJlciAyMDIwDQpQYXBlciBTdWJtaXNz aW9uOiA0IERlY2VtYmVyIDIwMjANClBhcGVyIE5vdGlmaWNhdGlvbnM6IDE5IEZlYnJ1YXJ5IDIw MjENCkNhbWVyYS1yZWFkeSBQYXBlcnM6IDE5IE1hcmNoIDIwMjENClN5bXBvc2l1bTogMjQtMjgg TWF5IDIwMjENCg0KVGhlbWUgb2YgdGhlIFN5bXBvc2l1bToNCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpUaGUgd2lkZXNwcmVhZCB1c2UgYW5kIGluY3JlYXNpbmcgY29tcGxleGl0eSBvZiBtaXNz aW9uLWNyaXRpY2FsIGFuZA0Kc2FmZXR5LWNyaXRpY2FsIHN5c3RlbXMgYXQgTkFTQSBhbmQgaW4g dGhlIGFlcm9zcGFjZSBpbmR1c3RyeSByZXF1aXJlDQphZHZhbmNlZCB0ZWNobmlxdWVzIHRoYXQg YWRkcmVzcyB0aGVzZSBzeXN0ZW1zJyBzcGVjaWZpY2F0aW9uLCBkZXNpZ24sDQp2ZXJpZmljYXRp b24sIHZhbGlkYXRpb24sIGFuZCBjZXJ0aWZpY2F0aW9uIHJlcXVpcmVtZW50cy4gIFRoZSBOQVNB DQpGb3JtYWwgTWV0aG9kcyBTeW1wb3NpdW0gKE5GTSkgaXMgYSBmb3J1bSB0byBmb3N0ZXIgY29s bGFib3JhdGlvbg0KYmV0d2VlbiB0aGVvcmV0aWNpYW5zIGFuZCBwcmFjdGl0aW9uZXJzIGZyb20g TkFTQSwgYWNhZGVtaWEsIGFuZA0KaW5kdXN0cnkuIE5GTSdzIGdvYWxzIGFyZSB0byBpZGVudGlm eSBjaGFsbGVuZ2VzIGFuZCB0byBwcm92aWRlDQpzb2x1dGlvbnMgZm9yIGFjaGlldmluZyBhc3N1 cmFuY2UgZm9yIHN1Y2ggY3JpdGljYWwgc3lzdGVtcy4gIE5ldw0KZGV2ZWxvcG1lbnRzIGFuZCBl bWVyZ2luZyBhcHBsaWNhdGlvbnMgbGlrZSBhdXRvbm9tb3VzIHNvZnR3YXJlIGZvcg0KVW5tYW5u ZWQgQWVyaWFsIFN5c3RlbXMgKFVBUyksIFVBUyBUcmFmZmljIE1hbmFnZW1lbnQgKFVUTSksIGFk dmFuY2VkDQpzZXBhcmF0aW9uIGFzc3VyYW5jZSBhbGdvcml0aG1zIGZvciBhaXJjcmFmdCwgYW5k IHRoZSBuZWVkIGZvcg0Kc3lzdGVtLXdpZGUgZmF1bHQgZGV0ZWN0aW9uLCBkaWFnbm9zaXMsIGFu ZCBwcm9nbm9zdGljcyBwcm92aWRlIG5ldw0KY2hhbGxlbmdlcyBmb3Igc3lzdGVtIHNwZWNpZmlj YXRpb24sIGRldmVsb3BtZW50LCBhbmQgdmVyaWZpY2F0aW9uDQphcHByb2FjaGVzLiBTaW1pbGFy IGNoYWxsZW5nZXMgbmVlZCB0byBiZSBhZGRyZXNzZWQgZHVyaW5nIGRldmVsb3BtZW50DQphbmQg ZGVwbG95bWVudCBvZiBvbi1ib2FyZCBzb2Z0d2FyZSBmb3IgYm90aCBzcGFjZWNyYWZ0IGFuZCBn cm91bmQNCnN5c3RlbXMuICBUaGUgZm9jdXMgb2YgdGhlIHN5bXBvc2l1bSB3aWxsIGJlIG9uIGZv cm1hbCB0ZWNobmlxdWVzIGFuZA0Kb3RoZXIgYXBwcm9hY2hlcyBmb3Igc29mdHdhcmUgYXNzdXJh bmNlLCBpbmNsdWRpbmcgdGhlaXIgdGhlb3J5LA0KY3VycmVudCBjYXBhYmlsaXRpZXMgYW5kIGxp bWl0YXRpb25zLCBhcyB3ZWxsIGFzIHRoZWlyIHBvdGVudGlhbA0KYXBwbGljYXRpb24gdG8gYWVy b3NwYWNlLCByb2JvdGljcywgYW5kIG90aGVyIE5BU0EtcmVsZXZhbnQNCnNhZmV0eS1jcml0aWNh bCBzeXN0ZW1zIGR1cmluZyBhbGwgc3RhZ2VzIG9mIHRoZSBzb2Z0d2FyZSBsaWZlLWN5Y2xlLg0K DQpUaGUgTkFTQSBGb3JtYWwgTWV0aG9kcyBTeW1wb3NpdW0gaXMgYW4gYW5udWFsIGV2ZW50IG9y Z2FuaXplZCBieSB0aGUNCk5BU0EgRm9ybWFsIE1ldGhvZHMgKE5GTSkgUmVzZWFyY2ggR3JvdXAs IGNvbXByaXNlZCBvZiByZXNlYXJjaGVycw0Kc3Bhbm5pbmcgc2l4IE5BU0EgY2VudGVycy4gTkZN MjAyMSBpcyBiZWluZyBvcmdhbml6ZWQgYnkgdGhlIE5BU0ENCkxhbmdsZXkgRm9ybWFsIE1ldGhv ZHMgVGVhbS4NCg0KVG9waWNzIG9mIEludGVyZXN0Og0KLS0tLS0tLS0tLS0tLS0tLS0tLQ0KV2Ug ZW5jb3VyYWdlIHN1Ym1pc3Npb25zIG9uIGNyb3NzLWN1dHRpbmcgYXBwcm9hY2hlcyB0aGF0IGJy aW5nDQp0b2dldGhlciBmb3JtYWwgbWV0aG9kcyBhbmQgdGVjaG5pcXVlcyBmcm9tIG90aGVyIGRv bWFpbnMgc3VjaCBhcw0KcHJvYmFiaWxpc3RpYyByZWFzb25pbmcsIG1hY2hpbmUgbGVhcm5pbmcs IGNvbnRyb2wgdGhlb3J5LCByb2JvdGljcywNCmFuZCBxdWFudHVtIGNvbXB1dGluZyBhbW9uZyBv dGhlcnMuICBUb3BpY3Mgb2YgaW50ZXJlc3QgaW5jbHVkZSwgYnV0DQphcmUgbm90IGxpbWl0ZWQg dG8sIHRoZSBmb2xsb3dpbmcgYXNwZWN0cyBvZiBmb3JtYWwgbWV0aG9kczoNCg0KLSBBZHZhbmNl cyBpbiBmb3JtYWwgbWV0aG9kczoNCiAgLSBGb3JtYWwgdmVyaWZpY2F0aW9uLOKAr21vZGVsIGNo ZWNraW5nLCBhbmQgc3RhdGljIGFuYWx5c2lzIHRlY2huaXF1ZXMNCiAgLSBUaGVvcmVtIHByb3Zp bmc6IGFkdmFuY2VzIGluIGludGVyYWN0aXZlIGFuZCBhdXRvbWF0ZWQgdGhlb3JlbQ0KICAgICBw cm92aW5nIChTQVQsIFNNVCwgZXRjLikNCiAgLSBQcm9ncmFtIGFuZCBzcGVjaWZpY2F0aW9uIHN5 bnRoZXNpcywgY29kZSB0cmFuc2Zvcm1hdGlvbiBhbmQgZ2VuZXJhdGlvbg0KICAtIFJ1bi10aW1l IHZlcmlmaWNhdGlvbg0KICAtIFRlY2huaXF1ZXMgYW5kIGFsZ29yaXRobXMgZm9yIHNjYWxpbmcg Zm9ybWFsIG1ldGhvZHMNCiAgLSBUZXN0IGNhc2UgZ2VuZXJhdGlvbg0KICAtIERlc2lnbiBmb3Ig dmVyaWZpY2F0aW9uIGFuZCBjb3JyZWN0LWJ5LWRlc2lnbiB0ZWNobmlxdWVzDQogIC0gUmVxdWly ZW1lbnRzIGdlbmVyYXRpb24sIHNwZWNpZmljYXRpb24sIGFuZCB2YWxpZGF0aW9uDQoNCi0gSW50 ZWdyYXRpb24gb2YgZm9ybWFsIG1ldGhvZHMgdGVjaG5pcXVlczoNCiAgLSBVc2Ugb2YgbWFjaGlu ZSBsZWFybmluZyB0ZWNobmlxdWVzIGluIGZvcm1hbCBtZXRob2RzDQogIC0gSW50ZWdyYXRpb24g b2YgZm9ybWFsIG1ldGhvZHMgaW50byBzb2Z0d2FyZSBlbmdpbmVlcmluZyBwcmFjdGljZXPigK8N CiAgLSBJbnRlZ3JhdGlvbiBvZiBkaXZlcnNlIGZvcm1hbCBtZXRob2RzIHRlY2huaXF1ZXMNCiAg LSBDb21iaW5hdGlvbiBvZiBmb3JtYWwgbWV0aG9kcyB3aXRoIHNpbXVsYXRpb24gYW5kIGFuYWx5 c2lzIHRlY2huaXF1ZXMNCg0KLSBGb3JtYWwgbWV0aG9kcyBpbiBwcmFjdGljZToNCiAgLSBFeHBl cmllbmNlIHJlcG9ydCBvZiBhcHBsaWNhdGlvbiBvZiBmb3JtYWwgbWV0aG9kcyBpbiBpbmR1c3Ry eQ0KICAtIFVzZSBvZiBmb3JtYWwgbWV0aG9kcyBpbiBlZHVjYXRpb24NCiAgLSBWZXJpZmljYXRp b24gb2YgbWFjaGluZSBsZWFybmluZyB0ZWNobmlxdWVzDQogIC0gQXBwbGljYXRpb25zIG9mIGZv cm1hbCBtZXRob2RzIGluIHRoZSBkZXZlbG9wbWVudCBvZjoNCiAgICAtIGF1dG9ub21vdXMgc3lz dGVtcywNCiAgICAtIHNhZmV0eS1jcml0aWNhbCBzeXN0ZW1zLA0KICAgIC0gY29uY3VycmVudCBh bmQgZGlzdHJpYnV0ZWQgc3lzdGVtcywNCiAgICAtIGN5YmVyLXBoeXNpY2FsLCBlbWJlZGRlZCwg YW5kIGh5YnJpZCBzeXN0ZW1zDQogICAgLSBmYXVsdC1kZXRlY3Rpb24sIGRpYWdub3N0aWNzLCBh bmQgcHJvZ25vc3RpY3Mgc3lzdGVtcw0KICAgIC0gaHVtYW4tbWFjaGluZSBpbnRlcmFjdGlvbiBh bmFseXNpcw0KDQpTdWJtaXNzaW9uIERldGFpbHM6DQotLS0tLS0tLS0tLS0tLS0tLS0tDQpUaGVy ZSBhcmUgdHdvIGNhdGVnb3JpZXMgb2Ygc3VibWlzc2lvbnM6DQoxLiBSZWd1bGFyIHBhcGVycyBk ZXNjcmliaW5nIGZ1bGx5IGRldmVsb3BlZCB3b3JrIGFuZCBjb21wbGV0ZSByZXN1bHRzDQogICAg KG1heGltdW0gMTUgcGFnZXMpOw0KMi4gU2hvcnQgcGFwZXJzIG9uIHRvb2xzLCBleHBlcmllbmNl IHJlcG9ydHMsIG9yIHdvcmsgaW4gcHJvZ3Jlc3Mgd2l0aA0KICAgIHByZWxpbWluYXJ5IHJlc3Vs dHMgKG1heGltdW0gNiBwYWdlcykuDQoNClRoZSBzdWJtaXR0ZWQgcGFwZXJzIHNob3VsZCBub3Qg ZXhjZWVkIDE1IHBhZ2VzIGZvciByZWd1bGFyIHBhcGVycyBhbmQNCjYgcGFnZXMgZm9yIHNob3J0 IHBhcGVycywgaW5jbHVkaW5nIHRhYmxlcyBhbmQgZmlndXJlcywgYnV0IGV4Y2x1ZGluZw0KYmli bGlvZ3JhcGh5IGFuZCBjbGVhcmx5IG1hcmtlZCBhcHBlbmRpY2VzLiAgVGhlIHBhcGVycyBzaG91 bGQgYmUNCnNlbGYtY29udGFpbmVkLCBhcyBhcHBlbmRpY2VzIHdpbGwgbm90IGJlIGluY2x1ZGVk IGluIHRoZSBwdWJsaXNoZWQNCnByb2NlZWRpbmdzLiAgSW4gYWRkaXRpb24gdG8gYXBwZW5kaWNl cywgYXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0bw0KbWFrZSBhdmFpbGFibGUgYW55IG90aGVyIHN1 cHBsZW1lbnRhcnkgbWF0ZXJpYWwgc3VwcG9ydGluZyB0aGUgY2xhaW1zDQptYWRlIGluIHRoZSBw YXBlciwgc3VjaCBhcyBwcm9vZiBzY3JpcHRzIG9yIGV4cGVyaW1lbnRhbCBkYXRhLCBhcyB0aGUN CmF2YWlsYWJpbGl0eSBhbmQgcmVwcm9kdWNpYmlsaXR5IG9mIHRoZXNlIGFydGlmYWN0cyBtYXkg YmUgY29uc2lkZXJlZA0KYnkgcmV2aWV3ZXJzIGluIHNjb3JpbmcuICBBbGwgcGFwZXJzIG11c3Qg YmUgaW4gRW5nbGlzaCBhbmQgZGVzY3JpYmUNCm9yaWdpbmFsIHdvcmsgdGhhdCBoYXMgbm90IGJl ZW4gcHVibGlzaGVkIG9yIHN1Ym1pdHRlZCBlbHNld2hlcmUuICBBbGwNCnN1Ym1pc3Npb25zIHdp bGwgYmUgcmV2aWV3ZWQgYnkgYXQgbGVhc3QgdGhyZWUgbWVtYmVycyBvZiB0aGUgUHJvZ3JhbQ0K Q29tbWl0dGVlIGluIGEgc2luZ2xlLWJsaW5kIHJldmlld2luZyBmb3JtYXQuDQoNClBhcGVycyB3 aWxsIGFwcGVhciBpbiB0aGUgRm9ybWFsIE1ldGhvZHMgc3VibGluZSBvZiBTcHJpbmdlcidzIExl Y3R1cmUNCk5vdGVzIGluIENvbXB1dGVyIFNjaWVuY2UgKExOQ1MpIGFuZCBtdXN0IHVzZSBMTkNT IHN0eWxlIGZvcm1hdHRpbmcNCihodHRwczovL3d3dy5zcHJpbmdlci5jb20vZ3AvY29tcHV0ZXIt c2NpZW5jZS9sbmNzL2NvbmZlcmVuY2UtcHJvY2VlZGluZ3MtZ3VpZGVsaW5lcykuDQpQYXBlcnMg bXVzdCBiZSBzdWJtaXR0ZWQgaW4gUERGIGZvcm1hdCBhdCB0aGUgRWFzeUNoYWlyIHN1Ym1pc3Np b24NCnNpdGU6IGh0dHBzOi8vZWFzeWNoYWlyLm9yZy9jb25mZXJlbmNlcy8/Y29uZj1uZm0yMDIx Lg0KDQpBdXRob3JzIG9mIHNlbGVjdGVkIGJlc3QgcGFwZXJzIHdpbGwgYmUgaW52aXRlZCB0byBz dWJtaXQgYW4gZXh0ZW5kZWQNCnZlcnNpb24gdG8gYSBzcGVjaWFsIGlzc3VlIGluIFNwcmluZ2Vy J3MgSW5ub3ZhdGlvbnMgaW4gU3lzdGVtcyBhbmQNClNvZnR3YXJlIEVuZ2luZWVyaW5nOiBBIE5B U0EgSm91cm5hbA0KKGh0dHBzOi8vd3d3LnNwcmluZ2VyLmNvbS9qb3VybmFsLzExMzM0KS4NCg0K T3JnYW5pemVyczoNCi0tLS0tLS0tLS0tDQrigKIgQ2VzYXIgTXVub3osIE5BU0EsIFVTQSAoR2Vu ZXJhbCBDby1DaGFpcikNCuKAoiBJdmFuIFBlcmV6LCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgQWVy b3NwYWNlLCBVU0EgKEdlbmVyYWwgQ28tQ2hhaXIpDQrigKIgQWFyb24gRHV0bGUsIE5BU0EsIFVT QSAoUEMgQ28tQ2hhaXIpDQrigKIgTWFyaWFubyBNb3NjYXRvLCBOYXRpb25hbCBJbnN0aXR1dGUg b2YgQWVyb3NwYWNlLCBVU0EgKFBDIENvLUNoYWlyKQ0K4oCiIExhdXJhIFRpdG9sbywgTmF0aW9u YWwgSW5zdGl0dXRlIG9mIEFlcm9zcGFjZSwgVVNBIChQQyBDby1DaGFpcikNCg0KUHJvZ3JhbSBD b21taXR0ZWU6DQotLS0tLS0tLS0tLS0tLS0tLS0NCkVyaWthIEFicmFoYW0sIFJXVEggQWFjaGVu IFVuaXZlcnNpdHksIEdlcm1hbnkNCk1hdXJpY2lvIEF5YWxhLVJpbmNvbiwgVW5pdmVyc2lkYWRl IGRlIEJyYXNpbGlhLCBCcmF6aWwNCkp1bGlhIEJhZGdlciwgTkFTQSwgVVNBDQpOaWtvbGFqIEJq b3JuZXIsIE1pY3Jvc29mdCBSZXNlYXJjaCwgVVNBDQpKYXNtaW4gQmxhbmNoZXR0ZSwgVnJpamUg VW5pdmVyc2l0ZWl0IEFtc3RlcmRhbSwgVGhlIE5ldGhlcmxhbmRzDQpTeWx2aWUgQm9sZG8sIElO UklBLCBGcmFuY2UNCkFsZXNzYW5kcm8gQ2ltYXR0aSwgRm9uZGF6aW9uZSBCcnVubyBLZXNzbGVy LCBJdGFseQ0KTWlzdHkgRGF2aWVzLCBOQVNBLCBVU0ENCkdpbGxlcyBEb3dlaywgSU5SSUEgLyBF TlMgUGFyaXMtU2FjbGF5LCBGcmFuY2UNCkNhdGhlcmluZSBEdWJvaXMsIEVOU0lJRS1TYW1vdmFy LCBGcmFuY2UNCkFsZXhhbmRyZSBEdXJldC1MdXR6LCBMUkRFL0VQSVRBLCBGcmFuY2UNCkdhYnJp ZWwgRWJuZXIsIFZpZW5uYSBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3ksIEF1c3RyaWENCk1hcmNv IEZlbGl1LCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgQWVyb3NwYWNlLCBVU0ENCkplYW4tQ2hyaXN0 b3BoZSBGaWxsaWF0cmUsIENOUlMsIEZyYW5jZQ0KUGllcnJlLUxvaWMgR2Fyb2NoZSwgRU5BQywg RnJhbmNlDQpBbHd5biBHb29kbG9lLCBOQVNBLCBVU0ENCkpvaG4gSGFycmlzb24sIEFtYXpvbiBX ZWIgU2VydmljZXMsIFVTQQ0KS2xhdXMgSGF2ZWx1bmQsIE5BU0EgSmV0IFByb3B1bHNpb24gTGFi b3JhdG9yeSwgVVNBDQpNYXJpZWtlIEh1aXNtYW4sIFVuaXZlcnNpdHkgb2YgVHdlbnRlLCBUaGUg TmV0aGVybGFuZHMNCkJyaWFuIEphbGFpYW4sIEFSTCAvIFZpcmdpbmlhIFRlY2gsIFVTQQ0KU3Vz bWl0IEpoYSwgU1JJIEludGVybmF0aW9uYWwsIFVTQQ0KTWljaGFlbCBMb3dyeSwgTkFTQSwgVVNB DQpQYW5hZ2lvdGlzIE1hbm9saW9zLCBOb3J0aGVhc3Rlcm4gVW5pdmVyc2l0eSwgVVNBDQpQYW9s byBNYXNjaSwgTmF0aW9uYWwgSW5zdGl0dXRlIG9mIEFlcm9zcGFjZSwgVVNBDQpBbmFzdGFzaWEg TWF2cmlkb3UsIFNHVCBJbmMuIC8gTkFTQSBBbWVzIFJlc2VhcmNoIENlbnRlciwgVVNBDQpTdGVm YW4gTWl0c2NoLCBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eSwgVVNBDQpZYW5uaWNrIE1veSwg QWRhQ29yZSAvIElOUklBLCBGcmFuY2UNCk5hdGFzaGEgTmVvZ2ksIE5BU0EsIFVTQQ0KTGF1cmEg UGFuaXpvLCBVbml2ZXJzaXR5IG9mIE1hbGFnYSwgU3BhaW4NCkNvcmluYSBQYXNhcmVhbnUsIENN VSAvIE5BU0EgQW1lcyBSZXNlYXJjaCBDZW50ZXIsIFVTQQ0KWnZvbmltaXIgUmFrYW1hcmljLCBV bml2ZXJzaXR5IG9mIFV0YWgsIFVTQQ0KQ2FtaWxvIFJvY2hhLCBQb250aWZpY2lhIFVuaXZlcnNp ZGFkIEphdmVyaWFuYSBDYWxpLCBDb2xvbWJpYQ0KTmljb2xhcyBSb3NuZXIsIEFtYXpvbiBXZWIg U2VydmljZXMsIFVTQQ0KS3Jpc3Rpbi1Zdm9ubmUgUm96aWVyLCBJb3dhIFN0YXRlIFVuaXZlcnNp dHksIFVTQQ0KQ3Jpc3RpbmEgU2VjZWxlYW51LCBNYWxhcmRhbGVuIFVuaXZlcnNpdHksIFN3ZWRl bg0KTmF0YXJhamFuIFNoYW5rYXIsIFNSSSBJbnRlcm5hdGlvbmFsLCBVU0ENCkpvaGFubiAgU2No dW1hbm4sIFNHVCBJbmMuL05BU0EgQW1lcyBSZXNlYXJjaCBDZW50ZXIsIFVTQQ0KVGFubmVyIFNs YWdlbCwgTkFTQSwgVVNBDQpNYXJpZWxsZSBTdG9lbGluZ2EsIFVuaXZlcnNpdHkgb2YgVHdlbnRl LCBUaGUgTmV0aGVybGFuZHMNCkNlc2FyZSBUaW5lbGxpLCBVbml2ZXJzaXR5IG9mIElvd2EsIFVT QQ0KQ2F0ZXJpbmEgVXJiYW4sIElOUklBLCBGcmFuY2UNClZpcmdpbmllIFdpZWxzLCBPTkVSQSAv IERUSU0sIEZyYW5jZQ0KDQpSZWdpc3RyYXRpb246DQotLS0tLS0tLS0tLS0tDQpSZWdpc3RyYXRp b24gaXMgcmVxdWlyZWQgYW5kIGZyZWUgb2YgY2hhcmdlLg0KDQpDb250YWN0Og0KLS0tLS0tLS0N CkVtYWlsOiBuZm0yMDIxIFthdF0gZWFzeWNoYWlyIFtkb3RdIG9yZw0KV2ViOiBodHRwczovL3No ZW1lc2gubGFyYy5uYXNhLmdvdi9uZm0yMDIxLw0KDQotLQ0KTWFyaWFubyBNLiBNb3NjYXRvDQpN YXJpYW5vLk0uTW9zY2F0b0BuYXNhLmdvdg0KTVMuIDIzNCwgQjEyMzAgLSBSMjUwIC0gQzUyDQpO QVNBIExhbmdsZXkgUmVzZWFyY2ggQ2VudGVyLCBIYW1wdG9uLCBWQSAyMzY4MS0yMTk5LCBVU0EN Ck9mZmljZTogKzEgKDc1NykgODY0IDI3NDQgRmF4OiArMSAoNzU3KSA4NjQgOTk4Nw0K From lp15 at cam.ac.uk Sun Nov 15 14:02:11 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:53542) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1keIbb-0002F8-Al (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sun, 15 Nov 2020 14:02:11 +0000 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from lpaulson.plus.com ([81.174.248.240]:52289 helo=selenium.lan) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:25) with esmtpsa (PLAIN:lp15) (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1keIbb-0000g3-K1 (Exim 4.92.3) (return-path ); Sun, 15 Nov 2020 14:02:11 +0000 Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) From: Lawrence Paulson In-Reply-To: Date: Sun, 15 Nov 2020 14:02:10 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <2FC67400-ECD7-49AB-AD04-233972458B2F at cam.ac.uk> References: To: =?utf-8?B?SmFrdWIgS8SFZHppb8WCa2E=?= X-Mailer: Apple Mail (2.3608.120.23.2.4) Cc: cl-isabelle-users at lists.cam.ac.uk Subject: Re: [isabelle] Typos in lemma names X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Nov 2020 14:02:11 -0000 Thanks for pointing this out. It will be taken care of. Larry > On 13 Nov 2020, at 23:49, Jakub K=C4=85dzio=C5=82ka = wrote: >=20 > Good evening, >=20 > I've just noticed that a typo in the name of > HOL.Divides.zmod_trival_iff - I would expect it to be called > zmod_trivial_iff (note the additional i in 'trivial'). >=20 > A quick code grep shows that the same mistake is also present, apart > from some comments, in > HOL-Computational_Algebra.Polynomial.is_unit_monom_trival. >=20 > Is fixing typos like these possible, or would that be a compatibility > problem? >=20 > Kind regards, > Jakub K=C4=85dzio=C5=82ka >=20 From nschirmer at apple.com Mon Nov 16 07:58:51 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:33324) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1keZPX-0004s8-VN (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 16 Nov 2020 07:58:51 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883435 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [17.151.62.66 listed in list.dnswl.dnsbl.ja.net] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [17.151.62.66 listed in wl.mailspike.net] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:37843) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1keZPX-000oKW-da (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Mon, 16 Nov 2020 07:58:51 +0000 Received: from ppsw-40.csi.cam.ac.uk ([2001:630:212:8::e:f40]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1keZPX-0001Xt-5h for isabelle-users at cl.cam.ac.uk; Mon, 16 Nov 2020 07:58:51 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883435 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [17.151.62.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [17.151.62.66 listed in wl.mailspike.net] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from nwk-aaemail-lapp01.apple.com ([17.151.62.66]:50110) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1keZPV-000yCc-mB (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Mon, 16 Nov 2020 07:58:51 +0000 Received: from pps.filterd (nwk-aaemail-lapp01.apple.com [127.0.0.1]) by nwk-aaemail-lapp01.apple.com (8.16.0.43/8.16.0.42) with SMTP id 0AG7sZZY025667 for ; Sun, 15 Nov 2020 23:58:46 -0800 Received: from crk-mailsvcp-mta-lapp02.euro.apple.com (crk-mailsvcp-mta-lapp02.euro.apple.com [17.66.55.14]) by nwk-aaemail-lapp01.apple.com with ESMTP id 34tf22ptcw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Sun, 15 Nov 2020 23:58:46 -0800 Received: from crk-mailsvcp-mmp-lapp01.euro.apple.com (crk-mailsvcp-mmp-lapp01.euro.apple.com [17.72.136.15]) by crk-mailsvcp-mta-lapp02.euro.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPS id <0QJV003YVQ5XI500 at crk-mailsvcp-mta-lapp02.euro.apple.com> for isabelle-users at cl.cam.ac.uk; Mon, 16 Nov 2020 07:58:45 +0000 (GMT) Received: from process_milters-daemon.crk-mailsvcp-mmp-lapp01.euro.apple.com by crk-mailsvcp-mmp-lapp01.euro.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) id <0QJV00H00PIDUI00 at crk-mailsvcp-mmp-lapp01.euro.apple.com>; Mon, 16 Nov 2020 07:58:45 +0000 (GMT) X-Va-A: X-Va-T-CD: c41fba95cc9ed0df2606c78991dfb164 X-Va-E-CD: 83181e0183a1e31cda544e019ca957f5 X-Va-R-CD: 8af689ec8afd7241c7969f033e68494a X-Va-CD: 0 X-Va-ID: 8a9b6197-c6a9-4062-af7f-795c200ba6b5 X-V-A: X-V-T-CD: c41fba95cc9ed0df2606c78991dfb164 X-V-E-CD: 83181e0183a1e31cda544e019ca957f5 X-V-R-CD: 8af689ec8afd7241c7969f033e68494a X-V-CD: 0 X-V-ID: 6aa58272-78fa-46fb-874f-6030530a843f X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.312, 18.0.737 definitions=2020-11-16_02:2020-11-13, 2020-11-16 signatures=0 Received: from [17.235.214.156] (unknown [17.235.214.156]) by crk-mailsvcp-mmp-lapp01.euro.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPSA id <0QJV00Z6OQ5VTB00 at crk-mailsvcp-mmp-lapp01.euro.apple.com>; Mon, 16 Nov 2020 07:58:45 +0000 (GMT) MIME-version: 1.0 (Mac OS X Mail 14.0 \(3654.20.0.2.21\)) Message-id: <89F5D48B-5E09-40F6-A007-9E6529916A54 at apple.com> Date: Mon, 16 Nov 2020 08:58:43 +0100 To: isabelle-users X-Mailer: Apple Mail (2.3654.20.0.2.21) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.312, 18.0.737 definitions=2020-11-16_02:2020-11-13, 2020-11-16 signatures=0 X-debug-header: local_aliases has suffix Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Cc: Sebastian Skalberg Subject: [isabelle] Issue with Isabelle/jEdit in fullscreen mode in macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list From: Norbert Schirmer via Cl-isabelle-users Reply-To: Norbert Schirmer List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Nov 2020 07:58:52 -0000 Dear Isabelle Team, There is some odd behaviour of Isabelle / jEdit in macOS Big Sur. When = using Isabelle / jEdit in fullscreen mode (via the green = window-fullscreen toggle in the left-upper corner of the window, not = View -> Toggle fullscreen mode), popup windows like the search window = (Command - F) or the hypersearch results are now also presented in = fullscreen (in Catalina they were presented as ordinary windows on top). This does not only look odd, but also makes navigating hypersearch = results impossible, as one switches back and forth between the editor = view and the result view. Moreover, it is unclear how to close the = hypersearch results again. Hope this can be resolved with the upcoming = Isabelle2021. Regards, Norbert -- Norbert Schirmer (nschirmer at apple.com) =EF=A3=BF SEG Formal Verification From david.k at posteo.de Tue Nov 17 18:12:22 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:35828) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kf5Sn-00080x-UY (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:12:21 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883468 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:44150) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kf5Sn-0003jq-eD (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:12:21 +0000 Received: from ppsw-30.csi.cam.ac.uk ([2001:630:212:8::e:f30]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kf5Sn-000KDO-CC for isabelle-users at cl.cam.ac.uk; Tue, 17 Nov 2020 18:12:21 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883468 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:34343) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kf5Sm-0003iY-eL (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:12:21 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 4E8612400FC for ; Tue, 17 Nov 2020 19:12:18 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CbDYZ0TRqz9rxL for ; Tue, 17 Nov 2020 19:12:17 +0100 (CET) To: isabelle-users From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <9e9ed0e6-664d-d38c-d637-7b47e7247a6e at posteo.de> Date: Tue, 17 Nov 2020 19:12:17 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-debug-header: local_aliases has suffix Subject: [isabelle] Code generation for non-terminating functions X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Nov 2020 18:12:22 -0000 Dear all, is it possible to generate code for a potentially non-terminating function `f :: A => B` if I ensure that whenever I actually call `f a`, then `f_dom a`? I sometimes have functions that are non-terminating in general but that are only actually called with "safe" arguments. However, since I have to prove termination in order for code generation to work (at least as far as I know), I have to augment the function with additional checks that ensure termination. This feels unsatisfactory, since I could theoretically prove that these checks are never exercised during execution. A silly example: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (* Does not terminate for n < 0 *) function(domintros) factorial :: "int ⇒ int" where "factorial n = (if n = 0 then 1 else n * (factorial (n-1)))" by pat_completeness auto lemma factorial_termination: "n ≥ 0 ⟹ factorial_dom n" by (metis add.commute add_diff_cancel_left' factorial.domintros int_ge_induct) (* A safe (i.e., terminating) wrapper around `factorial` *) fun factorial_safe :: "int ⇒ int option" where "factorial_safe n = (if n ≥ 0 then Some (factorial n) else None)" (* Does not work because there are no code equations for `factorial` *) export_code factorial_safe in SML ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here, `factorial_safe` checks the preconditions of `factorial` and only actually makes the call if it is guaranteed to terminate. Unfortunately, code generation for `factorial_safe` fails because there are no code equations for `factorial`. Best regards, David From Rene.Thiemann at uibk.ac.at Tue Nov 17 18:47:24 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:55686) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kf60i-00012l-Kz (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:47:24 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883468 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [138.232.1.142 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [138.232.1.142 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:39094) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kf60i-000bQf-Q5 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:47:24 +0000 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kf60h-000LCy-Qi for isabelle-users at cl.cam.ac.uk; Tue, 17 Nov 2020 18:47:23 +0000 X-Cam-SpamDetails: score -2.4 from SpamAssassin-3.4.4-1883468 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [138.232.1.142 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [138.232.1.142 listed in wl.mailspike.net] * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from lmr1.uibk.ac.at ([138.232.1.142]:44726 helo=smtp.uibk.ac.at) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kf60b-000XAT-fl (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Tue, 17 Nov 2020 18:47:23 +0000 Received: from exchange.uibk.ac.at (xmbx7.uibk.ac.at [138.232.2.159]) by smtp.uibk.ac.at (8.14.4/8.14.4/F1) with ESMTP id 0AHIkoSV012894 (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 17 Nov 2020 19:46:50 +0100 Received: from xmbx11.uibk.ac.at (138.232.2.173) by xmbx7.uibk.ac.at (138.232.2.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2044.4; Tue, 17 Nov 2020 19:46:50 +0100 Received: from xmbx11.uibk.ac.at ([fe80::b53b:c79a:404d:c048]) by xmbx11.uibk.ac.at ([fe80::b53b:c79a:404d:c048%3]) with mapi id 15.01.2044.007; Tue, 17 Nov 2020 19:46:50 +0100 From: =?utf-8?B?VGhpZW1hbm4sIFJlbsOp?= To: David Kretzmer Thread-Topic: [isabelle] Code generation for non-terminating functions Thread-Index: AQHWvQ2PX8BoolkZZESKfsaF9e18fKnMmSSA Date: Tue, 17 Nov 2020 18:46:50 +0000 Message-ID: <10A357BC-1E8E-4915-A2EA-407C3C67E5F7 at uibk.ac.at> References: <9e9ed0e6-664d-d38c-d637-7b47e7247a6e at posteo.de> In-Reply-To: <9e9ed0e6-664d-d38c-d637-7b47e7247a6e at posteo.de> Accept-Language: de-DE, de-AT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [138.232.2.105] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Score: () -4.9 FROM_EXCESS_BASE64,FROM_NET_2,RCV_SMTP_UIBK X-Scanned-By: MIMEDefang 2.84 at uibk.ac.at X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Code generation for non-terminating functions X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Nov 2020 18:47:24 -0000 RGVhciBEYXZpZCwNCg0KSSBrbm93IGF0IGxlYXN0IHR3byBwb3NzaWJpbGl0aWVzOg0KDQooKiBw b3RlbnRpYWwgc29sdXRpb24gdmlhIHR5cGVkZWY6IHNwZWNpZnkgc2VwYXJhdGUgdHlwZSBmb3Ig ZG9tYWluIG9mIGZ1bmN0aW9uICopDQoNCnR5cGVkZWYgZnVuX2lucHV0ID0gIntuIDo6IGludC4g biDiiaUgMH0iIGJ5IGF1dG8NCg0Kc2V0dXBfbGlmdGluZyB0eXBlX2RlZmluaXRpb25fZnVuX2lu cHV0DQoNCmxpZnRfZGVmaW5pdGlvbiBudW0gOjogImZ1bl9pbnB1dCDih5IgaW50IiBpcyAizrsg eC4geCIgLg0KDQpsaWZ0X2RlZmluaXRpb24gc3ViMSA6OiAiZnVuX2lucHV0IOKHkiBmdW5faW5w dXTigJ0gDQogIGlzICLOuyB4LiBpZiB4ID0gMCB0aGVuIDAgZWxzZSB4IC0gMSINCiAgYnkgYXV0 bw0KDQpmdW5jdGlvbiBmYWN0b3JpYWwgOjogImZ1bl9pbnB1dCDih5IgaW50IiB3aGVyZQ0KICAi ZmFjdG9yaWFsIG4gPSAoaWYgbnVtIG4gPSAwIHRoZW4gMSBlbHNlIG51bSBuICogZmFjdG9yaWFs IChzdWIxIG4pKSIgDQogIGJ5IHBhdF9jb21wbGV0ZW5lc3MgYXV0bw0KDQp0ZXJtaW5hdGlvbiBi eSAocmVsYXRpb24gIm1lYXN1cmUgKM67IG4uIG5hdCAobnVtIG4pKSIsIGF1dG87IHRyYW5zZmVy LCBhdXRvKQ0KDQpsaWZ0X2RlZmluaXRpb24gY3JlYXRlX2lucHV0IDo6ICJpbnQg4oeSIGZ1bl9p bnB1dCIgaXMNCiAgIs67IG4uIGlmIG4g4omlIDAgdGhlbiBuIGVsc2UgMCIgYnkgYXV0bw0KDQpk ZWZpbml0aW9uIGZhY3RvcmlhbF9zYWZlIDo6ICJpbnQg4oeSIGludCBvcHRpb24iIHdoZXJlDQog ICJmYWN0b3JpYWxfc2FmZSBuID0gKGlmIG4g4omlIDAgdGhlbiBTb21lIChmYWN0b3JpYWwgKGNy ZWF0ZV9pbnB1dCBuKSkgZWxzZSBOb25lKeKAnSANCg0KKCogZHVyaW5nIHJ1bnRpbWUgeW91IGRv buKAmXQgZXhlY3V0ZSB0aGUgaW52YXJpYW50IOKAnG4gPj0gMOKAnSBpbiBldmVyeSBpdGVyYXRp b24sDQogICBidXQgeW91IHJlcGVhdCB0aGUgYWJvcnQtY29uZGl0aW9uIGluIHRoZSBzdWIxIGZ1 bmN0aW9uICopDQoNCmV4cG9ydF9jb2RlIGZhY3RvcmlhbF9zYWZlIGluIEhhc2tlbGwNCg0KKCog b3IgdXNlIHBhcnRpYWxfZnVuY3Rpb24gYW5kIHB1dCBldmVyeXRoaW5nIGludG8gb3B0aW9uLXR5 cGUgKikNCg0KbGVtbWEgbWFwX29wdGlvbl9tb25vIFtwYXJ0aWFsX2Z1bmN0aW9uX21vbm9dOg0K ICBzaG93cyAibW9ub19vcHRpb24gKM67Zi4gbWFwX29wdGlvbiBYIChmIHkpKSINCiAgYnkgKHNt dCBmbGF0X29yZF9kZWYgZnVuX29yZF9kZWYgbWFwX29wdGlvbl9pc19Ob25lIG1vbm90b25lSSkN Cg0KcGFydGlhbF9mdW5jdGlvbiAob3B0aW9uKSBmYWN0X29wdGlvbiA6OiAiaW50IOKHkiBpbnQg b3B0aW9uIiB3aGVyZQ0KICBbY29kZV06ICJmYWN0X29wdGlvbiBuID0gKGlmIG4gPSAwIHRoZW4g U29tZSAxIGVsc2UgbWFwX29wdGlvbiAoKCopIG4pIChmYWN0X29wdGlvbiAobiAtIDEpKSkiIA0K DQpleHBvcnRfY29kZSBmYWN0X29wdGlvbiBpbiBIYXNrZWxsDQoNCkkgaG9wZSB0aGlzIGhlbHBz LA0KUmVuw6kNCg0KPiBBbSAxNy4xMS4yMDIwIHVtIDE5OjEyIHNjaHJpZWIgRGF2aWQgS3JldHpt ZXIgPGRhdmlkLmtAcG9zdGVvLmRlPjoNCj4gDQo+IERlYXIgYWxsLA0KPiANCj4gaXMgaXQgcG9z c2libGUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgYSBwb3RlbnRpYWxseSBub24tdGVybWluYXRpbmcN Cj4gZnVuY3Rpb24gYGYgOjogQSA9PiBCYCBpZiBJIGVuc3VyZSB0aGF0IHdoZW5ldmVyIEkgYWN0 dWFsbHkgY2FsbCBgZiBhYCwNCj4gdGhlbiBgZl9kb20gYWA/DQo+IA0KPiBJIHNvbWV0aW1lcyBo YXZlIGZ1bmN0aW9ucyB0aGF0IGFyZSBub24tdGVybWluYXRpbmcgaW4gZ2VuZXJhbCBidXQgdGhh dA0KPiBhcmUgb25seSBhY3R1YWxseSBjYWxsZWQgd2l0aCAic2FmZSIgYXJndW1lbnRzLiBIb3dl dmVyLCBzaW5jZSBJIGhhdmUgdG8NCj4gcHJvdmUgdGVybWluYXRpb24gaW4gb3JkZXIgZm9yIGNv ZGUgZ2VuZXJhdGlvbiB0byB3b3JrIChhdCBsZWFzdCBhcyBmYXINCj4gYXMgSSBrbm93KSwgSSBo YXZlIHRvIGF1Z21lbnQgdGhlIGZ1bmN0aW9uIHdpdGggYWRkaXRpb25hbCBjaGVja3MgdGhhdA0K PiBlbnN1cmUgdGVybWluYXRpb24uIFRoaXMgZmVlbHMgdW5zYXRpc2ZhY3RvcnksIHNpbmNlIEkg Y291bGQNCj4gdGhlb3JldGljYWxseSBwcm92ZSB0aGF0IHRoZXNlIGNoZWNrcyBhcmUgbmV2ZXIg ZXhlcmNpc2VkIGR1cmluZyBleGVjdXRpb24uDQo+IA0KPiBBIHNpbGx5IGV4YW1wbGU6DQo+IA0K PiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn4NCj4gKCogRG9lcyBub3QgdGVybWluYXRlIGZvciBuIDwgMCAqKQ0K PiBmdW5jdGlvbihkb21pbnRyb3MpIGZhY3RvcmlhbCA6OiAiaW50IOKHkiBpbnQiIHdoZXJlDQo+ ICAiZmFjdG9yaWFsIG4gPSAoaWYgbiA9IDAgdGhlbiAxIGVsc2UgbiAqIChmYWN0b3JpYWwgKG4t MSkpKSINCj4gIGJ5IHBhdF9jb21wbGV0ZW5lc3MgYXV0bw0KPiANCj4gbGVtbWEgZmFjdG9yaWFs X3Rlcm1pbmF0aW9uOiAibiDiiaUgMCDin7kgZmFjdG9yaWFsX2RvbSBuIg0KPiAgYnkgKG1ldGlz IGFkZC5jb21tdXRlIGFkZF9kaWZmX2NhbmNlbF9sZWZ0JyBmYWN0b3JpYWwuZG9taW50cm9zDQo+ IGludF9nZV9pbmR1Y3QpDQo+IA0KPiAoKiBBIHNhZmUgKGkuZS4sIHRlcm1pbmF0aW5nKSB3cmFw cGVyIGFyb3VuZCBgZmFjdG9yaWFsYCAqKQ0KPiBmdW4gZmFjdG9yaWFsX3NhZmUgOjogImludCDi h5IgaW50IG9wdGlvbiIgd2hlcmUNCj4gICJmYWN0b3JpYWxfc2FmZSBuID0gKGlmIG4g4omlIDAg dGhlbiBTb21lIChmYWN0b3JpYWwgbikgZWxzZSBOb25lKSINCj4gDQo+ICgqIERvZXMgbm90IHdv cmsgYmVjYXVzZSB0aGVyZSBhcmUgbm8gY29kZSBlcXVhdGlvbnMgZm9yIGBmYWN0b3JpYWxgICop DQo+IGV4cG9ydF9jb2RlIGZhY3RvcmlhbF9zYWZlIGluIFNNTA0KPiB+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4N Cj4gDQo+IEhlcmUsIGBmYWN0b3JpYWxfc2FmZWAgY2hlY2tzIHRoZSBwcmVjb25kaXRpb25zIG9m IGBmYWN0b3JpYWxgIGFuZCBvbmx5DQo+IGFjdHVhbGx5IG1ha2VzIHRoZSBjYWxsIGlmIGl0IGlz IGd1YXJhbnRlZWQgdG8gdGVybWluYXRlLiBVbmZvcnR1bmF0ZWx5LA0KPiBjb2RlIGdlbmVyYXRp b24gZm9yIGBmYWN0b3JpYWxfc2FmZWAgZmFpbHMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gY29kZQ0K PiBlcXVhdGlvbnMgZm9yIGBmYWN0b3JpYWxgLg0KPiANCj4gQmVzdCByZWdhcmRzLA0KPiBEYXZp ZA0KPiANCg0K From david.k at posteo.de Tue Nov 17 19:56:45 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:59558) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kf75p-0004QW-QU (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 19:56:45 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883468 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:53874) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kf75p-000yI6-Jc (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Tue, 17 Nov 2020 19:56:45 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kf75o-000MnC-Vm for isabelle-users at cl.cam.ac.uk; Tue, 17 Nov 2020 19:56:45 +0000 X-Cam-SpamDetails: score -2.6 from SpamAssassin-3.4.4-1883468 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [185.67.36.66 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [185.67.36.66 listed in wl.mailspike.net] * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mout02.posteo.de ([185.67.36.66]:32837) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kf75o-000yHP-JS (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Tue, 17 Nov 2020 19:56:44 +0000 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 770B42400FC for ; Tue, 17 Nov 2020 20:56:41 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CbGt13LK7z6tmB; Tue, 17 Nov 2020 20:56:40 +0100 (CET) To: =?UTF-8?B?VGhpZW1hbm4sIFJlbsOp?= References: <9e9ed0e6-664d-d38c-d637-7b47e7247a6e at posteo.de> <10A357BC-1E8E-4915-A2EA-407C3C67E5F7 at uibk.ac.at> From: David Kretzmer Autocrypt: addr=david.k at posteo.de; keydata= mDMEXuITWBYJKwYBBAHaRw8BAQdA8BErN00vl2NT0RWc/qKcc6+cSRHsjxZJKH9rRgm6Y560 IkRhdmlkIEtyZXR6bWVyIDxkYXZpZC5rQHBvc3Rlby5kZT6IlgQTFggAPhYhBNuHde3bSkva boddKxoZyYqxq9GPBQJe4hNYAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ EBoZyYqxq9GPzqsA+wezUjLzYelzAG+R7UYW2h75QjHiF0cOWIZhtB/75yv7AQCMJlG9A10z nseh1YZLfxlCFs5mL8RAs02aLa6eZeRqD7g4BF7iE1gSCisGAQQBl1UBBQEBB0AHkehri1oO 6TnTsRvVLqX7MsLgiGO18LIdIgi7aIWONwMBCAeIfgQYFggAJhYhBNuHde3bSkvaboddKxoZ yYqxq9GPBQJe4hNYAhsMBQkJZgGAAAoJEBoZyYqxq9GPB5UBAJQsWfPlG5wU3DeHcSJdkT7a xKmhwMNnX+CDa6d/rQDkAQDEeVARRjzEUDD7E7ip0y2VelwRBm3kXM4IlJPQOHRjDw== Message-ID: <5d7f2c00-9fa6-f74e-6e58-394d6a3439bd at posteo.de> Date: Tue, 17 Nov 2020 20:56:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <10A357BC-1E8E-4915-A2EA-407C3C67E5F7 at uibk.ac.at> Content-Type: text/plain; charset=utf-8 Content-Language: de-LU Content-Transfer-Encoding: 8bit X-debug-header: local_aliases has suffix Cc: isabelle-users Subject: Re: [isabelle] Code generation for non-terminating functions X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Nov 2020 19:56:45 -0000 Dear René, thank you very much! I especially like the typedef-approach, as it allows one to nicely specify the preconditions directly in the type, which are then available to all users of that type. This is pretty much exactly what I was looking for. Best regards, David On 17.11.20 19:46, Thiemann, René wrote: > Dear David, > > I know at least two possibilities: > > (* potential solution via typedef: specify separate type for domain of function *) > > typedef fun_input = "{n :: int. n ≥ 0}" by auto > > setup_lifting type_definition_fun_input > > lift_definition num :: "fun_input ⇒ int" is "λ x. x" . > > lift_definition sub1 :: "fun_input ⇒ fun_input” > is "λ x. if x = 0 then 0 else x - 1" > by auto > > function factorial :: "fun_input ⇒ int" where > "factorial n = (if num n = 0 then 1 else num n * factorial (sub1 n))" > by pat_completeness auto > > termination by (relation "measure (λ n. nat (num n))", auto; transfer, auto) > > lift_definition create_input :: "int ⇒ fun_input" is > "λ n. if n ≥ 0 then n else 0" by auto > > definition factorial_safe :: "int ⇒ int option" where > "factorial_safe n = (if n ≥ 0 then Some (factorial (create_input n)) else None)” > > (* during runtime you don’t execute the invariant “n >= 0” in every iteration, > but you repeat the abort-condition in the sub1 function *) > > export_code factorial_safe in Haskell > > (* or use partial_function and put everything into option-type *) > > lemma map_option_mono [partial_function_mono]: > shows "mono_option (λf. map_option X (f y))" > by (smt flat_ord_def fun_ord_def map_option_is_None monotoneI) > > partial_function (option) fact_option :: "int ⇒ int option" where > [code]: "fact_option n = (if n = 0 then Some 1 else map_option ((*) n) (fact_option (n - 1)))" > > export_code fact_option in Haskell > > I hope this helps, > René > >> Am 17.11.2020 um 19:12 schrieb David Kretzmer : >> >> Dear all, >> >> is it possible to generate code for a potentially non-terminating >> function `f :: A => B` if I ensure that whenever I actually call `f a`, >> then `f_dom a`? >> >> I sometimes have functions that are non-terminating in general but that >> are only actually called with "safe" arguments. However, since I have to >> prove termination in order for code generation to work (at least as far >> as I know), I have to augment the function with additional checks that >> ensure termination. This feels unsatisfactory, since I could >> theoretically prove that these checks are never exercised during execution. >> >> A silly example: >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> (* Does not terminate for n < 0 *) >> function(domintros) factorial :: "int ⇒ int" where >> "factorial n = (if n = 0 then 1 else n * (factorial (n-1)))" >> by pat_completeness auto >> >> lemma factorial_termination: "n ≥ 0 ⟹ factorial_dom n" >> by (metis add.commute add_diff_cancel_left' factorial.domintros >> int_ge_induct) >> >> (* A safe (i.e., terminating) wrapper around `factorial` *) >> fun factorial_safe :: "int ⇒ int option" where >> "factorial_safe n = (if n ≥ 0 then Some (factorial n) else None)" >> >> (* Does not work because there are no code equations for `factorial` *) >> export_code factorial_safe in SML >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> Here, `factorial_safe` checks the preconditions of `factorial` and only >> actually makes the call if it is guaranteed to terminate. Unfortunately, >> code generation for `factorial_safe` fails because there are no code >> equations for `factorial`. >> >> Best regards, >> David >> > From mikhail.chekhov.w at gmail.com Wed Nov 18 00:08:46 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:58732) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfB1i-0004KV-1J (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 18 Nov 2020 00:08:46 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883468 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.173 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.173 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [mikhail.chekhov.w[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-il1-f173.google.com ([209.85.166.173]:42458) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kfB1h-000UWF-Kc (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 18 Nov 2020 00:08:46 +0000 Received: by mail-il1-f173.google.com with SMTP id g15so325825ilc.9 for ; Tue, 17 Nov 2020 16:08:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=oq96rwSO4t1rXh1lHt3/tl/2yQO50aDLJYq2Se3akmM=; b=Dx8azleKyhmdfQSAndaCnM2WxSYw34el6z7zjj1dCcxlqLOoETvZSiH6LFOCbKkA1y JQpfh9bxuT9iRxo9eQVEbzL8/e6ZKfuZFI/oGuZ+V4XPXx31P+iAYecTAtEQ4SH+gqzb OToMknmBv3VUjce64qlFHlZKBab7JK/JQ30y7/48dJPTI1IR/Lsn+ZOIJ9i7LnenJeoO L0/YE3CBFM+rlhEMozU5LG2ROJ5B1oIwxhwGjlQTl1c4jtPwEou0MywLYb9Ot4QE9Hxh D6lkeZKEy0D22IjiZGICMU6qr/OzWHlhXdA8y21gQLlAOG0fmmyLDbpv82AHfM1sq9uA lE6Q== X-Gm-Message-State: AOAM533rCT+1TvUR9TmsF+96foLxXBQ582UddKXATAymFC65PFFBvwVP D+vVfTBTD6v0H/iQec7dRvDRxy52tDRZ41KLGxwCgvWBNYA= X-Google-Smtp-Source: ABdhPJw+Xkdb1DwUd+V1mma+ZuyIXkdWk2AFpgmgwKRoLo832kHEuRpFRYOv1eUCKUu81Srj2s4pcjGbI4AZVpYzC3A= X-Received: by 2002:a92:1599:: with SMTP id 25mr14533846ilv.271.1605658124181; Tue, 17 Nov 2020 16:08:44 -0800 (PST) MIME-Version: 1.0 From: Mikhail Chekhov Date: Wed, 18 Nov 2020 02:08:32 +0200 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Local varification/unvarification in Isabelle/ML? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2020 00:08:46 -0000 Dear All, I would like to understand if there exist Isabelle/ML functions for local varification/unvarification of types/terms/theorems in any of the publicly available Isabelle libraries (of course, I would expect such functions to handle mixed schematic/fixed type/term variables in a type/term/theorem, and take into account the names in the context and the names that occur in the type/term/theorem that is being varified/unvarified). For example, consider the following problem: definition "test x =3D (SOME x. True)" context fixes x :: 'a begin definition "test_of_a =3D test x" ML=E2=80=B9 val thm =3D Thm.full_prop_of @{thm test_of_a_def} val out =3D try Logic.unvarify_global thm (*NONE*) val out' =3D try Logic.varify_global thm (*NONE*) =E2=80=BA end While it is not very difficult to develop this functionality, it seems like a good candidate for something already available. However, I was not able to find anything similar to the functionality that I seek after a reasonably thorough search of the Isabelle/ML source code. Of course, if anyone familiar with the Isabelle/ML source code is confident that the functionality that I seek is not available in the standard distribution, I would highly appreciate a confirmation. Kind Regards, Mikhail Chekhov From s1724780 at sms.ed.ac.uk Wed Nov 18 12:28:55 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:59154) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfMZz-0003HB-E1 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 18 Nov 2020 12:28:55 +0000 X-Cam-SpamDetails: score -2.5 from SpamAssassin-3.4.4-1883468 * -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, * medium trust * [129.215.17.202 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [129.215.17.202 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from seine.is.ed.ac.uk ([129.215.17.202]:46136) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfMZy-000D8G-M4 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Wed, 18 Nov 2020 12:28:55 +0000 Received: from exseed.ed.ac.uk (hbdkb3.is.ed.ac.uk [129.215.235.37]) by seine.is.ed.ac.uk (8.14.7/8.14.7) with ESMTP id 0AICSsm9001741 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 18 Nov 2020 12:28:54 GMT Received: from hbdkb3.is.ed.ac.uk (129.215.235.37) by hbdkb3.is.ed.ac.uk (129.215.235.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Wed, 18 Nov 2020 12:28:54 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (104.47.6.59) by hbdkb3.is.ed.ac.uk (129.215.235.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Wed, 18 Nov 2020 12:28:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iHFgsg60bA/7GQAbTmv8AKT5hVxwIVVHEOmGguSP0W7oN4ewT2bJC5UyJPkrTi2oeuumPwI9/nbef4K951tL8hMiEM0GpMs+kWzTQ5LNEvQ0sJ5+5uSgQ5+1OG0VcWXha9oWfgEej/0eu40INONWHAzTrDbHaIIMO8ys4cXXp0eka3ot9io2Zu/QyR5aJKHoiQrFVKnsgVJTmltPeVi4pA03duOGLLP74UdBFvLCDfBc0/CSS2WdEvvWCjxKHz/W60XzN32onnofBFxte155zZpD+QCX55Eg+XU6VVoxrkHGjEUILCH3DBxlO8fF7M3S5zbSmDCMtNBCofmssadPcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EBdtOAVpC6aY4E5Nh0kkniEsGYHluy5obggEIGoUAMM=; b=AwVfpAxsvhsgNwUsb9hwx13GGIMh191vX3hdlFVzpgGKjahM2jlIxRHgOA1RXnSqqJzKm8I06/hm50Bf2mJql7U5OfBSRFCxyqoULFkSVdMhc10lo7T9YO7tVwJroEQzTnKFTd7JLvaYiu2DensjJH6bgvdzIrPrVnYSpRJVUMkTJ2D5Bu9vQeZD27m2VuC+/3pRcCTn5UiREeEJKW0u5MhhW+PX+Waks6+TmgVkQWdy+jwHJii7X1eY8OuaXngShp+GDACndtAzjvHM5szzz33HygGvF3gAtFMmnUhpe2bALQhOOD0xJwDr+xAgILitAD6vMwyYryCmDxeKC/Fo5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sms.ed.ac.uk; dmarc=pass action=none header.from=sms.ed.ac.uk; dkim=pass header.d=sms.ed.ac.uk; arc=none Received: from AM5PR0502MB2899.eurprd05.prod.outlook.com (2603:10a6:203:9e::17) by AM6PR05MB6453.eurprd05.prod.outlook.com (2603:10a6:20b:b7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3564.28; Wed, 18 Nov 2020 12:28:53 +0000 Received: from AM5PR0502MB2899.eurprd05.prod.outlook.com ([fe80::7c5b:5642:2680:e4aa]) by AM5PR0502MB2899.eurprd05.prod.outlook.com ([fe80::7c5b:5642:2680:e4aa%8]) with mapi id 15.20.3564.028; Wed, 18 Nov 2020 12:28:53 +0000 From: MACKENZIE Carlin To: "cl-isabelle-users at lists.cam.ac.uk" Thread-Topic: Manually using a SideKick parser Thread-Index: AQHWvaZChN84bmHeEE2fARzz2yLaLw== Date: Wed, 18 Nov 2020 12:28:53 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.cam.ac.uk; dkim=none (message not signed) header.d=none;lists.cam.ac.uk; dmarc=none action=none header.from=sms.ed.ac.uk; x-originating-ip: [77.103.18.92] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 638da08c-9132-49b4-33ab-08d88bbd82eb x-ms-traffictypediagnostic: AM6PR05MB6453: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xRuyVL2OPuA8dKguOpv/z0bycCfuJ8T67c6uMwbcEkJJTPJN8vrpTs/A2CSvdpStECwTrY96u16Od1pBp+dyCo6XHvdcEjFfgjbP4+n6z0ialNBXBSzTO8VDLAWqw9sXN+4sYSOvn2bT7KROScj7AaMQ68mn0RQNiZTP3Mku0W9hQIecHA7OOpWzG/HQr6ytgaubyb//o2vt5x1hQlcO3U8HPLJ9DbT7lXot9gXKvvAq6BP14D+5l8KYnX8XIi6NcDgrMyBtczYwMOkUU2fyvf3PZ8XZOhg7Cm7SJqOIFyJsSEfiwLCCkusntJhjNWfkyRUtRIX4y5/OEXfNpVH1ww== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM5PR0502MB2899.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(376002)(346002)(39860400002)(136003)(366004)(396003)(478600001)(2906002)(6916009)(19627405001)(9686003)(55016002)(76116006)(186003)(91956017)(83380400001)(5660300002)(786003)(26005)(6506007)(7696005)(8676002)(316002)(71200400001)(4744005)(52536014)(66476007)(66946007)(33656002)(66556008)(86362001)(8936002)(64756008)(66446008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: rGSGGzwk13Sc/zcwF8nwpBTElQ8sM5RpbsLW7aI+sDl+cTn8t0BDVVmEZ4UCTDchDBKkrpsfeswBHSdvefgtg+Q4JNkwWp7t41dVTgtcv9Ib3QaBhr3D2ah8MBhuVHc6tqYVEkt+qcnQfBT51re2zL/lu9t2F62RkExDUiHatt/g68sDTuzyoj5uJurb8QDV2RFlec9kR938aZJEMMJxCu8+bAKn4GlL9w7ezjCqP7K5NyNKpV/Jn1PCXnXoj1Lc/pR6SkmfO5dlC6+ozqc5n45C/ErO7tJfziZzfRB67BF+wjectK/LapevUFk5rGVJqRZgEA33Vklyigs7R/5knRmZVDc3J6uiOtxsfT4YAIospnHljcFVmA+5oG0mJhmIveb9saXbJCVGzKRFTUqdySZdYdtcMzL5ZVXBub6sBwuUHxEE7luYKWjesl3hpa7s+BjHvA+rfdCUFTE3C7HrvfNqJmHQb4x0Mn+hLqSAhkh2cj7n1l6tM79c7bpqM+wXEEXgNzdaCuPMDSVF/uzHcUgzsZkOn1rsBZTM6kbF1Xj94QbQ+boLtbzA6djpK0RGcc+VRcWK/eDr81dszy44p08m8rMJjONHfVVsu6RTe9QzYMyVnP4XU8dXh7+n/XimpU5qSU72om3Ns25xMZIr5nEHIUpBJd6CkVbsyJ+OaolW+hrIT3FXALBcE7ov7mW2njVUfW4Bams+x2xP06Ov0GYjMHxcs1qDiaMFCa3KqSRGR3JRZo+1YhJegKzQNloiIV76yEyfZrhdkf622iOS0+GDzny9shJ0HT/fR+SNZiYI3rWWckNTeM1DloTUmDcJlMxpnfSPyX6Fc+Y69pt2qjJf8CtKd2vwuvsoFI+Q8wbGhZvKha7amk9JrhIyiBbCAVYNK8Osm4/23Jy0fq+5Bw== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM5PR0502MB2899.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 638da08c-9132-49b4-33ab-08d88bbd82eb X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Nov 2020 12:28:53.3477 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2e9f06b0-1669-4589-8789-10a06934dc61 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8fvlQixCbgj/Fo24DPlKUImEQyUylY/+8fGYhjrG/VfpxNJlOW74mxcX64AhQ/k5oq1up12XxxMGi0neDMQ/QA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6453 X-OriginatorOrg: sms.ed.ac.uk X-Edinburgh-Scanned: at seine.is.ed.ac.uk Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Manually using a SideKick parser X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2020 12:28:55 -0000 Dear all, I would like to run a parser, say "isabelle-context", from isabelle_sidekic= k.scala on a theory file and examine the output. Could someone advise on ho= w to do this? I'm not sure where to look for an example call in the code Thank you, Carlin MacKenzie The University of Edinburgh The University of Edinburgh is a charitable body, registered in Scotland, w= ith registration number SC005336. From isabelle-users at starkeffect.com Thu Nov 19 00:49:29 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:38820) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfY8f-0005kD-Qf (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 00:49:29 +0000 X-Cam-SpamDetails: score -0.1 from SpamAssassin-3.4.4-1883468 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from cloud2.starkeffect.com ([45.55.83.152]:47292) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtp id 1kfY8f-000BpG-QU (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 00:49:29 +0000 Received: from home.starkeffect.com (localhost [127.0.0.1]) by cloud2.starkeffect.com (Postfix) with ESMTPS id D036D3F2F5; Thu, 19 Nov 2020 00:49:26 +0000 (UTC) To: "cl-isabelle-users at lists.cam.ac.uk" From: "Eugene W. Stark" Message-ID: <48610e0f-012e-10af-8ad8-0cb916b47a8d at starkeffect.com> Date: Wed, 18 Nov 2020 19:49:26 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: [isabelle] Question about "try" and future tasks X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list Reply-To: stark at cs.stonybrook.edu List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 00:49:29 -0000 I have been using a relatively recent snapshot version of Isabelle (Isabelle_04-Nov-2020). This version does a rather better job of showing what is going on if the Monitor panel is raised. That is good. My question is: In certain situations, if I use "try" and let it crunch for awhile, I can arrive at a situation where there are perhaps 180K future tasks showing in the Monitor window. I can sometimes then delete the "try" from the input buffer, but the future tasks remain and may take many minutes to clear. My question is: once I have deleted the "try" from the input buffer, why are the existing future tasks still relevant? Why do they not get canceled somehow, so that they don't spam the interactive session for an unknown period of time? Please bear in mind that I don't have any idea about the technical aspects of the implementation. It just strikes me that there is little point in having to wait many minutes to clear a queue of future tasks that were started by a buffer input that has since been deleted. From makarius at sketis.net Thu Nov 19 11:47:05 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:59052) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfiP3-0004ZE-Op (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 11:47:05 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883590 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [194.59.206.189 listed in list.dnswl.dnsbl.ja.net] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([194.59.206.189]:44339) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfiP2-000Xca-Li (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 11:47:05 +0000 Received: from relay02-mors.netcup.net (localhost [127.0.0.1]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CcHw73dDhz40FC; Thu, 19 Nov 2020 12:47:03 +0100 (CET) Received: from policy02-mors.netcup.net (unknown [46.38.225.53]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CcHw73Fl2z7xt6; Thu, 19 Nov 2020 12:47:03 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy02-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy02-mors.netcup.net (Postfix) with ESMTPS id 4CcHw63FcJz8ssd; Thu, 19 Nov 2020 12:47:02 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-227.dynamic.mnet-online.de [62.216.204.227]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 6C78BA32EF; Thu, 19 Nov 2020 12:47:01 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.227) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: MACKENZIE Carlin , "cl-isabelle-users at lists.cam.ac.uk" References: From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <7897ee15-0e07-ac1b-f347-13a6cf1c2b48 at sketis.net> Date: Thu, 19 Nov 2020 12:47:00 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <160578642175.7288.18203841121640204163 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: csOe5Nc43kaaKH5v+RVvMW2pMD7VhpA55BnpUqk+9znNcDA= Subject: Re: [isabelle] Manually using a SideKick parser X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 11:47:05 -0000 On 18/11/2020 13:28, MACKENZIE Carlin wrote: > > I would like to run a parser, say "isabelle-context", from isabelle_sidekick.scala on a theory file and examine the output. Could someone advise on how to do this? I'm not sure where to look for an example call in the code What do you mean by "examine the output"? Should the Prover IDE show it to the user, or a Scala program of yours work with it? If you just want to experiment with Isabelle/Scala snippets, you can do it in the jEdit plugin "Console", sub-plugin "Scala": it is a REPL of the Scala interpreter running on the JVM of Isabelle/jEdit with access to the name space of the running application. Here is an example derived from the Sidekick parser for "isabelle-context" https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Tools/jEdit/src/isabelle_sidekick.scala#l153 --- it assumes that the active editor buffer shows a proper theory, e.g. src/HOL/ex/Seq.thy from the Documentation panel: scala> val buffer = view.getBuffer buffer: org.gjt.sp.jedit.Buffer = Seq.thy ($ISABELLE_HOME/src/HOL/ex/) scala> val name = PIDE.resources.theory_node_name(buffer).get name: isabelle.Document.Node.Name = HOL-ex.Seq scala> val syntax = Isabelle.buffer_syntax(buffer).get syntax: isabelle.Outer_Syntax = keywords ... scala> val structure = Document_Structure.parse_blocks(syntax, name, buffer.getText(0, buffer.getLength)) structure: List[isabelle.Document_Structure.Document] = List(Atom(60), Atom(26), Atom(2), Block(theory,theory Seq ... This assumes a basic understanding of concepts defined in Isabelle/Scala/jEdit. To help with that, you can explore the whole project with the static semantics in IntelliJ IDEA: see also the "system" manual section 5.5. about "isabelle scala_project". Makarius From makarius at sketis.net Thu Nov 19 13:55:05 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:45588) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfkOv-0003Sp-JK (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 13:55:05 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883590 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [194.59.206.189 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta0.cl.cam.ac.uk ([128.232.25.20]:45387) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfkOu-000r3y-S9 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 13:55:05 +0000 Received: from ppsw-41.csi.cam.ac.uk ([2001:630:212:8::e:f41]) by mta0.cl.cam.ac.uk with esmtp (Exim 4.93) (envelope-from ) id 1kfkOu-000Fw7-BT for isabelle-users at cl.cam.ac.uk; Thu, 19 Nov 2020 13:55:04 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883590 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [194.59.206.189 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([194.59.206.189]:36613) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfkOt-000r2w-QX (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Thu, 19 Nov 2020 13:55:04 +0000 Received: from relay02-mors.netcup.net (localhost [127.0.0.1]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CcLln5HF8z40gZ; Thu, 19 Nov 2020 14:55:01 +0100 (CET) Received: from policy01-mors.netcup.net (unknown [46.38.225.53]) by relay02-mors.netcup.net (Postfix) with ESMTPS id 4CcLln4tw9z7xt6; Thu, 19 Nov 2020 14:55:01 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy01-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy01-mors.netcup.net (Postfix) with ESMTPS id 4CcLlm5xqSz8shb; Thu, 19 Nov 2020 14:55:00 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-227.dynamic.mnet-online.de [62.216.204.227]) by mx2f26.netcup.net (Postfix) with ESMTPSA id DD697A116A; Thu, 19 Nov 2020 14:54:59 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.227) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: Jason Gross , isabelle-users at cl.cam.ac.uk References: From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <2c859a4a-41bb-25e8-e030-0668d2bf8977 at sketis.net> Date: Thu, 19 Nov 2020 14:54:59 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6FF2217A24253A44712D01BB" Content-Language: en-US X-PPP-Message-ID: <160579410015.17031.17087901991009499088 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: Xm1vDq/httwN79GRrfjXQf6u3E2FmPaFZ7mNRYnbzV30joA= X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Counting lines of code/definition vs proof? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 13:55:05 -0000 This is a multi-part message in MIME format. --------------6FF2217A24253A44712D01BB Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 14/11/2020 05:10, Jason Gross wrote: > > Is there a tool that can tell me how many lines in a .thy file are > whitespace/comments vs definitions vs proofs? (I'm looking for something > analogous to coqwc.) I would say that classic existence holds: people surely have their own tools for particular projects, without making it explicit. The general approach is to use Isabelle/Scala for such "systems programming" around Isabelle. This gives proper access to the structure of sessions, theories, commands within theories etc. including the all-important "outer syntax". (Note that Isabelle syntax can be augmented locally, e.g. Isabelle/ZF has slightly different commands s different Isabelle/HOL, or applications can add their own commands on the spot.) To demonstrate this in practice, I've put together such a tool on the spot, as external Isabelle/Scala script wc.scala in the sense of the Isabelle "system" manual, section 1.2. To activate that, you can put it e.g. into $ISABELLE_HOME_USER/Tools/wc.scala and register the enclosing directory in $ISABELLE_HOME_USER/etc/settings like this: ISABELLE_TOOLS="$ISABELLE_TOOLS:$ISABELLE_HOME_USER/Tools" (The location of $ISABELLE_HOME_USER is platform-specific, but you can open that symbolic name literally in Isabelle/jEdit directory browser, or you use "Isabelle2020/bin/isabelle getenv ISABELLE_HOME_USER" on the command line.) Here are some example invocations: Isabelle2020/bin/isabelle wc -D '~~/src/FOL' Isabelle2020/bin/isabelle wc -a Isabelle2020/bin/isabelle wc -d afp-2020/thys -a (The latter requires a clone/download of https://foss.heptapod.net/isa-afp/afp-2020 ) If you want to understand Isabelle/Scala concepts and modules, you can use "isabelle scala_project" together with IntelliJ IDEA and Gradle, as explained in the "system" manual, section 5.5. If you want to make a statically compiled Isabelle/Scala addon-tool, it is better to wait a few weeks until the release process for Isabelle2021 starts: that will provide official interfaces to add Scala jar modules in user space. The actual counting of things within a theory node is a different question: the structure is quite complex, this is not "program code" with comments as in the 1970ies. There are first-class document commands like 'text', 'section', 'chapter', as well as embedded formal and informal comments. In my example implementation, I've merely explored "command spans" in the sense of good-old (and retired) Proof General. An alternative is to look e.g. into https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Isar/document_structure.scala Or you can be more ambitious and inspect theory content after formal processing by the Isabelle/ML prover process. The "isabelle dump" tool is an example for that, without doing anything in particular, see https://isabelle.sketis.net/repos/isabelle/file/Isabelle2020/src/Pure/Tools/dump.scala Makarius --------------6FF2217A24253A44712D01BB Content-Type: text/x-scala; charset=UTF-8; name="wc.scala" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="wc.scala" // DESCRIPTION: explore Isabelle sessions and theory sources object Tool extends isabelle.Isabelle_Tool.Body { import isabelle._ def wc_theory( name: Document.Node.Name, syntax: Outer_Syntax, progress: Progress =3D new Progress) { val spans =3D syntax.parse_spans(File.read(name.path)) val spans_theory =3D spans.count(_.is_kind(syntax.keywords, Keyword.t= heory, false)) val spans_proof =3D spans.count(_.is_kind(syntax.keywords, Keyword.pr= oof, false)) val spans_document =3D spans.count(_.is_kind(syntax.keywords, Keyword= =2Edocument, false)) progress.echo( " theory " + name.theory + " command spans: " + spans.length + " total, " + spans_theory + " theory, " + spans_proof + " proof, " + spans_document + " document") } def wc_sessions( options: Options, dirs: List[Path] =3D Nil, select_dirs: List[Path] =3D Nil, selection: Sessions.Selection =3D Sessions.Selection.empty, progress: Progress =3D new Progress) { val deps =3D Sessions.deps( Sessions.load_structure(options, dirs =3D dirs, select_dirs =3D s= elect_dirs).selection(selection), progress =3D progress) for (session <- deps.sessions_structure.imports_selection(selection))= { val session_base =3D deps(session) progress.echo("session " + session) for { (name, _) <- session_base.used_theories if session_base.theory_qualifier(name) =3D=3D session syntax <- session_base.loaded_theory_syntax(name) } wc_theory(name, syntax, progress =3D progress) } } def apply(args: List[String]) { var dirs: List[Path] =3D Nil var all_sessions =3D false var select_dirs: List[Path] =3D Nil val getopts =3D Getopts(""" Usage: isabelle wc [OPTIONS] Options are: -D DIR include session directory and select its sessions -a select all sessions -d DIR include session directory Explore Isabelle sessions from given project directories, and print some statistics about theory sources. """, "D:" -> (arg =3D> select_dirs =3D select_dirs ::: List(Path.explode= (arg))), "a" -> (_ =3D> all_sessions =3D true), "d:" -> (arg =3D> dirs =3D dirs ::: List(Path.explode(arg)))) val more_args =3D getopts(args) if (more_args.nonEmpty) getopts.usage() val options =3D Options.init() val selection =3D if (all_sessions) Sessions.Selection.all else Sessi= ons.Selection.empty val progress =3D new Console_Progress() wc_sessions(options, dirs =3D dirs, select_dirs =3D select_dirs, sele= ction =3D selection, progress =3D progress) } } --------------6FF2217A24253A44712D01BB-- From lp15 at cam.ac.uk Thu Nov 19 16:31:16 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:40088) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfmq4-0005qy-51 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:31:16 +0000 X-Cam-SpamDetails: score 0.6 from SpamAssassin-3.4.4-1883590 * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 HTML_IMAGE_RATIO_02 BODY: HTML has a low ratio of text to image * area * 0.0 HTML_MESSAGE BODY: HTML included in message * 1.7 HTML_IMAGE_ONLY_08 BODY: HTML: images with 400-800 bytes of words X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:36789) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kfmq3-000xEX-df (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:31:16 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kfmq3-0007Zy-7g for isabelle-users at cl.cam.ac.uk; Thu, 19 Nov 2020 16:31:15 +0000 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from palladium.mac.cl.cam.ac.uk ([128.232.56.51]:52245) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:587) with esmtpsa (PLAIN:lp15) (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfmq3-000FpK-Jq (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:31:15 +0000 From: Lawrence Paulson Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Message-Id: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> Date: Thu, 19 Nov 2020 16:31:14 +0000 To: isabelle-users X-Mailer: Apple Mail (2.3608.120.23.2.4) X-debug-header: local_aliases has suffix Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.8 Subject: [isabelle] Another Issue with Isabelle/jEdit with macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 16:31:16 -0000 A minor issue with Big Sur (both the 2020 and development versions) is = as seen in the screenshot below. Highlighted buttons, which ought to = appear in a reverse video style, are instead barely legible. Larry From makarius at sketis.net Thu Nov 19 16:39:52 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:45200) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfmyO-0006c0-Ep (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:39:52 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883590 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.162 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta0.cl.cam.ac.uk ([128.232.25.20]:57319) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfmyN-000zWl-RQ (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:39:52 +0000 Received: from ppsw-40.csi.cam.ac.uk ([131.111.8.140]) by mta0.cl.cam.ac.uk with esmtp (Exim 4.93) (envelope-from ) id 1kfmyM-000Ho4-W2 for isabelle-users at cl.cam.ac.uk; Thu, 19 Nov 2020 16:39:51 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883590 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [188.68.63.162 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([188.68.63.162]:50835) by ppsw-40.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.148]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfmyM-000f6g-k7 (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:39:50 +0000 Received: from mors-relay-8201.netcup.net (localhost [127.0.0.1]) by mors-relay-8201.netcup.net (Postfix) with ESMTPS id 4CcQPx3MQ3z4Cm1; Thu, 19 Nov 2020 17:39:49 +0100 (CET) Received: from policy01-mors.netcup.net (unknown [46.38.225.53]) by mors-relay-8201.netcup.net (Postfix) with ESMTPS id 4CcQPx2yXvz4Cb5; Thu, 19 Nov 2020 17:39:49 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy01-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.901 X-Spam-Level: X-Spam-Status: No, score=-2.901 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy01-mors.netcup.net (Postfix) with ESMTPS id 4CcQPw66Wdz8tGG; Thu, 19 Nov 2020 17:39:48 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-227.dynamic.mnet-online.de [62.216.204.227]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 07FC5AB498; Thu, 19 Nov 2020 17:39:47 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.227) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: Lawrence Paulson , isabelle-users References: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= mQINBFcrF+4BEADMcXMnu3XHg6bRsGe3tajAHqvm89+ecn/Y0WhjI2FplhkZs1LwM+ZA9eXh hiBrC/yX0FJ+qjzVIfm66CX4nzVG1f8qwaervMpvpA+gbhtQiXc0t+LDcqV+5cdtpKplPHSu oW+KzJKyCdkDB5fYMOzuaXQwYi12YAEQH2r6K7Q7Np+k82Xli1pWe+Tha/BH0pKJ5Q01aPep ASrNW9F+moX7C0fxWl65LiXGmF0UJep6fqKruhy8oNF4p6I2oZhktvaR/x6tkL2PkT3r+xUS 6g5i3BOjfwhoGY57nsioeK+8VFvdRH5DK4CbrTgDl7ddcrEeENrfpDiPLs/afVbe/T9oDXmJ OJAO4WMpfZNiFhx9SSVTHohw29Fyzn0N1UQGjPqAY1jg32DAxlnMQ0co/KabEFAcoQsW1/6U ZGiNxYVIyEKGrnSY4WuLuNC8CmU1RaYSdTk1y9tYdxufM9lH9ynzJwac6FdalOOxMR2G9JG8 L9/dk3ytlP6DVwkPBSCpJaTkTyMp1wSkF1oK/BDu5xKUQh0zvvLCuZ16hiKRBBSjpVExXRZC u+NC1Y4wqm1HOH7HBwgZ1Hv9S/EPmI9iwgcW0SpDJqPf2Cm7oFMZsZ5Dbs6/nOQoe4Zegy45 ymqDRlIekP7zj+vOoR80XAYfmAH5DElJHldcjmgLBMdpvvqGZwARAQABtB5NYWthcml1cyA8 bWFrYXJpdXNAc2tldGlzLm5ldD6JAj0EEwEIACcFAlcrF+4CGyMFCQlmAYAFCwkIBwIGFQgJ CgsCBBYCAwECHgECF4AACgkQ89KUEoG/TbiVrw/9FjEBgh2CB7Qof7Y4k0yc7j+x/A0Wmkc0 iwP5jaKJuxRv1JJT8CFqm392+/cdh3EkRUk/UWD+hpNndYJwxZltrEpKVqFAWoVOg3ZJ4cuI MYhlp4tk/T0KSl/gKT16dc6uJ7M/FzW0zv50vjFtAdianEDuqLXHKaGDUwWoOTDly0gdZ7aH /eNby6ONHUSJMdTNOErh2N+uESM4aZqUuuL/dTb6xiVzCpV5saT8EMakoazUd7QhoBaHvqfs BL7DEmvcTtA79GF3ufHrF/UndIcx8aMznZ2PGNjmy5seDCoKX0EYHdLam8vgo/TuU4dRw5Zn 6E/ouyNOliXT1Mn+SomeBSXTR5MXRq4TQ9MKVGiP0Yl+7GJQU0JFtDC1ZZEOyjIiwGWOhbUR pYujVm8C1iQ7NcEn2BqOAmRML6IR6+En4RLbgCNsBNXlmTPRJOaI+iV6DZzg3x9zcaDGhoYt jkBTEFpb0F3jU9yuaEU5401NV34fUxg8tqXs0R9CKinO7kQ8N+RDjyyY8k2KZiDYBJ6r+OK0 d7TaTj7F9tmpAu2pmQ8lxOKjDZIwlbGTsC4lxISmcPzBGTKXja5nakcWYx/lZ4vje0WZ12HN amnD1weakFixRYit0d+Kz7cuj684NSbhwC0oN2t9R06Nfq8UPEWRKEitCly0OtRgio8zVZ/L eAC5Ag0EVysX7gEQAKs5NVOvYkE/r8KLsJ8/L/9eulpJDOFilZ9fyuqii7t1UpHZLb58QghW JM+IB2GSGsB+pOi6Je7hmwxcVdXYbGlYZ4Btqqw48/XptfbNZ8alCk6AqoVFP4MbYxij/Qqv f/Yw6GR0p1RIC/W4GF/JgDDwDFEiMT6Pv6dpM8acdNFCERDZdoOJiC+XJRwy5lZ2g5FOJkT9 rVI9EnA7mBXLLjPOMUp2/eZxN6gKOZzI3ej9vixg3adWR2yfKPgacHP/ujnVfITOl0OyLE5f zIHq85dEV4zW6Mpx7+Um0tdkwlUVMaW2nQ1bcwejgVAuD/MLSF/lSs3N5D1ctw5QUemYh7/e 2dC12UJuFDFxNPzcltQTlkBCVWV1D0SjScDHdlF6HhzpZOlt52/rwTn5GHtY4nwAL4IJ+Yvl WX8YKmyILH4Ai8c/N2IVRERQ2qorWFlsQnqrXV+hXf8aUwjc/pq4K9rsWxvle3TpeZfoBefU /s1PEX0SepZFAqAXHlQ9DZPsdPDo9EFK695G5w4nf03EhE9TV1MKGUuc1XJ6f1ZLaxu0TwTA 6qYtKIyBcU0Yn61S2Kh7Dgb5LdLV8nfl71+n/xIt2IWH5UJ9YuwEgGEP0c6ImnAUZ+nRodFI 0RwtCWlRkSJWtQln1vcphrz8PjWZH6e/nWnceXR/Al5P0WexQgtvABEBAAGJAiUEGAEIAA8F AlcrF+4CGwwFCQlmAYAACgkQ89KUEoG/Tbh7VQ/9Fc4bdwJYc3jH/LiuXv6uMg50Cv6lg2NT bL9DClWGNiYzejfM2A4c5K+GRUXhyD7S9U203MOv3z7uTbtyQL8XVolNnQlRIkB00f8nJ2sw HMXx/hemjXBvtlneq+vrMORJexldXUMFq19ZZrvj0zZL+pUnGFqt+IWTEE5GpL7wu20Demaj jYyGyKcDZyJOWZcl4e45Yn3hl0EI2xVmVh7ZinVsb3+nqgcltFy4Jt+drezwV2EiLGJHfGsT jEQb3C9VpneU4Jo+hHtfqLK4Q8+WlIOzSfyvwbabxrhyqg7i11fu8yckNW3dCURPYigV07HK 4dN0zhj53M0Q3eTwegJRPJb8XoLDcSdbsaU2HIShlGDKmzS9KL4JzLikQ9dXROC4cae3jRKH aexFi4B55Ab6FxIfXj09wUCO6Nm0owDfIBDMgiywvi2Rb2etCjBgRbSj71S2nntd9ZitoYvE yKirLkWmJRbp3ln8cHi8Uc/jr1cDPVRWuLUN0uceMj5+AR+NZVakcNUHWJCinMMjacho0SyP QmocdU8pzzupreaVWruqaSzqcpWBPwrE5OxEtJ+OyIBjKmRJ5eptjh4rKgNaVnKjhqbvr+Yz pUAgPp38jjf4HJghUGIfWArKNelKJEJOYk94DAbmT67LgqEdZ0yaA2BCHmreN727WIzV9vkX NMc= Message-ID: Date: Thu, 19 Nov 2020 17:39:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-PPP-Message-ID: <160580398836.12907.7043873630995535772 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: wDKHKeG7/StuHp5RGz/njtiN6VVhjj0a6f3YT+fsoMISquY= X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Another Issue with Isabelle/jEdit with macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 16:39:52 -0000 On 19/11/2020 17:31, Lawrence Paulson wrote: > A minor issue with Big Sur (both the 2020 and development versions) is as seen in the screenshot below. Highlighted buttons, which ought to appear in a reverse video style, are instead barely legible. I don't see the screenshot. Makarius From lp15 at cam.ac.uk Thu Nov 19 16:42:01 2020 Received: from ppsw-30.csi.cam.ac.uk ([131.111.8.130]:35592) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kfn0T-0006kA-0C (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:42:01 +0000 X-Cam-SpamDetails: score -1.1 from SpamAssassin-3.4.4-1883590 * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta2.cl.cam.ac.uk ([128.232.25.22]:39864) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kfn0S-0005D1-d5 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:42:00 +0000 Received: from ppsw-31.csi.cam.ac.uk ([2001:630:212:8::e:f31]) by mta2.cl.cam.ac.uk with esmtp (Exim 4.86_2) (envelope-from ) id 1kfn0S-0007rh-2A for isabelle-users at cl.cam.ac.uk; Thu, 19 Nov 2020 16:42:00 +0000 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from palladium.mac.cl.cam.ac.uk ([128.232.56.51]:52457) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:587) with esmtpsa (PLAIN:lp15) (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kfn0S-000OBi-JR (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Thu, 19 Nov 2020 16:42:00 +0000 From: Lawrence Paulson Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Date: Thu, 19 Nov 2020 16:41:59 +0000 References: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> To: isabelle-users In-Reply-To: Message-Id: <807FB958-229C-4C91-96AF-7082F3265695 at cam.ac.uk> X-Mailer: Apple Mail (2.3608.120.23.2.4) X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Another Issue with Isabelle/jEdit with macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Nov 2020 16:42:01 -0000 Looks like Mailman has stripped out the attachments. But here is a = dropbox link: https://www.dropbox.com/s/ck0qgj5id04x3i2/big%20sur%20issue.png?dl=3D0 Larry > On 19 Nov 2020, at 16:37, Fabian Huch wrote: >=20 > FYI you don't have a screenshot attached. >=20 >=20 > Fabian >=20 >> A minor issue with Big Sur (both the 2020 and development versions) = is as seen in the screenshot below. Highlighted buttons, which ought to = appear in a reverse video style, are instead barely legible. >>=20 >> Larry Larry From makarius at sketis.net Fri Nov 20 10:58:58 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:46076) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kg482-0005hG-3x (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 10:58:58 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883634 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [185.244.194.184 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta1.cl.cam.ac.uk ([128.232.0.57]:47193) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kg481-000kZ4-Rc (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 10:58:58 +0000 Received: from ppsw-30.csi.cam.ac.uk ([2001:630:212:8::e:f30]) by mta1.cl.cam.ac.uk with esmtp (Exim 4.90_1) (envelope-from ) id 1kg481-0005zt-9C for isabelle-users at cl.cam.ac.uk; Fri, 20 Nov 2020 10:58:57 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883634 * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [185.244.194.184 listed in list.dnswl.dnsbl.ja.net] * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.0 NICE_REPLY_A Looks like a legit reply (A) X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from relay.yourmailgateway.de ([185.244.194.184]:57169) by ppsw-30.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.146]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kg480-000uBE-dz (Exim 4.92.3) for isabelle-users at cl.cam.ac.uk (return-path ); Fri, 20 Nov 2020 10:58:57 +0000 Received: from relay01-mors.netcup.net (localhost [127.0.0.1]) by relay01-mors.netcup.net (Postfix) with ESMTPS id 4Cctp73GvWz8tRX; Fri, 20 Nov 2020 11:58:55 +0100 (CET) Received: from policy01-mors.netcup.net (unknown [46.38.225.53]) by relay01-mors.netcup.net (Postfix) with ESMTPS id 4Cctp72sGDz84YK; Fri, 20 Nov 2020 11:58:55 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at policy01-mors.netcup.net X-Spam-Flag: NO X-Spam-Score: -2.901 X-Spam-Level: X-Spam-Status: No, score=-2.901 required=6.31 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from mx2f26.netcup.net (unknown [10.243.12.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by policy01-mors.netcup.net (Postfix) with ESMTPS id 4Cctp66sZSz8sbN; Fri, 20 Nov 2020 11:58:54 +0100 (CET) Received: from [192.168.178.32] (aftr-62-216-204-145.dynamic.mnet-online.de [62.216.204.145]) by mx2f26.netcup.net (Postfix) with ESMTPSA id 17894A56D4; Fri, 20 Nov 2020 11:58:54 +0100 (CET) Authentication-Results: mx2f26; spf=pass (sender IP is 62.216.204.145) smtp.mailfrom=makarius at sketis.net smtp.helo=[192.168.178.32] Received-SPF: pass (mx2f26: connection is authenticated) To: Lawrence Paulson , isabelle-users References: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> From: Makarius Autocrypt: addr=makarius at sketis.net; prefer-encrypt=mutual; keydata= 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 NMc= Message-ID: <4583224e-9b2a-06e1-c37b-b1be2b9efaa0 at sketis.net> Date: Fri, 20 Nov 2020 11:58:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-PPP-Message-ID: <160586993430.10659.7303454140122095801 at mx2f26.netcup.net> X-PPP-Vhost: sketis.net X-NC-CID: uabb2E9z9rk5xF9ka11OqfDOxTjD2sZ/Y6npdvCXtQZ2zkg= X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Another Issue with Isabelle/jEdit with macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 10:58:58 -0000 On 19/11/2020 17:31, Lawrence Paulson wrote: > A minor issue with Big Sur (both the 2020 and development versions) is as seen in the screenshot below. Highlighted buttons, which ought to appear in a reverse video style, are instead barely legible. I have now spent some hours to install Big Sur on my feeble Mac mini: it generally looks a bit strange, but that is probably how it has to be. Concerning GUI rendering in Java Swing, I see many small things that still need to be done by the OpenJDK project: the situation is the same for stable Java 11 vs. latest Java 15 (both released in Oct-2020). The next OpenJDK release is scheduled for 19-Jan-2021: this is a few weeks before our planned release date mid-Feb-2021, so we can give that a try when it becomes available. Makarius From lp15 at cam.ac.uk Fri Nov 20 11:06:41 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:37770) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kg4FV-00067n-Uv (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 11:06:41 +0000 X-Cam-SpamDetails: score -1.1 from SpamAssassin-3.4.4-1883634 * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mta0.cl.cam.ac.uk ([128.232.25.20]:35575) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kg4FV-000tOT-RS (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 11:06:41 +0000 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]) by mta0.cl.cam.ac.uk with esmtp (Exim 4.93) (envelope-from ) id 1kg4FV-000Q9E-7v for isabelle-users at cl.cam.ac.uk; Fri, 20 Nov 2020 11:06:41 +0000 X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from lpaulson.plus.com ([81.174.248.240]:55392 helo=selenium.lan) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:25) with esmtpsa (PLAIN:lp15) (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1kg4FV-000dI6-Jx (Exim 4.92.3) (return-path ); Fri, 20 Nov 2020 11:06:41 +0000 From: Lawrence Paulson Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Date: Fri, 20 Nov 2020 11:06:40 +0000 References: <0FEB559F-AE91-4B7C-9DB1-56FFAA12ACB1 at cam.ac.uk> <4583224e-9b2a-06e1-c37b-b1be2b9efaa0 at sketis.net> To: Markus Wenzel , isabelle-users In-Reply-To: <4583224e-9b2a-06e1-c37b-b1be2b9efaa0 at sketis.net> Message-Id: X-Mailer: Apple Mail (2.3608.120.23.2.4) X-debug-header: local_aliases has suffix Subject: Re: [isabelle] Another Issue with Isabelle/jEdit with macOS Big Sur X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 11:06:42 -0000 Thanks for investigating! The big new thing coming up is Apple=E2=80=99s M1 chip. All reviews = suggest that it=E2=80=99s blazingly fast, even with emulation. But none = of the new models support more than 16 GB, making them unattractive for = us. Nevertheless: if somebody buys one of these things, please share = your experiences! Larry > On 20 Nov 2020, at 10:58, Makarius wrote: >=20 > Concerning GUI rendering in Java Swing, I see many small things that = still > need to be done by the OpenJDK project: the situation is the same for = stable > Java 11 vs. latest Java 15 (both released in Oct-2020). >=20 > The next OpenJDK release is scheduled for 19-Jan-2021: this is a few = weeks > before our planned release date mid-Feb-2021, so we can give that a = try when > it becomes available. >=20 From andrei.h.popescu at gmail.com Fri Nov 20 13:11:07 2020 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:44556) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kg6Bv-0005yJ-0u (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 13:11:07 +0000 X-Cam-SpamDetails: score -0.3 from SpamAssassin-3.4.4-1883634 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.160.178 listed in list.dnswl.dnsbl.ja.net] * 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) * [209.85.160.178 listed in wl.mailspike.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [andrei.h.popescu[at]gmail.com] * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-qt1-f178.google.com ([209.85.160.178]:40969) by ppsw-31.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.147]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kg6Bu-000Uoy-Js (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Fri, 20 Nov 2020 13:11:07 +0000 Received: by mail-qt1-f178.google.com with SMTP id l7so685339qtp.8 for ; Fri, 20 Nov 2020 05:11:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xsxF27iEgr+N8yRYqM2MR2zetVvzwXMtVvEwEbGA0Gc=; b=WuiHVvxON04Yu5cp0UmjSyzrPd1HBhSXvHsIo4TeJXJ7DxjV01l3AhZeooT+ABOD1+ bQS4knLPQ6UZC/QwsQqIwKlpqmq3vKVe4FYk4zbc6moX3GdhSXhCBlQMogU5/+rEyrYA RFJvF74tJ1jVIcn1UCisCRFFMkQpNz4lD+RAUs16q06NvQN60fcmXzwCCjK3dhr8ZXbv dY/DcDOhvvnvayLBRR3NZnOit1vK4zZQH5apEXxxVXs9pF2D78sa8baQRz/Lko0cJEkh HulNUEL/+rUlxnDUt/sydiThcaPSYOBtBkUHX3YdCRZ3ZsD0AOfIKPS/En4TNzTc4fKh fXbQ== X-Gm-Message-State: AOAM530cIrUZi1XJA57bh2okUijHIATzy5IbhTPcDVXt3hPD5WPwpgGC T62d8c7EJv+fSO1M8zxiLSgQgCID6J/x+qJrYNVqYAfmbE4xoQ== X-Google-Smtp-Source: ABdhPJx13+beBXcYO+2GHbsb9Y0Mk8R1bglS3Aa0Lsvrhc2547CXDG2a2RkWo7iMIc5h1FC4Wfoq/6OiAylO14uFZ9Q= X-Received: by 2002:aed:3802:: with SMTP id j2mr15865135qte.388.1605877865078; Fri, 20 Nov 2020 05:11:05 -0800 (PST) MIME-Version: 1.0 From: Andrei Popescu Date: Fri, 20 Nov 2020 13:10:54 +0000 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: text/plain; charset="UTF-8" Subject: [isabelle] two proof-assistant friendly posts of Lecturer in Cybersecurity at University of Sheffield: deadline 3rd December 2020 X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 13:11:07 -0000 Greetings, University of Sheffield has opened two posts of Lecturer in Cybersecurity. Details can be found here: https://www.jobs.ac.uk/job/CCG201/lecturer-in-cybersecurity-two-posts Please note that "formalisation and proof of system security properties" is listed first under "suitable areas". Best wishes, Andrei From peter.reitinger at gmail.com Sat Nov 21 05:24:49 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:59962) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kgLOD-0007He-Ip (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 21 Nov 2020 05:24:49 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.8 from SpamAssassin-3.4.4-1883634 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.182 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.182 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [peter.reitinger[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.0 HTML_IMAGE_RATIO_04 BODY: HTML has a low ratio of text to image * area * 2.1 HTML_IMAGE_ONLY_12 BODY: HTML: images with 800-1200 bytes of words * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-il1-f182.google.com ([209.85.166.182]:39878) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kgLOC-000Wc6-R3 (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 21 Nov 2020 05:24:49 +0000 Received: by mail-il1-f182.google.com with SMTP id q1so10514095ilt.6 for ; Fri, 20 Nov 2020 21:24:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=mtSS5NgSFtWgqdNR9Hi/O7QvFFGFCkCSQWK6cUjAdgY=; b=e7EgMJAOjSQh7h0ALkfVdMWF8E77OrlpGoICvKUkCp+VvnxE0uI4VwtD3bd+cK+xzd ik3w6NQnb/RkS7UAkoEnFGpfner5gmbtZKBLj55gBqXXK3ZgvzdYjOqvGJCu5VSiokrC BIlEqa3xmnBnRPWxwT16Iccj6bYc5iTX3EyEAxHPCTMS4t4D2doJwjlYezP5epz/W9Xg x9Y5ikHmmI0xcIpRrxwQd0EOxpG7B6xszr80wwPLHsFLuPeI7PcF4kyerqGjDq72nw4K 9+feu48+D6CzLhvGd1CuU1Wj5dRc+sIm+K8mn5xrKd0Sr5F3XcAtzVkRybA8q982syqk 2HOw== X-Gm-Message-State: AOAM5335/epDpLH+UgWlCzIWxsm8OO/ENeSSHhsgiQYVDx5/qUBgb2Wy Hr986JYjhjP1FPzGG3pIQz6JOzXunPrq4rTbuuXmJHkaOjDtQA== X-Google-Smtp-Source: ABdhPJzt/WM9aWJrJspeupEbTFLi8bpxjxl6CyEAz+1APg4qhYjfawBbYjBABpn/TZVr3jJPHav6SG00t/oPfxUmLT0= X-Received: by 2002:a92:c08d:: with SMTP id h13mr23587618ile.118.1605936286316; Fri, 20 Nov 2020 21:24:46 -0800 (PST) MIME-Version: 1.0 From: Peter Reitinger Date: Sat, 21 Nov 2020 06:24:34 +0100 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: multipart/related; boundary="000000000000e18f6105b4972dba" Subject: [isabelle] Bug? Or still just confusing correct behavior? X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Nov 2020 05:24:49 -0000 --000000000000e18f6105b4972dba Content-Type: multipart/alternative; boundary="000000000000e18f6005b4972db9" --000000000000e18f6005b4972db9 Content-Type: text/plain; charset="UTF-8" Hi, recently I posted correct, but confusing behavior about simplification on terms with functions with "open type, I mean not explicitly specified". The behavior of isabelle was still correct because my formula was actually a set of formulae for each possible type specification if I understood correctly. Anyway, the actual question in this mail is: Would this be a real bug? Btw it was observed in the old version 2019... I just want to clarify before I send the real bug or confusion report to the right mailing list... ;-) [image: image.png] Best regards, and I still love Isabelle! ;-) Peter Reitinger --000000000000e18f6005b4972db9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

recently I posted correct, but conf= using behavior about simplification on terms with functions with "open= type, I mean not explicitly specified". The behavior of isabelle was = still correct because my formula was actually a set of formulae for each po= ssible type specification if I understood correctly.

Anyway, the actual question in this mail is:

Wo= uld this be a real bug? Btw it was observed in the old version 2019...
I just want to clarify before I send the real bug or confusion report= to the right mailing list... ;-)

=C2=A0
=
3D"image.png"

Best regards, and I still love Isabe= lle! ;-)

Peter Reitinger
--000000000000e18f6005b4972db9-- --000000000000e18f6105b4972dba Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_khr8y0pn0 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 unUrEw/a0dFxzZo1q1evJtLZ3t5+xYoVdnZ2y5YtI4GelyxZYm1tvWjRooULF5qbm5uamhobGy9Y sGDevHlEPc+aNUtPT8/U1HTChAkpKakpKan19Q3nz59nhsTOQEAP2Z09gB1VeXikfPpp5y93gL7N yirbvDlz8uSUP/859f/8n+zp05sePBjATpmm2tPSEv/rv368d48pQWbYCUBAi/71jbMgAAIgAAIg AAIgAAIgAAIgMHIIQEAP+5doDAAE+vyF0C+n3K/KorvuQ0A/MBxXY/G/zLF9qgrxvOfOnfvxxx+z s3Oys3NMTU2dnZ1X8tLp06ebm5u5vFRTU+Ph4cEYZ1KB2exsa2u7ZMmSxYsXW1tbW1lZkWgbZmZm JNazkZHR3Llz58yZY2BgMGvWrBkzZujq6k6fPn3evHljxoxJTk5JTk6pq6s7d+4c2zszeQhoqXvk utrbUz7/vHT9er6Rl27YkPz73xcuWVJz8mT14cOZkyYlKihUeXjwVRuQjzl6eq+VlAakKTQyIAQg oEX/+sZZEAABEAABEAABEAABEAABEBg5BCCgB+SLMBoBgY8i0P+XEIr4HTJ0ArrIbBRjn2ss/ve6 /kQieU+fPt3Q0JiVlZ2VlW1iYrJ+/Xo7O7sVK1bY2Nhs3LixuLi4nZeam5vPnj27nJeWLVtma2tL Xi24ePFiK15ivDPZ8mxkZDR//nyinvX19WfOnMmoZ21tbS0tLUNDw9GjRyclJSclJdfW1p4+fZqR zuyMtAtoEWuPUyAgbwQaeKm+vr6urq62trampqaqqqqysrK8vLy0tLS4uLigoCA3NzcrKys9PT01 NTUhISE2NjYyMjIsLCw0NDQoKEjeiGG+IAACIAACIAACIAACIAACIDD0BIKCgkJDQ8PCwtgmOj09 PSsrKzc3t6CgoLi4uLS0tLy8vLKysqqqqqampra2tq6urr6+nnzvG/oxo0cQkDECtBgCmkSCFvMd p+IHjBZNso8d0Bkmo9kC2nvmJOJ5T548WV/fkJn5OjPz9YIFC9atW2fHSytWrLC1tbW2tg4PD2/l pZaWltu3b9vY2JCdziTIBhPimR1qY+7cuYaGhgYGBrNnz545c6aenp6Ojs60adOmTp1K7DOHwzEw MBg1alRCQmJCQmJ1dfXJkyfZ3pnJD56AFk1zoM6KeROgGgjIBQGvc27k8Dy73fOs68EzrgdOb/M4 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 NCbL6iji4+Ozs7OtFkZHR69bt04s3LlzZ5s2bSZMmLBjxw7RIXfVqlV2F+7evTslJWXWrFlWpa1b t+6FF1744IMP3n///bS0tNGjR+/evbt9+/bz588Xa65atapFixZvvPHGjh07pkyZcs899yxbtsxq nV27dj344INjxlwdDHfXrl3r169fuXKl1Y4cvXVDJicnx2AwbNq0afO1qUuXLqLmXbp0GT9+/M6d O5cvX3718Xpjx4r9Ko/IkY+yho7KiY6O7tSp05YtW7Zu3frggw9OmDBBDBzXsmXLzMzMHTt2LF26 9N577x0zZszu3bu9QTdoTNam9z509TVmwuQ2bRNeWLtx47t7Fix9qWmzZvOXvCAKadEiuv2DnVZv fHv1xrcTOzw4auzETe99uPGdPXEtWz02YfLr23ZlP7P83nvvHTZq7Kb3Plzy4tqo5i1WrN/8+rZd GZOnXh1aevHyTe99GJ/YfvqcBaLAje/uSezYaejIx1596/2N7+55fvVri19Y7WqFba+FjRs3ZmZm bty4cdeuXZs3b+7Ro0dqaqrooWLb9hzJK6+dXbt2dejQYdiwYe++++6OHTteeukl0QCU60ycOHHo 0KHKhmE7P2hM1gGfTF8Un74smkRnZ5E7f/XVV0eOHDl69KiInkXH5x9++OHHH388derUTz/95Ch9 /ve///3bb79ZPX7wf//7n930mQDae3EqJbsqoB5AL126VNmV+NlnnxXl//bbb5mZmQ888ECHDh02 bdok79TR8sLCwm+++WbEiBHymrm5uW3bth0wYMD58+flha7OiB7Qx82/uPEKhAC6e/vOiXGtByal 2EbGJcmgbUtLT+1HAO3fcSK1Q8A1AbsBtHIk6DNnzpjN5tOnT5tMJjEYtJxBHz9+/Ntvvz169OjX X399+PBhOYYWvaH379+/b98+OYwWPaP37t0r/vRM/unbv3tjbwgggAACCCCAgGsCQ8ZNWf3WHvXX kHFTrApNSEiYP3++1UKj0bhhwwZ54aZNm5KSkqKiotq2bbtgwQKx3O7C3r17z5kzR95QzKxevTox MbFp06bNmzfv27fv+++///HHHz/zzDNxcXFRUVGzZ8/++OOPx4wZExUVFR0dnZGRkZiY+MILL9iu 88477wwcONBoNEZFRXXo0GHp0qVWO3L01g2ZHj16jBkzRlngokWLjEbjhx9++OqrryYmJjZr1iwt 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 BQW33nrrfffdZ9WCY2Njq1Wrdv78ebE8Li5OHtrDdgxoESi8/PLLEydOrFmzZpUqVTp06HD8+HFl mYcOHWrfvn2FChWqV68+atQoEZe71Edb82uwyWQaOXJk3bp1y5UrV6NGjXbt2r311lvKOpw4cWLg wIE1a9YsU6ZM3bp1J0yYIB+gcjW72c2FCxduvPHGNm3aKNe8fPnyLbfcEh0dLS88f/78k08+2aBB g7Jly950001paWl5eXnyp87MfPnll+3bt69YseJNN900btw4Wyj1cyF24eh0i0+dqeThw4fT0tJq 1apVtmzZ2267bfDgwfIJbdCggdwYlDMnTpyQD1DzZMlruj2juYvjx48nJydXqVKlatWqQ4YMWbx4 sSRJcpOwTcGeffZZSZK2b98uV8kZahUo2z/rzsjIkCTp6aeflndhsVhUSnDmyirh2XSmkprUysNx b159F840OYvF4qjZO3OXy8zMlCRp8+bNcv3nzJkjSdLKlSvlJeqVlFcryYzmLjTvcmLvdm9i4iPN BqN5C9K8mavvQrNV5+fnT548uUWLFtWqVStXrtydd975+OOP5+fni/r//PPPkiQNHjy4QYMGERER CxYsmDZtWuXKlSMjI/fv32+xWDRXcNJBpUWJEjRPlljN7Z/qDhaLRVPSYrFonk3N6qkfpjN1UL+R al7dq1evliTppZdeSktLq1y58g033NC7d+8ff/xRWXP1XYg1Ve60fnIbVB4R8wgggAACCCCAAAII +LmAVaZ8LXz++79WabLVylafuvRWI4BOT+1nG++KJUVjQCcNTOpltcKoR0ZmTpz+0guvzXxq8Yhh T8x7+vV5szbNnvbqsoU7Zk5eMnVc38+3tCj4pnXhhR5X/uhT+J/WhZduK9xX6c8tFczPRizrWuuF ejesL1vmyRrlpxhuebZLzPZH+u3v3//Qgw9+XqPG+2XLBWcA3bBhw3vvvbddu3azZs2aMmVK48aN Rf47ceJESZL27dsnN+4jR46EhIQMHz5cXrJp06Zly5aJ+MxRAB0ZGdmqVavs7OwhQ4aEhIQkJCTI m5tMptq1a5cvX/7RRx+dNWtWw4YNa9asaffZevImtjPqX4MtFkuHDh3Cwy3XMwsAACAASURBVMPT 09MXLVqUlZUVHx8/ZswYuZxz5841atQoJCSkf//+2dnZnTp1kiTp4YcflleQZxxlNwMGDAgLC1MG ymLEyblz54ptL126FB8fHxoampqaOm/evHHjxkVERNx9991nz56VC1ef+fHHH2vUqFGhQoVx48bN mDGjQYMGtWrVsoJSPxei/MaNGzs63c5U8rPPPqtatWr58uWHDRu2YMGCzMzM+vXryyMRb9u2bcOG DbNmzRJDvmy4Nl24cEE+Os2TJa/p9oz6Ls6fPx8ZGRkWFjZs2LDZs2cbDIbatWu7GkBrUqtDWYUa 48aNkyQpOztbecjqJYhwR+XKKvnZdKaS6tTKw3F7Xn0XzjQ5ERc6avaadzlxQ1D+TxTxQLPx48fL B6VeSXm1ksxo7kL9Lifv2tFNTLPBaN6CNG/mmrvQbNXffvttuXLlunbt+uSTT86fPz81NTU0NFTu nC7y5Zo1a2ZnZ99zzz1ly5Zt1qzZnDlzqlWr1qVLFzmAVlnBYrFoVlJIqtxIfTAMvbqDHECr3B80 z6bcYFRm1Nuk5tkU9VT5/UHz6hYBdK1atYxG45w5cwYPHhwaGtqiRYuCggK52j64V6s7yDVhBgEE EEAAAQQQQACBIBFQZspW6bN4q4yVlSsrl7sx734AbZU7i77P6f2HTs+as3LF5t07Dy5dsmZ0etbc GesXz932TPbW2dPXj0vPGj+k/d5X65z9pN4fR5v/deahK+b4K980vrK18p/rypxZUH5Jp2pz60Ys qlT5iTo1sw2N1zyYsHfQoC+Tun/ZrNn+SpXeL1t2ZY1aGZ20h+AYnto30RCbaIiNN8aazWaTyeQG je0mWTm5eR6alM1afQiOxo0bh4SEpKeny5tcvHjx3LlzFovl0KFDISEhY8eOlT+aMmWKJEm2z5dz 9IQf8RW0efPm8hfCnj17SpJ08uRJUebkyZMlSXrxxRfFW5PJVLVqVatcVd67ezP5+flhYWF9+vRR bi4OUCxZsmSJJEmTJ0+WV0hKSpIk6YMPPpCXiBlH2c22bdskSVqwYIG8/vDhw8PCwr7//nuxRPSx XbJkibyCVUItL3c0I2KytWvXihVOnDhRuXJlu1COzoXYUOV0O1NJo9EYHh7+8ccfy/U8d+7csWPH 5LeaY0Ar1yyV+eeee06SpKeeekrsPT8/v06dOq4G0GJbFWpNKPnPuseMGRMSEjJ//nwrDfUSNK8s j5xNzUpa1bm03mr+kb5Ks9e8y0VFRYWHh1sslqlTp1auXHnt2rVffvmlJEm9e/cureO13a/mXU7e xNFNTLPBaN6CNG/mmrvQbNX5+fk//PCDfCwWi2XIkCGSJB0+fFjOl8U/WOIyFwNPDRw4sG7dus6s YLFYNCsp9q7SopTV89K8uoMcQKv8y6t5Nktec82zKe9C5Uaq/g+KCKAjIyPlv1gSf6+wbt06uXAx o7IL9Tut8v/DObpXW+2LtwgggAACCCCAAAIIBLmAS5mySyvb5qjKJZ4MoEf0fSRjTOZLL2z8dG/e 4UOnV698c/xjU6ZmLp87Y8P8p9/Imrhk2IARo/rfv3tV1by3w87uqPjH4bv+PNj0yp5Gf62r8NfL IWfnhy/qGDHh9hvGV7/5qYb35BqNWxMTP07uuT/ugc9r195Xtuz7FSuuuq1exkPXx6G2DcH/XhJY AXRoaOipU6fsXiGxsbG1a9eW4+PIyMhGjRrZruno2534Cqp8YFd2drYkSXv37hWFREdHV6lS5eLF i3KZffr0sZuryiu4OnPp0qUKFSo0bdpUTr2tSujevbskSfI4EhaLZevWrVaRtNjEUXZTUFBQq1at uLg4sVpBQUHNmjXbtm0r76hVq1aVK1c+fvz4d4rpxhtv7Ny5s7yO+kzz5s0jIiKUj3lMTU21C+Xo XIjyGzdu7Oh0a1by2LFjkiR1795dvaqaaaD65t7+NDk5WZIkZXf1sWPHejaAdgZKZLujRo2SJCkn J8fqqDVL0LyyPHI21StpVedSfKvZ5FSavcViUb/LNWrUqEKFChaLZdCgQZIkzZs37+jRo5IkJSUl leIhW+1a8y4nr+/oJqbZYDRvQZo3c81daLZq+Sjy8/Pz8vK+++67hQsXSpL0xhtvyPmy+Odmw4YN 8v9EzMjIqFKlijMrWCwWzUqKOqi3KLme3p6x6yAH0Cr/8mqezZLX3Pmzqf5vlsrVLQLoadOmybU9 cuSIGIZFXiJmHO1C804rB9CO7tVWO+ItAggggAACCCCAAAIIuJQpu7SyMm62nfdkAD1uyMjc51bt 2vnFsW/PHz1yZucH+3OXrx0zavKQgRljRj71zMK12TOz52Ql715Tbd8roZ+vDTv9Qflfd1cs3F7h rzVhf70c8vOC8Nldqg1sXLtv3dtnNjMsMca8eH/sqw/EvR8Zuf/GG/eFh4sAenzwBdC33HKLoytk 6dKlkiRt2bLFYrF89NFHkiQpv9PKWzn6die+gq5YsUJe02o43Zo1a0ZGRsqfWiwW0YPJpTGglZvb nV+8eHHZsmXLlCnTokWL4cOHb926VblaTExMuXLllEu++uoruzGN3YViw1GjRoWGhooU++2335Yk admyZXKZYpAH5bDIYj4mJkZeR33GFurxxx93L4B2dLo1K/nOO+9IkvTEE0+oV1UlL1Df0DefxsTE lC9fXrkvkWG5NAa02NxRs3cGqlq1auHh4WFhYZIkDRs2TFkfi8WiWYLmleWRs6leSas6l+JbzSbX uHFjR83eYrGo3+XkHtAFBQWis78f9oAWXXdV7nLy2XF0E9NsMJq3INsVrG7mmrvQbNUWi+WZZ56J jIwMCQlR3k5fffVVOV8W/ztHFLVnzx7xb4q45MUYHSorWCwWzUoKSfUWJWt7b0bFQQ6gXfqX19E/ KG4fgjNnUxTu6EYqPlW5ukUA/fLLL8uVvHTpUmhoaMeOHeUl6rvQvNOKAFrlXm21I94igAACCCCA AAIIIICAS5mySyvbhs7KJZ4MoMcOHrVs0br33/ny6Ffnvv3m3JcHTmzdsmf82CdGpk+cNnXB5jc/ XrfylefnDdu7vsbRN0PztoSc2yX9vksqfFf6a03Ib8tDv59V/pmudafH3TezeczTUVFzDIYFUYZV 0dHv3XnnvqpVPw0Pf6tCxWfr1H2sc9D1gG7cuLGjK+Tnn3+uWLGi+GPzUaNGlSlTxuovoMWGjr5A iq+g8hjBFotFM4D2+NdgUcPvv/9++fLl/fr1+8c//iFJUmZmpnzItonk4cOHJUnq37+/vI6YcZTd WCyWPXv2yMP4Dho0qFy5cqdPn5Y3r127dr169TbZTDt27JDXUZ+pWbNmw4YNles4gnJ0LsS24mls ynLkec1KOvNdXf0vpuV9leKM7elesGCBeg/oRYsWWT2EUNTfEbUzUOIpaq+88kr//v0lSdqwYYPS RLMEzSvLI2dTvZLKCpfuvEpEJSqm0uxFcKlyl3NmDOjSPXx57yp3OXkdRzcxzQajeQuyDaCt7lGa u9Bs1eL/FUVHRy9atGjDhg2bNm2aMGGCJEliqA2VfFn8L0bNFUQA7cy9Wr1FydpemlF3kANo9X95 nfwHxe1D0DybcsmObqRiBZWrWwTQypxdBNAdOnSQCxczjnaheacVAXS5cuUc3autdsRbBBBAAAEE EEAAAQQQcClTdmllZdxsO+/JAPrRgSOyp7+8YfUnn+z68dAXZ7488NP72z9/YvLsGU8tWLt2y4ED J99/Z/e63Cf3brjrx3fL//JxyG+fSv/9SLryrvS/VSE/zwv/dHzVld2avPZg/Lb2HRbee99T9zR6 uknTV2Jjd0Te/emNN+68+gTCG6fdFTm6S7LDkTdSrj0yMbCG4FAJoC0WS58+fSpVqmQ2m2vWrNmp Uye715Kjb3eaX0Ft/2q7d+/edjv22t2vGwvz8/ObNWtWsWLFy5cvi81th+DYsmWL3SE4ypYtqzLw 65133hkdHX3x4sXq1auLZ17J1WvZsmVERIRypBH5IydnWrRoUbVqVXksFIvF4vYQHI5Ot2YlxV8r a448sHPnTkmSbJ9I6eSRens1McC3yhAcojEvX75crsmkSZNcCqCdgZKHVz5z5sydd95ZvXp15SAw miVoXlkeOZvqlZR9Sn1Gs8lpxoUqdznRjXfz5s3yYc6ZM0eSpJUrV8pL/G3G9i4n19DRTUyzwWje gjRv5pq70GzVRqOxRo0ayoeaPvXUU54NoDUrKSQ1W5QM7o0ZdQdnAmjNs1nyamueTXkXjn5/ECuo XN2OhuAYNGiQXLiYcbQLzTutPASHxWKxe6+22hFvEUAAAQQQQAABBBBAwKVM2aWVbUNn5RKPBtAD Rjz95AvPLXh71fMfv7bmi/WrP37x+TemT8tZt3bLoYOmo0fPffThoTdeXfn60m5719Qzbw/7z4GQ K/+U/twm/euF0M8yKq/uVufNh9rs6dzp0/j412+ts6j+7XOimm+Lb/tJkya7a9RYUfWGGY2ajO6S nN4zjQBaecGILkIiFxYdzZSfinlH3+40v4JaPbfq1KlTERERng2gz50799NPPynr3L59+7Jly8rj KTv/EMLbb7/dYDAoi1LOZ2ZmhoSEiGdYrVmzRvmR6EI7depU5cKzZ88qM0flR7bzIgOVn61UkocQ Ogqgnamk7fOaLl26pAxzLRbL/v37rfqY2x6O5hIx3q5K3K9ZgqMVxAmaMWOGWMH2IYRihN8hQ4aI FS5cuNCgQQOXAmiLxaIJJWe7ovt8mTJlWrVqpfwfDOolaF5ZHjmbmpV0hGy13HtnU+xIs8lpxoUq d7l//vOfkiR169ZN7OvixYv33HNPpUqVrO4qVods9633HDTvcnJ9HN3ENBuM5i1I82auuQvNVv3A Aw/Url1b/j95Z86cqVevnmcDaM1KCknNFiWDq8y43R7UHZwJoDXPpkq1nfxI82zK5Tj6/UGsoHJ1 iwBa+RDCrKwsSZJWrVolFy5mVHahfqdVBtCO7tVW+3L09pFHHmnQoEF2drb3VnBUMssRQAABBBBA AAEEEPClgEuZsksrK+Nm23lPBtCjB4yY9UTuM3PfWrrw/cU5W+c/vf7p6S8+OXne+nXbvzly4fix S4cPmXbv2LvyuZmLnmizZFKlD18u8+PrYfmvhO+bUunNfnXXdo7Z3SNpf4cO+5o0eavqDU/dXGNw 5D0L4lquatps1Z0NZjSJGpvYSTt6Fp2gg6kH9OXLl8WX/OrVqyu7nlksln379i0rmjIyMiRJSktL E28/+OAD0bg1v4KeOnWqVq1a5cqVe/TRR2fNmtWwYUOxLw+OAf3111+XL18+OTl5+vTpCxYsEM+g 69Onj3z5nTt3rlGjRiEhIf379587d27nzp0lSbLqwixWFn0hBwwYsHTp0mXLluXn58uFWCyWAwcO SJJUuXLlKlWqWH106dKldu3aSZLUsWPHWbNmPf3003379o2IiHC+m/APP/xw8803V6xYMSMjY+bM mXfddZcYS0SG0jwXoqoquYkzlfz000+rVq1avnz5YcOGzZ8/f/z48Q0bNlT+obfFYrl48WKNGjVu uummefPmbSiarJqNEs3R/MCBAx2NFeBoEyeX5+fnN2jQICwsLD09fc6cOQaDoUaNGsohOCwWS4sW LcLDw9PT02fNmtWiRYuGDRsqA2hnqDWhlNmuxWKZOnWqJEnK/0WhXoLmleWRs6lZSSfNvXc2RQU0 m5xKsxclqNzlLBaL+N9vvXr1WrhwYevWrSVJmjVrlpPHrlzNew6adzm5Go5uYpoNRvMWpHkz19yF ZqvOycmRJKlt27bz58/PysqqX7/+vffe69kAWrOSQlKzRcngKjNutwd1B2cCaM2zqVJtJz/SPJvO 3EjV/0ERAfTNN99sNBrnzJkzdOjQ0NDQpk2byv932ZldqN9prQJou/dqJ0E6dOggSdKECRMcrV/y FRyVzHIEEEAAAQQQQAABBHwpkJWTW1BQkJWT6+SrsLDQNk12Y4lHA+j+I2Y+kbsw+81ncrY+9cSK rIznJj22aOLYuStyt+3f+9NXB88cPZL/2affL5i/ume3HnH33ZTZt8LrT5TbO6vyyrTaa5Ji3klO PpCWdrBly3/WrLm5bLmMG6u3b9BwSGyrzOj7p7cwju7Wy9n0OaXf8GAKoC0Wi+hVZPuoNPGn6MqH QYl5+Q9gNb+CWiyWgwcPJiYmli9f/qabbho3bpxI4g4ePOipy8NsNo8cOfK+++6LiIioWLFiZGTk 9OnTz507pyz/xIkTAwYMqFGjRpkyZW677baMjAyrFcTK586dS09PF3mlJEnfffedshCLxdKkSRNJ kuz2271w4cKMGTMaNWpUvnz5iIiIe++9d+zYsUeOHLEqQeXtgQMHEhISKlSoUK1atZEjRwooOYDW PBeiZPXcxJlKHj58uE+fPjVr1ixbtmydOnUGDhxo2497+/btLVq0KF++vGgPJ06cUDkuux9FRUUp M1+767i98NixY926datcuXJERET//v1Fn0f5IYQWi+Xrr79u06ZNpUqVateuPXXqVNFpevv27WKP TlKrQ1lluwUFBXFxceHh4Tt37pSPS6UEZ66skp9NZyop11ZlxqtnU+xXvcmpN3tRgqO7nMViOX/+ /KRJk2699dayZcs2aNBgwYIFKger8pH3HJy5y4mKqdzENBuM+i3ImZu5+i40W/Xly5dnzZp1++23 lytXrm7dulOnTl27dq1nA2iLxaJeScHoTItSaQniI7fbg7qDMwG0+D+mKv+gaFZecwXNs+nkjdRi sTi6ukUA/fzzzycnJ1eqVCkiIiIlJUX5mAond6Fyp7UNoO3eqzU1LBZLyfNlzRKcqQbrIIAAAggg gAACCCDgbYGsnNzth3528uWLHtCJhthEQ2x66rVRleXhlR3PjO4/Ysbk3DnTX501dd3UzJceH7dk 3Kh5Y0Y8Pe/pDa+tOfDaur3vvv35Gxs/7NN70t13tape+eaY2uUHN6kyt+0tuQmGd/v0ODRi5OGk bl80jPykbNk3w8Jn3X3PwC7dhyX1GpnUc3S3Xum9+gZqAF3ytjVz5kxJkvbs2VPyojRLGDFihCRJ p06d0lyTFQJVwGQyhYWFdezY0TcHmJuba9UD2jf7DZK9+Phsuq3q7bucXhzcBrTdkJu5rYm8JAjb g3zsnpoRAbTVE1w9VTjlIIAAAggggAACCCCAgHsCIoB2sguznwbQw/s8MvKRrMzxz86Zvj5n5htT M18eO2reYyNnT896eVH2WzOnrlg8/7WFOetbPTDw5ptiKoTdek/FiEfq1V4ec9+m+NYfJSUd6tXr y+bNP//HPz4JCXkzNCz73qYuJM5WsbiuekC712LkrS5evFivXr1GjRrJSzw7oxyt4uLFi/Xr14+M jPTsLihNXwJr164NDQ3dt2+fb6pNAO1VZx+fTfeOxdt3OYvFogsH9/TkrbiZyxSaM8HQHjQRSrgC AXQJAdkcAQQQQAABBBBAAAFvCARCAD24Z9+eD6cNG5Q1ffKKZ7LfnvHkmnGj5o1/NHvyhOeenPTC iMEzJj22eOJjS+9r1COiSkzFsLuaRNSYeHfktlatdiUk7E5ot+f++/9Zu/ZnFSp8EhLyRmjYHAJo rYZ2+PDh5cuXizGRn3/+ea3V3fy8efPm3bp1m1U0GQwGSZKsxhR2s1z9bPad6uTG+BX6OXS/qCkB tF+chlKqhG/ucqV0cL7eLTdzX4sH9/4IoIP7/HP0CCCAAAIIIIAAAn4qEAgB9LCUfoN79u3VpU9S l0fGjpw3cczi8aPnTRw7d3LG4snjl41Jn5uVsXzS2OX3NeoZEfFApbLNjLXuntI06p34tptat3op JmZZo8bv1aixt0KFj0NDN5QpM6tJM3pAq7fWZcuWSZJUvXr1yZMnq69Zkk8zMzMjIyMrVqxYvnz5 qKiodevWlaQ0PW5rO4i2ckmDBg30eFA6qjMBtI5Olser6pu7nMer7Z8FcjP3z/MSqLUigA7UM8tx IYAAAggggAACCOhaIBACaJEX9+2W0qtLanq/xwakjO7RbfiAtMdGDZs+8bHFUx5/ac70DU9OXGVo klbtxlZVKjZrekvD4U0ML7RqtaF167VxcasNhh233rqncuV3wsssjaia1TzGvQB6mN4eQqjrhhsM ld+kOsnPvgsGCo4RAQQQQAABBBBAAAEEEEAAAQQQQECnAoETQMupcVKHbq1jOzzcMSWt16hRw2fO nvbqM3Pffirr1eiogXVubXdb7ehmDZr2MMRMbtn6xbZtX4uP3/LAA3tuv33bDTeuqFh5Wr3bH2vd Ti7KpRkCaJ1eA1QbAQQQQAABBBBAAAEEEEAAAQQQQAABBLwkEIAB9OAefQYkpT7SI61H55QunfqN Hz3v6SmvTJm0OqZ5Wuvorqmde/btkjy4W88RDyePatNuZqs2K+6Pe6tBg+U1ak6qdeuj7TqO6J7q Uu4sr6yLALqQCQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ8JVAAAbQciJ8dVCOh1NHDhg3evCTA/o8 Hh3V5cG23eRPh/Xs88hDSWM7PTytXYeZdzd8/J7GI+5vnZ6UIq/g4kxfAmhfNVr2gwACCCCAAAII IIAAAggggAACCCCAAAL6EAjkAFpOkHt37d2xXVIrY/ukDtcDaPnToV179m3WfGDbRHmJWzN9h6X0 HZ7aN9EQm2iIjTfGms1mk8lU4IkpKyc3z0OTPloltUQAAQQQQAABBBBAAAEEEEAAAQQQQACBgBAI igB6SM++A5P79E9KHdyjj51wuWffoV17DnN35I1rBRJAB8QFwUEggAACCCCAAAIIIIAAAggggAAC CCCAgOcEgiKAvpYR9/PmjDKANtID2nNNlJIQQAABBBBAAAEEEEAAAQQQQAABBBBAQK8CBNCeSqUJ oPV6DVBvBBBAAAEEEEAAAQQQQAABBBBAAAEEEPCSAAE0AbSXmhbFIoAAAggggAACCCCAAAIIIIAA AggggECwCxBAE0AH+zXA8SOAAAIIIIAAAggggAACCCCAAAIIIICAlwQIoAmgvdS0KBYBBBBAAAEE EEAAAQQQQAABBBBAAAEEgl3ATwPooSlp3nxgoKdCZ2U5V8eAHprSJ9EQm2jgIYTBfl1x/AgggAAC CCCAAAIIIIAAAggggAACCCBQWFjopwH0gIe7D0tRxrv+Pj8spe/w1L79H+5OAM11hQACCCCAAAII IIAAAggggAACCCCAAAIICAE/DaAfur/N0JS0YSn99BJDi+7PD93fmgCaSwsBBBBAAAEEEEAAAQQQ QAABBBBAAAEEEBACfhpAJxpiOxlb93soaWjPPsNT+6X792tozz79HkrqZGxVlD4zBAcXFwIIIIAA AggggAACCCCAAAIIIIAAAgggcFXAfwPoa2FurKsz7Q2xvnzZqx5jQHN1IYAAAggggAACCCCAAAII IIAAAggggAACgRhAJ5Z2AJ3AQwi5shBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgYDsAS13SfZNP2h5 d/IMATRXFgIIIIAAAggggAACCCCAAAIIIIAAAgggEJhDcMhBsG+6Qit3J+YJoLm0EEAAAQQQQAAB BBBAAAEEEEAAAQQQQACBwA+gfZBBE0BzISGAAAIIIIAAAggggAACCCCAAAIIIIAAAnYFAvAhhLaJ sFfH4rDdHT2g7TY1FiKAAAIIIIAAAggggAACCCCAAAIIIIBAsAkERQDtpX7QolgC6GC7ZjheBBBA AAEEEEAAAQQQQAABBBBAAAEEEHBSIFgCaG9k0LbRs1hCD2gnGx+rIYAAAggggAACCCCAAAIIIIAA AggggEBgCwRRAO3xDJoAOrCvDY4OAQQQQAABBBBAAAEEEEAAAQQQQAABBEooEFwBtGczaALoEjY+ NkcAAQQQQAABBBBAAAEEEEAAAQQQQACBwBYIugBapMYeeSwhAXRgXxscHQIIIIAAAggggAACCCCA AAIIIIAAAgiUUCBIA2iPdIUmgC5h42NzBBBAAAEEEEAAAQQQQAABBBBAAAEEEAhsgeANoEueQdsN oBMMsTyEMLCvGY4OAQQQQAABBBBAAAEEEEAAAQQQQAABBJwUCOoAuoQZNAG0k42M1RBAAAEEEEAA AQQQQAABBBBAAAEEEEAgOAWCPYAuSQZNAB2c1wxHjQACCCCAAAIIIIAAAggggAACCCCAAAJOChBA x7qdQdsLoI0MweFky2M1BBBAAAEEEEAAAQQQQAABBBBAAAEEEAh4AQLoqwG0Sxm0vLKDANrIGNAB f9lwgAgggAACCCCAAAIIIIAAAggggAACCCDgjAAB9N8BtBwrtzfEqr/kwFo9gD59+vSpU6cKPDFl 5eTmeWhypk2wDgIIIIAAAggggAACCCCAAAIIIIAAAggg4BEBAujrAbSTGbS93Fku5Gr3Z9ED+vTp 0ydPnvRE/lxAAO2Rtk4hCCCAAAIIIIAAAggggAACCCCAAAIIIOBjAQJoOTu+PuNMD2gHMfT1APqn n3764YcfCKB93KDZHQIIIIAAAggggAACCCCAAAIIIIAAAgj4jwAB9PXcWZkpq2TQytVs5q8H0CdP njx27BgBtP+0dWqCAAIIIIAAAggggAACCCCAAAIIIIAAAj4WIIC2H0CrDMdhEzorS7geQB/55tjh r48SQPu4QbM7BBBAAAEEEEAAAQQQQAABBBBAAAEEEPAfAQJoZXxsPW+3H7STAbTZbDaZTATQ/tPW qQkCCCCAAAIIIIAAAggggAACCCCAAAII+FiAANo6dLbKl20zaKsVir+93gOaANrHTZndIYAAAggg gAACCCCAAAIIIIAAAggggIC/CRBAawTQtmNxFE+ci22eYCCA9rcWTn0QQAABBBBAAAEEEEAAAQQQ QAABBBBAoNQECKCLJciOwmVlP2hH6yQaYgmgS60hs2MEEEAAAQQQ+buNJAAAIABJREFUQAABBBBA AAEEEEAAAQQQ8D8BAminAmhlP2gCaP9rxtQIAQQQQAABBBBAAAEEEEAAAQQQQAABBPxRgADa2QBa 5M7tDWrr0wPaH9s4dUIAAQQQQAABBBBAAAEEEEAAAQQQQACBUhIggFYLlFU6O9v9iAC6lJoxu0UA AQQQQAABBBBAAAEEEEAAAQQQQAABfxQggCaA9sd2SZ0QQAABBBBAAAEEEEAAAQQQQAABBBBAIAAE CKAJoAOgGXMICCCAAAIIIIAAAggggAACCCCAAAIIIOCPAgTQBND+2C6pEwIIIIAAAggggAACCCCA AAIIIIAAAggEgAABNAF0ADRjDgEBBBBAAAEEEEAAAQQQQAABBBBAAAEE/FGAAJoA2h/bJXVCAAEE EEAAAQQQQAABBBBAAAEEEEAAgQAQIIAmgA6AZswhIIAAAggggAACCCCAAAIIIIAAAggggIA/ChBA E0D7Y7ukTggggAACCCCAAAIIIIAAAggggAACCCAQAAIE0B4LoBMMsQkGo3jFG2PNZrPJZCrwxJSV k5vnoSkAmiyHgAACCCCAAAIIIIAAAggggAACCCCAAAJ6ESCAJoDWS1ulnggggAACCCCAAAIIIIAA AggggAACCCCgMwECaAJonTVZqosAAggggAACCCCAAAIIIIAAAggggAACehEggPZgAP33+BsJBiND cOjlAqCeCCCAAAIIIIAAAggggAACCCCAAAIIIOA9AQJoAmjvtS5KRgABBBBAAAEEEEAAAQQQQAAB BBBAAIGgFiCAJoAO6guAg0cAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wkQQBNAe691UTICCCCAAAII IIAAAggggAACCCCAAAIIBLUAATQBdFBfABw8AggggAACCCCAAAIIIIAAAggggAACCHhPwO8C6ASD xxLhRN8WlWDgIYTea6iUjAACCCCAAAIIIIAAAggggAACCCCAAAL6E/DHAFqnGTQBtP6aPzVGAAEE EEAAAQQQQAABBBBAAAEEEEAAAW8K+GkArccMmgDamw2VshFAAAEEEEAAAQQQQAABBBBAAAEEEEBA fwL+G0DrLoMmgNZf86fGCCCAAAIIIIAAAggggAACCCCAAAIIIOBNAb8OoPWVQRNAe7OhUjYCCCCA AAIIIIAAAggggAACCCCAAAII6E/A3wPoBEOsLmLoonryEEL9XQDUGAEEEEAAAQQQQAABBBBAAAEE EEAAAQS8J6CPANr/M2gCaO+1UUpGAAEEEEAAAQQQQAABBBBAAAEEEEAAAZ0K6CaA9vMMmgBapxcA 1UYAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wnoKYD25wyaANp7bZSSEUAAAQQQQAABBBBAAAEEEEAA AQQQQECnAjoLoP02gyaA1ukFQLURQAABBBBAAAEEEEAAAQQQQAABBBBAwHsC+gug/TODJoD2Xhul ZAQQQAABBBBAAAEEEEAAAQQQQAABBBDQqYAuA2g/zKAJoHV6AVBtBBBAAAEEEEAAAQQQQAABBBBA AAEEEPCegF4DaH/LoAmgvddGKRkBBBBAAAEEEEAAAQQQQAABBBBAAAEEdCqg4wC6KPONTTT4xYsA WqcXANVGAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8J6D6A9pOu0ATQ3mujlIwAAggggAACCCCAAAII IIAAAggggAACOhUIhAC6dDNosXcCaJ1eAFQbAQQQQAABBBBAAAEEEEAAAQQQQAABBLwn4IcBtFGM reHqz9Iai0NRT2OC4e9XvDHWbDabTKYCT0xZObl5Hpq815IoGQEEEEAAAQQQQAABBBBAAAEEEEAA AQQQsBLwzwBaTxk0AbRVk+ItAggggAACCCCAAAIIIIAAAggggAACCCAgBPw2gNZNBk0AzbWEAAII IIAAAggggAACCCCAAAIIIIAAAgjYFfDnAFofGXTRsBuxRTE0Q3DYbWMsRAABBBBAAAEEEEAAAQQQ QAABBBBAAIEgFfDzAFpEuiLedeGnL8eDvjbuc+y1GWM7g5ExoIP0euKwEUAAAQQQQAABBBBAAAEE EEAAAQQQQEAhoIsA2p2u0D7LoOXcWZ5pZzC25SGEikbGLAIIIIAAAggggAACCCCAAAIIIIAAAggE p4BeAmh3MugEQ6wPYmg5d5ZnCKCD81riqBFAAAEEEEAAAQQQQAABBBBAAAEEEEDASkBHAbSfZtBy 7izPEEBbNTLeIoAAAggggAACCCCAAAIIIIAAAggggEBwCugrgPbHDFrOneUZAujgvJY4agQQQAAB BBBAAAEEEEAAAQQQQAABBBCwEtBdAO13GbScO8szRQG00Ww2m0ymAk9MWTm5eR6arE4/bxFAAAEE EEAAAQQQQAABBBBAAAEEEEAAAe8J6DGA9pcMWowxLefO8gwBtPfaKyUjgAACCCCAAAIIIIAAAggg gAACCCCAgI4EdBpA+0UGnWCILXoZ5ehZzBBA6+gCoKoIIIAAAggggAACCCCAAAIIIIAAAggg4D0B /QbQIvYVEbALPxMNsZ56EUB7r11SMgIIIIAAAggggAACCCCAAAIIIIAAAggEgIDeA2h3ukITQAdA w+UQEEAAAQQQQAABBBBAAAEEEEAAAQQQQMD/BQIggC61DJoe0P7fvqkhAggggAACCCCAAAIIIIAA AggggAACCJSiQGAE0O5k0OIRgiXpDU0AXYoNl10jgAACCCCAAAIIIIAAAggggAACCCCAgP8LBEwA XQoZNAG0/7dvaogAAggggAACCCCAAAIIIIAAAggggAACpSgQSAG0rzNouwF0O4OxncHY1mg0m80m k6nAE1NWTm6eh6ZSbGrsGgEEEEAAAQQQQAABBBBAAAEEEEAAAQSCTSDAAmifZtAE0MF2tXC8CCCA AAIIIIAAAggggAACCCCAAAIIIOCSQOAF0L7LoAmgXWpqrIwAAggggAACCCCAAAIIIIAAAggggAAC wSYQkAG0jzJoAuhgu1o4XgQQQAABBBBAAAEEEEAAAQQQQAABBBBwSSBQA2hjgsGdGDrREKv5Sri2 DgG0S02NlRFAAAEEEEAAAQQQQAABBBBAAAEEEEAg2AQCO4D2SgZ9LXeOvTYjwu6/f/IQwmC7hDhe BBBAAAEEEEAAAQQQQAABBBBAAAEEEHAkEPABtDsZtNzH2W5v6Gu5MwG0o0bFcgQQQAABBBBAAAEE EEAAAQQQQAABBBBA4KpAMATQ7mTQdqNnsbAogFaWSQ9oriUEEEAAAQQQQAABBBBAAAEEEEAAAQQQ QMCOQJAE0Mq8WO65rDHjKIO+FkDLZRJA22lYLEIAAQQQQAABBBBAAAEEEEAAAQQQQAABBIIngJbz Yo3cWTnCht0MWhFAizIJoLmOEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABOwJBFUC7k0HbjgddPIAu lj4nGIw8hNBOK2MRAggggAACCCCAAAIIIIAAAggggAACCASlQLAF0B7IoAmgg/JK4aARQAABBBBA AAEEEEAAAQQQQAABBBBAwGWBIAygS5pBqwTQovtzO4OxrdFoNptNJlOBJ6asnNw8D00uNxA2QAAB BBBAAAEEEEAAAQQQQAABBBBAAAEE3BUIzgBajJvhwmDQRaFzrBgSmgDa3cbGdggggAACCCCAAAII IIAAAggggAACCCAQXALBHEC70xU60SBia+uhnxMMV5fQAzq4rh6OFgEEEEAAAQQQQAABBBBAAAEE EEAAAQRUBYI8gHYng6YHtGqL4kMEEEAAAQQQQAABBBBAAAEEEEAAAQQQQOBvAQJo9zJoekBzCSGA AAIIIIAAAggggAACCCCAAAIIIIAAAhoCBNDujQdNAK3RsPgYAQQQQAABBBBAAAEEEEAAAQQQQAAB BBAggJajZJeeSShvVWyGMaC5ohBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAVmAAFqZIDufQSu3uj5P AC03LGYQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEC6OvxcYLB+fGgrbb6+y0BNFcUAggggAACCCCA AAIIIIAAAggggAACCCAgCxBA242SNbtC293KSAAtNyxmEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB Amj7UXKCQT2Dtr8VATRXFAIIIIAAAggggAACCCCAAAIIIIAAAgggIAsQQNuPkrWG47CzlZw+tzMY 2xqNZrPZZDIVeGLKysnN89Akn3hmEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABbwsQQNuJkovSZ7Hc UT9oO1sRQHu7sVI+AggggAACCCCAAAIIIIAAAggggAACCOhLgADaTpSsCKAdPZbQzlYE0Ppq+tQW AQQQQAABBBBAAAEEEEAAAQQQQAABBLwtQABtJ0ouHkDbzaDtbEUA7e3GSvkIIIAAAggggAACCCCA AAIIIIAAAgggoC8BAmg7UbJNAG2bQdvZigBaX02f2iKAAAIIIIAAAggggAACCCCAAAIIIICAtwUI oO1EyfYCaKsM2s5WBNDebqyUjwACCCCAAAIIIIAAAggggAACCCCAAAL6EiCAthMlOwiglRm0na0I oPXV9KktAggggAACCCCAAAIIIIAAAggggAACCHhbgADaTpTsOICWM2g7WxFAe7uxUj4CCCCAAAII IIAAAggggAACCCCAAAII6EuAANpOlKwaQIsM2s5WBND6avrUFgEEEEAAAQQQQAABBBBAAAEEEEAA AQS8LeB3AXQ7g51sVysR9otNCKC93VgpHwEEEEAAAQQQQAABBBBAAAEEEEAAAQT0JeCPAbRIcnUR OisrSQCtr6ZPbRFAAAEEEEAAAQQQQAABBBBAAAEEEEDA2wL+G0Drris0AbS3GyvlI4AAAggggAAC CCCAAAIIIIAAAggggIC+BPw6gNZRBq1Mn9sZjG2NRrPZbDKZCjwxZeXk5nlo0lfrpLYIIIAAAggg gAACCCCAAAIIIIAAAgggoGsBfw+g9ZJBE0Dr+jKg8ggggAACCCCAAAIIIIAAAggggAACCCDgDQEd BNC6yKAJoL3ROikTAQQQQAABBBBAAAEEEEAAAQQQQAABBHQtoI8A2v8zaAJoXV8GVB4BBBBAAAEE EEAAAQQQQAABBBBAAAEEvCGgmwDazzNoAmhvtE7KRAABBBBAAAEEEEAAAQQQQAABBBBAAAFdC+gp gPbnDJoAWteXAZVHAAEEEEAAAQQQQAABBBBAAAEEEEAAAW8I6CyAFjlvgsHoby8CaG+0TspEAAEE EEAAAQQQQAABBBBAAAEEEEAAAV0L6DKA9sOu0MUD6Ji2RqPZbDaZTAWemLJycvM8NOm6sVJ5BBBA AAEEEEAAAQQQQAABBBBAAAEEENCXgF4DaH/LoAmg9dXuqS0CCCCAAAIIIIAAAggggAACCCCAAAII +EBAxwG0X2XQBNA+aKzsAgEEEEAAAQQQQAABBBBAAAEEEEAAAQT0JaDvANp/MmgCaH21e2qLAAII IIAAAggggAACCCCAAAIIIIAAAj4Q0H0A7ScZNAG0Dxoru0AAAQQQQAABBBBAAAEEEEAAAQQQQAAB fQkEQgDtJxl0gsEox9DxxlgeQqivK4HaIoAAAggggAACCCCAAAIIIIAAAggggIDHBQIkgLabQctx sJhJMBiLv2ITDFdfifZe7Q2x7Q33y68OhvsdveR1imZi2xeV1o4A2uNNlQIRQAABBBBAAAEEEEAA AQQQQAABBBBAQG8C+g6gbQNlZZpcPBq+niaL5Y4CZVeXF98LAbTergDqiwACCCCAAAIIIIAAAggg gAACCCCAAAJeE/DHAPparFyse3LxnNc6TXbvU1ezZrvrF981AbTXmioFI4AAAggggAACCCCAAAII IIAAAggggIDeBPwugC6e53omaFYp026m7NLC4oUTQOvtCqC+CCCAAAIIIIAAAggggAACCCCAAAII IOA1gWAPoNs7HtzZyRiaANprjZOCEUAAAQQQQAABBBBAAAEEEEAAAQQQQEDfAgTQVztZO5k1212N AFrfVwC1RwABBBBAAAEEEEAAAQQQQAABBBBAAAGvCRBA/z3Kh91w2ZmFBNBea5wUjAACCCCAAAII IIAAAggggAACCCCAAAL6FiCALjbMtDOJs9U6BND6vgKoPQIIIIAAAggggAACCCCAAAIIIIAAAgh4 TYAAulgA7cZwHATQXmucFIwAAggggAACCCCAAAIIIIAAAggggAAC+hYggLYOoF3NoAmg9X0FUHsE EEAAAQQQQAABBBBAAAEEEEAAAQQQ8JoAAbSdANrJDFqsRgDttcZJwQgggAACCCCAAAIIIIAAAggg gAACCCCgbwECaPsBtJMZtBgPWpFBx7Y3xCYaYuONsWaz2WQyFXhiysrJzfPQpO/WSu0RQAABBBBA AAEEEEAAAQQQQAABBBBAQFcCBNDFAujEovhY+TPBEJtQtDDBYLR9tTMY7b1i2hqNBNC6uhCoLAII IIAAAggggAACCCCAAAIIIIAAAgh4XiBAAmhlZCzPi+zYKjVuV5QjW6XGVus4/9aqnGtvCaA931Ip EQEEEEAAAQQQQAABBBBAAAEEEEAAAQR0J+B3AbQcH4uZayFyrDIUvpbz2u197NRCZWklmXdQEwJo 3V0IVBgBBBBAAAEEEEAAAQQQQAABBBBAAAEEPC/gdwG0g0jXqVjZ1W1LEj2LbR3skQDa8y2VEhFA AAEEEEAAAQQQQAABBBBAAAEEEEBAdwJBHUCL4ThKEkMTQOuuxVNhBBBAAAEEEEAAAQQQQAABBBBA AAEEEPCZQLAH0CXMoO0F0DHxBnpA+6wBsyMEEEAAAQQQQAABBBBAAAEEEEAAAQQQ8F8BAuirg3u4 3QmaANp/mzY1QwABBBBAAAEEEEAAAQQQQAABBBBAAIHSFiCA/nt0aeczaGVgTQBd2g2Y/SOAAAII IIAAAggggAACCCCAAAIIIICA/woQQF9/vKGTGbQIncXKBND+27SpGQIIIIAAAggggAACCCCAAAII IIAAAgiUtgAB9PUAWtm1WSWMlkPnBEOxba8tZwzo0m7U7B8BBBBAAAEEEEAAAQQQQAABBBBAAAEE /EOAANo6RFaJnh33elYWQgDtH02bWiCAAAIIIIAAAggggAACCCCAAAIIIIBAaQsQQCuz4+vzKjH0 tZ7O11cuvoQAurQbNftHAAEEEEAAAQQQQAABBBBAAAEEEEAAAf8QIIB2lCMbHWXQxeNm280JoP2j aVMLBBBAAAEEEEAAAQQQQAABBBBAAAEEEChtAQJo2wT5+hK7GTQBdGk3WvaPAAIIIIAAAggggAAC CCCAAAIIIIAAAvoQIIC+HjfbTZZtM2i7qykW0gNaH02fWiKAAAIIIIAAAggggAACCCCAAAIIIICA twUIoDUC6HYG67E4FFmz3W0JoL3daCkfAQQQQAABBBBAAAEEEEAAAQQQQAABBPQhQABtN0S2Xqjs B60eQMcbCKD10fSpJQIIIIAAAggggAACCCCAAAIIIIAAAgh4W4AA2jprdpQvyxm0oxXEcjmAPvLN scNfHy3wxJSVk5vnocnb7YnyEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABWYAA2tkAWh6Lw8kA2mw2 m0wmT+TPBQTQcntlBgEEEEAAAQQQQAABBBBAAAEEEEAAAQR0JEAA7UIArR49W/WAJoDW0WVAVRFA AAEEEEAAAQQQQAABBBBAAAEEEEDAGwIE0ATQ3mhXlIkAAggggAACCCCAAAIIIIAAAggggAACCBQS QBNAcxkggAACCCCAAAIIIIAAAggggAACCCCAAAJeESCAJoD2SsOiUAQQQAABBBBAAAEEEEAAAQQQ QAABBBBAgACaAJqrAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ8IoAATQBtFcaFoUigAACCCCAAAII IIAAAggggAACCCCAAAIE0ATQXAUIIIAAAggggAACCCCAAAIIIIAAAggggIBXBAigCaC90rAoFAEE EEAAAQQQQAABBBBAAAEEEEAAAQQQIIAmgOYqQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEvCJAAO3J ADreYIw3xMQbYtoajWaz2WQyFXhiysrJzfPQ5JVGRKEIIIAAAggggAACCCCAAAIIIIAAAggggIA9 AQJoDwbQMQTQ9toYyxBAAAEEEEAAAQQQQAABBBBAAAEEEEAgSAUIoD0bQF/t/kwP6CC9mDhsBBBA AAEEEEAAAQQQQAABBBBAAAEEECguQABNAF28RfAOAQQQQAABBBBAAAEEEEAAAQQQQAABBBDwkAAB NAG0h5oSxSCAAAIIIIAAAggggAACCCCAAAIIIIAAAsUFCKAJoIu3CN4hgAACCCCAAAIIIIAAAggg gAACCCCAAAIeEiCAJoD2UFOiGAQQQAABBBBAAAEEEEAAAQQQQAABBBBAoLgAATQBdPEWwTsEEEAA AQQQQAABBBBAAAEEEEAAAQQQQMBDAgTQBNAeakoUgwACCCCAAAIIIIAAAggggAACCCCAAAIIFBfw uwA63uDBRNjHRcXEG/5+tTUazWazyWQq8MSUlZOb56Gp+NnnHQIIIIAAAggggAACCCCAAAIIIIAA Aggg4EUBfwyg4w1GfcbQBNBebKkUjQACCCCAAAIIIIAAAggggAACCCCAAAK6E/DfAFqHGTQBtO7a PxVGAAEEEEAAAQQQQAABBBBAAAEEEEAAAS8K+HUAraMMuqiqBNBebKkUjQACCCCAAAIIIIAAAggg gAACCCCAAAK6E/D3AFovGXTRsCEE0Lpr/1QYAQQQQAABBBBAAAEEEEAAAQQQQAABBLwooIMAWhcZ NAG0FxspRSOAAAIIIIAAAggggAACCCCAAAIIIICAPgX0EUD7fwZNAK3P9k+tEUAAAQQQQAABBBBA AAEEEEAAAQQQQMCLAroJoP08g7YKoNsYjWaz2WQyFXhiysrJzfPQ5MWmRNEIIIAAAggggAACCCCA AAIIIIAAAggggEBxAT0F0P6cQRNAF29XvEMAAQQQQAABBBBAAAEEEEAAAQQQQAABBAp1FkAX5bzG dga/exFAczEhgAACCCCAAAIIIIAAAggggAACCCCAAAJWAroMoP2wKzQBtFXD4i0CCCCAAAIIIIAA AggggAACCCCAAAIIIKDXANrfMmgCaK4lBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDASkDHAbRfZdAE 0FYNi7cIIIAAAggggAACCCCAAAIIIIAAAggggIAfBtAxRWGu0cmffjIeNAE01xICCCCAAAIIIIAA AggggAACCCCAAAIIIGAl4J8BtM4y6GtZeUy84e9XG6PRbDabTKYCT0xZObl5HpqsTj9vEUAAAQQQ QAABBBBAAAEEEEAAAQQQQAAB7wn4bQAtklx99IMuyp2Ncvocb4ghgPZek6VkBBBAAAEEEEAAAQQQ QAABBBBAAAEEENCLgJ8H0C50hS7FsTiU0bOYJ4DWywVAPRFAAAEEEEAAAQQQQAABBBBAAAEEEEDA ewL+H0DrIIMmgPZeA6VkBBBAAAEEEEAAAQQQQAABBBBAAAEEENCvgC4CaBcy6HiD0fddoQmg9XsB UHMEEEAAAQQQQAABBBBAAAEEEEAAAQQQ8J6AXgJov86gCaC910ApGQEEEEAAAQQQQAABBBBAAAEE EEAAAQT0K6CjANp/M2gCaP1eANQcAQQQQAABBBBAAAEEEEAAAQQQQAABBLwnoK8A2k8zaAJo7zVQ SkYAAQQQQAABBBBAAAEEEEAAAQQQQAAB/QroLoD2xwyaAFq/FwA1RwABBBBAAAEEEEAAAQQQQAAB BBBAAAHvCegxgI4pCnyN8QanXj54JiEBtPcaKCUjgAACCCCAAAIIIIAAAggggAACCCCAgH4F9BtA u9AV2tsZNAG0fi8Aao4AAggggAACCCCAAAIIIIAAAggggAAC3hPQdQBd+hl0vMHY7mpHbNEp+/rP Nkaj2Ww2mUwFnpiycnLzPDR5ryVRMgIIIIAAAggggAACCCCAAAIIIIAAAgggYCWg9wDahQxahMWe 7Q19bRiQ69GzCKMJoK3aGW8RQAABBBBAAAEEEEAAAQQQQAABBBBAIAgFAiCALs0MmgA6CK8ZDhkB BBBAAAEEEEAAAQQQQAABBBBAAAEEnBQIjAC61DJoAmgn2xmrIYAAAggggAACCCCAAAIIIIAAAggg gEAQCgRMAF06GTQBdBBeMxwyAggggAACCCCAAAIIIIAAAggggAACCDgpEEgBdClk0ATQTrYzVkMA AQQQQAABBBBAAAEEEEAAAQQQQACBIBQIsADa1xk0AXQQXjMcMgIIIIAAAggggAACCCCAAAIIIIAA Agg4KRB4AXRMvMGFGLqdwViSl90Auq0hpo3RaDabTSZTgSemrJzcPA9NTjYLVkMAAQQQQAABBBBA AAEEEEAAAQQQQAABBEouEKgBtI8yaALokjdBSkAAAQQQQAABBBBAAAEEEEAAAQQQQACBQBUI4ADa Fxk0AXSgXhgcFwIIIIAAAggggAACCCCAAAIIIIAAAgiUXCCwA2gXMuh4t8biIIAueROkBAQQQAAB BBBAAAEEEEAAAQQQQAABBBAIVIGAD6C9kkHLaTUBdKBeGBwXAggggAACCCCAAAIIIIAAAggggAAC CJRcIBgCaM9n0CJ3bmcwEkCXvAlSAgIIIIAAAggggAACCCCAAAIIIIAAAggEqkCQBNAezqCLcmdl mTHxhuuvtoaYNkaj2Ww2mUwFnpiycnLzPDQFajvmuBBAAAEEEEAAAQQQQAABBBBAAAEEEEDADwWC J4BW5sVyz2WHM+1Uh4S+FkDLZV5Pn+MNMQTQftjQqRICCCCAAAIIIIAAAggggAACCCCAAAII+F4g qAJoERM7DJ2vjafx9woqGbQigBYZNAG075sue0QAAQQQQABuPQGwAAAgAElEQVQBBBBAAAEEEEAA AQQQQAABfxcIwgBa7rasnUQ7yqCLB9DF0md6QPt7k6d+CCCAAAIIIIAAAggggAACCCCAAAIIIOAr geAMoEuaQRNA+6p9sh8EEEAAAQQQQAABBBBAAAEEEEAAAQQQ0LFA0AbQLmTQ8TbjQRNA67jJU3UE EEAAAQQQQAABBBBAAAEEEEAAAQQQ8JVAMAfQ7mfQKgF0Wx5C6Ku2y34QQAABBBBAAAEEEEAAAQQQ QAABBBBAwM8FgjyAdjODJoD282ZN9RBAAAEEEEAAAQQQQAABBBBAAAEEEEDAHwQIoN3JoAmg/aHt UgcEEEAAAQQQQAABBBBAAAEEEEAAAQQQ8HMBAuiYeIPLGTQBtJ83a6qHAAIIIIAAAggggAACCCCA AAIIIIAAAv4gQAAtAmiXY+ii2Fq57d/zjAHtD82aOiCAAAIIIIAAAggggAACCCCAAAIIIICAPwgQ QFuFyMai3s3O/LTakADaH9ozdfh/9u4ErKkrcRs4bWf+06lO1+lY7UyX6TIz7XzTqdayqaiAtdqO rXbXVutuXQBxqbgAAoK4IYqIoCyigiigoLggiyj7HsKShRBICBASIOyg5nvk1NPbbIQACvre5z70 5Nxzzj33lwjpy+UEAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQGEICCKDVc2R90mcT3AE9hF7FmAoE IAABCEAAAhCAAAQgAAEIQAACEIAABCAwJAUQQKsH0HouCa2xozGW4BiSr3NMCgIQgAAEIAABCEAA AhCAAAQgAAEIQAACEHgAAgigNefIeizEobkjAugH8CrGKSEAAQhAAAIQgAAEIAABCEAAAhCAAAQg AIEhKYAAWnOO3LPChu61ODR3RAA9JF/nmBQEIAABCEAAAhCAAAQgAAEIQAACEIAABCDwAAQQQGvO ke8t8awjg9bcEQH0A3gV45QQgAAEIAABCEAAAhCAAAQgAAEIQAACEIDAkBRw8PSTy+UOnn567kql Uj4Qm1AoFIlEEomkrq5OJpM1NjYqFIqWlhaje8mv5nj3QRzVlkFrniEC6CH5OsekIAABCEAAAhCA AAQgAAEIQAACEIAABCAAgQcg4ODpp/9ZSeOByJ/lwyiA1vaZhBoCaJI+TxlrPNnERCQSCYXCAcFy 8PTjDtCm/5ONlhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAE+inQp0y5T411R6/DK4AmWbPKrdAI oPv52kN3CEAAAhCAAAQgAAEIQAACEIAABCAAAQhA4CEX6FOm3KfGD18ArXIrNALoh/zfBi4PAhCA AAQgAAEIQAACEIAABCAAAQhAAAIQ6KdAnzLlPjVGAI0lOPr54kR3CEAAAhCAAAQgAAEIQAACEIAA BCAAAQhAYHgL9ClT7lPjhzKAZt4EjTugh/dLH7OHAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEBluA ZsrjtG80SqaNaY3BheG4BjQzcTaZOpb58JcyPoRwsF+vGB8CEIAABCAAAQhAAAIQgAAEIAABCEAA AhAYRgLMTFljBM2MmJmNmfUGlId7AK0hfZ461hgB9DB66WOqEIAABCAAAQhAAAIQgAAEIAABCEAA AhCAwGALqGTKKhm0SrKs0ljlaJ8eag2gp2i6s1jj7cZDsBIB9GC/XjE+BCAAAQhAAAIQgAAEIAAB CEAAAhCAAAQgMIwE1DNlmkGrB8rqjdXb6FmjK4Aevhk0Auhh9NLHVCEAAQhAAAIQgAAEIAABCEAA AhCAAAQgAIHBFuhTptynxrqT6F4CaJLkDsF7nHVPCQH0YL9eMT4EIAABCEAAAhCAAAQgAAEIQAAC EIAABCAwjAT6lCn3qfEABNDD7lZoBNDD6KWPqUIAAhCAAAQgAAEIQAACEIAABCAAAQhAAAKDLdCn TLlPjQcmgB5GGTRNn6eMNZ5sYiISiYRCoW4FPY86ePpxB2gb7NcTxocABCAAAQhAAAIQgAAEIAAB CEAAAhCAAAQgQAX6lCn3qbHucFWvJThopKt74YshcpTOFgE0fXmhAAEIQAACEIAABCAAAQhAAAIQ gAAEIAABCDzKAn3KlPvUeCAD6GFxHzQC6Ef5HxKuHQIQgAAEIAABCEAAAhCAAAQgAAEIQAACEFAX cPD0k8vlDp5+eu5KpVJ3sqzn0b7dAU2y3SFyp7O2aQxqAK0na6/N9Hya0QwCEIAABCAAAQhAAAIQ gAAEIAABCEAAAhCAQP8Fek0smQ0e5B3QQz+DHhYBtPqvIHTUyOXyS3li7BCAAAQgAAEIQAACEIAA BCAAAQhAAAIQgAAEiIBcLteRKKocYobL+pQffAA9lNfiGC4BtD7PNGnj4Ol3KU+sf3u0hAAEIAAB CEAAAhCAAAQgAAEIQAACEIAABB5ugT5lxGT9Df1B+jS47mENWYKDmfBqWwfjAdYzpzfZxEQkEgmF Qt0Keh7t6/OkY9g+LaGCAFqHJA5BAAIQgAAEIAABCEAAAhCAAAQgAAEIQOARFOhTRtzXYLNPg+vG 728APQRvhR7WAfS4cePUnzAE0OomqIEABCAAAQhAAAIQgAAEIAABCEAAAhCAwKMsoJ4Ra4wWCdHw DqCHWgY9fAPocT2b+j8bBNDqJqiBAAQgAAEIQAACEIAABCAAAQhAAAIQgMCjLKAxgNaWQQ/7AHpI ZdDDNIAm6bPGlwgC6Ef5WwmuHQIQgAAEIAABCEAAAhCAAAQgAAEIQAAC6gLaAmhtAaP6CDpq1AfX 0Vj3oQFYgoMGvg9w3Wfmqel8pow1Hi5rQNP0WdvrAx9CqPt1jKMQgAAEIAABCEAAAhCAAAQgAAEI QAACEHikBNQzYh0Z48NwBzSJfZlB8IMqI4B+pP6l4WIhAAEIQAACEIAABCAAAQhAAAIQgAAEIPAI CjyiAfSDXYuDGT2T8nC5A1oul9NfUKj/a8ESHOomqIEABCAAAQhAAAIQgAAEIAABCEAAAhCAwKMs oCOAVmd5eO6AfrD3QQ/rAJpm0BpfH1iCQ50FNRCAAAQgAAEIQAACEIAABCAAAQhAAAIQeGQFtAXQ GkEetgD6Qd0HPdwDaJJBq79EcAe0uglqIAABCEAAAhCAAAQgAAEIQAACEIAABCDwKAtoDKC1gTyE AfQDuRX6IQigNb5EEEBrZEElBCAAAQhAAAIQgAAEIAABCEAAAhCAAAQeWQH1AFoHBQJo4wH5xEIE 0DpeZDgEAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIPDQCCKCN7/9N0AigH5p/P7gQCEAAAhCAAAQg AAEIQAACEIAABCAAAQhAQIcAAuhfAuj7uR70/QmgHTz9sEMAAhCAAAQgAAEIQAACEIAABCAAAQhA AAIQeIgFlEqljvhb/0NCoVAkEkkkkrq6OplM1tjYqFAoWlpajNTD3H7WDMgiG7oHUZ/hZBMTkUgk FAr1F9HdUokNAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgMAjIKA7KdXz6P0LoO/DrdD3IYDWkxXN IAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhA4L4G0IOdQd+HAPohvqkelwaBh0YA39khAAEIQAAC EIAABCAAAQhAAAIQgAAEhojA/Q6gBzWDvj8BdLW8zbCdpHuG9a2Wt5Hul/LEQ3nv5zUajKOt41Cb j7Z5DrX6Ye3m4Ok3RL69YhoQgAAEIAABCEAAAhCAAAQgAAEIQAACDyCAHowMmox5fwJoqaLDsJ2E eob1lSo6SPehnD5fyhP38xoNxtHWcajNR9s8h1r9sHZDAI0fbBCAAAQgAAEIQAACEIAABCAAAQhA YOgIPJgAesAzaPXomdQM+IcQOnj6NbV2GbaTUM+wvk2tXaT7sAigDb7GAe/YT/MBn89wGXBYuyGA Hjo/YDATCEAAAhCAAAQgAAEIQAACEIAABCDwwALogc2gaQA9dawxLU8ZazwYAXR75y3DdhLqGda3 vfPWMAqgDb7GAe/YT/MBn89wGXBYuyGAxg82CEAAAhCAAAQgAAEIQAACEIAABCAwdAS0BtCWY02Y u9VYk57d1GrskN4tx5oypz3FxFQkEgmFwoESd/D0u3X7Dt3zt2wNNTLSuOdv2UqbkQIJ9VQq9X84 jAJo/S9qsFv21XzmJ5+witj6zGrv3n3793vr01KljbW1dRmHq1I51B721c3g+fdJQ89nBwH0QH27 wzgQgAAEIAABCEAAAhCAAAQgAAEIQKD/AvoG0Ja/BNAmCKCZWVuokZFg6ivqO9/85VAjI2bLW7fv 9DPU0xFAe/qd+uSzL0xMTSdNnrrcziHqRqnulTqmWE07GpWsu42Oozq667jGi3Fx33zzjZmZmZWV tYuLi7yhUcVnMB5qm08hq2jx4sUWFhZTpkxZsGBBZmYWObueEeet23cezQBam5vBzx0C6P5/E8cI EIAABCAAAQhAAAIQgAAEIAABCEBgKAv0IYAeFhn0fbgDmrmKAgmglUplR1lhtpFRtpFRR1mhUqks +8+LoUZGzJZ0DQ2VSv0fagugt3sdnWgx2Sso6kKWMOxa/rxFP336+ZexWRWGJcg6etFDvQbQ6hcV Fh4xderU+GuJipb2ikqRra3dt99+p2hpU2+pZ01LW6c+LQmaSktFS9tUS8uQ0BPNrR0Njc3XEpJS 0zJJm5kzZ+YVsFTaa3y4a/fdCFrjId2V1tbW7JIy3W3u81F1zL66GTzhPmno+ezgDuih/CMHc4MA BCAAAQhAAAIQgAAEIAABCEDgURPoWwA99DPo+xBAMz9HjgTQJHRW3ts6ygpJAM1sST9FkFlppHNj tqTdaQpMCrGZggkTLXb4HKf1sZmCyVOtXPYfu5QnHj9+fERSETm0eqOT/badl/LEi1baf/DBByam pqZm5qSZxRRL573+02Z8OmGixYq1my9kCUkXPbvTU1/KE5PgUmXm0oaWyZMnnz4bTeulDS3Tpn10 MvxMU2vX+PHjBVUScmiHu+e+/QdIuUJUs3bdektLyxkzZx4LPk4qraytj58Imz17jpW19ZGAQFs7 ezqmi5v7DndP+pAUNM6HVcIdN25cnbxZpXFTa9eMmTMzcwqaWrs0nr2QXTZ33vcTJkxYvcbW0dll 914vMkJ+Uel3c+dNmDDB1s7eabsrrdc4iJW19YlTp2fPnjNpkoXD5q1yRTsZxMvb5+MZMyZMmPD1 N99cv5lBKq2srUNPnf7889nm5hNcd3iU8irmL/hx4sSJq1avqZU16d9G20woJhmKfu2Tm7YnQs/J h4SemjXrs8mTJzs5u8gaW8kcijnlS5ctt7Cw+Pzz2edi40glfXa8Dx6ysraeMGHCrFmfpWfl0WmT AgLoR+3HGK4XAhCAAAQgAAEIQAACEIAABCAAgaEs0OcAmqywPGTXg74PAbRU0UF3EkBnGxndC5/v /jfbyIgE0LQZKZBQT6VSWwSt0kyq6CDdmWnvpTyx3+mr48aNO5/OZ9Yvt3OYv3SNtgD6Up5Y5RZm iymWn38190wy++z14v/N+Xqjy14dAbR6d+apNV5j0s3McePGVdY2MC9qq+N2O/v1UkXH+PHjORVi cshlx87d+7ylio66pvZ5P8z32LVXXK8o5lV+9vnsuPgkqaLDysr6x0WLeZU1lbUNZQKxmZm5oLpe quioaWidammZml3APAVFU6kU1yusrKetXG0TfeEyr7KGefTjGTNvZuVrPHttY9v/Zn120NdfIm+5 eDXJ1Mxs5+59UkVHbWPbp/+b5eMXIJG3XElMmTBhAqnXOAi5hEVLlvEqa/ii2s8+n3066jyZwJlz FzjC6trGtuOnIiwtrcTSJtJ46bIVArGUza2wmDz52+/m5rBKxdKmHxb86B8YQjpaWVnrbqNjJhST idBXN21PRK8TIxc474f5HGE1t1Ly7XdzvX0OE9LPZ8/Zs/+gRN6ceCNjwoQJ6TmFUkUHeXZSsws+ /ngGp0Jc19SeX8xlcyvUJz+Uv+dibhCAAAQgAAEIQAACEIAABCAAAQhA4JESMDCAvncr9JD7QML7 EEBXy9vorjuAps1IgYSzKpXV8jb1DFq9TbW8TWMAvffYWVMzc2YEfClPvN559xffLehTAL336Bky yL7AyI8//ayfAbTK/CNjLpubm6tU7vY6+OOiJdXytvHjx7N5InLU2dVj55791fK2m9mFkywsxLIW Uh8QdGLDpi3V8jZLK+tzcdfoUEuWrQg6cbpa3nYu7tpnn8+m9bSgzTyniLNpi+P0j2d88MH4Hxct ySvmky4fz5iZnJ6r8exJqTlTp1rSKS1fudrdc2+1vO1uvaUVrf9ptQ2p1zgIuYSL8dfJ6dx37XN1 30VnSwt3k9bsQpXGK1auITjV8rZDRwIJiD5tdMyEiUnPTl9szBpS1uam8YmwtLKmV6pj8mdjLpHB o2KvfDZ7TrW8LTktx8JicpW0mdT/vMWRKJFnJzWbZWllfSnhBm2gMk/cAf1I/QzDxUIAAhCAAAQg AAEIQAACEIAABCAwxAUMD6DvZdBD62MJ70MAXVHXQnfdS3DQZqRAwlCVSvKQmUFrbFBR16IxgB6o O6CPRv/ymYSB51PMJ07qZwCtcglxiWnjxo0rFUqZ9T9vcVptt66irmX8+PH5ZZXk0DYX9x27vCrq WiLOX/7gg/Fm5ua/7GbmS5b9VFHXYmlllZxRQMc5Hh79w4+LKupabNZu2HfQj9bTgg5z0iajkPPD j4sWLFpKHk7/eMa1mzkaz376XNwXX35NR97i5OrqsaeirkW13tmN1GschFzC9UwWGWf3/kObtjqT sn/wqVmfzSbX+8EH42OuJKs0XmO33jcghDT2Czyx0mYtKVtaWdEBNbbRMRMmJhmNfO2rm8YnoteJ kQu8djOHnDQxPX/SJIse0kufz/mCzmf3/kM2azdU1LWQZ6eiruVYaMS3c7+fOGmS3bqfC7ki2pJO foh/28X0IAABCEAAAhCAAAQgAAEIQAACEIDAoyPQrwB6CGbQ9yGA5koUdCcBtLYPIaTNSIGEeiqV 9CHJoOlD9YLGADomQ2A+cZLKGtBTLK23ex29lCc2nzDx5JUckiYvWG5D1oC+lCeeavXR0ahfEudL eWKLKZaMO6Cj6B3QenYn45OvGq+RLZROmmQREBpBL6pYWG9lPe3Q0eNciWLipEk388rIoVW29q6e +7gSxdUbOZbW0zjVTbQLKUy1tEpIL6CVZOSkTJa5+YR0Fo/W04LG+dCjpBB6JsbSypqUP/p4xuXr WRrPHpecOWWqJZ3S0hWrnd13cyWKuKSMqZa/1i9buYbUaxyEK1EwL2HnPp+NW5y4EkVyFnuSxeSr N3LI+B99PCMyLlGl8SrbdQf9g8k8Dx0L/WmNHSkzB9TYRp+ZkKHo1766aXwiep0YucCTkRfIecOi L836fDZXorh0PXOSxeRSUQOpX7dpq6PrTq5EQZ4dOsl8rnjZyjWbnd1oDSngDuhH5wcYrhQCEIAA BCAAAQhAAAIQgAAEIACBoS/Q3wB6qGXQ9yGALhE10T3UyIhv/nLZf15U30ONjGgzUiChnkql/g9J d2baS8rOe/0nWkz2Coq6kCUMv1Ywb9FPM2fNic0UXMoTf/Hd/PVOuy7mVB06dcnUzJwG0J/O/mrX kXA6FFkD+uz14rPXi2d98e2G7XvIIT2703HohxCqX9QB/+MWk6eciLrEqpDdyOcu/WnNp7M+z+PV lIia5s1f6Oq5n13ZcDYu2dx8wnaPfSWipuKqxq+/+97RbVcer6a4qjEho+hiUmaJqGmqpdXVm/nM 8ddu3DLny2++/3Exs5KWNZqn5HI89x9OyeUUVzWmswQLl65YutKGdPno4xkXkzI1np1d2TDjk/95 7j9cJJSdjrlmYmrqtGN3iaipSCifMfPT3Qf8i4Tysxfvrg1N6jUOonIJ7nt91m92KhE1xSVnT54y 9WYBr0go8/I9dvfjHy8kqDReabPO2y+YzPNgQOjy1XakzDTR2EafmVAxUuirW4moSf2J6HVi5AK/ mft9BluYwRZ+9c3cHXsOlIia2JUNn8763G23d5FQFn3lhrn5hLjk7BJRE3l2rt7Mj7qcUiioLyyX /mRjv9Vlp/rkh/53XswQAhCAAAQgAAEIQAACEIAABCAAAQg8IgIDEEAPqQz6PgTQLGED3c8uXB5q ZKRxj5n5GW1GCiTUU6nU/6G2APpSnnin74mZs+YYm5hOtJiyzPbnyJRSEgoHnk+ZOWuOqZn5D0tW LbP9mQbQu/1PT7X6yHziJJf9geQO6G27DltPnzlhosVyO4fYrIo+dVcPoDVe1JHjZz6b/aWJiem4 ceO+mTv/eh6XNLuQlP3Z7C/NzScsXWljt3GLk/teUn+zoHyV3YYpllYTJk6a/cXXoZGXWMKGKZZW cSl5zPEjLiaPGzfONzCMWUnLGs1TWRU/rbG3njbd1MzM0sp69dqfbxYKSJdp02ecT8hgCRs0nj0u Je+Lr78zMzdfuPQnu41btrnuIr0uJmd/8dW3pN5m3abtO71IvcZBmJfgtvvguk2OpPFmZ4+Jkywm T5nq5L73szlfhcVcU7nen9bY7/MNJI29j4QsW2VLyswBtbXpdSZkKPq1r24sYYP6E6HPxKZYWu3x OfrxzE8nWUxe+/PWPF4dmcPVNNa8BYsnTJw083+f+YeeJZXk2Ym+mvrZnK/MzM0nWUxevsounV1J p00KuAP6EfnphcuEAAQgAAEIQAACEIAABCAAAQhAYFgIDEwAPXQy6PsQQOeVyw3bSahnWN+8crmO AJoZARtQtphiGRybakBH9S76XKNfyNmpltZX0ooMpmB2vJZVZmpmlsYWMStpWZ/50MYDUliwZMX+ I6EDMtQDHMQAN91PxP28FgTQw+JnDyYJAQhAAAIQgAAEIAABCEAAAhCAwCMiMGAB9FDIoHvSZ1PL sSZ0n2JiKhKJhELhQD2dDp5+Wbx6w3YS6hnWN4tXT7qrZ779rxnwALrXazx8PNInKKLXZr02yORK 1291Xb3OQVvLfpprG1al/sT5hCsZJRmcOv+T50zNzK5mlqo0GHYP++rW6xNxPwUQQA/UtzuMAwEI QAACEIAABCAAAQhAAAIQgAAE+i+gNYC2GDu+H/uHFmN73yeP/XAA93tn/O20jY0HPIBOK5MatpNQ z7C+aWXSYRRAG3yNfeqYXFhlamY+83+fx6WVaOvYT3Ntw6rU7zl8fPJUK1Mzs09mzT5yMkbl6HB8 2Cc3fZ6I+4mAALr/PxgwAgQgAAEIQAACEIAABCAAAQhAAAIQGCgBHQF07wnyvcxXteUAxsp9Here lO7F0IMQQKcU1xq2k1DPsL4pxbWDF0D3/x5qOkI/r9FgHG0dh9p8tM1zqNUPazcE0AP14wHjQAAC EIAABCAAAQhAAAIQgAAEIACB/gsMSgBtMaC3Nvcpg74PAXQCS2LYTkI9w/omsCSkO416h2ahn9do MI62jkNtPtrmOdTqh7UbAuj+/2DACBCAAAQgAAEIQAACEIAABCAAAQhAYKAEBiuAflAZ9H0IoEk2 h68QgMCQFRio748YBwIQgAAEIAABCEAAAhCAAAQgAAEIQKCfAoMYQD+QDHqwA+h+cqM7BCAAAQhA AAIQgAAEIAABCEAAAhCAAAQgAIFHR2BwA+j7n0EjgH50Xru4UghAAAIQgAAEIAABCEAAAhCAAAQg AAEIQGCICwx6AH2fM2gE0EP8BYfpQQACEIAABCAAAQhAAAIQgAAEIAABCEAAAo+OwP0IoO9nBo0A +tF57eJKIQABCEAAAhCAAAQgAAEIQAACEIAABCAAgSEucJ8C6PuWQSOAHuIvOEwPAhCAAAQgAAEI QAACEIAABCAAAQhAAAIQeHQEdATQ4++FuR8OYGHy2A8Hdb831fEWY3t2Y2ORSCQUCh08/bBDAAIQ gAAEIAABCEAAAhCAAAQgAAEIQAACEIDAfROQy+W6A+jhl0HrCKCV2CAAAQhAAAIQgAAEIAABCEAA AhCAAAQgAAEIQOC+CMjlcqVS2WsAPWwyaLLKBwLo+/LiwUkgAAEIQAACEIAABCAAAQhAAAIQgAAE IAABCOgScPD00zOAHh4Z9L3omSwYomEJDl0YOAYBCEAAAhCAAAQgAAEIQAACEIAABCAAAQg87ALd 3bfu//6wo2q9vj4F0MMgg74XQJOpDqcA2tnZ2d3dXesTNWwPmJiY5OfnD9vpY+IQgAAEIAABCEAA AhCAAAQgAIFhLMBMG955553c3Fz9L2bUqFEsFkvP9q+++mpWVpZSqaSFXjsOtfn0OuEh0mAwnhdt 6c2JEyfq6uqGyIUP7DTuf/rc3X1rYC9hGI3W1wB6qGfQjAD6Xvo8drwF40MIyXPj7e09duzY3/3u d8uWLVN5toKDg99+++0//vGPr732WlpaGjmqUCi+/vrrkSNHvvzyy76+vipddI9ZWlo6derUp59+ +u9//3t4eLjGvo2NjaNHj1YoFEql8tatWyMY2+OPP25nZ0d7aZzekiVLRo8ePXLkyNdff33Pnj2k cUdHx4IFC1555ZWRI0f+5z//OXfuHB1EqVRWVVX97W9/UyqV2qY3c+bMP/zhD2QiL7/8Mu2rkU7H nCMiIj799FPaHQUIQAACEIAABCAAAQhAAAIQgAAE7o8AM20w4IyDEXQaMA3aZbDnM2LEiJSUFHq6 Xbt2WVpadnR00JDGyMjoySefJA/DwsLeffddmpyMGDFCPdxns9lTpkx55plnXnrpJXt7+9u3b9PB aeHdd989fvw4fahPYTActKU3QzOA1vhMqdBFRkaamZmNGDHihRdeGDdu3L59+7q7u5lttAXQXV3d 5eXlhYWFubm5RUVsmUxGWnZ1decytuzsbKFQSA5xOJycnBxysKCggDlyW1s7qSFt1HM2bbkcmapA IPjjH//40Ucf0Zm/++67jz32WEVFBa0xNzc3MjLKyyK0S84AACAASURBVMtTKpX0Nfn0009PnDix sLCQNtNY0BF4akwg6SA6UkeNKaUBATQJdskaFwP2dfLYDwdk1zOADg8Pj4yM/Pbbb1UC6JiYmFdf fTUjI+POnTuVlZXV1dVEdvHixdOmTWtqasrMzHz66aevX79OxWlB45jd3d1vv/32tm3buru709PT //SnP2l87n18fObNm0eHooWmpqY//vGPqamppEbb9AoLC1taWpRKJY/He+WVVy5fvqxUKltaWpyc nCoqKm7fvn327Nknn3ySy+XSkX18fFasWKFjejNnzgwMDKTtaUHjZdKjSqVSZc4dHR3PP/98VVUV sw3KEIAABCAAAQhAAAIQgAAEIAABCAy2gLa0Qc/zDkbQqeepNTYb7Pn0Gmu+8MILV69epXPrNTt+ //33V6xY0dXVVVlZ+frrrx85coT2pYVeB6EtaWEwHLSlN/cngNYYzdPrVS/0+kwdPnz4hRdeOHXq VFNT0507dwoLCxctWlRbW8scihkTM8udnV0ikai1ta27+1Z9vSwnJ7elpZXZoLv7VkdHZ25ubmNj E6nncDi1tXUqbchDiaRGIKjo7r5F2jAnoFQqdeRypOUnn3xiamqqEkC/+eabrq6upAGfz3/11Vf/ 7//+jwbQ5PcZXV1da9eu/c9//qNyRpWH2gJPbQkk7a4jddSYUuoIoFtbW40sxjLuI1YtD1j6TFLj QQ2gxWJxZWUluVqKtXLlSpUA+v333w8NDaUNSKGrq2vEiBE3btwgD5csWbJo0SKVNvShyphFRUWP P/54e3s7afDll1+uXbuWNqaFGTNmBAQE0Ie0EBAQ8NZbb9GHGqdHjyqVSi6X+8orr/j4+DArSfmt t94KCwuj9R999FFcXJyO6WkLoMkIKpdJh1UqlSpzViqV06dP9/f3Z7ZBGQIQgAAEIAABCEAAAhCA AAQgAIHBFlBJG+jiGI6OjqNGjRo5cuRbb72Vnp6uVCq3bt1K/oT6v//9b1JSEpnYqFGjfHx83nrr reeee27ZsmWdnZ2kvqam5ssvv3zxxRdfffVVLy8vUkkHpwWNzZiXTFsOkfn0Gmv2NYB+9tlnk5OT ySUvXrx4zZo1zMsnZWYA/WAdNKY3GgPokJCQ4uLi8PDwwMDAxMREZnxMDx09evTmzZsKheLcuXPH jh2Li4tTuQFZqVSGhISw2ezw8PCQkBAVmaamptjY2MDAwPDwcD6fr3JU9zPV1tb27LPPqo+pMojG vFi9ksViSaX1KvW1tbUsFotW6gigy8rK5HK5tgBaRy6nVCqjoqJmzJjh7u6uEkA7Ozv/4x//IJfj 6Oi4efPmP/zhDyoBtFKpzMjI+P3vf69y1cyHOgLPXhNI5jhKpVIldSRHmSkliWQrKyvFYnFNTY1U KpXJZI2Njc3Nzb0G0AO/HEf/M2htd0DrE0B3dHQ89thjO3fufPnll0ePHr169WoSHHM4HCMjo6am JsJ38OBBExMTFWj6UCWZZbFYzAD6iy++sLKyoo1p4a9//avGu6onTpxIf6ehbXpkkLVr1/7f//2f kZHR22+/rb46j1gs/t3vfkdvvm5ubn7hhRc6Ojp0TG/mzJnPPffc008/PW7cuJiYGDpVUlC5TOZR 5pxJvZ2d3erVq5ltUIYABCAAAQhAAAIQgAAEIAABCEBgsAVU0gYS+GZnZ7/yyisSieTOnTtlZWXk b/nDwsJqampu3brl7+//l7/8pa2tTalUjho1ytTUtKampra29oMPPnBxcVEqlXfu3DE1Nd2wYUN7 e3tlZeU///nPuLg45tLP5CzamjEveajNR3esqVQq+xpAOzk5LVq0qLW1lcvlvvbaawSKKUDWTCC3 rD7w50VjeqMtgI6NjW3v2cLDw5l/cB8SEnLhwoWOjo7m5uagoKDIyMie+LX73Llz6uuJh4SExMTE tLe3d3V1MVnu3LkTHh6elZV1+/ZtiURy7NgxqVTKbKD7mUpJSTEyMmpubmZ2US/T+FhHoa2tPScn p7m5RaVNSUmJSCSmlRwOJ69nY7OLZbK7cTPZOzu78vPzu7q6SQCdl5enkrPpyOVaWlrefvttHo+n HkBHRESMHTs2IyNDqVS+8cYbZWVl6gF0a2vrmjVrJk2apH7htEZb4KkjgbSxsVG/K1cldVQqleop pXoALZfL9Q+gBz6DtujfWhzaAujq6uqqqirdd0Dz+XwjI6NJkyZJpVKxWPzee+9t27ZNqVTm5uYa GRnduXOHPEMhISHvvvsufbZUCirJbFdX1xtvvLFp06a2trbr168/9dRTZmZmKl2USuXIkSPJbyqY h/h8/hNPPCEUCkmltunRLrdv305JSSE/A2ilUqns7Oy0sLBYuHAhrYyIiJgzZ45SqdQxvbS0NLlc 3tnZefLkySeffDInJ4d2VyqVKpdJD6nMmdQ7Ojp+//33tA0KEIAABCAAAQhAAAIQgAAEIAABCNwH AZW0gQS+BQUFo0aNSkhIUL8jlUzptddey8/PJwF0ZGQkqYyOjn7nnXeUSmV+fv6zzz5Lb3r18fFZ sGCBegCtrRnzqofafHTHmhoDaLoG9Pjx45mXRsoZGRlvv/32448/bmRkpO3OPHoH9AN/XjSmN9oC aJFIRK+RfoIauamZHrp06VJmZiZpVlBQkJiYqEIUEhJCUy/mobq6uqCgIPoaS05OZp5CqVTqfqai oqJGjBhBB5w4ceKIESN+//vfq3w6Go2JtRW6urpLS0vLy8tVGrS2tuXk5JA1Osihpqamjo7Orq5u qVSak5OrUDST+vr6ei6Xx2yjkrPpyOU2bNjg5OSkVCo1BtBeXl6rVq1KSUkxNjZWKpXMAJq8Jp94 4onnn3+eLupLNZgFbYFnrwkkcxD11JEcVUkpSSRbVVVVXV1N7oCWy+VNTU163gE9KOtB9yeD7k8A XV1dbWRkFB0dTaQCAgI++OADpVKp7RcCTG5aVk9mi4qKpk6d+txzz02YMGHp0qVfffUVbUwLf/vb 39TvgHZ0dLS0tKRttE2PNiCFlStX0pumyWoys2fP/vjjj5m/Tfr++++Dg4NJe32mN2vWLJLF03Op XyY5pDJnUqnxd2h0KBQgAAEIQAACEIAABCAAAQhAAAIQGAwBlbSBBL5KpfLYsWMmJibPPPPM3Llz yV9R+/n5/etf/yKfkPb444/Hx8eTADo7O5tMLC8v79lnn1UqlefOnXv88cfp5/I99dRTH3/8sXoA ra0Z8zKH2nyeffbZhIQEOsMdO3ZMnz6dPtQYQKt8fmBAQACRmT59emtr6/PPP+/h4dHV1VVdXW1u bk5uIWe2Yd4B/cCfF43pjbYAWiaTEZmcnBxmohUSEkIPxcfHFxUVkWZsNvvKlStMTJJW08bMQwKB ICIigtbk5OSQFySt0f1MabwD+o033oiKiqIj9CRmv9ynrJIvk4ddXd1cLresjEPuX2a2qaoSlZaW MWuYZS6XW1UlIjV8fnld3W/WhiYTYOZsGnM5Npv9j3/8gyzMoDGArq2tfemllxYsWECW4WUG0OQ1 eevWrejo6GeeeYb+PoB57aSsLfDUM4HUljoyT0RTSmYAXVtbW19fb0AAPYTug9YWQEskEpFIpPsO aKVS+ec//5n+PoQG0F1dXU899ZRha0Az0ZVKpbW19Z49e1QqlUrlJ598orJK8p07d/7+97+rLFij cXoqoy1btoze7Hz79u3vvvtu8uTJ5G9nSMtbt2795S9/qa+vV+moY3qfffaZPgG0xjkrlcqPPvro 6NGj6qdDDQQgAAEIQAACEIAABCAAAQhAAAKDJ6CSNtDAl5xRLpfPmjVrzZo1paWlzz33XG5uLrnn 9NVXXyUftTdq1Ch6B/S5c+fIHdC5ubmjR4+mfyZOJ08HJwVtzWh7ZmY9RObzn//8JzAwkM5wyZIl Kp8c1qclOLhcrpGRUUtLCxnwwIED5ubmdHBaoHdA05oH9bxoTG8eSADd6x3Qup8pjWtA9zWA5vP5 paWlnZ1dzHCZlAsLC+vqpOr1pIYG0F1d3fn5+e3tHcyW5FlWz9lIPY0NfX19n3zyyRd6tqeeeur3 v//9yy+/TNq8++67JJ2fOXPmH/7wB5LgqwfQpPFLL7106tQpUlb/qiPw1CeB1Jg6qpyFppQkkhWJ RBKJhATQDQ0Nfb0D+gHfB01CZ7J+tI4AWiwW0wC6u7u7vb19+fLlixcvbm9vp391sn79egsLC7lc Xltb+/777zs7OxO4RYsWTZ8+vampKSsr65lnnqG/22EufaJtzMLCwraezdvbe/To0fRbD/MpOXTo 0Lx585g1ycnJI0eOVGmscXrNzc3Hjx9XKBS3bt26evXqyJEjT548SYZasmSJqampyqo3ycnJEydO pOfSOL3W1tYLFy60tbV1d3efPn36ySefzMrKIl20XaZSqdQ4Z22fo0ongAIEIAABCEAAAhCAAAQg AAEIQAACgyGgkjaQaJjFYiUnJ3d0dLS3t3/11Vf29vY5OTl//vOfq6qqurq6vLy8nnjiCRpAm5qa 1tbW1tXVffjhhyQkuX37tomJyYYNG5qbm2/fvl1aWkoSA5UAWlszZpAy1Obj7u7+//7f/+PxeGT1 gKefflpl1Yg+BdDd3d1/+ctfdu/efevWrbq6uokTJ65cuVL9WaYB9IN9XrSlNw8kgCZrQGdnZ2tb A7rXZ+rw4cN//vOfT5061dTUdOfOncLCwhdffFH/O6AFAkFJSYnG9LmxsTE3N5d5qLOzSyaTd3Z2 9SzBUZ+Tk9vUpOjuvtXY2FhSUkLSZ9pGPWfTmMu1tLRU3ds2bdo0efJkeiMzDaAFAgH5BFGVJTjI HdB37tyJjY194oknyHI66i88UqMt8NSYQKoMojF11JZSkkhWLBZLJJK6ujqZTNbQ0KBQKFpaWtra 2owsxpJwWc+vH97LfwesoM/HEtKTTh5Lz/vbCRsb19TUVFdX0wB68+bNRoxt48aNBLGjo2Px4sXP PPPMSy+9ZGNj09HRQeoVCsVXX301YsSI0aNH+/r6UvFPPvnE29ubPNQ25qZNm5577rkRI0ZYWVkV FxfTvsxCU1PTmDFjFAoFrVy4cCFZRInWKJVKjdNrbm6eOHHis88++6c//emdd94h994rlcqKigoj I6Mnn3yS/l0MOWRvb7979246rMbpKRSK8ePH/+lPfyKLo9NlSZRKpbbLVCqVGuccERExa9YsejoU IAABCEAAAhCAAAQgAAEIQAACELg/AippAwl809LS3nvvvREjRjz//PNffPGFXC5XKpX29vbPPvvs iy++uHnz5vfee48G0F5eXm+88cZzzz23ZMkSGpLU1NTMnTt31KhRzzzzzPvvvx8bG8u8nZkm0Rqb MYOUoTafrq6ubdu2vf7663/605/+/e9/q/xVuj5LcKg8renp6WZmZs8888yLL774ww8/NDY2qjRg LsHxYJ8XbenNAwmglUplY2NjTExMYGCgyoccEsBenymlUhkZGWlqavrUU0+98MIL48aN8/b2Jita 0KeAeWMys9za2padnZ2Tk0s3iaSGNijv2ejD7u5bnZ1dxcXFubm5eXl5bHZxfb2MHBUKK6urq0mZ tlHP2TTmcnSS2taAZjZQCaDJGtAjR47817/+xbyjX6ULeagt8NSYQCqVSvoLJG2po7aUkkSydAFo mUzW2NhocAD9wNbi6CWDNjaura2VSCQ0gNaI3tfKW7du/fOf/1R5+fZ1ENre1dXVw8ODPhy8wr/+ 9S8OhzN446uMbG5uXlhYqFKJhxCAAAQgAAEIQAACEIAABCAAAQjcB4H7ljbocy0DG6Toc0bdbYba fHTPdlCPPoLpDTNEHoxyUVFRS0urysiD+iQO5cFJJEvX35DL5Y2NjeQTCA24A/qXtTisjM2O+h7m 8zg8LifgkK+VsRkNiGnBoDbm2m6IpsMyCoyboI2N6+rqampqBjaAHsrPK+YGAQhAAAIQgAAEIAAB CEAAAhCAAAQgAAEIQOCBC5BItqamhq6/QReAbm9v7+sSHL9kvgGHfOXyeroHHPJl5MK/rJJhWBuD A2ipVFpbW4sA+oG/4DABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhA4NERIJFsbW2tVColtz/T9TcM D6D5PA5Nn+Xy+nI+Vz2ANqxNXwLoD39dwNrYWCaTSaVSB08/uVzu4OmHHQIQgAAEIAABCEAAAhCA AAQgAAEIQAACEIAABO6DgFKplEql5OMH6e3PbW1tHR0dBt4BzeP+JoDmcsrUA2iD22jMoNXH76m5 twqHsbFcLq+vrycr6z86v17AlUIAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQeOACJJulHz/Y2tra 3t5ueACturyGzyH1gLg/bfTOoH8NoBsaGmQyWX19PVkMurq6WiwWV1VVVVZWVlRUCASC8vJyfs/G 4/G4jI2jtm2eFz1v7PFe90Nu19JuFmZlsA67Xeu1MWmweV602tl+rVizZs2qVat+fczh5OTkmJqa Xr161czMLCkpiRyaNGnS0aNHSbmsrGzatGmHDh3icDjz5s3z8PCg3U1MTCIjI0tLS42Njc+dO0fq Y2NjjY2NS0tLr127ZmxsnJycTOpLS0vT09NpX1qYPXs2c0wOh7NmzZrly5dzOBw3N7f58+eTlllZ WcbGxnFxceThkSNHjI2Nc3JytM2qqKjIxMQkNDSUtCezio2NZbPZxsbGFy9e5HA4U6dOPXz4MJ1J amoqLaMAAQhAAAIQeMQFyn67lfZsJSUlxcXFbDa7qKiosLAwLy8vJycnMzMzLS3txo0bSUlJ8fHx 5IesAXoTR6VipwJjHwui5YEqaHtSUvTbLl++vHXr1r/0bBs3brxw4YI+/bSdVGP91atXXVxc3Nzc rl69ev369dDQUHt7+/Dw8Pz8fI3th2wli8WKiopyc3Nbv369i4tLYGBgdHT0hZ4tOjo6KCiIHHJz czt79iyLxRqoC2Gz2QkJCV6Mzd/f/+bNm/0fPzAwcMOGDUuXLl2ox7ZkyZJ169b5+fkZdl7yMli9 evWOHTtCQ0MDAgLs7e2XLFly4sSJwsJCw8bUs1dpaWlGRsa+fftcXFxOnjwZGRnp7e3t7u4eFhY2 2KfWc4ZoNsQFiouLY2Njg4ODr1y5UlJS0s/Znj17dn/PtnPnznXr1i1R2+zt7d3d3Umb8PDwfp7u 4sWL8fHxSUlJN27cSEtLy8zMzMnJycvLKywsLCoqYrPZxcXFJSUl5P0AeY+Qk5dPCv08dT+7//YN y91HzDctLBarsLAwNzc3PT09KSkpNjbWsNPl5RekZ2QZ1he9IAABHQKM9JSbkZldWFjE5/PLy8sF AkFFRUVlZWVVVZVYLK6uriZLP9fX1zNvf25paWlra2tvb+/s7DTwDmgrY7OAQ748bi8fQtifNuoZ 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 kBA2my0QCDgcTmVlJbN5ZWUll8sVCARsNvvUqVMODg4+Pj4CgYDZpq/l4uLiU6dObdiw4cCBA2lp aU5OTitWrCBXtGrVqpCQkOLi4r6OyWy/Y8cO6qNnYdu2bcwR9CkXFBTEx8e7urouW7Zs7969ZNGS CxcunDlzhnlSOzs7Z2fnY8eOJSYmlpaW6jOy7jYVFRUZGRn+/v52dnZeXl4xMTG7d+9es2YNPema NWu8vLz6+QrUPQccfTgEBAJBfHx8WFjY9evXKyoq+n9RWVlZF/XY0tPT+3+uhISEmzdvZmRk5OTk kPS5uLi4tLSUy+WS0Jn8OTy9LbGqqqq4tIy8Wej/2ckIXB7v5KnTtms3fvnN93S3Xbvx5KnTXN7d n8Uat9++Ybn7iPmmhc/nc7nckpKSgoKC9PT0a9euaRyk18qMzFyVb+a9dkEDCEBAfwESolZVVWVl 55LcmUbPdXV1JHqWy+UNDQ1NTU0KhaK5ubm1tZUsvtHR0TEYAfSgZ9BaM25j49bWVppBNzY2NjQ0 0BhaKpXW1dXV9mw19zaJzm37j1cXjj+re9+5NuFmUmn6jbK9PyfpbkmObv/xqs5z4iAEIAABCEAA AhDQS6D6t5vKmmNCobC8vJzL5ZaVlZEMOi8vLysrKy0tLTk5Wa8TqDWa/FKBAXvMqQqJRJIQKwz1 Kc/LrJJIJFsWlRowjo4ukUECiUSio8FgHBr/WPiAD6tG/ktFbm9bVlbWoUOH3n///fHjx1/t2SZN mvTf//533759WVlZuntrO6nG+kuXLm3ZsiUsLCwoKGj58uUVFRVOTk6HDx8OCwtzdXUNCgrS2Euf yvLy8hMnTmzatGnjxo07duzYs2cPWSfZ39+fdA8KCiI1e/fudXd3/7lnCwoK4vP5+oxP2+Tm5jo7 O+/atSstLU0oFKampp47dy47O5s2kEgkubm558+fv3Hj7p8tZmdn79mzx8HBQaUNs32vZbFYTNZN XrFixc8//3ypZ7O1tV2xYsXyns3Z2fnq1asikajXobQ18PDwIEPp/9XJyUnbaNrqyarf6qf46aef 1q9f7+bmtnfvXi8vr127dm3ZssXOzs7JyYmshXSxcgAAIABJREFUB6htQH3qq6qqsrOzjxw5sn79 eh8fn/z8/P3799vY2NBp2NjY7N692+DvbPrMAW0goE0gODh4pR7bkSNHtI2gf31ycnJaWlp2dnZe Xh6LxSouLi4rKyPpM7mTkfnn8OQ9QhmXRwr6n0VHyytX4+cvXPbVtz989e0PdvY/O2xxctjiZGf/ M6lZvtLmytV4jd1/+4bl7iPmm5aKiory8nIOh1NUVJSVlZWYmKhxkF4rb6Zm9doGDSAAgf4IkDA1 LT2bhKt1dXVSqZQZPTc2NupIn7u7uwf2DmiyHIfh9ztry5eZ90FrbmNs3NbW1tra2tLSojGGJjdE 19fXS+9tdTq3uJNFiz6M0r3/NOX8+s/iNnwet3JqjO6W5GjcySKd58RBCEAAAhCAAAQgoJcAeedH v6qsOSYSiUgGzePxSAZdWFhIFoNOSUnR6wRqjaaMLurr/sk/2HV1dZfOVJGOH7/BPne8ct03nL6O o7t9dEhlXV2d7jYDfvTDx84M+Jhq5L9UFPS2JSYmrlu37rXXXps7dy5pu3DhwjfffNPGxubatWu6 e2s7qcb6K1eubNu27fTp0yEhIStWrKiqqnJ2dj5y5Mjp06d37NgREhKisZc+ldevX9+2bduGDRuO Hz9O7mvW1kssFrNYrFOnTm3cuHHTpk2JiYnaWmqsj4mJcXBwiIiIEAgExcXFwcHBmzdvPnXqFLPx mTNntm3bdvTo0eLiYqFQGB0dvWHDhqioKGabPpU5HM7Ro0dXrVq1YsUKGxubvXv3VlRU7Ny508bG ZkXPtnLlymPHjpWVlfVpWGZjT09PMpT+X52dnZkj6FN2dnZWH3/VqlWOjo4hISE5OTmFhYU8Hq+4 uDguLm7Pnj3r1q1zdHSMi4urra3VZ3yNbTgcTnh4+IYNG7y8vDIyMsrKyvbs2bN27dqffvqJeO7Z syc5OVljX1RCQF2gurqa/LJH/ZABNcePH1+lxxYQEGDA4CpdUlJSMjMzc3NzCwsLSfrM4/HI0prk HkbyIWD0nsTa2lpeuYDmRCqj9fVhTOzFr7+b//V38/d6HSj97Ter0rKyvV4HyNGY2IvqI9P3KrTA fNNSVVUlFAr5fH5JSUlOTs7169fVR9CnJj0jR59maAMBCBgsQMLUjMy8+p5N1rORu56Z0XNLS4v6 vc/dPdtgBNCDex+0tgC6vLycfAgPXf2QfNxqaWlpyb2t+N7GxgYBCGgXIN9K8BUCEIAABIasAHnn R7/SP/ai/1NHMmiBQEDW4mCz2fn5+dnZ2ampqYZd1NTRJX3dP3q1pEZSn3W9ZvrrpRr72n/FT0uQ VIvr+WV1YYdFs/71S7P0REnW9RrHxeWsnFqxuD71mmThZA4dYeFUTmJstbhKyiut83WpjAoSy2Qy etSwMWl3PQvGj0Vqazn99ZKvxpb9OJmjsn89rmz667oMtT0vRb1tx48fnzJlyr///W8vL6+cnu3A gQPjxo2bNGlSQECA7t7aTqqx/tq1a46OjmfOnAkNDV25cqVYLHZxcQkICDhz5oyHh0doaKjGXvpU HjlyZO3atYGBgaWlpaR9bW2t+kflSCQScpTH44WGhtra2h48eFCf8WmbwMDAzZs3JyYmymQykUiU kJAQEBCg8o8iIyMjKCjo8uXLIpFIJpOlpaVt2rTJz8+PDtKnglQqvXTp0rZt28hdkqtWrdqyZUtx cXFKSsrWrVtXrVpF6rdt23b+/HmpVNqnwWnjXbt26XEX5m+auLi40O56FlxcXH4zxMqVq1evdnJy Sk9PJyOQ1wObzZbJZKWlpaGhoXZ2du7u7gKBQM9TqDfj8/nnzp3z9/dPSUkJDg5OSUkpKSk5ePDg 2rVrbW1t9+7dm5GRod4LNRDQKFBXV5eTk3Pt2jUWi1VXV6exTZ8qT5w4sUaP7dixY30aVmPj1NTU 7OzsgoICsu4zWSlIKBSKRCLmMqz0nsT6+nqBsJKZE2kcVp/KhMTkb+b+uHDRivSMTG3t0zMyFy5a 8c3cHxMSk1Xa0PcqtMB800Luhq6oqCgrK8vPz79x44ZKdz0fZmXl69kSzSDwSAkIBdLEWInGXSjo 27sOec+WnVNAQueGhgaSO9O7nkn0rC19vnXr1iAF0IOSQVuM/ZDcCq0hgzY27ujZ2tvbya3Q9G5o ckM0WR66qWdrxAYBCEAAAhCAAASGs0DDbzf1Zceqq6vJMotkLY6SkhIWi5WXl5eenm7YdVuOLjNg 3+9Q1djYKODIju0SfW/GY46wZUFFQ0PDjSt1ezdUhXqLayQN+RnSj167e5bM63U11fJqkfyUj/jc cYlM1lDKqp/2t7uHFkzi10gaaiUNZ/yrTxwUV1XIxVXyxsZGMrJhYzJnpWfZ+LFobS3nT+CHH66u Ft19U043ibghMlCyeCpfWy/L0WW0sUrh3u0Tmv9bUFDg7u7+0ksvvffee/7+/id7toCAAGNj4zFj xmzdujUvL09zz55alXPpfpiYmOjs7BwZGXny5MlVq1bV1NS4ubkdO3YsMjJy586dJ0+e1N1dx9Gd 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 1/rZPyvJsHafV/u71s/6x92HBRmKSn4rPd0uu7qOjo61syXWY4TXohrb2trXf3W3bD1GuGSKWF7f 1tHRcXd8Q8ekJ9K/YPrYxV4bf/Q34dwPRXM/FH38ql502p4XHaus+fr6WlhYfPDBBx4eHurN9uzZ 8+GHH5qamnp7e6sfJTXaTqqxPjU11c3N7eLFizExMba2tgkJCU5OTuHh4XFxcXv37j1z5ozGXvpU ymSys2fPOjs7b9++3dfXNzg4OLRni4yMJN1jYmJITXBwsK+vr6urq6OjY1hYWH19vT7j0zYcDmfn zp2+vr6lpaUKhSI3N3ffvn3qf0C/e/duskwHn8/39/d3cXEpLS2lg+hfuHLliouLCxnfycnp3Llz hYWF3t7ee7VsR48ezcjI0H982tLb29vW1nbt2rUknG1vb29oaMjIyEhNTW1paSHN2traCgsL/fz8 7OzsbG1td+7cSbvrWdi5c6eKlY+PT03N3X/mZLty5crevXu9vLyio6N5PJ5cLk9KSrK3t9+3b9+9 Jn34b0lJSVBQ0ObNm+lJ161bR0J8hULRh4HQFAKDJnD27Fktv8P6TfWJEyf6PwWyoD/57MGqqqrq 6uq6urr6+nq5/O4SV+TGZ7IMa1tbG3mTUFcvU8+J+jQTcXX1vPlLXNw0fLuYN3/JvPlL1Edzcds5 b/4SeUMDPaTyjkXlTUtjY6NcLpdKpSKRiMPh5OTk0I59KhSxOX1qj8YQeHQEKjitvk71KnsFp9Uw AXYxh5mvdnZ20vSV5rEknmVGz3d6NgMDaNWlM3wOqQfQmtqoBtD6tNEWQNMMevLYDy2MjW/fvk0v kl42M4mmKLSgoja8HorFYolEQtJnmUymvrT/QNWQP4qpra2VSCRisXh4KWG2EIAABCAAgUdBoKOj Q/3/6OiftYpEooqKCi6XW1JSkp+fbxiI9ZjKvu7TXq68Eafo7OzkslrjTjVxCls7Ozsvnmgi47iu qOvs7Kwqbz/hLY8MaGhq6BAJ2ue8W2U9prIws6WqvJ2ebredtLOzc+3sGusxlYunVCuaOlsUd8eJ OtYoq+tQNHZ0dnb2Z0x6Iv0LZo/F6d9Yz5banhey6prGr5cuXfL29j5y5EhKSop6gxs3bvj7++/f v//ixYvqR0mNtpNqrE9PT3d3d4+Pjy8qKvL09NzZs2VmZt64cWPfvn2RkZEae+lZWVVVdeXKlYMH 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 AAAAAElFTkSuQmCC --000000000000e18f6105b4972dba-- From peter.reitinger at gmail.com Sat Nov 21 05:56:36 2020 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]:49376) by lists-1.csi.cam.ac.uk (lists.cam.ac.uk [131.111.8.15]:25) with esmtp id 1kgLsy-0008At-5o (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 21 Nov 2020 05:56:36 +0000 X-Cam-SpamScore: s X-Cam-SpamDetails: score 1.4 from SpamAssassin-3.4.4-1883634 * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no * trust * [209.85.166.44 listed in list.dnswl.dnsbl.ja.net] * -0.1 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) * [209.85.166.44 listed in wl.mailspike.net] * 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider * [peter.reitinger[at]gmail.com] * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.0 HTML_IMAGE_RATIO_04 BODY: HTML has a low ratio of text to image * area * 1.7 HTML_IMAGE_ONLY_08 BODY: HTML: images with 400-800 bytes of words * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from * author's domain * -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from * envelope-from domain * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Cam-ScannerInfo: http://help.uis.cam.ac.uk/email-scanner-virus Received: from mail-io1-f44.google.com ([209.85.166.44]:36078) by ppsw-41.csi.cam.ac.uk (mx.cam.ac.uk [131.111.8.149]:25) with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) id 1kgLsw-000m5M-SY (Exim 4.92.3) for cl-isabelle-users at lists.cam.ac.uk (return-path ); Sat, 21 Nov 2020 05:56:36 +0000 Received: by mail-io1-f44.google.com with SMTP id i18so12252325ioa.3 for ; Fri, 20 Nov 2020 21:56:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=bpTphoSZBOeOgyrzfUZAKaVA2DpvtDemndoe3xf35CM=; b=SL+yWaQqAQ5t2Rytlwvh/2xLpDkUitAFEuMW7DZbfIhon1UxyMHVOcxVItcF4Lgkz+ DN3I6pKTPj+PFqDTXOSaS5bYpfV9kxbq8nxZIcZmrf1Ug+wb1YVJ+BBcTjJ/vH2HDrOg RFKu2wrJe/qztssA2+NHM5E9kjWiB8lHSPOx8f75zuCBdFGiXGtoaSXicw2F1MmzGbUF MhF3gc4jhTxd/pqxnxmIhWmsTW2UuQwgyuWpZ5S+ZMq5RpmTo7qiNdWR6rWdOFdD6jPq mpLg3R0FHoJZWjDi4GO8ZhJBz3k9KcfRQVAwgUlfBKmBPrJpbJYtoZ546Gs9DmqRAyzp oruQ== X-Gm-Message-State: AOAM530CAhMSGmEzMz7pHTKB/i1WYWqfGQH6CbAqh63a1sOUd2YumWVN 0vITtmgJp9EDWrGGYORjLcv/jaYyz/xa2ehd3k8SBFIt5pulKg== X-Google-Smtp-Source: ABdhPJwXcZrz2k5w1w1lbtfHbjincQzvT+qfHjfTAHkYNlo8qmbCIEL0R4Hv4glU+XKreXMpeyTJ6cbWRL2I161mjc0= X-Received: by 2002:a02:65cf:: with SMTP id u198mr21644531jab.24.1605938192932; Fri, 20 Nov 2020 21:56:32 -0800 (PST) MIME-Version: 1.0 From: Peter Reitinger Date: Sat, 21 Nov 2020 06:56:21 +0100 Message-ID: To: cl-isabelle-users at lists.cam.ac.uk Content-Type: multipart/mixed; boundary="0000000000008698c405b4979f09" Subject: [isabelle] Bug report Isabelle 2019 and Isabelle 2020 X-BeenThere: cl-isabelle-users at lists.cam.ac.uk X-Mailman-Version: 2.1.8 Precedence: list List-Id: Isabelle Users List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Nov 2020 05:56:36 -0000 --0000000000008698c405b4979f09 Content-Type: multipart/related; boundary="0000000000008698c205b4979f08" --0000000000008698c205b4979f08 Content-Type: multipart/alternative; boundary="0000000000008698c005b4979f07" --0000000000008698c005b4979f07 Content-Type: text/plain; charset="UTF-8" Hi, sorry for recently reporting just confusing behavior because of polymorphism as a bug. But this time, I am very sure to have observed a bug, if creation of a memory dump characterizes a bug. ;-) First the screenshot: [image: image.png] The theory reproducing this bug is attached. The try at the end of the experimental proof (sorry about the mess there, I am still experimenting with Word & Co theories) produces the error. Best regards Peter Reitinger --0000000000008698c005b4979f07 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

sorry for recently reporting just c= onfusing behavior because of polymorphism=C2=A0as a bug.

But this time, I am very sure to have observed a bug, if creation of= a memory dump characterizes a bug. ;-)

First the = screenshot:

=3D"image.png"

=
The theory reproducing this bug is attached. The try at the end of the= experimental proof (sorry about the mess there, I am still experimenting w= ith Word & Co theories) produces the error.

Be= st regards
Peter Reitinger
--0000000000008698c005b4979f07-- --0000000000008698c205b4979f08 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_khra02wm0 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 kqNzqRwocYQAQgAhg