From harley.eades at gmail.com Sun Jan 3 15:26:27 2021 From: harley.eades at gmail.com (Harley D. Eades III) Date: Sun, 3 Jan 2021 09:26:27 -0500 Subject: [Agda] agda-categories, a story In-Reply-To: References: Message-ID: Thanks for sharing! I tried the old version a long time ago, but it was just too hard to use for my taste. I'll checkout the update! Best, Harley On Wed, Dec 16, 2020 at 5:59 PM Carette, Jacques wrote: > More precisely, my version of the story; my co-authors can tell their > variations. This seems topical, given the recent discussion. > > > > I had been co-maintainer of copumpkin?s library. We managed to keep it > alive until agda 2.4.3 and limping in 2.4.4. After that, it broke > completely ? irrelevance had changed, and things did not seem easily > repairable. I tried to use the new Prop instead, but it was too new, and > that just did not work. > > > > Jason Hu then proposed that we rewrite it, from scratch, to be > proof-relevant. And in compatible-with-most-extensions MLTT, so enabling > ?safe and ?without-K too. Cubical was then way too new and experimental, > and ?main? Agda still needed a proper category theory library. > > > > I was quite convinced that that effort would be doomed to fail. However, I > was extremely curious as to why/where. I figured it wouldn?t take long to > encounter some unsurmountable roadblock, I would learn something cool in > that failure, and move on. I had been in ?Setoid hell? before, and it was > quite unpleasant indeed. subst-hell, however, is considerably worse, but > that?s another story. > > > > But, much to our mutual surprise, things did not fail. It wasn?t even > hard. One did have to be careful: > - avoid strictness at all costs. Never, ever, ever, compare objects for > equality. But that?s ok, so does modern category theory. > - avoid heterogeneous equality at all costs. That?s ok, so does modern > category theory. > - explicit levels are your friends. use them, just like types, they guide > you to the ?nice? answers. > - definitional equality is important. borrow other?s variants of > definitions that obey the usual symmetries definitionally. > - embrace the fact that, in that setting, bits and pieces of higher > category leaks in. > > > > And we ended up building the largest, in terms of number of concepts and > theorems, category theory library in any proof assistant. [See the paper > for the details of that. A preprint is on the arxiv, it?s been accepted to > CPP 2021. Though Lean might surpass us soon on sheer size.] > > > > Some things work out really, really nicely. For example, a Bicategory is > defined as a category-enriched category with 2 extra coherence laws. Very > simple. Compare to the ?expanded? definition on the nLab (or in other?s > libraries). > > > > The setting also saved me at least once: I foolishly believed the > too-na?ve version of the Grothendieck construction that?s on Wikipedia and > tried to implement it. And it worked? except for that most pesky of > Setoid-induced law ?-resp-?. Because, well, it?s false. Because the > Grothendieck construction really doesn?t work on the 1-categorical level, > it really really does need a Pseudofunctor. The nLab, as usual, saved the > day. > > > > And while I?m telling a story, categorical stories without Adjoint > Functors is not quite complete, right? [I?ll forgo Yoneda, this once ? > ]. There are, in the literature, multiple definitions of adjointness, and > proofs of their equivalence. The good proofs have weasel words here and > there about size issues. Here, Agda shines: the normal encoding of all the > definitions ?work?, but the most elegant definition (Hom isomorphism) is > not level polymorphic, while the unit-counit definition is! This was quite > shocking. There are a few other definitions in CT that are like that too, > where only one of the various definitions is fully level-polymorphic. I > think this betrays the fact that most of CT was worked out in a > set-theoretic meta-theory, where universe sizes are not first-class. > > > > Personally, I am a big fan of the ?mathematics multiverse? (thanks for > Andrej Bauer for the phrasing), where one ought to explore what mathematics > looks like in different meta-theories. I kind of like poking around in > various bits of it, whether it?s fashionable or not. Some math, such as > category theory, seems remarkably robust with respect to changes in > meta-theory (within reason). > > > > So, for all who have managed to read this far: do I think that this is THE > way to build category theory in Agda? No! It is _*A*_ way. A perfectly > fine, surprisingly workable way. Would it be how I would build it in > cubical Agda? Absolutely not! That would seem rather perverse. > > > > Jacques > > > > PS: Categories with Families. Those have stumped me in this setting. At > least, Pi-types in that setting have. It?s subst-hell all over again. I?m > going to wait until someone does Bicategories with Families, or whatever a > proper 2-categorical equivalent is. > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From P.Achten at cs.ru.nl Mon Jan 4 16:22:08 2021 From: P.Achten at cs.ru.nl (Peter Achten) Date: Mon, 4 Jan 2021 16:22:08 +0100 Subject: [Agda] [TFPIE'21] Third and Final Call For Papers: Trends in Functional Programming *in Education* 2021, 16 February 2021 (with Lambda Days 2021 & TFP 2021) Message-ID: <33847e40-a034-5131-9869-7353758ed7f4@cs.ru.nl> ---------------------------------------------- ?? TFPIE 2021 3rd and Final Call for papers ---------------------------------------------- *************************************************************** -? Submission deadline: January 11 2021, Anywhere on Earth. *************************************************************** https://wiki.tfpie.science.ru.nl/TFPIE2021#TFPIE_2021 (February 16 2021, co-organized with TFP 2021 and Lambda Days 2021) Because of the covid pandemic, the events are online this year. The goal of the International Workshops on Trends in Functional Programming in Education is to gather researchers, professors, teachers, and all professionals that use or are interested in the use of functional programming in education. TFPIE aims to be a venue where novel ideas, classroom-tested ideas, and work in progress on the use of functional programming in education are discussed. The one-day workshop will foster a spirit of open discussion by having a review process for publication after the workshop. TFPIE 2021 welcomes submissions in the above mentioned areas. This year many teaching programmes have had to make a rapid transition to online teaching, and we explicitly solicit papers that explore this area of teaching functional programming. Topics of interest include, but are not limited to: -? FP and beginning CS students -? FP and Computational Thinking -? FP and Artificial Intelligence -? FP in Robotics -? FP and Music -? Advanced FP for undergraduates -? FP in graduate education -? Engaging students in research using FP -? FP in Programming Languages -? FP in the high school curriculum -? FP as a stepping stone to other CS topics -? FP and Philosophy -? The pedagogy of teaching FP -? FP and e-learning: MOOCs, automated assessment etc. -? Best Lectures - more details below In addition to papers, we are requesting best lecture presentations. What's your best lecture topic in an FP related course? Do you have a fun way to present FP concepts to novices or perhaps an especially interesting presentation of a difficult topic? In either case, please consider sharing it. Best lecture topics will be selected for presentation based on a short abstract describing the lecture and its interest to TFPIE attendees. The length of the presentation should be comparable to that of a paper. On top of the lecture itself, the presentation can also provide commentary on the lecture. Submissions Potential presenters are invited to submit an extended abstract (4-6 pages) or a draft paper (up to 20 pages) in EPTCS style. The authors of accepted presentations will have their preprints and their slides made available on the workshop's website. Papers and abstracts can be submitted via easychair at the following link: https://easychair.org/conferences/?conf=tfpie2021 After the workshop, presenters are invited to submit (a revised version of) their article for review. The PC will select the best articles for publication in the Electronic Proceedings in Theoretical Computer Science (EPTCS). Articles rejected for presentation and extended abstracts will not be formally reviewed by the PC. Dates -? Submission deadline: January 11 2021, Anywhere on Earth. -? Notification: January 15 2021 -? Workshop: February 16 2021 -? Submission for formal review: April 20 2021, Anywhere on Earth. -? Notification of full article: June 7 2021 -? Camera ready: July 1st 2021 Program Committee - Peter Achten,??? Radboud University, Netherlands (chair) - Edwin Brady,???? University of St Andrews, UK - Laura Castro,??? Universidade da Coru?a, Spain - Stephen Chang,?? University of Massachusetts Boston, USA - Youyou Cong,???? Tokyo Institute of Technology, Japan - Matthew Flatt,?? University of Utah, USA - Seth Fogarty,??? Trinity University, USA - Alex Gerdes,???? University of Gothenburg, Sweden - Gabriele Keller, Utrecht University, Netherlands - Prabhakar Ragde, University of Waterloo, Canada - Melinda T?th,??? E?tv?s Lor?nd University, Budapest, Hungary Registration TFPIE is part of Lambda Days. Please visit the Lambda Days 2021 pages when registration information becomes available. Only papers that have been presented at TFPIE may be submitted to the post-reviewing process. Information on Lambda Days is available at https://www.lambdadays.org/lambdadays2021 Information on TFP???????? is available at http://tfp2021.org From andrei.h.popescu at gmail.com Wed Jan 6 18:12:14 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Wed, 6 Jan 2021 17:12:14 +0000 Subject: [Agda] fully funded PhD position on verification of industrial robots at University of Sheffield -- application deadline coming soon (Jan. 13) Message-ID: Greetings, This fast approaching deadline could be of interest to UK or EU residents currently looking for a PhD position and willing to start in mid February. It is an opportunity to do high impact verification research in an excellent academic environment. Background in robotics is not required. The program is for 3.5 years, with no teaching obligations. There is the possibility to work remotely until the pandemic is over. The PhD will be supervised by myself (https://www.andreipopescu.uk/) in collaboration with experts from Sheffield's Advanced Manufacturing Research Centre (https://www.amrc.co.uk/). So far, my students have published in top tier conferences such as CAV, LICS, ICFP, IJCAR, POPL and Oakland S&P on the topics of their PhD and MSc dissertations. More details on the position can be found at: https://www.findaphd.com/phds/project/formal-specification-and-verification-of-the-safe-interaction-between-humans-and-industrial-robots/?p127388 Please feel free to contact me with any questions. Best wishes, Andrei From John.P.Martin at colorado.edu Fri Jan 8 02:26:47 2021 From: John.P.Martin at colorado.edu (John Paul Martin) Date: Thu, 7 Jan 2021 18:26:47 -0700 Subject: [Agda] Termination in algebraic encodings of families Message-ID: Hello All! I'm playing around with different ways of encoding type families and hit on an interesting little error(/feature?). Sorry in advance, I'm sure this has been discussed before. I'm encoding a certain version of the Search Property for binary trees. As an inductive family this is: > > data Tree : Set where > leaf : Tree > node : Tree ? ? ? Tree ? Tree > > data BST : ? ? ? ? Tree ? Set where > leaf-bst : ? {n m} > ? BST n m leaf > node-bst : ? {n m x l r} > ? BST n x l > ? BST x m r > ? x ? m > ? n ? x > ? BST n m (node l x r) > But, for personal reasons ?, I'd like to encode this as a single-line algebraic type. This is BST-alg below. The multi-clause/recursive version is also included. {-# TERMINATING #-} > BST-alg : ? ? ? ? Tree ? Set > BST-alg n m t = (t ? leaf) > ? ( ?[ x ] ?[ l ] ?[ r ] (t ? (node l x r) ? (x ? m) ? (n ? > x) ? (BST-alg n x l) ? (BST-alg x m r))) > > -- proof that BST-alg terminates > BST-alg-t : ? ? ? ? Tree ? Set > BST-alg-t n m leaf = ? > BST-alg-t n m (node l x r) = (x ? m) ? (n ? x) ? (BST-alg-t n x l) ? > (BST-alg-t x m r) > > The termination checker is obviously unable to tell that I've lifted the recursive case matching as propositional equalities. Thus the need for the terminating flag. My question: Does this family(BST-alg) actually terminate? Is it really any different than either of the other definitions? Thanks! Jack Martin PhD Student - Programming Languages and Verification Laboratory - University of Colorado at Boulder -------------- next part -------------- An HTML attachment was scrubbed... URL: From P.Achten at cs.ru.nl Fri Jan 8 09:03:01 2021 From: P.Achten at cs.ru.nl (Peter Achten) Date: Fri, 8 Jan 2021 09:03:01 +0100 Subject: [Agda] [TFP'21] final call for papers: Trends in Functional Programming 2021, 17-19 February (online event with Lambda Days 2021 & TFPIE 2021) Message-ID: <16f73797-1c11-7ecc-49e8-62e734c8f537@cs.ru.nl> ------------------------------------------------------------------------- ????????????????????? Final call for papers ??????? 22nd Symposium on Trends in Functional Programming ????????????????????????? tfp2021.org ?????????????????? *deadline: January 15 2021* ------------------------------------------------------------------------- Did you miss the deadline to submit a paper to Trends in Functional Programming http://tfp2021.org/? No worries -- it's not too late! Submission is open until January 15th 2021, for a presentation slot at the event and post-symposium reviewing. The symposium on Trends in Functional Programming (TFP) is an international forum for researchers with interests in all aspects of functional programming, taking a broad view of current and future trends in the area. It aspires to be a lively environment for presenting the latest research results, and other contributions. * TFP offers a supportive reviewing process designed to help less experienced ? authors succeed, with two rounds of review, both before and after the ? symposium itself. Authors have an opportunity to address reviewers' concerns ? before final decisions on publication in the proceedings. * TFP offers two "best paper" awards, the John McCarthy award for best paper, ? and the David Turner award for best student paper. * TFP is co-located with Lambda Days in beautiful Krakow. Lambda Days is a vibrant ? developer conference with hundreds of attendees and a lively programme of talks on ? functional programming in practice. Due to the covid pandemic, the event is online ? with a lot of attention to interaction and getting to socialize with the community. Important Dates --------------- Submission deadline for pre-symposium review:?? 20th November, 2020? -- passed -- Submission deadline for draft papers:?????????? 15th January, 2021 Symposium dates:??????????????????????????????? 17-19th February, 2021 Visit http://tfp2021.org/ for more information. From andrei.paskevich at lri.fr Fri Jan 8 18:52:44 2021 From: andrei.paskevich at lri.fr (Andrei Paskevich) Date: Fri, 8 Jan 2021 18:52:44 +0100 Subject: [Agda] F-IDE 2021 - 2nd Call for Papers Message-ID: An embedded and charset-unspecified text was scrubbed... Name: not available URL: From mechvel at scico.botik.ru Mon Jan 11 20:16:08 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 11 Jan 2021 22:16:08 +0300 Subject: [Agda] expensive `with' Message-ID: <921af48a12a4e777dea294fc8a542e49@scico.botik.ru> Dear Agda developers, I have the code fragment ------------------------------------------------------------ ... | yes hmS | yes hmF? = inj? (hmS , degS?k) where open ?-Reasoning s = f?+f? degF? = deg f? hmF? degF??k : degF? ? k degF??k = References: <921af48a12a4e777dea294fc8a542e49@scico.botik.ru> Message-ID: <9dda06f0-88fc-345b-b37b-3dc2295cd49d@strath.ac.uk> Hi Sergei, I think https://agda.readthedocs.io/en/latest/language/with-abstraction.html#performance-considerations gives a nice concise overview of the likely performance issues for `with`. Most depend on the type of the goal and context (i.e, the type signature of the function you're writing) more than the expression being abstracted. A simple test is to abstract over, say, `tt` of type `?` and see how long that takes. It is true that using `case` rather than `with` can alleviate a lot of performance issues, simply because it does less work. Sometimes `case` is not good enough, but you can still avoid `with` by manually desugaring the with-abstraction (as described in the Technical details section of the same documentation page). This technique is sometimes called ?rolling one's own `with`?. All the best, James On 11/01/2021 19:16, mechvel at scico.botik.ru wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > > Dear Agda developers, > > I have the code fragment > > ------------------------------------------------------------ > ????? ... | yes hmS | yes hmF? =? inj? (hmS , degS?k) > ???????????? where > ???????????? open ?-Reasoning > ???????????? s?????? = f?+f? > ???????????? degF??? = deg f? hmF? > > ???????????? degF??k : degF? ? k > ???????????? degF??k = > ???????????? degS?k : deg s hmS ? k > ???????????? degS?k = case deg[f+g]?max f? f? hmF? hmF? > ????????????????????? of \ > ????????????????????? { (inj? nullS) ? contradiction hmS > ????????????????????????????????????????????? (null??HasMon {s} nullS) > ????????????????????? ; (inj? (hmS' , degS'?degF??degF?)) ? > ????????????????????????? begin deg f?+f? hmS?? ?? refl ? > ??????????????????????????????? deg f?+f? hmS'? ?? degS'?degF??degF? ? > ??????????????????????????????? degF? ? degF??? ?? ?-least degF??k > degF??k ? > ??????????????????????????????? k > ????????????????????????? ? > ????????????????????? } > ----------------------------------------------------------- > > where the file is type-checked in 1 minute (on a 3 GHz machine). > > Initially, there was `with' instead of the last `case'. > And 20 minutes was not enough. > Then I set types explicitly in most places and also change the last > `case` with > ??????????????????? with deg[f+g]?max f? f? hmF? hmF? > ??????????????? ... | inj? _ = anything > ??????????????? ... | inj? _ = anything > > After 25 minutes it reports > Checking ... .agda). > agda: Heap exhausted; > agda: Current maximum heap size is 3758096384 bytes (3584 MB). > > The `top' command shows that after 5 minutes about 3 Gb is taken by > Agda, > then it stops eating memory, and finally breaks by heap. > > I tend to think that when the type checker becomes very slow, it is > desirable > to use `case' rather than `with' in the responsible code. > > Can people, please, comment? > > ------ > Sergei > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From matthewdaggitt at gmail.com Wed Jan 13 03:40:58 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Wed, 13 Jan 2021 10:40:58 +0800 Subject: [Agda] [ANNOUNCE] Standard library v1.5 - release candidate 1 Message-ID: Dear all, The Agda Team is pleased to announce the first release candidate for version 1.5 of the standard library. The release candidate has been tested using Agda 2.6.1 and Agda 2.6.1.1. This release includes many new features, the highlights of which are: - Regular expressions which work over both arbitrary types and Strings. - Instance declarations for IsDecEquivalence and IsDecTotalOrder over various data types. - Bindings for Haskell's System.Environment and System.Exit. The release candidate can be downloaded here . We would be grateful for reports of any issues you may encounter with the new version of the library on the Github issues page . If no major issues are found we will aim to release the official version 1.5 in the next couple of weeks. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From nad at cse.gu.se Wed Jan 13 10:05:05 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 13 Jan 2021 10:05:05 +0100 Subject: [Agda] Termination in algebraic encodings of families In-Reply-To: References: Message-ID: <36028591-59a7-0b11-0fa0-8af4b6456fdf@cse.gu.se> On 2021-01-08 02:26, John Paul Martin wrote: > {-# TERMINATING #-} > BST-alg : ? ? ? ? Tree ? Set > BST-alg n m t = (t ? leaf) > ? ( ?[ x ] ?[ l ] ?[ r ] (t ? (node l x r) ? (x ? m) ? (n ? x) ? (BST-alg n x l) ? (BST-alg x m r))) > Does this family(BST-alg) actually terminate? No. Try normalising BST-alg in Agda. -- /NAD From nad at cse.gu.se Wed Jan 13 10:14:25 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 13 Jan 2021 10:14:25 +0100 Subject: [Agda] Why are some terms in the Agda goal report colored blue? In-Reply-To: References: Message-ID: On 2020-12-31 23:40, David Banas wrote: > What's the significance of some of the terms in the Agda goal report > (in response to: `C-c C-,` in Emacs) being colored blue? That buffer uses compilation-mode. -- /NAD From abela at chalmers.se Wed Jan 13 12:41:08 2021 From: abela at chalmers.se (Andreas Abel) Date: Wed, 13 Jan 2021 12:41:08 +0100 Subject: [Agda] Submit to ITP 2021 (Interaction theorem proving): abstracts due 25 January Message-ID: Dear colleagues, please consider submitting a paper to ITP 2021 http://easyconferences.eu/itp2021/ (colocated with LICS in Rome, or online). Excerpts from the call for papers: ITP welcomes submissions describing original research on all aspects of interactive theorem proving and its applications. Suggested topics include, but are not limited to, the following: formalizations of computational models improvements in theorem prover technology formalizations of mathematics integration with automated provers and other symbolic tools verification of security algorithms industrial applications of interactive theorem provers formal aspects of hardware and software user interfaces for interactive theorem provers use of theorem provers in education concise and elegant worked examples of formalizations (proof pearls) Submissions will undergo single-blind peer review. They should be no more than 16 pages in length excluding bibliographic references and are to be submitted in PDF format via EasyChair via the following link: https://easychair.org/conferences/?conf=itp2021 We also welcome short papers, which can be used to describe interesting work that is still ongoing and not fully mature. Such a preliminary report is limited to 6 pages and may consist of an extended abstract. Important Dates Abstract submission deadline: January 25, 2021 Paper submission deadline: February 1, 2021 Author notification: March 25, 2021 Camera-ready copy due: April 20, 2021 Conference: June 29-July 1, 2021 Publication Details The conference proceedings will be published in the LIPIcs series (?Leibniz International Proceedings in Informatics?). This was chosen in large part because of its commitment to free and open access to all papers. -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ From mechvel at scico.botik.ru Wed Jan 13 17:25:34 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 13 Jan 2021 19:25:34 +0300 Subject: [Agda] [ANNOUNCE] Standard library v1.5 - release candidate 1 In-Reply-To: References: Message-ID: On 2021-01-13 05:40, Matthew Daggitt wrote: > Dear all, > > The Agda Team is pleased to announce the first release candidate for > version 1.5 of the standard library. The release candidate has been > tested using Agda 2.6.1 and Agda 2.6.1.1. This release includes many > new features, the highlights of which are: > > * Regular expressions which work over both arbitrary types and > Strings. > * Instance declarations for IsDecEquivalence and IsDecTotalOrder over > various data types. > * Bindings for Haskell's System.Environment and System.Exit. > > The release candidate can be downloaded here [1]. > [..] 1.4 has lib.cabal in its root, and 1.5-rc1 has agda-stdlib-utils.cabal instead. I applied > cabal new-update > cabal install and it says it has installed something. Is this all right? ------ Sergei From capn.freako at gmail.com Wed Jan 13 17:41:46 2021 From: capn.freako at gmail.com (David Banas) Date: Wed, 13 Jan 2021 08:41:46 -0800 Subject: [Agda] Why are some terms in the Agda goal report colored blue? In-Reply-To: References: Message-ID: <790F9AA3-CB2E-4BC0-AA55-F386A4986E00@gmail.com> Sorry, can you elaborate? > On Jan 13, 2021, at 1:14 AM, Nils Anders Danielsson wrote: > > On 2020-12-31 23:40, David Banas wrote: >> What's the significance of some of the terms in the Agda goal report >> (in response to: `C-c C-,` in Emacs) being colored blue? > > That buffer uses compilation-mode. > > -- > /NAD From nad at cse.gu.se Wed Jan 13 20:00:30 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 13 Jan 2021 20:00:30 +0100 Subject: [Agda] Why are some terms in the Agda goal report colored blue? In-Reply-To: <790F9AA3-CB2E-4BC0-AA55-F386A4986E00@gmail.com> References: <790F9AA3-CB2E-4BC0-AA55-F386A4986E00@gmail.com> Message-ID: <7a1f7e93-e938-f23c-4037-86fca913c849@cse.gu.se> On 2021-01-13 17:41, David Banas wrote: > Sorry, can you elaborate? I don't know too much about Compilation mode, but it is documented: https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html -- /NAD From james.wood.100 at strath.ac.uk Wed Jan 13 21:30:22 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Wed, 13 Jan 2021 20:30:22 +0000 Subject: [Agda] Why are some terms in the Agda goal report colored blue? In-Reply-To: References: Message-ID: Hi David, If I remember correctly, the blue vs black difference is something really silly, like that names with non-ASCII characters have a different colour to all-ASCII names. You might want to see whether that's it. All the best, James On 31/12/2020 22:40, David Banas wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > Hi all, > > What's the significance of some of the terms in the Agda goal report (in > response to: `C-c C-,` in Emacs) being colored blue? > > Thanks, > -db > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From capn.freako at gmail.com Thu Jan 14 02:19:47 2021 From: capn.freako at gmail.com (David Banas) Date: Wed, 13 Jan 2021 17:19:47 -0800 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? Message-ID: Hi all, Does anyone know how I can get this to work? (? { (C , A) ? (C?A?D (C , A)) }) ?? extensionality (? C?A ? refl) ? (? { x ? (C?A?D x) }) Agda is telling me: (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D when checking that the expression refl has type (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Thu Jan 14 02:22:43 2021 From: fdhzs2010 at hotmail.com (Jason -Zhong Sheng- Hu) Date: Thu, 14 Jan 2021 01:22:43 +0000 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: References: Message-ID: That?s very strange. I would expect this equality to hold definitionally. You shouldn?t even need extensionality. Does agda complain anything if you remove the first two lines entirely? Thanks, Jason Hu From: David Banas Sent: Wednesday, January 13, 2021 8:20 PM To: Agda mailing list Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? Hi all, Does anyone know how I can get this to work? (? { (C , A) ? (C?A?D (C , A)) }) ?? extensionality (? C?A ? refl) ? (? { x ? (C?A?D x) }) Agda is telling me: (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D when checking that the expression refl has type (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.j.rouvoet at gmail.com Thu Jan 14 09:44:35 2021 From: a.j.rouvoet at gmail.com (a.j.rouvoet) Date: Thu, 14 Jan 2021 09:44:35 +0100 Subject: [Agda] [ANNOUNCE] Standard library v1.5 - release candidate 1 In-Reply-To: References: Message-ID: <4d334282-fb98-3f50-1e16-32b0bd8bbef3@gmail.com> Congratulations with the release candidate, Matthew. Thanks a lot for all the hard work from you and the other contributors towards this release. I can honestly say that the ever increasing quality of the Agda standard library has been one of the joys during my PhD! I'll test it against my Agda developments. Cheers, Arjen On 1/13/21 3:40 AM, Matthew Daggitt wrote: > Dear all, > The Agda Team is pleased to announce the first release candidate for > version 1.5 of the standard library. The release candidate has been > tested using Agda 2.6.1 and Agda 2.6.1.1. This release includes many > new features, the highlights of which are: > > * Regular expressions which work over both arbitrary types and Strings. > * Instance declarations for IsDecEquivalence and IsDecTotalOrder > over various data types. > * Bindings for Haskell's System.Environment and System.Exit. > The release candidate can be downloaded here > . We would > be grateful for reports of any issues you may encounter with the new > version of the library on the Github issues page > . > If no major issues are found we will aim to release the official > version 1.5 in the next couple of weeks. > Best wishes, > Matthew, on behalf of the Agda Team > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Thu Jan 14 09:48:31 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Thu, 14 Jan 2021 09:48:31 +0100 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: References: Message-ID: Hi Banas, That looks like a bug to me, but it's hard to make sure without the full code. Also, what version of Agda and the standard library are you using? -- Jesper On Thu, Jan 14, 2021 at 2:23 AM Jason -Zhong Sheng- Hu < fdhzs2010 at hotmail.com> wrote: > That?s very strange. I would expect this equality to hold definitionally. > You shouldn?t even need extensionality. > > > > Does agda complain anything if you remove the first two lines entirely? > > > > Thanks, > > Jason Hu > > > > *From: *David Banas > *Sent: *Wednesday, January 13, 2021 8:20 PM > *To: *Agda mailing list > *Subject: *[Agda] How to validate eta-reduction in equational reasoning > proofs? > > > > Hi all, > > > > Does anyone know how I can get this to work? > > > > (? { (C , A) ? (C?A?D (C , A)) }) > ?? extensionality (? C?A ? refl) ? > (? { x ? (C?A?D x) }) > > > > Agda is telling me: > > > > (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D > > when checking that the expression refl has type > > (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A > > > > Thanks, > > -db > > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Thu Jan 14 14:08:49 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Thu, 14 Jan 2021 13:08:49 +0000 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: References: Message-ID: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> It might not hold definitionally as written because extended ?s are generative. The first thing I'd try, assuming sufficiently new Agda, is to remove all the curly braces. James On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > > That?s very strange. I would expect this equality to hold > definitionally. You shouldn?t even need extensionality. > > Does agda complain anything if you remove the first two lines entirely? > > Thanks, > > Jason Hu > > *From: *David Banas > *Sent: *Wednesday, January 13, 2021 8:20 PM > *To: *Agda mailing list > *Subject: *[Agda] How to validate eta-reduction in equational reasoning > proofs? > > Hi all, > > Does anyone know how I can get this to work? > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { (C , A) ? (C?A?D (C , A)) }) > ? ? ? ? ? ? ? ? ? ? ? ? ? ???extensionality (? C?A ? refl) ? > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { x ? (C?A?D x) }) > > Agda is telling me: > > (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D > > when checking that the expression refl has type > > (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A > > Thanks, > > -db > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From ulf.norell at gmail.com Thu Jan 14 15:02:04 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Thu, 14 Jan 2021 15:02:04 +0100 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> Message-ID: FWIW this works: open import Agda.Builtin.Sigma open import Agda.Builtin.Equality _?_ : Set ? Set ? Set A ? B = ? A ? _ ? B postulate A B C : Set f : A ? B ? C ext : ? {A B : Set} {f g : A ? B} ? (? x ? f x ? g x) ? f ? g prf : (? { (x , y) ? f (x , y) }) ? (? { p ? f p }) prf = ext ? _ ? refl Have you made sure that the pair type you are using has eta equality? / Ulf On Thu, Jan 14, 2021 at 2:09 PM James Wood wrote: > It might not hold definitionally as written because extended ?s are > generative. The first thing I'd try, assuming sufficiently new Agda, is > to remove all the curly braces. > > James > > On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote: > > CAUTION: This email originated outside the University. Check before > > clicking links or attachments. > > > > That?s very strange. I would expect this equality to hold > > definitionally. You shouldn?t even need extensionality. > > > > Does agda complain anything if you remove the first two lines entirely? > > > > Thanks, > > > > Jason Hu > > > > *From: *David Banas > > *Sent: *Wednesday, January 13, 2021 8:20 PM > > *To: *Agda mailing list > > *Subject: *[Agda] How to validate eta-reduction in equational reasoning > > proofs? > > > > Hi all, > > > > Does anyone know how I can get this to work? > > > > (? { (C , A) ? (C?A?D (C , A)) }) > > ??extensionality (? C?A ? refl) ? > > (? { x ? (C?A?D x) }) > > > > Agda is telling me: > > > > (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D > > > > when checking that the expression refl has type > > > > (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A > > > > Thanks, > > > > -db > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From capn.freako at gmail.com Thu Jan 14 20:46:53 2021 From: capn.freako at gmail.com (David Banas) Date: Thu, 14 Jan 2021 11:46:53 -0800 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> Message-ID: <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> Thanks, Ulf! After changing my product type definition to match yours, I am unstuck. :) Originally, I?d written: data _?_ (A : Set) (B : Set) : Set where _,_ : A ? B ? (A ? B) I guess there was something more I needed to do, in order to have this type play nicely with the rest of the system? Now (using your product type), I?m able to complete the proof in a single step and without invoking extensionality: 117 begin 118 (? { C?A?D (C , A) ? C?A?D C ? A }) 119 (? C? ? ? (? A? ? C?A?D (C? , A?))) 120 ??? 121 C?A?D 122 ? However, I?m getting the following warning, related to the highlighted code above (line 118): (Note that column numbers below are inaccurate.) Sort _78 [ at ###.agda:118,31-64 ] _79 : _78 [ at ###.agda:118,31-64 ] _81 : _79 [ at ###.agda:118,31-64 ] Do you know why? Thanks, -db > On Jan 14, 2021, at 6:02 AM, Ulf Norell wrote: > > FWIW this works: > > open import Agda.Builtin.Sigma > open import Agda.Builtin.Equality > > _?_ : Set ? Set ? Set > A ? B = ? A ? _ ? B > > postulate > A B C : Set > f : A ? B ? C > ext : ? {A B : Set} {f g : A ? B} ? (? x ? f x ? g x) ? f ? g > > prf : (? { (x , y) ? f (x , y) }) ? (? { p ? f p }) > prf = ext ? _ ? refl > > Have you made sure that the pair type you are using has eta equality? > > / Ulf > > On Thu, Jan 14, 2021 at 2:09 PM James Wood > wrote: > It might not hold definitionally as written because extended ?s are > generative. The first thing I'd try, assuming sufficiently new Agda, is > to remove all the curly braces. > > James > > On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote: > > CAUTION: This email originated outside the University. Check before > > clicking links or attachments. > > > > That?s very strange. I would expect this equality to hold > > definitionally. You shouldn?t even need extensionality. > > > > Does agda complain anything if you remove the first two lines entirely? > > > > Thanks, > > > > Jason Hu > > > > *From: *David Banas > > > *Sent: *Wednesday, January 13, 2021 8:20 PM > > *To: *Agda mailing list > > > *Subject: *[Agda] How to validate eta-reduction in equational reasoning > > proofs? > > > > Hi all, > > > > Does anyone know how I can get this to work? > > > > (? { (C , A) ? (C?A?D (C , A)) }) > > ??extensionality (? C?A ? refl) ? > > (? { x ? (C?A?D x) }) > > > > Agda is telling me: > > > > (? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D > > > > when checking that the expression refl has type > > > > (? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A > > > > Thanks, > > > > -db > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From oleg.grenrus at iki.fi Thu Jan 14 21:08:16 2021 From: oleg.grenrus at iki.fi (Oleg Grenrus) Date: Thu, 14 Jan 2021 22:08:16 +0200 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> Message-ID: <84bddf98-aa03-807a-6d2d-291bb2706b45@iki.fi> You need to define the type as a record. See https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#eta-expansion - Oleg On 14.1.2021 21.46, David Banas wrote: > Thanks, Ulf! > After changing my product type definition to match yours, I am unstuck. :) > > Originally, I?d written: > > data _?_ (A : Set) (B : Set) : Set where > ? _,_ : A ? B ? (A ? B) > > > I guess there was something more I needed to do, in order to have this > type play nicely with the rest of the system? > > Now (using your product type), I?m able to complete the proof in a > single step and without invoking extensionality: > > 117 begin > 118 ??(? { C?A?D (C , A) ? C?A?D C ? A }) > 119 ? (? C? ? ? (? A? ? C?A?D (C? , A?))) > 120 ??? > 121 ? C?A?D > 122 ? > > > However, I?m getting the following warning, related to the highlighted > code above (line 118): > (Note that /column/ numbers below are inaccurate.) > > Sort _78 ?[ at ###.agda:118,31-64 ] > _79 : _78 ?[ at ###.agda:118,31-64 ] > _81 : _79 ?[ at ###.agda:118,31-64 ] > > > Do you know why? > > Thanks, > -db > > >> On Jan 14, 2021, at 6:02 AM, Ulf Norell > > wrote: >> >> FWIW this works: >> >> open import Agda.Builtin.Sigma >> open import Agda.Builtin.Equality >> >> _?_ : Set ? Set ? Set >> A ? B = ? A ? _ ? B >> >> postulate >> ? A B C : Set >> ? f ? ? : A ? B ? C >> ? ext ? : ? {A B : Set} {f g : A ? B} ? (? x ? f x ? g x) ? f ? g >> >> prf : (? { (x , y) ? f (x , y) }) ? (? { p ? f p }) >> prf = ext ? _ ? refl >> >> Have you made sure that the pair type you are using has eta equality? >> >> / Ulf >> >> On Thu, Jan 14, 2021 at 2:09 PM James Wood >> > wrote: >> >> It might not hold definitionally as written because extended ?s are >> generative. The first thing I'd try, assuming sufficiently new >> Agda, is >> to remove all the curly braces. >> >> James >> >> On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote: >> > CAUTION: This email originated outside the University. Check >> before >> > clicking links or attachments. >> > >> > That?s very strange. I would expect this equality to hold >> > definitionally. You shouldn?t even need extensionality. >> > >> > Does agda complain anything if you remove the first two lines >> entirely? >> > >> > Thanks, >> > >> > Jason Hu >> > >> > *From: *David Banas > > >> > *Sent: *Wednesday, January 13, 2021 8:20 PM >> > *To: *Agda mailing list > > >> > *Subject: *[Agda] How to validate eta-reduction in equational >> reasoning >> > proofs? >> > >> > Hi all, >> > >> > Does anyone know how I can get this to work? >> > >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { (C , A) ? (C?A?D (C , A)) }) >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ???extensionality (? C?A ? refl) ? >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { x ? (C?A?D x) }) >> > >> > Agda is telling me: >> > >> >? ? ?(? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D >> > >> >? ? ?when checking that the expression refl has type >> > >> >? ? ?(? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A >> > >> > Thanks, >> > >> > -db >> > >> > >> > _______________________________________________ >> > Agda mailing list >> > Agda at lists.chalmers.se >> > https://lists.chalmers.se/mailman/listinfo/agda >> > >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From capn.freako at gmail.com Thu Jan 14 23:21:44 2021 From: capn.freako at gmail.com (David Banas) Date: Thu, 14 Jan 2021 14:21:44 -0800 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: <84bddf98-aa03-807a-6d2d-291bb2706b45@iki.fi> References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> <84bddf98-aa03-807a-6d2d-291bb2706b45@iki.fi> Message-ID: <86811465-3547-4A05-A8A9-1DB876A03B1D@gmail.com> Thanks, Oleg! Is this correct?: 55 record _?_ (A : Set) (B : Set) : Set where 56 field 57 fst : A 58 snd : B 59 60 _,_ : ? {A B : Set} A ? B ? (A ? B) 61 x , y = record {fst = x; snd = y} It seems to work, in general, but is giving me the following error, re: my Functor instance: ###.agda:112,3-36 Could not parse the left-hand side fmap ? ProductFunctor ? f (x , y) Operators used in the grammar: , (infix operator, level 20) [_,_ (###.agda:60,1-4)] when scope checking the left-hand side fmap ? ProductFunctor ? f (x , y) in the definition of ProductFunctor For reference, here is that Functor instance: 110 instance 111 ProductFunctor : ? {A : Set} ? Functor (_? A) 112 fmap {{ProductFunctor}} f (x , y) = (f x , y) Thanks, -db > On Jan 14, 2021, at 12:08 PM, Oleg Grenrus wrote: > > You need to define the type as a record. > > See > https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#eta-expansion > > - Oleg -------------- next part -------------- An HTML attachment was scrubbed... URL: From oleg.grenrus at iki.fi Thu Jan 14 23:29:56 2021 From: oleg.grenrus at iki.fi (Oleg Grenrus) Date: Fri, 15 Jan 2021 00:29:56 +0200 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: <86811465-3547-4A05-A8A9-1DB876A03B1D@gmail.com> References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> <84bddf98-aa03-807a-6d2d-291bb2706b45@iki.fi> <86811465-3547-4A05-A8A9-1DB876A03B1D@gmail.com> Message-ID: See https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#example-the-pair-type-constructor, specifically the last paragraphs about `constructor` keyword. - Oleg On 15.1.2021 0.21, David Banas wrote: > Thanks, Oleg! > Is this correct?: > > 55 record _?_ (A : Set) (B : Set) : Set where > 56 ? field > 57 ? ? fst : A > 58 ? ? snd : B > 59 ? ?? > 60 _,_ : ? {A B : Set} A ? B ? (A ? B) > 61 x , y = record {fst = x; snd = y} > > > It seems to work, in general, but is giving me the following error, > re: my Functor instance: > > ###.agda:112,3-36 > Could not parse the left-hand side > fmap ? ProductFunctor ? f (x , y) > Operators used in the grammar: > ? , (infix operator, level 20) [_,_ (###.agda:60,1-4)] > when scope checking the left-hand side > fmap ? ProductFunctor ? f (x , y) in the definition of > ProductFunctor > > > For reference, here is that Functor instance: > > 110 instance > 111 ? ProductFunctor : ? {A : Set} ? Functor (_? A) > 112 ? fmap {{ProductFunctor}} f (x , y) = (f x , y) > > > Thanks, > -db > > >> On Jan 14, 2021, at 12:08 PM, Oleg Grenrus > > wrote: >> >> You need to define the type as a record. >> >> See >> https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#eta-expansion >> >> - Oleg > From capn.freako at gmail.com Fri Jan 15 01:59:18 2021 From: capn.freako at gmail.com (David Banas) Date: Thu, 14 Jan 2021 16:59:18 -0800 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> <84bddf98-aa03-807a-6d2d-291bb2706b45@iki.fi> <86811465-3547-4A05-A8A9-1DB876A03B1D@gmail.com> Message-ID: Ah, thanks! With that help, my code is compiling, but I'm getting some unsolved constraint errors: _82 (C?A?D = (? C? ? ? (? A? ? C?A?D (C? , A?)))) = Set _83 (C?A?D = (? C? ? ? (? A? ? C?A?D (C? , A?)))) = C ? A I don't really understand them. Is there something in the Agda docs on this that you could point me to? Thanks, -db On Thu, Jan 14, 2021 at 2:29 PM Oleg Grenrus wrote: > See > > https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#example-the-pair-type-constructor > , > specifically the last paragraphs about `constructor` keyword. > > - Oleg > > On 15.1.2021 0.21, David Banas wrote: > > Thanks, Oleg! > > Is this correct?: > > > > 55 record _?_ (A : Set) (B : Set) : Set where > > 56 field > > 57 fst : A > > 58 snd : B > > 59 > > 60 _,_ : ? {A B : Set} A ? B ? (A ? B) > > 61 x , y = record {fst = x; snd = y} > > > > > > It seems to work, in general, but is giving me the following error, > > re: my Functor instance: > > > > ###.agda:112,3-36 > > Could not parse the left-hand side > > fmap ? ProductFunctor ? f (x , y) > > Operators used in the grammar: > > , (infix operator, level 20) [_,_ (###.agda:60,1-4)] > > when scope checking the left-hand side > > fmap ? ProductFunctor ? f (x , y) in the definition of > > ProductFunctor > > > > > > For reference, here is that Functor instance: > > > > 110 instance > > 111 ProductFunctor : ? {A : Set} ? Functor (_? A) > > 112 fmap {{ProductFunctor}} f (x , y) = (f x , y) > > > > > > Thanks, > > -db > > > > > >> On Jan 14, 2021, at 12:08 PM, Oleg Grenrus >> > wrote: > >> > >> You need to define the type as a record. > >> > >> See > >> > https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#eta-expansion > >> > >> - Oleg > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Fri Jan 15 21:23:35 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Fri, 15 Jan 2021 20:23:35 +0000 Subject: [Agda] How to validate eta-reduction in equational reasoning proofs? In-Reply-To: <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> References: <881f86cd-ab9c-4377-1d6d-324471636793@strath.ac.uk> <38D4EB10-F180-4CFE-9C09-910FF7082240@gmail.com> Message-ID: <6f1277c1-269a-2464-facd-a77641594968@strath.ac.uk> The bidirectional type checker often needs a bit of help with non-normal forms. In this case, we can see that `(? { C?A?D (C , A) ? C?A?D C ? A })` has some type of the form (x : X) ? Y[x] where Y[(? C? ? ? (? A? ? C?A?D (C? , A?)))] is known. However, we don't know much about Y[x] for general x. To help out the type checker, you need to give a (possibly partial) type annotation to the first ?-expression. This can be done using stdlib's `Function.Base._?_` or a local definition with a type signature. Alternatively (and this is probably what I would do), you could normalise away all the redexes, and then you probably won't need any annotations. In fact, because the whole proof should be by definitional equality, I'd probably turn all of the equational reasoning into `refl` and move on. All the best, James On 14/01/2021 19:46, David Banas wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > Thanks, Ulf! > After changing my product type definition to match yours, I am unstuck. :) > > Originally, I?d written: > > data _?_ (A : Set) (B : Set) : Set where > ? _,_ : A ? B ? (A ? B) > > > I guess there was something more I needed to do, in order to have this > type play nicely with the rest of the system? > > Now (using your product type), I?m able to complete the proof in a > single step and without invoking extensionality: > > 117 begin > 118 (? { C?A?D (C , A) ? C?A?D C ? A }) > 119 ? (? C? ? ? (? A? ? C?A?D (C? , A?))) > 120 ??? > 121 ? C?A?D > 122 ? > > > However, I?m getting the following warning, related to the highlighted > code above (line 118): > (Note that /column/ numbers below are inaccurate.) > > Sort _78 ?[ at ###.agda:118,31-64 ] > _79 : _78 ?[ at ###.agda:118,31-64 ] > _81 : _79 ?[ at ###.agda:118,31-64 ] > > > Do you know why? > > Thanks, > -db > > >> On Jan 14, 2021, at 6:02 AM, Ulf Norell > > wrote: >> >> FWIW this works: >> >> open import Agda.Builtin.Sigma >> open import Agda.Builtin.Equality >> >> _?_ : Set ? Set ? Set >> A ? B = ? A ? _ ? B >> >> postulate >> ? A B C : Set >> ? f ? ? : A ? B ? C >> ? ext ? : ? {A B : Set} {f g : A ? B} ? (? x ? f x ? g x) ? f ? g >> >> prf : (? { (x , y) ? f (x , y) }) ? (? { p ? f p }) >> prf = ext ? _ ? refl >> >> Have you made sure that the pair type you are using has eta equality? >> >> / Ulf >> >> On Thu, Jan 14, 2021 at 2:09 PM James Wood >> > wrote: >> >> It might not hold definitionally as written because extended ?s are >> generative. The first thing I'd try, assuming sufficiently new >> Agda, is >> to remove all the curly braces. >> >> James >> >> On 14/01/2021 01:22, Jason -Zhong Sheng- Hu wrote: >> > CAUTION: This email originated outside the University. Check before >> > clicking links or attachments. >> > >> > That?s very strange. I would expect this equality to hold >> > definitionally. You shouldn?t even need extensionality. >> > >> > Does agda complain anything if you remove the first two lines >> entirely? >> > >> > Thanks, >> > >> > Jason Hu >> > >> > *From: *David Banas > > >> > *Sent: *Wednesday, January 13, 2021 8:20 PM >> > *To: *Agda mailing list > > >> > *Subject: *[Agda] How to validate eta-reduction in equational >> reasoning >> > proofs? >> > >> > Hi all, >> > >> > Does anyone know how I can get this to work? >> > >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { (C , A) ? (C?A?D (C , A)) }) >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ???extensionality (? C?A ? refl) ? >> >? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(? { x ? (C?A?D x) }) >> > >> > Agda is telling me: >> > >> >? ? ?(? { (C , A) ? C?A?D (C , A) }) C?A != C?A?D C?A of type D >> > >> >? ? ?when checking that the expression refl has type >> > >> >? ? ?(? { (C , A) ? C?A?D (C , A) }) C?A ? C?A?D C?A >> > >> > Thanks, >> > >> > -db >> > >> > >> > _______________________________________________ >> > Agda mailing list >> > Agda at lists.chalmers.se >> > https://lists.chalmers.se/mailman/listinfo/agda >> >> > >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > From capn.freako at gmail.com Sat Jan 16 01:05:08 2021 From: capn.freako at gmail.com (David Banas) Date: Fri, 15 Jan 2021 16:05:08 -0800 Subject: [Agda] What does "Set !=< {some type}" mean? Message-ID: Hi all, Could someone help me understand what this Agda error means? *Set !=< {some type}* Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Sat Jan 16 11:00:06 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sat, 16 Jan 2021 11:00:06 +0100 Subject: [Agda] What does "Set !=< {some type}" mean? In-Reply-To: References: Message-ID: Hi David, It means that you gave a type as an argument where Agda expected something of {some type} (or possibly the other way around). The symbol !=< means "is not a subtype of". Agda only uses subtypes in a few specific circumstances, so in most cases you can read it as "is not equal to". -- Jesper On Sat, Jan 16, 2021 at 1:06 AM David Banas wrote: > Hi all, > > Could someone help me understand what this Agda error means? > > *Set !=< {some type}* > > > Thanks, > -db > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Sat Jan 16 17:08:15 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Sat, 16 Jan 2021 16:08:15 +0000 Subject: [Agda] What does "Set !=< {some type}" mean? In-Reply-To: References: Message-ID: Incidentally, have the developers ever considered using a ?nicer? symbol like ? or ?? Maybe even ASCII CAUTION: This email originated outside the University. Check before > clicking links or attachments. > Hi David, > > It means that you gave a type as an argument where Agda expected > something of {some type} (or possibly the other way around). The symbol > !=< means "is not a subtype of". Agda only uses subtypes in a few > specific circumstances, so in most cases you can read it as "is not > equal to". > > -- Jesper > > On Sat, Jan 16, 2021 at 1:06 AM David Banas > wrote: > > Hi all, > > Could someone help me understand what this Agda error means? > > *Set !=< {some type}* > > > Thanks, > -db > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From mechvel at scico.botik.ru Mon Jan 18 22:54:03 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 19 Jan 2021 00:54:03 +0300 Subject: [Agda] multiple definitions in `let' Message-ID: <80a2abf7e2c4d70cc1080398b812594f@scico.botik.ru> Dear Agda team, Is the below f a correct program? (Agda 2.6.1 type-checks it). module Test where open import Data.Nat using (?) f : ? f = let a = 1 a = 2 in a {- f' : ? f' = a where a = 1 a = 2 -} From Vlad.Rusu at inria.fr Tue Jan 19 20:55:52 2021 From: Vlad.Rusu at inria.fr (Vlad Rusu) Date: Tue, 19 Jan 2021 20:55:52 +0100 Subject: [Agda] dependent equality in Cubical Agda Message-ID: Dear all, Is there a Cubical Agda equivalent of the following Agda statement for dependent equality ? With appropriate imports the statement is accepted by Cubical Agda. Obviously, the proof is not. Best regards, ?- Vlad |?-?-intro : ? {? ?}{A : Set ?}{B : A ? Set ?}{a a' : A}{b : B a}{b' : B a'} ? (? (a ? a') ? p ? subst B p b ? b') ? (a , b) ? (a' , b') ?-?-intro (refl , refl) = refl | || | | -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Tue Jan 19 23:14:22 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Tue, 19 Jan 2021 22:14:22 +0000 Subject: [Agda] dependent equality in Cubical Agda In-Reply-To: References: Message-ID: <59bd0986-6442-9adb-3ab5-8e9cfadade70@strath.ac.uk> Hi Vlad, I was able to find a fairly direct proof. The key is that it'd be really nice if the second path were a PathP instead of a subst + a path. Notice (where `p [ x ? y ]` is another notation for `PathP p x y`): ?-intro-?P : ? {a b} {A : Type a} {B : A ? Type b} {x x? : A} {y : B x} {y? : B x?} ? ? (x ? x?) (? p ? (? i ? B (p i)) [ y ? y? ]) ? Path (? A B) (x , y) (x? , y?) ?-intro-?P (p , q) i = p i , q i This works because B (p i0) = B x and B (p i1) = B x?, making the type of q match up, and then q i0 = y and q i1 = y?, which is what we needed in terms of values. To retool this to subst + ?, we use `toPathP`. Here is the full file: {-# OPTIONS --cubical --safe #-} module Scratch where open import Data.Product open import Cubical.Foundations.Everything ?-intro-? : ? {a b} {A : Type a} {B : A ? Type b} {x x? : A} {y : B x} {y? : B x?} ? ? (x ? x?) (? p ? subst B p y ? y?) ? Path (? A B) (x , y) (x? , y?) ?-intro-? {B = B} (p , q) i = p i , toPathP {A = ? i ? B (p i)} q i All the best, James On 19/01/2021 19:55, Vlad Rusu wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > Dear all, > > Is there a Cubical Agda equivalent of the following Agda statement for > dependent equality ? With appropriate imports the statement is accepted > by Cubical Agda. Obviously, the proof is not. > > Best regards, > > ?- Vlad > > |?-?-intro : ? {? ?}{A : Set ?}{B : A ? Set ?}{a a' : A}{b : B a}{b' : B > a'} ? (? (a ? a') ? p ? subst B p b ? b') ? (a , b) ? (a' , b') > ?-?-intro (refl , refl) = refl | > || > > | > | > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From Vlad.Rusu at inria.fr Wed Jan 20 05:30:54 2021 From: Vlad.Rusu at inria.fr (Vlad Rusu) Date: Wed, 20 Jan 2021 05:30:54 +0100 Subject: [Agda] dependent equality in Cubical Agda In-Reply-To: References: Message-ID: <60abf31b-952d-3e26-f44e-5643a3203e8c@inria.fr> |Hi James,| |Thank you very much for the solution and explanations!| |Best regards,| |?- Vlad | || -------------- next part -------------- An HTML attachment was scrubbed... URL: From Thierry.Coquand at cse.gu.se Wed Jan 20 19:38:25 2021 From: Thierry.Coquand at cse.gu.se (Thierry Coquand) Date: Wed, 20 Jan 2021 18:38:25 +0000 Subject: [Agda] two fully funded PhD positions in type theory Message-ID: <1B889378-403D-412F-AEAF-A91C62348D18@chalmers.se> Please distribute to undergraduate and master's students and appropriate counsellors and supervisors. We have two fully funded PhD positions for work in type theory at Chalmers/Univ. of Gothenburg. Observe that you will get employed at the Univ. of Gothenburg with full employment benefits (health care, pension, etc). Our research ranges from foundational studies (models, homotopy type theory) to actual implementations of interactive proof systems (Agda). The research group consists, beside myself, of Andreas Abel, Nils Anders Danielsson, Peter Dybjer, Ulf Norell and Christian Sattler. PhD positions usually extend to 5 years, where every year you spend 80% of your time reading courses and working on your research, and 20% on teaching. Deadline for application: February 14th 2021 For information on how to apply and whom to contact if you have further questions please visit this link https://web103.reachmee.com/ext/I005/1035/job?site=7&lang=UK&validator=9b89bead79bb7258ad55c8d75228e5b7&job_id=18601 Best regards, Thierry Coquand -------------- next part -------------- An HTML attachment was scrubbed... URL: From capn.freako at gmail.com Thu Jan 21 00:19:08 2021 From: capn.freako at gmail.com (David Banas) Date: Wed, 20 Jan 2021 15:19:08 -0800 Subject: [Agda] How to write a type alias for _->_? Message-ID: <2D94CE6C-7D95-467F-9F9C-DCDB0ECACA4C@gmail.com> Hi all, I?m trying to define a type alias for function arrow: _->_, and can?t make it work. Here?s my code: _?_ : ? {A B : Set} ? A ? B ? Set? _?_ A B = {!A ? B!} And, when I type `C-c C-` in the hole, the ?A? gets highlighted in red and I?m told: A? should be a sort, but it isn't when checking that the expression A has type _3 which I don?t really understand. Can anyone shed some light? Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Thu Jan 21 00:28:06 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Wed, 20 Jan 2021 23:28:06 +0000 Subject: [Agda] How to write a type alias for _->_? In-Reply-To: <2D94CE6C-7D95-467F-9F9C-DCDB0ECACA4C@gmail.com> References: <2D94CE6C-7D95-467F-9F9C-DCDB0ECACA4C@gmail.com> Message-ID: <8e18e067-def4-4fa0-65fe-6612ff9e531f@strath.ac.uk> Hi David, The `A` introduced on the left hand side of the `=` is an inhabitant of the `A` introduced implicitly (which the type checker now calls `A?`, because it was shadowed by the former `A`). The story for the `B`s is similar. Remember that `X ? Y` is a shorthand for `(_ : X) ? Y`, i.e, we get to talk about inhabitants of `X`. This contrasts with `? X ? Y`, which is a shorthand for `(X : _) ? Y`. Ignoring potential for universe polymorphism, _?_ should have the much simpler type `Set ? Set ? Set`. That is, it takes two types, say, `A` and `B`, and produces a new type `A ? B`. Regards, James On 20/01/2021 23:19, David Banas wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > Hi all, > > I?m trying to define a type alias for function arrow: _->_, and can?t > make it work. > Here?s my code: > > _?_ : ? {A B : Set} ? A ? B ? Set? > _?_ A B = {!A ? B!} > > > And, when I type `C-c C-` in the hole, the ?A? gets highlighted > in red and I?m told: > > A? should be a sort, but it isn't > when checking that the expression A has type _3 > > > which I don?t really understand. > > Can anyone shed some light? > > Thanks, > -db > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From P.Achten at cs.ru.nl Fri Jan 22 14:47:17 2021 From: P.Achten at cs.ru.nl (Peter Achten) Date: Fri, 22 Jan 2021 14:47:17 +0100 Subject: [Agda] [Lambda Days + TFP + TFPIE 2021] call for participation Message-ID: <6ab90ef0-b269-f6b6-ff2a-d28f310badec@cs.ru.nl> ------------------------------------------------------------------------------- ????????????? C A L L? F O R? P A R T I C I P A T I O N ?????????????????????????? 8th Lambda Days ????????????????????????????????? + ?10th International Workshop on Trends in Functional Programming in Education ????????????????????????????????? + ?????????? 22nd Symposium on Trends in Functional Programming ???????????????????????? 16 - 19 February 2021 ?????????????????? https://www.lambdadays.org/lambdadays2021 ------------------------------------------------------------------------------- The programmes for Lambda Days, TFPIE, and TFP are online: - Lambda Days overall program at: https://www.lambdadays.org/lambdadays2021 - TFPIE????? specific program at: https://wiki.tfpie.science.ru.nl/TFPIE2021 - TFP??????? specific program at: http://tfp2021.org/ (all times are in Central European Time Zone: 12.00:18.00 (CEST)) Lambda Days is a place where academia meets industry, where research and practical application collide. Once again Lambda Days joins forces with Trends in Functional Programming (TFP) and Trends in Functional Programming in Education (TFPiE) so that for four days you can be at the centre of the functional programming world. The program has a lot of interesting talks, possibilities for interaction, and a host of keynote presentations: Lambda Days keynote speakers: ----------------------------- Perdita Stevens, Pat Hannahan, Simon Peyton Jones, Andy Gordon, Philip Wadler. Trends in Functional Programming in Education keynote speakers: --------------------------------------------------------------- Francesco Cesarini, Simon Thompson, and Bartosz Milewski. Trends in Functional Programming keynote speaker: ------------------------------------------------- Zhenjiang Hu. Thanks to a generous sponsor, TFP has a limited number of free tickets for PhD, Msc, Bsc students with an interest in functional programming. To apply, send a mail to the program chair of TFP, Vikt?ria Zs?k (zsv at elte.hu) with your name, university, 2-3 lines of motivation, and a valid student card photo to get the registration code. Tickets will be delivered in the order of application. From Vlad.Rusu at inria.fr Mon Jan 25 12:21:25 2021 From: Vlad.Rusu at inria.fr (Vlad Rusu) Date: Mon, 25 Jan 2021 12:21:25 +0100 Subject: [Agda] Cubical Agda: injection is bijection to restricted codomain Message-ID: Dear all, I am trying to formalise in Cubical Agda the fact that an injective function f : A -> B becomes a bijection between A and f A, where f A is the image of A by f. Moreover I would like to prove the bijection by exhibiting a function f' : f A -> A and show that the two functions are inverse to each other, thus obtaining an isomorphism and then the cubical equality between A and f A. Below is what I did so far. I am left with one hole but can't see how to fill it. Does anyone have an idea what term goes there? Best regards, ?- Vlad --- {-# OPTIONS --cubical? #-} module Injection where open import Cubical.Core.Everything open import Cubical.Foundations.Prelude trans : {A : Set} (a b c : A) ? a ? b ? b ? c ? a ? c trans a _ _? p q i = hcomp ?(? j -> ? ? { (i = i0) -> a ? ; (i = i1) -> q j ? }) ?(p i) -- image of a function f : A ? B : the elements b ? B for which there is an a ? A and a proof that b ? f a -- the element of A and the proof are quotiented away so that they don't interfere in equalities -- would an additional constructor identifying all identity proofs (like "squash/" in Cubical.HITs.SetQuotients) be helpful? data Im {A B : Set}? (f : A ? B) : Set where ? [_] : ?[ b ? B ] (?[ a ? A ] (f a? ? b)) ? Im? f ? []-law : forall b b' ? fst b ? fst b' ? [ b ] ? [ b' ] -- from A to the image A?fA : {A B : Set}? (f : A ? B) (a : A) ? Im f A?fA f a = [ f a , a , refl? ] -- and back. The injectiveness of the function is used here. fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? a') ? Im f ? A fA?A?? f f-inj?? [ b , a , p ] = a fA?A f f-inj ([]-law (b , a , P)? (b' , a' , P')? Heq i) = f-inj _ _? ( trans _ _ _ (trans _ _ _ P Heq)? ((sym P'))) i -- this direction is easy A?fA?A : {A B : Set}? (f : A ? B)? (f-inj : ? a a' ? f a ? f a' ? a ? a') (a : A)? fA?A? f f-inj (A?fA? f a ) ? a A?fA?A?? f? f-inj?? a?? = refl -- this one, not so much fA?A?fA : {A B : Set}? (f : A ? B)? (f-inj : ? a a' ? f a ? f a' ? a ? a') (b' : Im? f)?? A?fA? f (fA?A? f f-inj b') ? b' fA?A?fA f f-inj [ b , a ,? P ]? = []-law (f a , (a , refl)) (b , (a , P)) P fA?A?fA f f-inj ([]-law (b , a ,? P)? (b' , a' ,? P' ) Heqb i)? = {!!} {- trans {!!} {!!} {!!} {!!} {! !} {!!} ? where ? aux :? [ b ,? a , P ] ? [ b' , a' , P' ] ? aux = {!!} ?-} From guillaume.brunerie at gmail.com Mon Jan 25 12:51:38 2021 From: guillaume.brunerie at gmail.com (Guillaume Brunerie) Date: Mon, 25 Jan 2021 12:51:38 +0100 Subject: [Agda] Cubical Agda: injection is bijection to restricted codomain In-Reply-To: References: Message-ID: Hi Vlad, I don't think that what you are trying to prove is true, or at least not in the way you formulated it. If you take for instance the map from Unit to the higher inductive circle, it is injective in your sense, but its image is the whole circle, so it is not going to be bijective. You need to change something in the statement, for instance restricting it to hSets, or having a stronger definition of "injective" that works differently for arbitrary types. Also, you don't need the []-law constructor, that should hold automatically. Best, Guillaume Den m?n 25 jan. 2021 12:21Vlad Rusu skrev: > Dear all, > > I am trying to formalise in Cubical Agda the fact that an injective > function f : A -> B becomes a bijection between A and f A, where f A is > the image of A by f. > > Moreover I would like to prove the bijection by exhibiting a function f' > : f A -> A and show that the two functions are inverse to each other, > thus obtaining an isomorphism and then the cubical equality between A > and f A. > > Below is what I did so far. I am left with one hole but can't see how to > fill it. Does anyone have an idea what term goes there? > > Best regards, > > - Vlad > > --- > > {-# OPTIONS --cubical #-} > > module Injection where > > open import Cubical.Core.Everything > open import Cubical.Foundations.Prelude > > trans : {A : Set} (a b c : A) ? a ? b ? b ? c ? a ? c > trans a _ _ p q i = hcomp > (? j -> ? > { (i = i0) -> a > ; (i = i1) -> q j > }) > (p i) > > > -- image of a function f : A ? B : the elements b ? B for which there is > an a ? A and a proof that b ? f a > -- the element of A and the proof are quotiented away so that they don't > interfere in equalities > > -- would an additional constructor identifying all identity proofs (like > "squash/" in Cubical.HITs.SetQuotients) be helpful? > > data Im {A B : Set} (f : A ? B) : Set where > [_] : ?[ b ? B ] (?[ a ? A ] (f a ? b)) ? Im f > []-law : forall b b' ? fst b ? fst b' ? [ b ] ? [ b' ] > > -- from A to the image > A?fA : {A B : Set} (f : A ? B) (a : A) ? Im f > A?fA f a = [ f a , a , refl ] > > -- and back. The injectiveness of the function is used here. > fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? a') ? > Im f ? A > fA?A f f-inj [ b , a , p ] = a > fA?A f f-inj ([]-law (b , a , P) (b' , a' , P') Heq i) = f-inj _ _ ( > trans _ _ _ (trans _ _ _ P Heq) ((sym P'))) i > > -- this direction is easy > A?fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? > a') (a : A)? fA?A f f-inj (A?fA f a ) ? a > A?fA?A f f-inj a = refl > > -- this one, not so much > fA?A?fA : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? > a') (b' : Im f)? A?fA f (fA?A f f-inj b') ? b' > fA?A?fA f f-inj [ b , a , P ] = []-law (f a , (a , refl)) (b , (a , P)) P > fA?A?fA f f-inj ([]-law (b , a , P) (b' , a' , P' ) Heqb i) = {!!} > {- > trans {!!} {!!} {!!} {!!} {! !} {!!} > where > aux : [ b , a , P ] ? [ b' , a' , P' ] > aux = {!!} > -} > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Vlad.Rusu at inria.fr Mon Jan 25 13:34:15 2021 From: Vlad.Rusu at inria.fr (Vlad Rusu) Date: Mon, 25 Jan 2021 13:34:15 +0100 Subject: [Agda] Cubical Agda: injection is bijection to restricted codomain In-Reply-To: References: Message-ID: Hi Guillaume, Thanks for your answer. My knowledge of Cubical Agda and especially of the underlying theory is quite limited. You are suggesting to restrict the statement to hSets. I don't see them occurring in the Cubical section of Agda's documentation. What are those, and is there other documentation/code/... that one could use to get acquainted with them? Best regards, ?- Vlad Le 25/01/2021 ? 12:51, Guillaume Brunerie a ?crit?: > Hi Vlad, > > I don't think that what you are trying to prove is true, or at least > not in the way you formulated it. If you take for instance the map > from Unit to the higher inductive circle, it is injective in your > sense, but its image is the whole circle, so it is not going to be > bijective. > You need to change something in the statement, for instance > restricting it to hSets, or having a stronger definition of > "injective" that works differently for arbitrary types. > > Also, you don't need the []-law constructor, that should hold > automatically. > > Best, > Guillaume > > > Den m?n 25 jan. 2021 12:21Vlad Rusu > skrev: > > Dear all, > > I am trying to formalise in Cubical Agda the fact that an injective > function f : A -> B becomes a bijection between A and f A, where f > A is > the image of A by f. > > Moreover I would like to prove the bijection by exhibiting a > function f' > : f A -> A and show that the two functions are inverse to each other, > thus obtaining an isomorphism and then the cubical equality between A > and f A. > > Below is what I did so far. I am left with one hole but can't see > how to > fill it. Does anyone have an idea what term goes there? > > Best regards, > > ??- Vlad > > --- > > {-# OPTIONS --cubical? #-} > > module Injection where > > open import Cubical.Core.Everything > open import Cubical.Foundations.Prelude > > trans : {A : Set} (a b c : A) ? a ? b ? b ? c ? a ? c > trans a _ _? p q i = hcomp > ??(? j -> ? > ?? { (i = i0) -> a > ?? ; (i = i1) -> q j > ?? }) > ??(p i) > > > -- image of a function f : A ? B : the elements b ? B for which > there is > an a ? A and a proof that b ? f a > -- the element of A and the proof are quotiented away so that they > don't > interfere in equalities > > -- would an additional constructor identifying all identity proofs > (like > "squash/" in Cubical.HITs.SetQuotients) be helpful? > > data Im {A B : Set}? (f : A ? B) : Set where > ?? [_] : ?[ b ? B ] (?[ a ? A ] (f a? ? b)) ? Im? f > ?? []-law : forall b b' ? fst b ? fst b' ? [ b ] ? [ b' ] > > -- from A to the image > A?fA : {A B : Set}? (f : A ? B) (a : A) ? Im f > A?fA f a = [ f a , a , refl? ] > > -- and back. The injectiveness of the function is used here. > fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? > a') ? > Im f ? A > fA?A?? f f-inj?? [ b , a , p ] = a > fA?A f f-inj ([]-law (b , a , P)? (b' , a' , P')? Heq i) = f-inj _ > _? ( > trans _ _ _ (trans _ _ _ P Heq)? ((sym P'))) i > > -- this direction is easy > A?fA?A : {A B : Set}? (f : A ? B)? (f-inj : ? a a' ? f a ? f a' ? a ? > a') (a : A)? fA?A? f f-inj (A?fA? f a ) ? a > A?fA?A?? f? f-inj?? a?? = refl > > -- this one, not so much > fA?A?fA : {A B : Set}? (f : A ? B)? (f-inj : ? a a' ? f a ? f a' ? > a ? > a') (b' : Im? f)?? A?fA? f (fA?A? f f-inj b') ? b' > fA?A?fA f f-inj [ b , a ,? P ]? = []-law (f a , (a , refl)) (b , > (a , P)) P > fA?A?fA f f-inj ([]-law (b , a ,? P)? (b' , a' ,? P' ) Heqb i)? = {!!} > {- > trans {!!} {!!} {!!} {!!} {! !} {!!} > ?? where > ?? aux :? [ b ,? a , P ] ? [ b' , a' , P' ] > ?? aux = {!!} > ??-} > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume.brunerie at gmail.com Mon Jan 25 19:23:09 2021 From: guillaume.brunerie at gmail.com (Guillaume Brunerie) Date: Mon, 25 Jan 2021 19:23:09 +0100 Subject: [Agda] Cubical Agda: injection is bijection to restricted codomain In-Reply-To: References: Message-ID: hSets are types satisfying the predicate `isSet` (that you can find in Cubical.Foundations.Prelude). They are also sometimes simply called "sets", for instance in the HoTT Book (section 3.1). Note however that Agda?s "Set" corresponds to what is usually called "Type" in homotopy type theory. Best, Guillaume Den m?n 25 jan. 2021 kl 13:34 skrev Vlad Rusu : > > Hi Guillaume, > > Thanks for your answer. > > My knowledge of Cubical Agda and especially of the underlying theory is quite limited. > > You are suggesting to restrict the statement to hSets. I don't see them occurring in the Cubical section of Agda's documentation. What are those, and is there other documentation/code/... that one could use to get acquainted with them? > > Best regards, > > - Vlad > > Le 25/01/2021 ? 12:51, Guillaume Brunerie a ?crit : > > Hi Vlad, > > I don't think that what you are trying to prove is true, or at least not in the way you formulated it. If you take for instance the map from Unit to the higher inductive circle, it is injective in your sense, but its image is the whole circle, so it is not going to be bijective. > You need to change something in the statement, for instance restricting it to hSets, or having a stronger definition of "injective" that works differently for arbitrary types. > > Also, you don't need the []-law constructor, that should hold automatically. > > Best, > Guillaume > > > Den m?n 25 jan. 2021 12:21Vlad Rusu skrev: >> >> Dear all, >> >> I am trying to formalise in Cubical Agda the fact that an injective >> function f : A -> B becomes a bijection between A and f A, where f A is >> the image of A by f. >> >> Moreover I would like to prove the bijection by exhibiting a function f' >> : f A -> A and show that the two functions are inverse to each other, >> thus obtaining an isomorphism and then the cubical equality between A >> and f A. >> >> Below is what I did so far. I am left with one hole but can't see how to >> fill it. Does anyone have an idea what term goes there? >> >> Best regards, >> >> - Vlad >> >> --- >> >> {-# OPTIONS --cubical #-} >> >> module Injection where >> >> open import Cubical.Core.Everything >> open import Cubical.Foundations.Prelude >> >> trans : {A : Set} (a b c : A) ? a ? b ? b ? c ? a ? c >> trans a _ _ p q i = hcomp >> (? j -> ? >> { (i = i0) -> a >> ; (i = i1) -> q j >> }) >> (p i) >> >> >> -- image of a function f : A ? B : the elements b ? B for which there is >> an a ? A and a proof that b ? f a >> -- the element of A and the proof are quotiented away so that they don't >> interfere in equalities >> >> -- would an additional constructor identifying all identity proofs (like >> "squash/" in Cubical.HITs.SetQuotients) be helpful? >> >> data Im {A B : Set} (f : A ? B) : Set where >> [_] : ?[ b ? B ] (?[ a ? A ] (f a ? b)) ? Im f >> []-law : forall b b' ? fst b ? fst b' ? [ b ] ? [ b' ] >> >> -- from A to the image >> A?fA : {A B : Set} (f : A ? B) (a : A) ? Im f >> A?fA f a = [ f a , a , refl ] >> >> -- and back. The injectiveness of the function is used here. >> fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? a') ? >> Im f ? A >> fA?A f f-inj [ b , a , p ] = a >> fA?A f f-inj ([]-law (b , a , P) (b' , a' , P') Heq i) = f-inj _ _ ( >> trans _ _ _ (trans _ _ _ P Heq) ((sym P'))) i >> >> -- this direction is easy >> A?fA?A : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? >> a') (a : A)? fA?A f f-inj (A?fA f a ) ? a >> A?fA?A f f-inj a = refl >> >> -- this one, not so much >> fA?A?fA : {A B : Set} (f : A ? B) (f-inj : ? a a' ? f a ? f a' ? a ? >> a') (b' : Im f)? A?fA f (fA?A f f-inj b') ? b' >> fA?A?fA f f-inj [ b , a , P ] = []-law (f a , (a , refl)) (b , (a , P)) P >> fA?A?fA f f-inj ([]-law (b , a , P) (b' , a' , P' ) Heqb i) = {!!} >> {- >> trans {!!} {!!} {!!} {!!} {! !} {!!} >> where >> aux : [ b , a , P ] ? [ b' , a' , P' ] >> aux = {!!} >> -} >> >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda From matthewdaggitt at gmail.com Tue Jan 26 03:11:47 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Tue, 26 Jan 2021 10:11:47 +0800 Subject: [Agda] [ANNOUNCE] Standard library v1.5 Message-ID: Dear all, The Agda Team is very pleased to announce the release of the standard library 1.5. The library has been tested using Agda 2.6.1.1. and 2.6.1. The new version of the library, CHANGELOG and README are available at http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.StandardLibrary Highlights include: - Regular expressions over both arbitrary types and Strings. - Instance declarations for IsDecEquivalence and IsDecTotalOrder over various data types. - Bindings for Haskell's System.Environment and System.Exit. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Thu Jan 28 22:48:11 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Fri, 29 Jan 2021 00:48:11 +0300 Subject: [Agda] profiling Message-ID: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> Can anybody, please, advise on something like profiling in Agda? I compare the two methods to compute a certain function f on polynomials: `simple' and `optimized'. In Haskell, `optimized' is reasonably faster on tests than `simple', as expected. Then I program the same algorithms in Agda, only ordinary computation is mixed there with forming proofs. And the Main test program does not print proofs. Now, Agda-simple performs as fast as Haskell-simple (1.5 times slower). But Agda-optimized performs hundreds times slower. I am sure that this can be fixed - after finding a certain responsible function. So far, I fail with discovering such. In the Glasgow Haskell system I sometimes used profiling, and it helped. Is there something of this kind that can be used with Agda-2.6.1, MAlonzo, ghc-8.8.3 ? Thanks, ------ Sergei From ulf.norell at gmail.com Fri Jan 29 07:05:26 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Fri, 29 Jan 2021 07:05:26 +0100 Subject: [Agda] profiling In-Reply-To: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> Message-ID: Hi Sergei, Agda compiles via Haskell so you can use all the Haskell profiling tools on the code generated by Agda. / Ulf On Thu, Jan 28, 2021 at 10:48 PM wrote: > Can anybody, please, advise on something like profiling in Agda? > > I compare the two methods to compute a certain function f on > polynomials: > `simple' and `optimized'. > In Haskell, `optimized' is reasonably faster on tests than `simple', > as expected. > Then I program the same algorithms in Agda, only ordinary computation > is mixed there with forming proofs. > And the Main test program does not print proofs. > Now, Agda-simple performs as fast as Haskell-simple (1.5 times slower). > But Agda-optimized performs hundreds times slower. > > I am sure that this can be fixed - after finding a certain responsible > function. So far, I fail with discovering such. > In the Glasgow Haskell system I sometimes used profiling, and it helped. > Is there something of this kind that can be used with > Agda-2.6.1, MAlonzo, ghc-8.8.3 ? > > Thanks, > > ------ > Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From iblech at speicherleck.de Fri Jan 29 23:30:46 2021 From: iblech at speicherleck.de (Ingo Blechschmidt) Date: Fri, 29 Jan 2021 23:30:46 +0100 Subject: [Agda] installing agda In-Reply-To: <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> Message-ID: Dear Patricia, On Thu 17 Dec 2020 05:24:43 PM GMT, Patricia Peratto wrote: > When I execute cabal update it finishes. > I have executed cabal install Agda many times. I am very sorry that you experienced issues in installing Agda. As a non-implementor of Agda, I can declare that Agda is a game of true beauty without overstepping the conventions of humbleness. Please don't let the first impression fool you and embrace the second impression. :-) In case there are still installation difficulties, you might want to check out the online version of Agda at https://agdapad.quasicoherent.io/. You can even play this form of Agda with your friends (everybody will see and access the same Emacs window). However, the Agdapad is only suited for smaller experiments. But it might be enough to get you going! Please report any issues you might have with it. As soon as the new release of agda-categories which is compatible with the new standard-library 1.5 will be cut, I'll upgrade all available libraries on the Agdapad to their most recent version. Cheers, Ingo From nicolai.kraus at gmail.com Fri Jan 29 23:50:56 2021 From: nicolai.kraus at gmail.com (Nicolai Kraus) Date: Fri, 29 Jan 2021 22:50:56 +0000 Subject: [Agda] installing agda In-Reply-To: References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> Message-ID: On 29/01/2021 22:30, Ingo Blechschmidt wrote: > https://agdapad.quasicoherent.io/. Wow, this is very nice! Now I know where to send newcomers who want to have a try. :) Nicolai From manuel at enigmage.de Sat Jan 30 15:32:12 2021 From: manuel at enigmage.de (=?UTF-8?Q?Manuel_B=c3=a4renz?=) Date: Sat, 30 Jan 2021 15:32:12 +0100 Subject: [Agda] installing agda In-Reply-To: References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> Message-ID: <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> > In case there are still installation difficulties, you might want to > check out the online version of Agda at > > https://agdapad.quasicoherent.io/. This is fantastic! What software is this? Can it be embedded easily in an existing page? How about making an "official" server that is linked from the agda docs? It would be great to have this linked so beginners find it quickly. From iblech at speicherleck.de Sat Jan 30 18:01:10 2021 From: iblech at speicherleck.de (Ingo Blechschmidt) Date: Sat, 30 Jan 2021 18:01:10 +0100 Subject: [Agda] installing agda In-Reply-To: <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> Message-ID: Dear Manuel, On Sat 30 Jan 2021 03:32:12 PM GMT, Manuel B?renz wrote: > > In case there are still installation difficulties, you might want to > > check out the online version of Agda at > > > > https://agdapad.quasicoherent.io/. > > This is fantastic! What software is this? Can it be embedded easily in > an existing page? glad that you like it! It's a self-rolled potpourri of diverse free software components. On each request, a lightweight container is spawned which the browser communicates with using the VNC protocol. There are some optimizations with pre-starting containers so that loading time is minimized. It can in principle be easily embedded into existing pages, for instance as an iframe. Just note that, unlike Nextjournal (https://nextjournal.com/plfa/ToC), all visitors will access the same pad. Great for collaboration or for guiding Agda learners, not so great for blogs. Do you think that an "open this block of code as an Agdapad" feature (perhaps even with a pinned version of Agda and Agda libraries), where clicking on such a link would open a fresh Agdapad, would be useful? > How about making an "official" server that is linked from the agda docs? > It would be great to have this linked so beginners find it quickly. I would volunteer to provide my server as "official server", or to manage someone else's server. (But let's start small, see whether people are using it, ...) I didn't get around to cleaning up my code, but hope to release it in the very near future, enabling anybody to host their own Agdapad instances. Cheers, Ingo From andrea at nextjournal.com Sat Jan 30 18:02:30 2021 From: andrea at nextjournal.com (Andrea Amantini) Date: Sat, 30 Jan 2021 18:02:30 +0100 Subject: [Agda] installing agda In-Reply-To: <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> Message-ID: <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> Dear All, we?re hosting online Agda notebooks on nextjournal which you can try out at https://nextjournal.com/try/agda and it?s an installation-free solution as well. We have a default environment with atm Agda 2.6.1.2 + standard library version 1.4. You can build your own custom environments in the platform itself, since these are also built in notebooks. Check how Cubical library is installed https://nextjournal.com/nextjournal/agda-environment#cubical-agda-? Our typechecking is based on a Jupyter Kernel and as such is limited to a subset of the whole emacs mode interaction (rudimentary hole goal inspection and Auto/Split/Refine). So our approach rather focused on literate programming and ease of sharing and reusing notebooks, some of our users use notebooks for teaching. I?ll be glad to share more facts if you need. Ingo?s solution is indeed amazing as I guess delivers a 1:1 emacs experience right? Cheers, Andrea > On 30. Jan 2021, at 15:32, Manuel B?renz wrote: > > >> In case there are still installation difficulties, you might want to >> check out the online version of Agda at >> >> https://agdapad.quasicoherent.io/. > > This is fantastic! What software is this? Can it be embedded easily in > an existing page? > > How about making an "official" server that is linked from the agda docs? > It would be great to have this linked so beginners find it quickly. > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrea at nextjournal.com Sat Jan 30 18:14:11 2021 From: andrea at nextjournal.com (Andrea Amantini) Date: Sat, 30 Jan 2021 18:14:11 +0100 Subject: [Agda] installing agda In-Reply-To: <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> Message-ID: <78B2B9D3-1439-4831-B3B2-AA60B88C445B@nextjournal.com> Dear Ingo, > On each request, a lightweight container is > spawned which the browser communicates with using the VNC protocol. > There are some optimizations with pre-starting containers so that > loading time is minimized. yeah, that?s very nice. Glad you saw our PLFA (which I need to update), did you try that out for teaching? As I wrote, our interaction with the typechecker a bit limited and some user might be deceived by that. And probably just the notebook model and Agda evaluation are not really made for each other :-) The ?nice? part is that the top module you need to define in our notebooks is actually dumped to a file by the python kernel, so when you export a runtime (actually a docker commit) you actually can re-import your module in other notebooks. glad to share more if you like, Andrea From iblech at speicherleck.de Sat Jan 30 18:46:20 2021 From: iblech at speicherleck.de (Ingo Blechschmidt) Date: Sat, 30 Jan 2021 18:46:20 +0100 Subject: [Agda] installing agda In-Reply-To: <78B2B9D3-1439-4831-B3B2-AA60B88C445B@nextjournal.com> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> <78B2B9D3-1439-4831-B3B2-AA60B88C445B@nextjournal.com> Message-ID: Dear Andrea, On Sat 30 Jan 2021 06:14:11 PM GMT, Andrea Amantini wrote: > > On each request, a lightweight container is > > spawned which the browser communicates with using the VNC protocol. > > There are some optimizations with pre-starting containers so that > > loading time is minimized. > > yeah, that?s very nice. Glad you saw our PLFA (which I need to > update), did you try that out for teaching? As I wrote, our > interaction with the typechecker a bit limited and some user might be > deceived by that. yes, I like the notebook integration very much :-) I didn't try Nextjournal for teaching -- for my course I wanted the full Emacs experience and the collaborative aspect of people sharing the same Emacs window. > The ?nice? part is that the top module you need to define in our > notebooks is actually dumped to a file by the python kernel, so when > you export a runtime (actually a docker commit) you actually can > re-import your module in other notebooks. Yes, that is very nice! I guess the two approaches are nicely complimentary. :-) Cheers, Ingo From andrea at nextjournal.com Sat Jan 30 18:53:02 2021 From: andrea at nextjournal.com (Andrea Amantini) Date: Sat, 30 Jan 2021 18:53:02 +0100 Subject: [Agda] installing agda In-Reply-To: References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> <78B2B9D3-1439-4831-B3B2-AA60B88C445B@nextjournal.com> Message-ID: <67C9FC35-296B-458B-A06D-BB8942B40D12@nextjournal.com> > the collaborative aspect of people sharing the > same Emacs window. nextjournal has collaborative editing as well ;-) you can create groups or grant individual access to your notebooks. -------------- next part -------------- An HTML attachment was scrubbed... URL: From gabriel.scherer at gmail.com Sat Jan 30 21:09:39 2021 From: gabriel.scherer at gmail.com (Gabriel Scherer) Date: Sat, 30 Jan 2021 21:09:39 +0100 Subject: [Agda] installing agda In-Reply-To: <67C9FC35-296B-458B-A06D-BB8942B40D12@nextjournal.com> References: <1361511187.3882308.1608236239736.JavaMail.zimbra@vera.com.uy> <213728349.3887813.1608236683935.JavaMail.zimbra@vera.com.uy> <297ba3c1-e24d-2e95-5194-b59dd19e2c68@enigmage.de> <237CF960-9B00-48E6-9783-4206CBBBC1AE@nextjournal.com> <78B2B9D3-1439-4831-B3B2-AA60B88C445B@nextjournal.com> <67C9FC35-296B-458B-A06D-BB8942B40D12@nextjournal.com> Message-ID: On the other hand, as far as I understand, nextjournal is proprietary software, while the sources for agdapad are available for self-hosting ( https://github.com/iblech/agdapad ). (Nextjournal appears to do a lot of things right, they have plenty of git repositories with patches/contributions on the software they use, https://github.com/nextjournal, and if I understand correctly they use cool technology like Guix.) On Sat, Jan 30, 2021 at 6:53 PM Andrea Amantini wrote: > > the collaborative aspect of people sharing the > same Emacs window. > > > nextjournal has collaborative editing as well ;-) you can create groups or > grant individual access to your notebooks. > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tarmo at cs.ioc.ee Sun Jan 31 16:21:59 2021 From: tarmo at cs.ioc.ee (Tarmo Uustalu) Date: Sun, 31 Jan 2021 17:21:59 +0200 Subject: [Agda] ETAPS Test of Time Award 2021, call for nominations Message-ID: <20210131172159.303eccfa@cs.ioc.ee> ETAPS Test of Time Award The ETAPS Test of Time Award recognizes outstanding papers published more than 10 years in the past in one of the constituent conferences of ETAPS. The Award recognises the impact of excellent research results that have been published at ETAPS. See https://www.etaps.org/about/test-of-time-award Nominations Nominations for the 2021 ETAPS Test of Time Award are solicited from the ETAPS community. A nomination should include the title and publication details of the nominated paper, explain the influence it has had since publication, and why it merits the award. It should be phrased in terms that are understandable by the members of the award committee and suitable for use in the award citation, and should be endorsed by at least 2 people other than the person submitting the nomination. Self-nominations are not allowed. Nominations should be sent by Monday 15 February to the chair of the award committee, Don Sannella . Award committee The 2021 award committee consists of Rance Cleaveland, Ugo Dal Lago, Marieke Huisman, Peter Ryan, Don Sannella (chair), Gabriele Taentzer and Peter Thiemann. From mechvel at scico.botik.ru Sun Jan 31 22:23:15 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 01 Feb 2021 00:23:15 +0300 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> Message-ID: <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> On 2021-01-29 09:05, Ulf Norell wrote: > Hi Sergei, > > Agda compiles via Haskell so you can use all the Haskell profiling > tools on the code generated by Agda. I tried > agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda , where "-prof" is a flag for compiling with profiling by ghc (8.8.3). It reports Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) ... MAlonzo/RTE.hs:9:1: error: Could not find module ?Numeric.IEEE? Perhaps you haven't installed the profiling libraries for package ?ieee754-0.8.0?? Need I to download the package ieee754-0.8.0.tar.gz for Haskell and somehow `make' it with profiling? There are the files ieee754.cabal and Setup.lhs. Need I to do > cabal install ? How to specify "with profiling"? May be to set somewhere to Setup.lhs "-enable-library-profiling" ? (it may occur hundreds of packages that may need to rebuild with profiling - ?). Thanks, ------ Sergei From ulf.norell at gmail.com Mon Feb 1 08:42:36 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Mon, 1 Feb 2021 08:42:36 +0100 Subject: [Agda] profiling In-Reply-To: <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: You pass `--enable-library-profiling` to `cabal`. To make libraries install with profiling by default you can add `library-profiling: True` to `~/.cabal/config`. There are some issues with the new way cabal works and compiling Agda programs (see https://github.com/agda/agda/issues/4627), so I would try cabal v1-install ieee754 --enable-library-profiling / Ulf On Sun, Jan 31, 2021 at 10:23 PM wrote: > On 2021-01-29 09:05, Ulf Norell wrote: > > Hi Sergei, > > > > Agda compiles via Haskell so you can use all the Haskell profiling > > tools on the code generated by Agda. > > > I tried > > agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda > > , where "-prof" is a flag for compiling with profiling by ghc (8.8.3). > It reports > > Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) > ... > MAlonzo/RTE.hs:9:1: error: > Could not find module ?Numeric.IEEE? > Perhaps you haven't installed the profiling libraries for package > ?ieee754-0.8.0?? > > Need I to download the package ieee754-0.8.0.tar.gz for Haskell and > somehow > `make' it with profiling? > There are the files ieee754.cabal and Setup.lhs. > Need I to do > > cabal install > ? > How to specify "with profiling"? > May be to set somewhere to Setup.lhs "-enable-library-profiling" ? > > (it may occur hundreds of packages that may need to rebuild with > profiling - ?). > > Thanks, > > ------ > Sergei > -------------- next part -------------- An HTML attachment was scrubbed... URL: From icfp.publicity at googlemail.com Tue Feb 2 16:57:09 2021 From: icfp.publicity at googlemail.com (Sam Tobin-Hochstadt) Date: Tue, 02 Feb 2021 10:57:09 -0500 Subject: [Agda] Call for Papers: PACMPL issue ICFP 2021 Message-ID: <60197655f5bc_c46e221c-4b5@homer.mail> PACMPL Volume 5, Issue ICFP 2021 Call for Papers Accepted papers to be invited for presentation at The 26th ACM SIGPLAN International Conference on Functional Programming To Be Held Virtualy http://icfp21.sigplan.org/ ### Important dates Submissions due: 2 March 2021 (Tuesday) Anywhere on Earth https://icfp21.hotcrp.com Author response: 20 April (Tuesday) - 23 April (Friday) 17:00 UTC Notification: 7 May (Friday) Final copy due: 30 June (Wednesday) Conference: 22 August (Sunday) - 27 August (Friday) ### About PACMPL Proceedings of the ACM on Programming Languages (PACMPL ) is a Gold Open Access journal publishing research on all aspects of programming languages, from design to implementation and from mathematical formalisms to empirical studies. Each issue of the journal is devoted to a particular subject area within programming languages and will be announced through publicized Calls for Papers, like this one. ### Scope [PACMPL](https://pacmpl.acm.org/) issue ICFP 2021 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, and from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects, concurrency, or parallelism. Topics of interest include (but are not limited to): * Language Design: concurrency, parallelism, and distribution; modules; components and composition; metaprogramming; macros; pattern matching; type systems; type inference; dependent types; session types; gradual typing; refinement types; interoperability; domain-specific languages; imperative programming; object-oriented programming; logic programming; probabilistic programming; reactive programming; generic programming; bidirectional programming. * Implementation: abstract machines; virtual machines; interpretation; compilation; compile-time and run-time optimization; garbage collection and memory management; runtime systems; multi-threading; exploiting parallel hardware; interfaces to foreign functions, services, components, or low-level machine resources. * Software-Development Techniques: algorithms and data structures; design patterns; specification; verification; validation; proof assistants; debugging; testing; tracing; profiling; build systems; program synthesis. * Foundations: formal semantics; lambda calculus; program equivalence; rewriting; type theory; logic; category theory; monads; continuations; control; state; effects; names and binding; program verification. * Analysis and Transformation: control flow; data flow; abstract interpretation; partial evaluation; program calculation. * Applications: symbolic computing; formal-methods tools; artificial intelligence; systems programming; distributed systems and web programming; hardware design; databases; XML processing; scientific and numerical computing; graphical user interfaces; graphics and multimedia; GPU programming; scripting; system administration; security. * Education: teaching introductory programming; parallel programming; mathematical proof; algebra. Submissions will be evaluated according to their relevance, correctness, significance, originality, and clarity. Each submission should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. The technical content should be accessible to a broad audience. PACMPL issue ICFP 2021 also welcomes submissions in two separate categories ? Functional Pearls and Experience Reports ? that must be marked as such when submitted and that need not report original research results. Detailed guidelines on both categories are given at the end of this call. Please contact the associate editor if you have questions or are concerned about the appropriateness of a topic. ### Preparation of submissions **Deadline**: The deadline for submissions is **Tuesday, March 2, 2021**, Anywhere on Earth (). This deadline will be strictly enforced. **Formatting**: Submissions must be in PDF format, printable in black and white on US Letter sized paper, and interpretable by common PDF tools. All submissions must adhere to the "ACM Small" template that is available (in both LaTeX and Word formats) from . There is a limit of **25 pages for a full paper or Functional Pearl** and **12 pages for an Experience Report**; in either case, the bibliography will not be counted against these limits. Submissions that exceed the page limits or, for other reasons, do not meet the requirements for formatting, will be summarily rejected. Supplementary material can and should be **separately** submitted (see below). See also PACMPL's Information and Guidelines for Authors at . **Submission**: Submissions will be accepted at Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. **Author Response Period**: Authors will have a 72-hour period, starting at 17:00 UTC on **Tuesday, April 20, 2021**, to read reviews and respond to them. **Supplementary Material**: Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. This supplementary material should **not** be submitted as part of the main document; instead, it should be uploaded as a **separate** PDF document or tarball. Supplementary material should be uploaded **at submission time**, not by providing a URL in the paper that points to an external repository. Authors are free to upload both anonymized and non-anonymized supplementary material. Anonymized supplementary material will be visible to reviewers immediately; non-anonymized supplementary material will be revealed to reviewers only after they have submitted their review of the paper and learned the identity of the author(s). **Authorship Policies**: All submissions are expected to comply with the ACM Policies for Authorship that are detailed at . **Republication Policies**: Each submission must adhere to SIGPLAN's republication policy, as explained on the web at . ### Review Process This section outlines the two-stage process with lightweight double-blind reviewing that will be used to select papers for PACMPL issue ICFP 2021. We anticipate that there will be a need to clarify and expand on this process, and we will maintain a list of frequently asked questions and answers on the PACMPL issue website to address common concerns. **PACMPL issue ICFP 2021 will employ a two-stage review process.** The first stage in the review process will assess submitted papers using the criteria stated above and will allow for feedback and input on initial reviews through the author response period mentioned previously. As a result of the review process, a set of papers will be conditionally accepted and all other papers will be rejected. Authors will be notified of these decisions on **May 7, 2021**. Authors of conditionally accepted papers will be provided with committee reviews along with a set of mandatory revisions. After four weeks (June 4, 2021), the authors will provide a second submission. The second and final reviewing phase assesses whether the mandatory revisions have been adequately addressed by the authors and thereby determines the final accept/reject status of the paper. The intent and expectation is that the mandatory revisions can be addressed within four weeks and hence that conditionally accepted papers will in general be accepted in the second phase. The second submission should clearly identify how the mandatory revisions were addressed. To that end, the second submission must be accompanied by a cover letter mapping each mandatory revision request to specific parts of the paper. The cover letter will facilitate a quick second review, allowing for confirmation of final acceptance within two weeks. Conversely, the absence of a cover letter will be grounds for the paper?s rejection. **PACMPL issue ICFP 2021 will employ a lightweight double-blind reviewing process.** To facilitate this, submitted papers must adhere to two rules: 1. **author names and institutions must be omitted**, and 2. **references to authors' own related work should be in the third person** (e.g., not "We build on our previous work ..." but rather "We build on the work of ..."). The purpose of this process is to help the reviewers come to an initial judgement about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing the paper more difficult (e.g., important background references should not be omitted or anonymized). In addition, authors should feel free to disseminate their ideas or draft versions of their paper as they normally would. For instance, authors may post drafts of their papers on the web or give talks on their research ideas. ### Information for Authors of Accepted Papers * As a condition of acceptance, final versions of all papers must adhere to the new ACM Small format. The page limit for the final versions of papers will be increased by two pages to help authors respond to reviewer comments and mandatory revisions: **27 pages plus bibliography for a regular paper or Functional Pearl, 14 pages plus bibliography for an Experience Report**. * Authors of accepted submissions will be required to agree to one of the three ACM licensing options: open access on payment of a fee (**recommended**, and SIGPLAN can cover the cost as described next); copyright transfer to ACM; or retaining copyright but granting ACM exclusive publication rights. Further information about ACM author rights is available from . * PACMPL is a Gold Open Access journal, and authors are encouraged to publish their work under a CC-BY license. Gold Open Access guarantees permanent free online access to the definitive version in the ACM Digital Library, and the recommended CC-BY option also allows anyone to copy and distribute the work with attribution. Gold Open Access has been made possible by generous funding through ACM SIGPLAN, which will cover all open access costs in the event authors cannot. Authors who can cover the costs may do so by paying an Article Processing Charge (APC). PACMPL, SIGPLAN, and ACM Headquarters are committed to exploring routes to making Gold Open Access publication both affordable and sustainable. * ACM offers authors a range of copyright options, one of which is Creative Commons CC-BY publication; this is the option recommended by the PACMPL editorial board. A reasoned argument in favour of this option can be found in the article [Why CC-BY?](https://oaspa.org/why-cc-by/) published by OASPA, the Open Access Scholarly Publishers Association. * ACM Author-Izer is a unique service that enables ACM authors to generate and post links on either their home page or institutional repository for visitors to download the definitive version of their articles from the ACM Digital Library at no charge. Downloads through Author-Izer links are captured in official ACM statistics, improving the accuracy of usage and impact measurements. Consistently linking to the definitive version of an ACM article should reduce user confusion over article versioning. After an article has been published and assigned to the appropriate ACM Author Profile pages, authors should visit to learn how to create links for free downloads from the ACM DL. * The official publication date is the date the papers are made available in the ACM Digital Library. This date may be up to *two weeks prior* to the first day of the conference. The official publication date affects the deadline for any patent filings related to published work. * Authors of each accepted submission are invited to attend and be available for the presentation of that paper at the conference. The schedule for presentations will be determined and shared with authors after the full program has been selected. ### Artifact Evaluation Authors of papers that are conditionally accepted in the first phase of the review process will be encouraged (but not required) to submit supporting materials for Artifact Evaluation. These items will then be reviewed by an Artifact Evaluation Committee, separate from the paper Review Committee, whose task is to assess how the artifacts support the work described in the associated paper. Papers that go through the Artifact Evaluation process successfully will receive a seal of approval printed on the papers themselves. Authors of accepted papers will be encouraged to make the supporting materials publicly available upon publication of the papers, for example, by including them as "source materials" in the ACM Digital Library. An additional seal will mark papers whose artifacts are made available, as outlined in the ACM guidelines for artifact badging. Participation in Artifact Evaluation is voluntary and will not influence the final decision regarding paper acceptance. ### Special categories of papers In addition to research papers, PACMPL issue ICFP solicits two kinds of papers that do not require original research contributions: Functional Pearls, which are full papers, and Experience Reports, which are limited to half the length of a full paper. Authors submitting such papers should consider the following guidelines. #### Functional Pearls A Functional Pearl is an elegant essay about something related to functional programming. Examples include, but are not limited to: * a new and thought-provoking way of looking at an old idea * an instructive example of program calculation or proof * a nifty presentation of an old or new data structure * an interesting application of functional programming techniques * a novel use or exposition of functional programming in the classroom While pearls often demonstrate an idea through the development of a short program, there is no requirement or expectation that they do so. Thus, they encompass the notions of theoretical and educational pearls. Functional Pearls are valued as highly and judged as rigorously as ordinary papers, but using somewhat different criteria. In particular, a pearl is not required to report original research, but, it should be concise, instructive, and entertaining. A pearl is likely to be rejected if its readers get bored, if the material gets too complicated, if too much specialized knowledge is needed, or if the writing is inelegant. The key to writing a good pearl is polishing. A submission that is intended to be treated as a pearl must be marked as such on the submission web page, and should contain the words "Functional Pearl" somewhere in its title or subtitle. These steps will alert reviewers to use the appropriate evaluation criteria. Pearls will be combined with ordinary papers, however, for the purpose of computing the conference's acceptance rate. #### Experience Reports The purpose of an Experience Report is to help create a body of published, refereed, citable evidence that functional programming really works -- or to describe what obstacles prevent it from working. Possible topics for an Experience Report include, but are not limited to: * insights gained from real-world projects using functional programming * comparison of functional programming with conventional programming in the context of an industrial project or a university curriculum * project-management, business, or legal issues encountered when using functional programming in a real-world project * curricular issues encountered when using functional programming in education * real-world constraints that created special challenges for an implementation of a functional language or for functional programming in general An Experience Report is distinguished from a normal PACMPL issue ICFP paper by its title, by its length, and by the criteria used to evaluate it. * Both in the papers and in any citations, the title of each accepted Experience Report must end with the words "(Experience Report)" in parentheses. The acceptance rate for Experience Reports will be computed and reported separately from the rate for ordinary papers. * Experience Report submissions can be at most 12 pages long, excluding bibliography. * Each Experience Report accepted to the PACMPL issue will be presented at the conference, but depending on the number of Experience Reports and regular papers accepted, authors of Experience reports may be asked to give shorter talks. * Because the purpose of Experience Reports is to enable our community to accumulate a body of evidence about the efficacy of functional programming, an acceptable Experience Report need not add to the body of knowledge of the functional-programming community by presenting novel results or conclusions. It is sufficient if the Report states a clear thesis and provides supporting evidence. The thesis must be relevant to the PACMPL issue, but it need not be novel. The review committee will accept or reject Experience Reports based on whether they judge the evidence to be convincing. Anecdotal evidence will be acceptable provided it is well argued and the author explains what efforts were made to gather as much evidence as possible. Typically, more convincing evidence is obtained from papers which show how functional programming was used than from papers which only say that functional programming was used. The most convincing evidence often includes comparisons of situations before and after the introduction or discontinuation of functional programming. Evidence drawn from a single person's experience may be sufficient, but more weight will be given to evidence drawn from the experience of groups of people. An Experience Report should be short and to the point: it should make a claim about how well functional programming worked on a particular project and why, and produce evidence to substantiate this claim. If functional programming worked in this case in the same ways it has worked for others, the paper need only summarize the results; the main part of the paper should discuss how well it worked and in what context. Most readers will not want to know all the details of the project and its implementation, but the paper should characterize the project and its context well enough so that readers can judge to what degree this experience is relevant to their own projects. The paper should take care to highlight any unusual aspects of the project. Specifics about the project are more valuable than generalities about functional programming; for example, it is more valuable to say that the team delivered its software a month ahead of schedule than it is to say that functional programming made the team more productive. If the paper not only describes experience but also presents new technical results, or if the experience refutes cherished beliefs of the functional-programming community, it may be better to submit it as a full paper, which will be judged by the usual criteria of novelty, originality, and relevance. The associate editor will be happy to advise on any concerns about which category to submit to. ### ICFP Organizers General Chair: Sukyoung Ryu (KAIST, South Korea) Accessibility Co-Chairs: Lindsey Kuper (UC Santa Cruz, USA), Kathrin Stark (Princeton University, USA) Artifact Evaluation Co-Chairs: Gabriel Scherer (INRIA Saclay, France), Brent Yorgey (Hendrix College, USA) Industrial Relations Co-Chairs: Alan Jeffrey (Roblox, USA), Simon Marlow (Facebook, England) Programming Contest Co-Organisers: Alex Lang, Jasper Van der Jeugt (Fugue, Switzerland) Publicity and Web Chair: Sam Tobin-Hochstadt (Indiana University, USA) Student Research Competition Chair: Anders Miltner (University of Texas, USA) Student Volunteer Co-Chairs: Lily Bryant (University of British Columbia, Canada), Jaemin Hong (KAIST, South Korea), Hanneli Tavante (McGill University, Canada) Video Co-Chairs: Leif Andersen (Northeastern University, USA), Benjamin Chung (Northeastern University, USA) Workshops Co-Chairs: Leonidas Lampropoulos (University of Maryland, USA), Zoe Paraskevopoulou (Princeton University, USA) ### PACMPL Volume 5, Issue ICFP 2021 Associate Editor: Ronald Garcia, (University of British Columbia, Canada) Review Committee: Zena Ariola (University of Oregon, USA) Stephanie Balzer (Carnegie Mellon University, USA) Matteo Cimini (UMass Lowell, USA) Youyou Cong (Tokyo Institute of Technology, Japan) Harley Eades (University of Augusta, USA) Andrew Gordon (Microsoft Research & University of Edinburgh, United Kingdom) Benjamin Greenman (Brown University, USA) Arjun Guha (Northeastern University, USA) Jurriaan Hage (Utrecht, The Netherlands) Favonia (University of Minnesota, USA) Suresh Jagannathan (Purdue University, USA) Patricia Johann (Appalachian State University, USA) Ralf Jung (Max Planck Institute, Germany) Ekaterina Komendantskaya (Heriot-Watt, Scotland) Leonidas Lampropoulos (University of Maryland, USA) Kazutaka Matsuda (Tohoku University, Japan) Akimasa Morihata (Univeristy of Tokyo, Japan) Stefan Muller (Illinois Institute of Technology, USA) Max New (Wesleyan University, USA) Rishiyur Nikhil (Bluespec , USA) Cyrus Omar (University of Michigan, USA) Brigitte Pientka (McGill University, Canada) Norman Ramsey (Tufts University, USA) Christine Rizkallah (University of New South Wales, Australia) Taro Sekiyama (National Institute for Informatics, Japan) Eijiro Sumii (Tohoku University, Japan) Amin Timany (Aarhus University, Denmark) Mitchell Wand (Northeastern University, USA) Steve Zdancewic (University of Pennsylvania, USA) From mechvel at scico.botik.ru Wed Feb 3 00:02:14 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 03 Feb 2021 02:02:14 +0300 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: On 2021-02-01 10:42, Ulf Norell wrote: > You pass `--enable-library-profiling` to `cabal`. To make libraries > install with profiling > by default you can add `library-profiling: True` to `~/.cabal/config`. > > There are some issues with the new way cabal works and compiling Agda > programs > (see https://github.com/agda/agda/issues/4627), so I would try > > cabal v1-install ieee754 --enable-library-profiling I add `library-profiling: True` to ~/.cabal/config and command > cabal install --enable-library-profiling to install Agda 2.6.1.1 (MAlonzo, ghc-8.8.3, Ubuntu Linux 18.04). This ends up with ------------------------------------------------------ src/full/Agda/Utils/Memo.hs:8:1: error: Could not find module ?Data.HashMap.Strict? Perhaps you haven't installed the profiling libraries for package ?unordered-containers-0.2.10.0?? ... 8 | import qualified Data.HashMap.Strict as HMap | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ src/full/Agda/Utils/Memo.hs:9:1: error: Could not find module ?Data.Hashable? Perhaps you haven't installed the profiling libraries for package ?hashable-1.3.0.0?? --------------------------------------------------------- Then I command > cabal v1-install unordered-containers-0.2.10.0 --enable-library-profiling and it reports "Already installed. Use --reinstall if you want to reinstall anyway." The same is with hashable-1.3.0.0. Then, > cabal install --enable-library-profiling has the same effect. Need I to apply --reinstall to the above two packages? -- SM > > On Sun, Jan 31, 2021 at 10:23 PM wrote: > >> On 2021-01-29 09:05, Ulf Norell wrote: >>> Hi Sergei, >>> >>> Agda compiles via Haskell so you can use all the Haskell profiling >>> tools on the code generated by Agda. >> >> I tried >>> agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda >> >> , where "-prof" is a flag for compiling with profiling by ghc >> (8.8.3). >> It reports >> >> Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) >> ... >> MAlonzo/RTE.hs:9:1: error: >> Could not find module ?Numeric.IEEE? >> Perhaps you haven't installed the profiling libraries for >> package >> ?ieee754-0.8.0?? >> >> Need I to download the package ieee754-0.8.0.tar.gz for Haskell >> and >> somehow >> `make' it with profiling? >> There are the files ieee754.cabal and Setup.lhs. >> Need I to do >>> cabal install >> ? >> How to specify "with profiling"? >> May be to set somewhere to Setup.lhs "-enable-library-profiling" ? >> >> (it may occur hundreds of packages that may need to rebuild with >> profiling - ?). >> >> Thanks, >> >> ------ >> Sergei From ulf.norell at gmail.com Wed Feb 3 07:03:08 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Wed, 3 Feb 2021 07:03:08 +0100 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: You don't need to build Agda with profiling, only the program that you wanted to profile. / Ulf On Wed, Feb 3, 2021 at 12:02 AM wrote: > On 2021-02-01 10:42, Ulf Norell wrote: > > You pass `--enable-library-profiling` to `cabal`. To make libraries > > install with profiling > > by default you can add `library-profiling: True` to `~/.cabal/config`. > > > > There are some issues with the new way cabal works and compiling Agda > > programs > > (see https://github.com/agda/agda/issues/4627), so I would try > > > > cabal v1-install ieee754 --enable-library-profiling > > > > I add `library-profiling: True` to ~/.cabal/config > and command > > cabal install --enable-library-profiling > > to install Agda 2.6.1.1 (MAlonzo, ghc-8.8.3, Ubuntu Linux 18.04). > This ends up with > > ------------------------------------------------------ > src/full/Agda/Utils/Memo.hs:8:1: error: > Could not find module ?Data.HashMap.Strict? > Perhaps you haven't installed the profiling libraries for package > ?unordered-containers-0.2.10.0?? > ... > 8 | import qualified Data.HashMap.Strict as HMap > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > src/full/Agda/Utils/Memo.hs:9:1: error: > Could not find module ?Data.Hashable? > Perhaps you haven't installed the profiling libraries for package > ?hashable-1.3.0.0?? > --------------------------------------------------------- > > Then I command > > cabal v1-install unordered-containers-0.2.10.0 > --enable-library-profiling > > and it reports "Already installed. Use --reinstall if you want to > reinstall anyway." > The same is with hashable-1.3.0.0. > Then, > > cabal install --enable-library-profiling > > has the same effect. > Need I to apply --reinstall to the above two packages? > > -- > SM > > > > > > > On Sun, Jan 31, 2021 at 10:23 PM wrote: > > > >> On 2021-01-29 09:05, Ulf Norell wrote: > >>> Hi Sergei, > >>> > >>> Agda compiles via Haskell so you can use all the Haskell profiling > >>> tools on the code generated by Agda. > >> > >> I tried > >>> agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda > >> > >> , where "-prof" is a flag for compiling with profiling by ghc > >> (8.8.3). > >> It reports > >> > >> Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) > >> ... > >> MAlonzo/RTE.hs:9:1: error: > >> Could not find module ?Numeric.IEEE? > >> Perhaps you haven't installed the profiling libraries for > >> package > >> ?ieee754-0.8.0?? > >> > >> Need I to download the package ieee754-0.8.0.tar.gz for Haskell > >> and > >> somehow > >> `make' it with profiling? > >> There are the files ieee754.cabal and Setup.lhs. > >> Need I to do > >>> cabal install > >> ? > >> How to specify "with profiling"? > >> May be to set somewhere to Setup.lhs "-enable-library-profiling" ? > >> > >> (it may occur hundreds of packages that may need to rebuild with > >> profiling - ?). > >> > >> Thanks, > >> > >> ------ > >> Sergei > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Wed Feb 3 10:51:09 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 03 Feb 2021 12:51:09 +0300 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: On 2021-02-01 10:42, Ulf Norell wrote: > You pass `--enable-library-profiling` to `cabal`. To make libraries > install with profiling > by default you can add `library-profiling: True` to `~/.cabal/config`. > > There are some issues with the new way cabal works and compiling Agda > programs > (see https://github.com/agda/agda/issues/4627), so I would try > > cabal v1-install ieee754 --enable-library-profiling I have a library Foo of many .agda modules, and have a certain KTest.agda that is in Foo, depends on a lot of modules of Foo. I compile and run KTest by > agda -c $agdaLibOpt KTest.agda > ./KTest I never used a *.cabal file to type-check and compile my Foo library. The above `> agda' command does everything. Can people explain: why does one need cabal for this? Further, I need to `make' KTest and run it with profiling. And probably you say that for this it is not sufficient to run the command > agda -c KTest.agda Right? You say that it is needed a) to create a certain foo.cabal, b) to add to foo.cabal `--enable-library-profiling' (somewhere to the compilation flags section), c) to run > cabal install in the folder where foo.cabal resides. Do you? If so, then can you, please, advise, how does this foo.cabal need to look? Thanks, -- SM > On Sun, Jan 31, 2021 at 10:23 PM wrote: > >> On 2021-01-29 09:05, Ulf Norell wrote: >>> Hi Sergei, >>> >>> Agda compiles via Haskell so you can use all the Haskell profiling >>> tools on the code generated by Agda. >> >> I tried >>> agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda >> >> , where "-prof" is a flag for compiling with profiling by ghc >> (8.8.3). >> It reports >> >> Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) >> ... >> MAlonzo/RTE.hs:9:1: error: >> Could not find module ?Numeric.IEEE? >> Perhaps you haven't installed the profiling libraries for >> package >> ?ieee754-0.8.0?? >> >> Need I to download the package ieee754-0.8.0.tar.gz for Haskell >> and >> somehow >> `make' it with profiling? >> There are the files ieee754.cabal and Setup.lhs. >> Need I to do >>> cabal install >> ? >> How to specify "with profiling"? >> May be to set somewhere to Setup.lhs "-enable-library-profiling" ? >> >> (it may occur hundreds of packages that may need to rebuild with >> profiling - ?). >> >> Thanks, >> >> ------ >> Sergei From ulf.norell at gmail.com Wed Feb 3 11:37:02 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Wed, 3 Feb 2021 11:37:02 +0100 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: I suggested installing ieee754 with profiling enabled. I didn't say anything about setting up a .cabal file for your project (although, that is certainly a thing that one can do). / Ulf On Wed, Feb 3, 2021 at 10:51 AM wrote: > On 2021-02-01 10:42, Ulf Norell wrote: > > You pass `--enable-library-profiling` to `cabal`. To make libraries > > install with profiling > > by default you can add `library-profiling: True` to `~/.cabal/config`. > > > > There are some issues with the new way cabal works and compiling Agda > > programs > > (see https://github.com/agda/agda/issues/4627), so I would try > > > > cabal v1-install ieee754 --enable-library-profiling > > > I have a library Foo of many .agda modules, > and have a certain KTest.agda that is in Foo, depends on a lot of > modules of Foo. > I compile and run KTest by > > > agda -c $agdaLibOpt KTest.agda > > ./KTest > > I never used a *.cabal file to type-check and compile my Foo library. > The above `> agda' command does everything. > > Can people explain: why does one need cabal for this? > > Further, I need to `make' KTest and run it with profiling. > And probably you say that for this it is not sufficient to run the > command > > agda -c KTest.agda > > Right? > You say that it is needed > a) to create a certain foo.cabal, > b) to add to foo.cabal `--enable-library-profiling' > (somewhere to the compilation flags section), > c) to run > > cabal install > in the folder where foo.cabal resides. > Do you? > > If so, then can you, please, advise, how does this foo.cabal need to > look? > > Thanks, > > -- > SM > > > > > > On Sun, Jan 31, 2021 at 10:23 PM wrote: > > > >> On 2021-01-29 09:05, Ulf Norell wrote: > >>> Hi Sergei, > >>> > >>> Agda compiles via Haskell so you can use all the Haskell profiling > >>> tools on the code generated by Agda. > >> > >> I tried > >>> agda -c $agdaLibOpt --ghc-flag=-prof Foo.agda > >> > >> , where "-prof" is a flag for compiling with profiling by ghc > >> (8.8.3). > >> It reports > >> > >> Compiling MAlonzo.RTE ( MAlonzo/RTE.hs, MAlonzo/RTE.o ) > >> ... > >> MAlonzo/RTE.hs:9:1: error: > >> Could not find module ?Numeric.IEEE? > >> Perhaps you haven't installed the profiling libraries for > >> package > >> ?ieee754-0.8.0?? > >> > >> Need I to download the package ieee754-0.8.0.tar.gz for Haskell > >> and > >> somehow > >> `make' it with profiling? > >> There are the files ieee754.cabal and Setup.lhs. > >> Need I to do > >>> cabal install > >> ? > >> How to specify "with profiling"? > >> May be to set somewhere to Setup.lhs "-enable-library-profiling" ? > >> > >> (it may occur hundreds of packages that may need to rebuild with > >> profiling - ?). > >> > >> Thanks, > >> > >> ------ > >> Sergei > -------------- next part -------------- An HTML attachment was scrubbed... URL: From andreasnuyts at gmail.com Wed Feb 3 14:32:46 2021 From: andreasnuyts at gmail.com (Andreas Nuyts) Date: Wed, 3 Feb 2021 14:32:46 +0100 Subject: [Agda] --program-suffix using stack Message-ID: Hi everyone, According to the installation instructions at https://agda.readthedocs.io/en/latest/getting-started/installation.html we should use `make install` to install using stack and `cabal install Agda-2.6.1 --program-suffix=-2.6.1` to install with suffix -2.6.1. Naively merging these instructions to `make install --program-suffix=-2.6.1` is not accepted. Can I install Agda with a suffix using stack? Best regards, Andreas From mechvel at scico.botik.ru Wed Feb 3 17:47:22 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 03 Feb 2021 19:47:22 +0300 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> Message-ID: <497adf37f322cd1319ac886df7b11eaf@scico.botik.ru> On 2021-02-03 13:37, Ulf Norell wrote: > I suggested installing ieee754 with profiling enabled. I didn't say > anything about setting up a > .cabal file for your project (although, that is certainly a thing > that one can do). Now, the story is as follows. I install Agda-2.6.1.1 (+ MAlonzo, ghc-8.8.3) and run > agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda It reports ... MAlonzo/RTE.hs:9:1: error: ... Perhaps you haven't installed the profiling libraries for package ?ieee754-0.8.0?? I run > cabal v1-install ieee754 --enable-library-profiling It reports "Already installed ... To reinstall use --reinstall ...". I run > cabal v1-install ieee754 --enable-library-profiling --reinstall --force-reinstalls - because only --reinstall occurs not sufficient to reinstall. Then it starts to work! It reinstalls Agda (because it depends on ieee754). Then > agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda also re-compiles the Agda standard library, then KTest is made. I run > KTest +RTS -p -RTS This creates KTest.prof. There it is said that all the cost is taken by MAlonzo.Code.KTest " ... CAF MAlonzo.Code.KTest ... 0 100.0 100.0 100.0 100.0 ... ". This gives nothing to me. I need to find a responsible function in the Foo library (written in Agda) which KTest imports. Then I add --ghc-flag=-fprof-auto to the `agda -c' command. Now KTest.prof reports of thousands of functions and modules. Its two head lines show MAlonzo.RTE MAlonzo/RTE.hs:59:1-13 8.0 0.0 MAlonzo/Code/Data/Nat/Properties.hs:(146,1)-(151,39) 6.0 18.2 So that MAlonzo/RTE.hs takes 8% of time, Data/Nat/Properties.hs takes 6% of time, and each of the rest takes not more than 6%. I cannot detect from this what function in Foo is responsible for that the "optimized" program in Agda runs 50 times slower than the naive one. But I recall that for my Haskell programs I used the _cost centers_ by setting {-# SCC -#} to the suspected places in my Haskell program, and this was much more helpful than `-auto-all'. Setting {-# SCC #-} to the .agda file probably will not be parsed. In what way cost centers can be used with Agda? Thanks, ------ Sergei From asr at eafit.edu.co Wed Feb 3 18:21:16 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Wed, 3 Feb 2021 12:21:16 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.1.2 In-Reply-To: References: Message-ID: Dear all, The Agda Team is very pleased to announce the release of Agda 2.6.1.2. In this bug-fix release, we fixed some issues when building with dynamic libraries and when building with some versions of some libraries. http://hackage.haskell.org/package/Agda-2.6.1.2/changelog # GHC supported versions Agda 2.6.1.2 has been tested with GHC 8.10.2, 8.8.4, 8.6.5, 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. # Installation See https://agda.readthedocs.io/en/latest/getting-started/installation.html # Standard library The standard library 1.5 is compatible with Agda 2.6.1.2. Enjoy Agda 2.6.1.2. -- Andr?s on behalf of the Agda Team From ulf.norell at gmail.com Wed Feb 3 22:06:39 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Wed, 3 Feb 2021 22:06:39 +0100 Subject: [Agda] profiling In-Reply-To: <497adf37f322cd1319ac886df7b11eaf@scico.botik.ru> References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> <497adf37f322cd1319ac886df7b11eaf@scico.botik.ru> Message-ID: For cost centers you need to manually edit the generated Haskell code and recompile it with ghc. But those two lines should correspond to *functions* not modules, and you should be able to find them in the big tree view to see where they are called from. Mapping the name of a generated Haskell function to the Agda name can be a bit fiddly, but it is given in the generated Haskell code. / Ulf On Wed, Feb 3, 2021 at 5:47 PM wrote: > On 2021-02-03 13:37, Ulf Norell wrote: > > I suggested installing ieee754 with profiling enabled. I didn't say > > anything about setting up a > > .cabal file for your project (although, that is certainly a thing > > that one can do). > > > Now, the story is as follows. > > I install Agda-2.6.1.1 (+ MAlonzo, ghc-8.8.3) > and run > > agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda > > It reports > ... > MAlonzo/RTE.hs:9:1: error: ... > Perhaps you haven't installed the profiling libraries for > package ?ieee754-0.8.0?? > > I run > > cabal v1-install ieee754 --enable-library-profiling > > It reports "Already installed ... To reinstall use --reinstall ...". > I run > > cabal v1-install ieee754 --enable-library-profiling --reinstall > --force-reinstalls > > - because only --reinstall occurs not sufficient to reinstall. > Then it starts to work! > It reinstalls Agda (because it depends on ieee754). > Then > > agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda > > also re-compiles the Agda standard library, then KTest is made. > I run > > KTest +RTS -p -RTS > > This creates KTest.prof. > There it is said that all the cost is taken by > MAlonzo.Code.KTest > " > ... > CAF MAlonzo.Code.KTest ... 0 100.0 100.0 100.0 100.0 > ... > ". > This gives nothing to me. > I need to find a responsible function in the Foo library > (written in Agda) which KTest imports. > > Then I add --ghc-flag=-fprof-auto to the `agda -c' command. > > Now KTest.prof reports of thousands of functions and modules. > Its two head lines show > > MAlonzo.RTE MAlonzo/RTE.hs:59:1-13 8.0 0.0 > MAlonzo/Code/Data/Nat/Properties.hs:(146,1)-(151,39) 6.0 18.2 > > So that MAlonzo/RTE.hs takes 8% of time, > Data/Nat/Properties.hs takes 6% of time, > and each of the rest takes not more than 6%. > > I cannot detect from this what function in Foo is responsible for that > the "optimized" program in Agda runs 50 times slower than the naive one. > > But I recall that for my Haskell programs I used the _cost centers_ > by setting {-# SCC -#} to the suspected places in my Haskell > program, and this was much more helpful than `-auto-all'. > > Setting {-# SCC #-} to the .agda file probably will not be > parsed. > > In what way cost centers can be used with Agda? > > Thanks, > > ------ > Sergei > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Wed Feb 3 22:41:45 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Thu, 04 Feb 2021 00:41:45 +0300 Subject: [Agda] profiling In-Reply-To: References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> <497adf37f322cd1319ac886df7b11eaf@scico.botik.ru> Message-ID: <8defd1684fd6d452760a5f89bb605c64@scico.botik.ru> On 2021-02-04 00:06, Ulf Norell wrote: > For cost centers you need to manually edit the generated Haskell code > and recompile it with ghc. > But those two lines should correspond to *functions* not modules, and > you should be able to find them in the big tree view to see where they > are called from. Mapping > the name of a generated Haskell function to the Agda name can be a bit > fiddly, but it is given > in the generated Haskell code. So, first to apply > agda -c $agdaLibOpt KTest.agda Then go to MAlonzo/Code/..., and set cost centers to MM.hs. Then `agda -c' should not be applied because it would overwrite MM.hs. Instead I probably need to run > cd (?) > ghc --make KTest Right? And what are ? where to see them? Thanks, -- ?? > > On Wed, Feb 3, 2021 at 5:47 PM wrote: > >> On 2021-02-03 13:37, Ulf Norell wrote: >>> I suggested installing ieee754 with profiling enabled. I didn't >> say >>> anything about setting up a >>> .cabal file for your project (although, that is certainly a thing >>> that one can do). >> >> Now, the story is as follows. >> >> I install Agda-2.6.1.1 (+ MAlonzo, ghc-8.8.3) >> and run >>> agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda >> >> It reports >> ... >> MAlonzo/RTE.hs:9:1: error: ... >> Perhaps you haven't installed the profiling libraries for >> package ?ieee754-0.8.0?? >> >> I run >>> cabal v1-install ieee754 --enable-library-profiling >> >> It reports "Already installed ... To reinstall use --reinstall ...". >> I run >>> cabal v1-install ieee754 --enable-library-profiling --reinstall >> --force-reinstalls >> >> - because only --reinstall occurs not sufficient to reinstall. >> Then it starts to work! >> It reinstalls Agda (because it depends on ieee754). >> Then >>> agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda >> >> also re-compiles the Agda standard library, then KTest is made. >> I run >>> KTest +RTS -p -RTS >> >> This creates KTest.prof. >> There it is said that all the cost is taken by >> MAlonzo.Code.KTest >> " >> ... >> CAF MAlonzo.Code.KTest ... 0 100.0 100.0 100.0 >> 100.0 >> ... >> ". >> This gives nothing to me. >> I need to find a responsible function in the Foo library >> (written in Agda) which KTest imports. >> >> Then I add --ghc-flag=-fprof-auto to the `agda -c' command. >> >> Now KTest.prof reports of thousands of functions and modules. >> Its two head lines show >> >> MAlonzo.RTE MAlonzo/RTE.hs:59:1-13 8.0 >> 0.0 >> MAlonzo/Code/Data/Nat/Properties.hs:(146,1)-(151,39) 6.0 >> 18.2 >> >> So that MAlonzo/RTE.hs takes 8% of time, >> Data/Nat/Properties.hs takes 6% of time, >> and each of the rest takes not more than 6%. >> >> I cannot detect from this what function in Foo is responsible for >> that >> the "optimized" program in Agda runs 50 times slower than the naive >> one. >> >> But I recall that for my Haskell programs I used the _cost centers_ >> by setting {-# SCC -#} to the suspected places in my >> Haskell >> program, and this was much more helpful than `-auto-all'. >> >> Setting {-# SCC #-} to the .agda file probably will not be >> parsed. >> >> In what way cost centers can be used with Agda? >> >> Thanks, >> >> ------ >> Sergei From fdhzs2010 at hotmail.com Fri Feb 5 02:23:53 2021 From: fdhzs2010 at hotmail.com (Jason -Zhong Sheng- Hu) Date: Fri, 5 Feb 2021 01:23:53 +0000 Subject: [Agda] Why mutual is deprecated? Message-ID: Hi all, According to https://agda.readthedocs.io/en/v2.6.1.2/language/mutual-recursion.html, it seems the mutual keyword is deprecated. I personally find it extremely useful and intuitive. May I know what motivates this deprecation? Thanks, Jason Hu -------------- next part -------------- An HTML attachment was scrubbed... URL: From ulf.norell at gmail.com Fri Feb 5 06:56:50 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Fri, 5 Feb 2021 06:56:50 +0100 Subject: [Agda] Why mutual is deprecated? In-Reply-To: References: Message-ID: That's a mistake in the documentation. There are no plans to get rid of the mutual keyword. Can you file an issue for (or a PR) fixing the docs? / Ulf On Fri, Feb 5, 2021 at 2:24 AM Jason -Zhong Sheng- Hu wrote: > Hi all, > > > > According to > https://agda.readthedocs.io/en/v2.6.1.2/language/mutual-recursion.html, > it seems the mutual keyword is deprecated. I personally find it extremely > useful and intuitive. May I know what motivates this deprecation? > > > > Thanks, > > Jason Hu > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From guillaume.allais at ens-lyon.org Sat Feb 6 01:54:47 2021 From: guillaume.allais at ens-lyon.org (guillaume allais) Date: Sat, 6 Feb 2021 00:54:47 +0000 Subject: [Agda] profiling In-Reply-To: <8defd1684fd6d452760a5f89bb605c64@scico.botik.ru> References: <63df4a5524f48370dd50067189a2b610@scico.botik.ru> <0331fbafbec0bac657f9b7f11a2db887@scico.botik.ru> <497adf37f322cd1319ac886df7b11eaf@scico.botik.ru> <8defd1684fd6d452760a5f89bb605c64@scico.botik.ru> Message-ID: Hi Sergei, If you look at the `agda -c` trace, you'll notice the call to ghc after the "Compiling XXX.YYY" lines and before the "[n of NNN]" ones. This is what I got by running a dummy compilation job: Calling: ghc -O -Werror -i[DIRECTORY] [DIRECTORY/MAlonzo/Code/FILE.hs] --make -fwarn-incomplete-patterns -fno-warn-overlapping-patterns Best, On 03/02/2021 21:41, mechvel at scico.botik.ru wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > > On 2021-02-04 00:06, Ulf Norell wrote: >> For cost centers you need to manually edit the generated Haskell code >> and recompile it with ghc. >> But those two lines should correspond to *functions* not modules, and >> you should be able to find them in the big tree view to see where they >> are called from. Mapping >> the name of a generated Haskell function to the Agda name can be a bit >> fiddly, but it is given >> in the generated Haskell code. > > > So, first to apply > ??? > agda -c $agdaLibOpt KTest.agda > > Then go to MAlonzo/Code/... calls>, > and set cost centers to? MM.hs. > Then? `agda -c'? should not be applied because it would overwrite MM.hs. > Instead I probably need to run > > ? > cd? (?) > ? > ghc --make KTest? > ????????????????????? -c'> > Right? > And what are??????? > ? > where to see them? > > Thanks, > > -- > ?? > > > >> >> On Wed, Feb 3, 2021 at 5:47 PM wrote: >> >>> On 2021-02-03 13:37, Ulf Norell wrote: >>>> I suggested installing ieee754 with profiling enabled. I didn't >>> say >>>> anything about setting up a >>>> .cabal file for your project (although, that is certainly a thing >>>> that one can do). >>> >>> Now, the story is as follows. >>> >>> I install? Agda-2.6.1.1? (+ MAlonzo, ghc-8.8.3) >>> and run >>>> agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda >>> >>> It reports >>> ... >>> MAlonzo/RTE.hs:9:1: error: ... >>> Perhaps you haven't installed the profiling libraries for >>> package ?ieee754-0.8.0?? >>> >>> I run >>>> cabal v1-install ieee754 --enable-library-profiling >>> >>> It reports "Already installed ... To reinstall use --reinstall ...". >>> I run >>>> cabal v1-install ieee754 --enable-library-profiling --reinstall >>> --force-reinstalls >>> >>> - because only --reinstall occurs not sufficient to reinstall. >>> Then it starts to work! >>> It reinstalls Agda (because it depends on ieee754). >>> Then >>>> agda -c $agdaLibOpt --ghc-flag=-prof KTest.agda >>> >>> also re-compiles the Agda standard library, then? KTest? is made. >>> I run >>>> KTest +RTS -p -RTS >>> >>> This creates KTest.prof. >>> There it is said that all the cost is taken by >>> MAlonzo.Code.KTest? >>> " >>> ... >>> CAF MAlonzo.Code.KTest? ... 0? 100.0 100.0 100.0 >>> 100.0 >>> ... >>> ". >>> This gives nothing to me. >>> I need to find a responsible function in the Foo library >>> (written in Agda) which KTest imports. >>> >>> Then I add? --ghc-flag=-fprof-auto? to the `agda -c'? command. >>> >>> Now? KTest.prof? reports of thousands of functions and modules. >>> Its two head lines show >>> >>> MAlonzo.RTE??????????????? MAlonzo/RTE.hs:59:1-13 8.0 >>> 0.0 >>> MAlonzo/Code/Data/Nat/Properties.hs:(146,1)-(151,39)?? 6.0 >>> 18.2 >>> >>> So that? MAlonzo/RTE.hs????????? takes? 8% of time, >>> Data/Nat/Properties.hs? takes? 6% of time, >>> and each of the rest takes not more than 6%. >>> >>> I cannot detect from this what function in Foo is responsible for >>> that >>> the "optimized" program in Agda runs 50 times slower than the naive >>> one. >>> >>> But I recall that for my Haskell programs I used the _cost centers_ >>> by setting? {-# SCC -#}? to the suspected places in my >>> Haskell >>> program, and this was much more helpful than `-auto-all'. >>> >>> Setting {-# SCC #-} to the .agda file probably will not be >>> parsed. >>> >>> In what way cost centers can be used with Agda? >>> >>> Thanks, >>> >>> ------ >>> Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.chalmers.se%2Fmailman%2Flistinfo%2Fagda&data=04%7C01%7Cguillaume.allais%40strath.ac.uk%7Cb3e109804248493ac54c08d8c88c8575%7C631e0763153347eba5cd0457bee5944e%7C0%7C0%7C637479853152179960%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=w10lYKcYPHKDOxv%2FTnP4UM3GIVMQOtm8vrJeXw6%2FgoQ%3D&reserved=0 > From mechvel at scico.botik.ru Sat Feb 6 19:52:34 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 06 Feb 2021 21:52:34 +0300 Subject: [Agda] message for `,` without \prime Message-ID: <385f4c6316fe9a809aba6144c7aa6b27@scico.botik.ru> Dear Agda team, I have a program like case ((e ?? e') , (2 ??? e')) of \ { (yes _ , yes _) ? foo ; ... } where e e' : ?. And Agda 2.6.1.1 reports ----------------------------------------------------- _B_159 : Dec (deg f _ ? deg g _) ? Set [ at /home/...Foo.agda:116,25-26 ] _163 : Data.Product.? (Dec (deg f _ ? deg g _)) _B_159 ? OverDecComRing.Pol R (OfShow.mkShow (? _ _ ys ? 'd' ? 'u' ? 'm' ? 'm' ? 'y' ? ys)) dummy-Read "x" [ at /home/...:116,42-121,27 ] ???? Errors ????????????????????????????? Failed to solve the following constraints: Dec ((Algebra.Monoid.semigroup ?p.*-1-monoid OfSemigroup.? 2) (deg g _)) =< _B_159 (deg f _ ?? deg g _) ----------------------------------------------------- And it is type-checked if `,' is changed to ",?" in the head line of `case`. I do not know of whether the report can be made more helpful. I just show this example for any occasion. Regards, ------ Sergei From ksk at riec.tohoku.ac.jp Sun Feb 7 04:05:21 2021 From: ksk at riec.tohoku.ac.jp (Keisuke Nakano) Date: Sun, 7 Feb 2021 12:05:21 +0900 Subject: [Agda] WPTE 2021 (FIRST Call For Papers) Message-ID: <526ED8B5-1EF2-4ABE-B42B-E60B548A02DD@riec.tohoku.ac.jp> --------------------------------------------------------------------------- WPTE 2021: 8th International Workshop on Rewriting Techniques for Program Transformations and Evaluation Held online on July 18, 2021 --------------------------------------------------------------------------- Conference Web site: https://www.ipl.riec.tohoku.ac.jp/wpte2021/ Submission link: https://easychair.org/conferences/?conf=wpte2021 Submission deadline: May 10, 2021 --------------------------------------------------------------------------- The aim of WPTE is to bring together the researchers working on program transformations, evaluation, and operationally based programming language semantics, using rewriting methods, in order to share the techniques and recent developments and to exchange ideas to encourage further activation of research in this area. The 8th International Workshop on Rewriting Techniques for Program Transformations and Evaluation (WPTE 2021) is affiliated with FSCD 2021, https://fscd2021.dc.uba.ar/ List of Topics --------------------------------------------------------------------------- * Correctness of program transformations, optimizations and translations. * Program transformations for proving termination, confluence, and other properties. * Correctness of evaluation strategies. * Operational semantics of programs, operationally-based program equivalences such as contextual equivalences and bisimulations. * Cost-models for arguing about the optimizing power of transformations and the costs of evaluation. * Program transformations for verification and theorem proving purposes. * Translation, simulation, equivalence of programs with different formalisms, and evaluation strategies. * Program transformations for applying rewriting techniques to programs in specific programming languages. * Program transformations for program inversions and program synthesis. * Program transformation and evaluation for Haskell and rewriting. Submission Guidelines --------------------------------------------------------------------------- For the paper submission deadline an extended abstract of at most 10 pages is required to be submitted. The extended abstract may present original work or also work in progress. Based on the submissions the program committee will select the presentations for the workshop. All selected contributions will be included in the informal proceedings distributed to the workshop participants. One author of each accepted extended abstract is expected to present it at the workshop. Submissions must be prepared in LaTeX using the EPTCS macro package. All submissions will be electronic via https://easychair.org/conferences/?conf=wpte2021. Formal Proceedings --------------------------------------------------------------------------- WPTE post-proceedings of selected papers will be published in a JLAMP special issue. For this, full papers must be submitted until the post-proceedings deadline. The authors of selected contributions will have the opportunity (but no obligation) to submit a full paper for the formal post-proceedings. These must represent original work and should not be submitted to another conference at the same time. The submission deadline for these post-proceedings will be after the workshop in September 2021. There will be a second round of reviewing for selecting papers to be published in the formal proceedings. Important Dates --------------------------------------------------------------------------- Submission of extended abstracts: May 10, 2021 (AoE) Notification of acceptance: May 31, 2021 Final version for proceedings deadline: June 13, 2021 Workshop: July 18, 2021 Submission to post-proceedings: September 2021 Program Committees --------------------------------------------------------------------------- Keisuke Nakano, Tohoku University, Japan (Chair) Adrian Riesco, Universidad Complutense de Madrid, Spain. (co-Chair) ?tefan Ciob?c?, Universitatea Alexandru Ioan Cuza din Ia?i, Romania Makoto Hamana, Gunma University, Japan Akimasa Morihata, the University of Tokyo, Japan Shin-Cheng Mu, Academia Sinica, Taiwan Koko Muroya, Kyoto University, Japan David Sabel, LMU, Germany Julia Sapi?a, Polytechnic University of Valencia, Spain Janis Voigtl?nder, University of Duisburg-Essen, Germany Contact --------------------------------------------------------------------------- All questions about submissions should be emailed to wpte2021 (at) easychair.org From asr at eafit.edu.co Sun Feb 7 17:00:21 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sun, 7 Feb 2021 11:00:21 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.1.3 In-Reply-To: References: Message-ID: Dear all, The Agda Team is very pleased to announce the release of Agda 2.6.1.3. In this bug-fix release, we added support for GHC 8.10.3. # GHC supported versions Agda 2.6.1.3 has been tested with GHC 8.10.3, 8.8.4, 8.6.5, 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. # Installation You can install Agda 2.6.1.3 with Cabal or stack. See https://agda.readthedocs.io/en/v2.6.1.3/getting-started/installation.html#installation-from-hackage # Standard library The standard library 1.5 is compatible with Agda 2.6.1.3. Enjoy Agda 2.6.1.3. -- Andr?s, on behalf of the Agda Team From u.zalakain.1 at research.gla.ac.uk Tue Feb 9 11:03:53 2021 From: u.zalakain.1 at research.gla.ac.uk (Uma Zalakain (PGR)) Date: Tue, 9 Feb 2021 10:03:53 +0000 Subject: [Agda] CfP: 14th Interaction and Concurrency Experience (ICE 2021) In-Reply-To: References: Message-ID: ICE 2021 14th Interaction and Concurrency Experience June 18, 2021 University of Malta, Valletta and/or online Satellite workshop of DisCoTec 2021 https://www.discotec.org/2021/ice Submission link: https://openreview.net/group?id=DisCoTec.org/2021/Workshop/ICE Interaction and Concurrency Experience (ICE) is a series of international scientific meetings oriented to theoretical computer science researchers with special interest in models, verification, tools, and programming primitives for complex interactions. === HIGHLIGHTS === * Distinctive selection procedure * ICE welcomes full papers to be included in the proceedings * ICE also welcomes oral communications of already published or preliminary work * Publication in EPTCS (to be confirmed) * Special issue in the Journal of Logical and Algebraic Methods in Programming (Elsevier) (to be confirmed) * Invited speakers: TBA === IMPORTANT DATES === * 15 April 2021: abstract submission * 19 April 2021: paper submission * 18 May 2021: notification * 18 June 2021: ICE workshop * 12 July 2021: camera-ready for EPTCS post-proceedings === SCOPE === The general scope of the venue includes theoretical and applied aspects of interactions and the synchronization mechanisms used among components of concurrent/distributed systems, related to several areas of computer science in the broad spectrum ranging from formal specification and analysis to studies inspired by emerging computational models. We solicit contributions relevant to Interaction and Concurrency, including but not limited to: * Formal semantics * Process algebras and calculi * Models and languages * Protocols * Logics and types * Expressiveness * Model transformations * Tools, implementations, and experiments * Specification and verification * Coinductive techniques * Tools and techniques for automation * Synthesis techniques === SELECTION PROCEDURE === Since its first edition in 2008, the distinguishing feature of ICE has been an innovative paper selection mechanism based on an interactive, friendly, and constructive discussion amongst authors and PC members in an online forum. During the review phase, each submission is published in a dedicated discussion forum. The discussion forum can be accessed by the authors of the submission and by all PC members not in conflict with the submission (the forum preserves anonymity). The forum is used by reviewers to ask questions, clarifications, and modifications from the authors, allowing them better to explain and to improve all aspects of their submission. The evaluation of the submission will take into account not only the reviews, but also the outcome of the discussion. As witnessed by the past editions of ICE, this procedure considerably improves the accuracy of the reviews, the fairness of the selection, the quality of camera-ready papers, and the discussion during the workshop. ICE adopts a light double-blind reviewing process, detailed below. === SUBMISSION GUIDELINES === Submissions must be made electronically in PDF format via OpenReview: https://openreview.net/group?id=DisCoTec.org/2021/Workshop/ICE We invite two types of submissions: * Research papers, original contributions that will be published in the workshop post-proceedings. Research papers must not be simultaneously submitted to other conferences/workshops with refereed proceedings. Research papers should be 3-16 pages plus at most 2 pages of references. Short research papers are welcome; for example a 5 page short paper fits this category perfectly. The submitted PDF can use any LaTeX style (but the post-proceedings will use the EPTCS style). * Oral communications will be presented at the workshop, but will not appear in the post-proceedings. This type of contribution includes e.g. previously published contributions, preliminary work, and position papers. There is no strict page limit for this kind of submission but papers of 1-5 pages would be appreciated. For example, a one page summary of previously published work is welcome in this category. Authors of research papers must omit their names and institutions from the title page, they should refer to their other work in the third person and omit acknowledgements that could reveal their identity or affiliation. The purpose is to avoid any bias based on authors? identity characteristics, such as gender, seniority, or nationality, in the review process. Our goal is to facilitate an unbiased approach to reviewing by supporting reviewers? access to works that do not carry obvious references to the authors? identities. As mentioned above, this is a lightweight double-blind process. Anonymization should not be a heavy burden for authors, and should not make papers weaker or more difficult to review. Advertising the paper on alternate forums (e.g., on a personal web-page, pre-print archive, email, talks, discussions with colleagues) is permitted, and authors will not be penalized by for such advertisement. Papers in the ?Oral communications? category need not be anonymized. For any questions concerning the double blind process, feel free to consult the ICEcreamers. We are keen to enhance the balanced, inclusive and diverse nature of the ICE community, and would particularly encourage female colleagues and members of other underrepresented groups to submit their work. === PUBLICATIONS === Accepted research papers and communications must be presented at the workshop by one of the authors. Accepted research papers will be published after the workshop in Electronic Proceedings in Theoretical Computer Science (to be confirmed). We plan to invite authors of selected papers and brief announcements to submit their work in a special issue in the Journal of Logical and Algebraic Methods in Programming (Elsevier). Such contributions will be regularly peer-reviewed according to the standard journal policy, but they will be handled in a shorter time than regular submissions. A list of published and in preparation special issues of previous ICE editions is reported on the ICE website. === ICECREAMERS === Julien Lange (Royal Holloway, University of London, UK) - julien.lange at rhul.ac.uk Anastasia Mavridou (NASA Ames, USA) - anastasia.mavridou at nasa.gov Larisa Safina (Inria, FR) - larisa.safina at inria.fr Alceste Scalas (Technical University of Denmark, DK) - alcsc at dtu.dk === PROGRAM COMMITTEE (under construction) === * Massimo Bartoletti (University of Cagliari, IT) * Matteo Cimini (University of Massachusetts Lowell, USA) * Cinzia Di Giusto (Universit? C?te d?Azur, CNRS, I3S, FR) * Simon Fowler (University of Glasgow, UK) * Eva Graversen (University of Southern Denmark, DK) * Ludovic Henrio (ENS Lyon, FR) * Keigo Imai (Gifu University, JP) * Sung-Shik Jongmans (Open University of the Netherlands, NL) * Sophia Knight (University of Minnesota Duluth, US) * Wen Kokke (University of Edinburgh, UK) * Ivan Lanese (University of Bologna, IT) * Karoliina Lehtinen (CNRS - LIS, Aix-Marseille University, FR) * Alberto Lluch Lafuente (Technical University of Denmark, DK) * Diego Marmsoler (University of Exeter, UK) * Hern?n Melgratti (University of Buenos Aires, AR) * Maurizio Murgia (University of Trento, IT) * Kirstin Peters (TU Darmstadt, DE) * Johannes ?man Pohjola (Data61/CSIRO, AU) * Ivan Prokic (University of Novi Sad, RS) * Matteo Sammartino (Royal Holloway, University of London, UK) * Hugo Torres Vieira (C4 - University of Beira Interior, PT) * Laura Voinea (University of Kent, UK) * Uma Zalakian (University of Glasgow, UK) === STEERING COMMITTEE === * Massimo Bartoletti (University of Cagliari, IT) * Ludovic Henrio (ENS Lyon, FR) * Ivan Lanese (University of Bologna, IT) * Alberto Lluch Lafuente (Technical University of Denmark, DK) * Sophia Knight (University of Minnesota Duluth, USA) * Hugo Torres Vieira (C4 - University of Beira Interior, PT) === MORE INFORMATION === For additional information, please contact the ICEcreamers (see email addresses above). From andrei.h.popescu at gmail.com Tue Feb 9 17:40:10 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Tue, 9 Feb 2021 16:40:10 +0000 Subject: [Agda] 21st Midlands Graduate School in the Foundations of Computing Science: Call for Participation Message-ID: CALL FOR PARTICIPATION 21st Midlands Graduate School in the Foundations of Computing Science MGS 21 12-16 April 2021, virtually https://staffwww.dcs.shef.ac.uk/people/G.Struth/mgs21.html OVERVIEW The annual Midlands Graduate School in the Foundations of Computing Science (MGS) offers an intensive programme of lectures on the mathematical foundations of computing. It addresses first of all PhD students in their first or second year, but is open to anyone interested in its topics, from academia to industry and around the world. The MGS has been run since 1999 and is hosted alternately by the Universities of Birmingham, Leicester, Nottingham and Sheffield. MGS 21 is its 21st incarnation. Information about previous events can be found at the MGS web site http://www.cs.nott.ac.uk/MGS PROGRAMME MGS 21 consists of eight courses, each with four or five hours of lectures and a similar number of exercise sessions. Three courses are introductory; one is given by an invited lecturer. These should be attended by all participants. The remaining more advanced courses should be selected based on interest. MGS 21 aims at a mix of livestreamed and prerecorded lectures and livestreamed exercise sessions, with additional social online events. Invited lectures: Monads and Interactions Tarmo Uustalu, Reykjavik Introductory courses: Category Theory Jacopo Emmenegger, Birmingham Type Theory Thorsten Altenkirch, Nottingham Proof Theory Anupam Das, Birmingham Advanced courses: Homotopy Type Theory Nicolai Kraus, Nottingham Inductive and Coinductive Reasoning with Isabelle/HOL Andrei Popescu, Sheffield Effects and Call-by-Push-Value Paul Levy, Birmingham Formal Modelling and Analysis of Concurrent Systems Mohammad Mousavi, Leicester In addition we are organising a session where participants can briefly present and discuss their own research. A call will be made in March. REGISTRATION Participation at MGS 21 is free of charge, but selective. Requests must be submitted online via https://staffwww.dcs.shef.ac.uk/people/G.Struth/mgs21.html Registration deadline is April 1. ORGANISATION Please direct all queries about MGS 21 to Georg Struth. The Sheffield organisers are Harsh Beohar (H.Beohar at sheffield.ac.uk) Andrei Popescu (A.Popescu at sheffield.ac.uk) Georg Struth (G.Struth at sheffield.ac.uk) From Graham.Hutton at nottingham.ac.uk Thu Feb 11 15:22:26 2021 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Thu, 11 Feb 2021 14:22:26 +0000 Subject: [Agda] 10 PhD studentships in Nottingham Message-ID: <3AC69D59-038A-4A0A-9E78-F61397983BD3@nottingham.ac.uk> Dear all, The School of Computer Science at the University of Nottingham is seeking applications for 10 fully-funded PhD studentships: https://tinyurl.com/ten-phds-2021 Applicants in the area of the Functional Programming Laboratory (https://tinyurl.com/fp-notts) are strongly encouraged! If you are interested in applying, please contact a potential supervisor as soon as possible (the application deadline is 15th March): Thorsten Altenkirch - constructive logic, proof assistants, homotopy type theory, category theory, lambda calculus. Graham Hutton - mathematics of program construction, category theory, program correctness and efficiency, Haskell. Nicolai Kraus - homotopy type theory, higher category theory, constructive mathematics, and related topics. Henrik Nilsson - functional reactive programming, domain- specific languages, generalised notions of computation. The studentships are open to applicants of any nationality. Best wishes, Graham +-----------------------------------------------------------+ 10 Fully-Funded PhD Studentships School of Computer Science University of Nottingham, UK tinyurl.com/ten-phds-2021 Applications are invited for a number of fully funded PhD studentships offered by the School of Computer Science at the University of Nottingham, starting on 1st October 2021. The topics for the studentships are open, but should relate to the interests of one of the School?s research groups: Computational Optimisation and Learning Lab; Computer Vision Lab; Cyber Security; Functional Programming; Intelligent Modelling and Analysis; Mixed Reality Lab and Uncertainty in Data and Decision Making. The studentships are for three and a half years and include a stipend of (minimum) ?15,609 per year and tuition fees. Applicants are normally expected to have a 2:1 Bachelor or Masters degree or international equivalent, in Computer Science or a related discipline, and must obtain the support of a potential supervisor in the School prior to submitting their application. Please contact potential supervisors at least two weeks prior to the closing date for applications. Informal enquiries may be addressed to Professor Tony Pridmore (tony.pridmore at nottingham.ac.uk). To apply, please submit the following items by email to Lindsay.Norman at nottingham.ac.uk: (1) A copy of your CV, including your actual or expected degree class(es), and results of all University examinations; (2) An example of your technical writing, such as a project report or dissertation; (3) Contact details for two academic referees - it is the applicant?s responsibility to ensure that references are requested and sent to Lindsay.Norman at nottingham.ac.uk; (4) A research proposal ? max 2 x sides A4; (5) A covering letter, which must include the name of the member of staff who has agreed to support your application (without this your application cannot be considered), and the University?s job reference number (SCI1979). Closing date for applications: Monday 15th March 2021. +-----------------------------------------------------------+ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From m.escardo at cs.bham.ac.uk Fri Feb 12 20:35:28 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Fri, 12 Feb 2021 19:35:28 +0000 Subject: [Agda] --exact-split Message-ID: I have a development that uses --exact-split in all modules. But I have a function I can't make to satisfy --exact-split. I developed this function using case-split. One question is: shouldn't be the case that if all pattern matching is developed not manually but mechanically using case-split, then --exact-split should be automatically satisfied? At first I thought this could have something to do with the simultaneous use of --without-K. But then I removed all pattern matching on identifications, using helper functions that pass the --exact-split test. The main question is: what promises does --exact-split (not) make, and what promises should I, as its user, fulfill? Martin From tom at tomjack.co Sat Feb 13 01:37:24 2021 From: tom at tomjack.co (Tom Jack) Date: Fri, 12 Feb 2021 18:37:24 -0600 Subject: [Agda] --exact-split In-Reply-To: References: Message-ID: Here is one easy counterexample for the first question: plus : Nat ? Nat ? Nat plus x y = {!!} -- split on y: plus : Nat ? Nat ? Nat plus x zero = {!!} plus x (suc y) = {!!} -- with point still in first hole, split on x: plus : Nat ? Nat ? Nat plus zero zero = {!!} plus (suc x) zero = {!!} plus x (suc y) = {!!} Now we've got an --exact-split warning for the last line. On Fri, Feb 12, 2021 at 1:35 PM Martin Escardo wrote: > > I have a development that uses --exact-split in all modules. > > But I have a function I can't make to satisfy --exact-split. > > I developed this function using case-split. > > One question is: shouldn't be the case that if all pattern matching is > developed not manually but mechanically using case-split, then > --exact-split should be automatically satisfied? > > At first I thought this could have something to do with the simultaneous > use of --without-K. But then I removed all pattern matching on > identifications, using helper functions that pass the --exact-split test. > > The main question is: what promises does --exact-split (not) make, and > what promises should I, as its user, fulfill? > > Martin > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Thierry.Coquand at cse.gu.se Fri Feb 19 16:57:11 2021 From: Thierry.Coquand at cse.gu.se (Thierry Coquand) Date: Fri, 19 Feb 2021 15:57:11 +0000 Subject: [Agda] Postdoctoral position in HoTT Message-ID: <9FE39FEE-306F-4420-8781-05D3BD8E3071@chalmers.se> I would like to announce a new postdoc position in homotopy type theory/univalent foundations. For details see https://web103.reachmee.com/ext/I005/1035/job?site=7&lang=UK&validator=9b89bead79bb7258ad55c8d75228e5b7&job_id=18963 The deadline for application is 2021-03-10. The call is primarily for people already working in homotopy type theory, but we are also open to considering applications from people working in nearby areas who would be interested in getting into the field. The position includes up to 20% teaching duties. While our department is a joint department between Chalmers and Univ. of Gothenburg, you will get employed at the Univ. of Gothenburg with full employment benefits (health care, pension, etc). Please do not hesitate to contact me directly for further information. Best regards, Thierry -------------- next part -------------- An HTML attachment was scrubbed... URL: From benedikt.ahrens at gmail.com Tue Feb 23 16:49:49 2021 From: benedikt.ahrens at gmail.com (Benedikt Ahrens) Date: Tue, 23 Feb 2021 16:49:49 +0100 Subject: [Agda] Call for Contributions: (Virtual) Workshop on Homotopy Type Theory and Univalent Foundations (HoTT/UF'21) on July 17-18, 2021 Message-ID: Workshop on Homotopy Type Theory and Univalent Foundations July 17-18, 2021, The Internet @ Buenos Aires, Argentina http://hott-uf.github.io/2021 Co-located with FSCD 2021 https://fscd2021.dc.uba.ar/ Abstract submission deadline: May 25, 2021 Homotopy Type Theory is a young area of logic, combining ideas from several established fields: the use of dependent type theory as a foundation for mathematics, inspired by ideas and tools from abstract homotopy theory. Univalent Foundations are foundations of mathematics based on the homotopical interpretation of type theory. The goal of this workshop is to bring together researchers interested in all aspects of Homotopy Type Theory and Univalent Foundations: from the study of syntax and semantics of type theory to practical formalization in proof assistants based on univalent type theory. # Invited talks * Evan Cavallo (Carnegie Mellon University) * Peter LeFanu Lumsdaine (Stockholm University) * Anja Petkovic (University of Ljubljana) * Matthew Weaver (Princeton University) # Submissions * Abstract submission deadline: May 25, 2021 * Author notification: mid-June 2021 Submissions should consist of a title and an abstract, in pdf format, of no more than 2 pages, submitted via http://easychair.org/conferences/?conf=hottuf2021 Considering the broad background of the expected audience, we encourage authors to include information of pedagogical value in their abstract, such as motivation and context of their work. # Program committee * Benedikt Ahrens (University of Birmingham) * Carlo Angiuli (Carnegie Mellon University) * Paolo Capriotti (Technische Universit?t Darmstadt) * Floris van Doorn (University of Pittsburgh) * Favonia (University of Minnesota) * Eric Finster (University of Cambridge) * Chris Kapulkin (University of Western Ontario) * Paige Randall North (University of Pennsylvania) * Emily Riehl (Johns Hopkins University) * Christian Sattler (Chalmers University of Technology) * Andrew Swan (Carnegie Mellon University) # Organizers * Benedikt Ahrens (University of Birmingham) * Chris Kapulkin (University of Western Ontario) From andrei.paskevich at lri.fr Wed Feb 24 21:28:35 2021 From: andrei.paskevich at lri.fr (Andrei Paskevich) Date: Wed, 24 Feb 2021 21:28:35 +0100 Subject: [Agda] F-IDE 2021 - Last Call for Papers - Extended Deadline Message-ID: An embedded and charset-unspecified text was scrubbed... Name: not available URL: From laniel at seas.upenn.edu Fri Feb 26 02:59:15 2021 From: laniel at seas.upenn.edu (Daniel Lee) Date: Thu, 25 Feb 2021 20:59:15 -0500 Subject: [Agda] Tips for working around proof relevance In-Reply-To: References: <3262c7b6-0c18-d191-fd77-371f58612684@gmail.com> <1880BD6E-0982-45A2-A2CF-088F77ACE353@nottingham.ac.uk> <14a9a621-6678-f027-7b5e-e13530461dd6@strath.ac.uk> <79fe0763-99a5-42a3-361c-833cde80bb79@mcmaster.ca> <2b8019d6-8dbf-498e-5d38-0fc08acc89c5@strath.ac.uk> <2731aa44-f208-47d9-cf8d-9eb7ae78918b@gmail.com> Message-ID: Hi all, Thanks again for all the insightful comments! I really wasn't expecting to see this much discussion extending from my simple question; it was very cool to hear about the different perspectives on/methods for working with categories in a type theory. If anyone's interested in taking a look, I ended up working on a 1-category theory library for/in cubical agda, which just got merged into the agda/cubical repo a couple days ago. As promised by Anders above, involutivity of ^op follows definitionally without needing any additional fields. And some other nice things ended up happening definitionally, such as one side of the Yoneda natural isomorphism (as it should). Best, Daniel On Mon, Dec 21, 2020 at 12:08 PM Anders Mortberg wrote: > The redundancy in the definition of category also pops up in most > HoTT/UF libraries with some category theory: > > > https://github.com/HoTT/HoTT/blob/master/theories/Categories/Category/Core.v#L40 > > https://unimath.github.io/doc/UniMath/4dd5c17/UniMath.CategoryTheory.Categories.html#is_precategory > > https://github.com/leanprover/lean2/blob/master/hott/algebra/category/precategory.hlean#L19 > > I learned about this trick from the paper Jacques linked to and having > C^op^op being strictly the same as C is indeed very useful. If someone > prefers to avoid this trick then they should develop CT in Cubical > Agda where it's not necessary as sym is strictly involutive. :-) > > -- > Anders > > On Mon, Dec 21, 2020 at 9:27 AM Nicolai Kraus > wrote: > > > > Jacques and James, thanks for the explanations! > > > > On 20/12/2020 22:16, James Wood wrote: > > > The way stdlib is set up, you don't even get propositional equality > > > without some extra work. > > > > Thanks for pointing this out. I wasn't aware of it. > > Asking the equivalence relation to be valued in h-props would be the > > first step towards saturation in Peter's hierarchy. Adding groupoid > > coherence laws would likely become insufficient after a while. > > > > Nicolai > > > > > To get a propositional equality from this to C .assoc f g h, we would > > > need Setoid to give us some propositional equations. We could either > > > enforce that the equivalence relation is h-prop-valued (probably the > > > right thing) or add groupoid coherence laws. On top of that, we would > > > need function extensionality. > > > > > > In any case, we should at least get an equivalence of categories, > > > though I'm not sure how useful that is in practice in a non-univalent > > > setting. In general, I think it's an interesting phenomenon that we > > > can get ourselves into situations where judgemental equality is the > > > only hope. The other example I can think of is how you can have a > > > (badly behaved) category of Sets in plain Agda without using setoids > > > because _?_ is judgementally unital and associative. > > > > > > James > > > _______________________________________________ > > > Agda mailing list > > > Agda at lists.chalmers.se > > > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sandro.stucki at gmail.com Sat Feb 27 11:20:49 2021 From: sandro.stucki at gmail.com (Sandro Stucki) Date: Sat, 27 Feb 2021 11:20:49 +0100 Subject: [Agda] Tips for working around proof relevance In-Reply-To: References: <3262c7b6-0c18-d191-fd77-371f58612684@gmail.com> <1880BD6E-0982-45A2-A2CF-088F77ACE353@nottingham.ac.uk> <14a9a621-6678-f027-7b5e-e13530461dd6@strath.ac.uk> <79fe0763-99a5-42a3-361c-833cde80bb79@mcmaster.ca> <2b8019d6-8dbf-498e-5d38-0fc08acc89c5@strath.ac.uk> <2731aa44-f208-47d9-cf8d-9eb7ae78918b@gmail.com> Message-ID: This is very nice, thank you for sharing it, Daniel! /Sandro On Fri, Feb 26, 2021, 02:59 Daniel Lee wrote: > Hi all, > > Thanks again for all the insightful comments! I really wasn't expecting to > see this much discussion extending from my simple question; it was very > cool to hear about the different perspectives on/methods for working with > categories in a type theory. > > If anyone's interested in taking a look, I ended up working on a > 1-category theory library for/in cubical agda, which just got merged into > the agda/cubical repo a couple days > ago. As promised by Anders above, involutivity of ^op follows > definitionally without needing any additional fields. And some other nice > things ended up happening definitionally, such as one side of the Yoneda > natural isomorphism (as it should). > > Best, > Daniel > > On Mon, Dec 21, 2020 at 12:08 PM Anders Mortberg > wrote: > >> The redundancy in the definition of category also pops up in most >> HoTT/UF libraries with some category theory: >> >> >> https://github.com/HoTT/HoTT/blob/master/theories/Categories/Category/Core.v#L40 >> >> https://unimath.github.io/doc/UniMath/4dd5c17/UniMath.CategoryTheory.Categories.html#is_precategory >> >> https://github.com/leanprover/lean2/blob/master/hott/algebra/category/precategory.hlean#L19 >> >> I learned about this trick from the paper Jacques linked to and having >> C^op^op being strictly the same as C is indeed very useful. If someone >> prefers to avoid this trick then they should develop CT in Cubical >> Agda where it's not necessary as sym is strictly involutive. :-) >> >> -- >> Anders >> >> On Mon, Dec 21, 2020 at 9:27 AM Nicolai Kraus >> wrote: >> > >> > Jacques and James, thanks for the explanations! >> > >> > On 20/12/2020 22:16, James Wood wrote: >> > > The way stdlib is set up, you don't even get propositional equality >> > > without some extra work. >> > >> > Thanks for pointing this out. I wasn't aware of it. >> > Asking the equivalence relation to be valued in h-props would be the >> > first step towards saturation in Peter's hierarchy. Adding groupoid >> > coherence laws would likely become insufficient after a while. >> > >> > Nicolai >> > >> > > To get a propositional equality from this to C .assoc f g h, we would >> > > need Setoid to give us some propositional equations. We could either >> > > enforce that the equivalence relation is h-prop-valued (probably the >> > > right thing) or add groupoid coherence laws. On top of that, we would >> > > need function extensionality. >> > > >> > > In any case, we should at least get an equivalence of categories, >> > > though I'm not sure how useful that is in practice in a non-univalent >> > > setting. In general, I think it's an interesting phenomenon that we >> > > can get ourselves into situations where judgemental equality is the >> > > only hope. The other example I can think of is how you can have a >> > > (badly behaved) category of Sets in plain Agda without using setoids >> > > because _?_ is judgementally unital and associative. >> > > >> > > James >> > > _______________________________________________ >> > > Agda mailing list >> > > Agda at lists.chalmers.se >> > > https://lists.chalmers.se/mailman/listinfo/agda >> > >> > _______________________________________________ >> > Agda mailing list >> > Agda at lists.chalmers.se >> > https://lists.chalmers.se/mailman/listinfo/agda >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From carette at mcmaster.ca Mon Mar 1 21:54:06 2021 From: carette at mcmaster.ca (Jacques Carette) Date: Mon, 1 Mar 2021 15:54:06 -0500 Subject: [Agda] subst puzzle Message-ID: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> Here is a self-contained puzzle that has me stumped. I'm sure there are lemmas in Relation.Binary.PropositionalEquality.Properties that ought to apply, but I just can't see it.? Ideas? Jacques module Puzzle where open import Data.Nat using (?; _+_; zero) open import Data.Fin using (Fin; splitAt) open import Relation.Binary.PropositionalEquality using (_?_; subst) open import Data.Sum using (inj?) lemma : (k : ?) (m : Fin k) (p : k ? k + 0) ? splitAt k (subst Fin p m) ? inj? m lemma k m p = {!!} From paolo at capriotti.io Tue Mar 2 08:39:22 2021 From: paolo at capriotti.io (Paolo Capriotti) Date: Tue, 02 Mar 2021 08:39:22 +0100 Subject: [Agda] subst puzzle In-Reply-To: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> Message-ID: <1614670450.ja9x5xymbp.astroid@avocado.none> March 1, 2021 9:54 pm: > Here is a self-contained puzzle that has me stumped. I'm sure there are > lemmas in Relation.Binary.PropositionalEquality.Properties that ought to > apply, but I just can't see it.? Ideas? Here is my attempt: https://gist.github.com/pcapriotti/32358d5b89e72459608651e6030886de I find the easiest way to prove an equality of elements of Fin n is to just convert them to natural numbers, prove the equality there, then using injectivity of to?. Best, Paolo From nad at cse.gu.se Tue Mar 2 13:15:44 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Tue, 2 Mar 2021 13:15:44 +0100 Subject: [Agda] subst puzzle In-Reply-To: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> Message-ID: <806edcc9-213e-8d95-c344-8f6f50fe3604@cse.gu.se> On 2021-03-01 21:54, Jacques Carette wrote: > Here is a self-contained puzzle that has me stumped. Why do you want to prove this? -- /NAD From jmchapman at gmail.com Tue Mar 2 14:28:31 2021 From: jmchapman at gmail.com (James Chapman) Date: Tue, 2 Mar 2021 13:28:31 +0000 Subject: [Agda] subst puzzle In-Reply-To: <1614670450.ja9x5xymbp.astroid@avocado.none> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> <1614670450.ja9x5xymbp.astroid@avocado.none> Message-ID: Here's a slight variation - replacing Paolo's nice observation about moving from Fin to Nat with some more mindless subst management: https://gist.github.com/jmchapman/190acbc1c2b8f5d3fb5224a7f46d1bb5 Regards, James On Tue, 2 Mar 2021 at 07:39, Paolo Capriotti wrote: > > March 1, 2021 9:54 pm: > > Here is a self-contained puzzle that has me stumped. I'm sure there are > > lemmas in Relation.Binary.PropositionalEquality.Properties that ought to > > apply, but I just can't see it. Ideas? > > Here is my attempt: > https://gist.github.com/pcapriotti/32358d5b89e72459608651e6030886de > > I find the easiest way to prove an equality of elements of Fin n is to just convert them to natural numbers, prove the equality there, then using injectivity of to?. > > Best, > Paolo > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From andreasnuyts at gmail.com Tue Mar 2 20:53:43 2021 From: andreasnuyts at gmail.com (Andreas Nuyts) Date: Tue, 2 Mar 2021 20:53:43 +0100 Subject: [Agda] subst puzzle In-Reply-To: <1614670450.ja9x5xymbp.astroid@avocado.none> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> <1614670450.ja9x5xymbp.astroid@avocado.none> Message-ID: <36d0d618-c44b-1275-f28d-c2d26bca16c2@gmail.com> Hi, This also works. It's longer than Paolo's solution, but more self-contained: module SubstPuzzle where open import Data.Nat -- using (?; _+_; zero) open import Data.Fin using (Fin; zero; suc; splitAt) open import Relation.Binary.PropositionalEquality -- using (_?_; subst) open import Data.Sum -- using (inj?) open import Function suc-inj : {j k : ?} (p : (? ? suc j) ? suc k) ? j ? k suc-inj {j} {.j} refl = refl subst-zero : {j k : ?} (p : suc j ? suc k) ? subst Fin p zero ? zero subst-zero {j} {.j} refl = refl subst-suc : {j k : ?} (p : suc j ? suc k) (m : Fin j) ? subst Fin p (suc m) ? suc (subst Fin (suc-inj p) m) subst-suc {j} {.j} refl m = refl splitAtSuc : (j k : ?) (m : Fin (j + k)) (n : Fin j) (p : splitAt j m ? inj? n) ? (splitAt (suc j) (suc m) ? inj? (suc n)) splitAtSuc j k m n p = cong (map suc id) p lemma : (k : ?) (m : Fin k) (p : k ? k + 0) ? splitAt k (subst Fin p m) ? inj? m lemma zero () p lemma (suc k) zero p = cong (splitAt (suc k)) (subst-zero p) lemma (suc k) (suc m) p = trans ??????????????????????????? (cong (splitAt (suc k)) (subst-suc p m)) ??????????????????????????? (splitAtSuc k zero (subst Fin (suc-inj p) m) m (lemma k m (suc-inj p))) Best regards, Andreas On 02.03.21 08:39, Paolo Capriotti wrote: > March 1, 2021 9:54 pm: >> Here is a self-contained puzzle that has me stumped. I'm sure there are >> lemmas in Relation.Binary.PropositionalEquality.Properties that ought to >> apply, but I just can't see it.? Ideas? > Here is my attempt: > https://gist.github.com/pcapriotti/32358d5b89e72459608651e6030886de > > I find the easiest way to prove an equality of elements of Fin n is to just convert them to natural numbers, prove the equality there, then using injectivity of to?. > > Best, > Paolo > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From carette at mcmaster.ca Tue Mar 2 21:35:40 2021 From: carette at mcmaster.ca (Jacques Carette) Date: Tue, 2 Mar 2021 15:35:40 -0500 Subject: [Agda] subst puzzle In-Reply-To: <806edcc9-213e-8d95-c344-8f6f50fe3604@cse.gu.se> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> <806edcc9-213e-8d95-c344-8f6f50fe3604@cse.gu.se> Message-ID: <7e56c91d-cf20-f98b-415e-b4c7404a0cd5@mcmaster.ca> On 2021-Mar.-02 07:15 , Nils Anders Danielsson wrote: > On 2021-03-01 21:54, Jacques Carette wrote: >> Here is a self-contained puzzle that has me stumped. > > Why do you want to prove this? > An excellent question indeed.? Here's a small, self-contained version. The rhs of`foo` is really from `Data.Vec.Functional`.? The real goal is to prove the IsMonoid at the end. I have now done it, replacing the `subst Fin` below with `cast` from Data.Fin (thanks @gallais!), with less pain.? I was stuck on the right-identity law. The motivation is a generalization of the "Big Operators" of https://hal.inria.fr/inria-00331193. Because `foo A` is definitely dependent, I know of no ways to avoid doing some kind of patching of the rhs type when defining equivalence. Jacques open import Data.Nat using (?; _+_; zero) open import Data.Fin using (Fin; splitAt) open import Relation.Binary.PropositionalEquality using (_?_; subst) open import Data.Sum using (inj?; [_,_]) open import Data.Product open import Algebra using (IsMonoid) foo : Set? ? Set? foo A = ? ? (? n ? Fin n ? A) module _ {A : Set?} where ? infix 5 _+++_ ? _+++_ : foo A ? foo A ? foo A ? t? +++ t? = (proj? t? + proj? t?) ,? ? n ? [ proj? t? , proj? t? ] (splitAt (proj? t?) n) ? 0foo : foo A ? 0foo = 0 , ? () ? infix 1 _?r_ ? record _?r_ (T? T? : foo A) : Set where ??? field ????? ?len : proj? T? ? proj? T??? -- note the flip ????? ?Rtd : (x : Fin (proj? T?)) ? proj? T? (subst Fin ?len x) ? proj? T? x ? goal : IsMonoid _?r_ _+++_ 0foo ? goal = {!!} From mechvel at scico.botik.ru Wed Mar 3 00:30:03 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 03 Mar 2021 02:30:03 +0300 Subject: [Agda] Chapter "Traps" Message-ID: Dear Agda developers, I know that this is a known problem, but I recall of it because probably it bites many people. The type checker reports of the function f : (n : ?) ? n ? 0 ? ? f 0 0?0 = contradiction refl 0?0 f (suc 0) _ = 1 f (suc (suc n)) _ = suc (f 1+n 1+n?0) where 1+n = suc n as of not terminating. The programmer has to guess to replace "1+n" with "suc n". Probably Agda docs needs the chapter "Traps" visible somewhere on the top. There are many of them besides this one. Here is fresh for me trap of of which I have been bitten: In Haskell, I wrote f x = let y = g x in h y y (I) instead of f x = h (g x) (g x) in order to make sure that (g x) is computed only once. In lambda calculus, it is substituted as (h (g x) (g x)). I do not know whether the Haskell language specifies sharing for (I), but I expected that most Haskell compilers support sharing in (I): they compile (I) so that y is shared and is computed only once. Right? And it occurs that Agda does not support sharing in (I). As in my particular example the construct of the type (I) is recursive, and deals with a large data, the evaluation "exploded". Thanks to Ulf Norell who has pointed me to the effect of (I). Another trap: proofs for a function constructed with 'let', `where', `with', `case'. Very often one needs to replace them with a new function which is moved to the top of the scope. Another trap: there are many cases when it is not practically possible to separate evaluation of a function f and proofs for its main properties. In such a case one needs to mix "evaluation" and proof constructing in one loop, and to take care of performance. There are certain traps causing the type check cost explosion, and so on. Regards, ------ Sergei From nad at cse.gu.se Wed Mar 3 16:30:30 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 3 Mar 2021 16:30:30 +0100 Subject: [Agda] subst puzzle In-Reply-To: <7e56c91d-cf20-f98b-415e-b4c7404a0cd5@mcmaster.ca> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> <806edcc9-213e-8d95-c344-8f6f50fe3604@cse.gu.se> <7e56c91d-cf20-f98b-415e-b4c7404a0cd5@mcmaster.ca> Message-ID: <6e448bbb-6657-ffb7-df70-f19dc8fc781b@cse.gu.se> On 2021-03-02 21:35, Jacques Carette wrote: > infix 1 _?r_ > record _?r_ (T? T? : foo A) : Set where > field > ?len : proj? T? ? proj? T? -- note the flip > ?Rtd : (x : Fin (proj? T?)) ? proj? T? (subst Fin ?len x) ? proj? T? x I guess that you do not want to rely on function extensionality. In this setting there is still a split surjection from foo?A to List?A, so I would suggest the following approach: * Replace _?r_ with equality under conversion to lists: to-list : foo A ? List A xs ?r ys = to-list xs ? to-list ys * Define _+++_ by recursion on the left list's length. * Prove that to-list is homomorphic using the same recursion pattern: to-list (xs +++ ys) ? to-list xs ++ to-list ys * Now it is easy to turn things like the right identity law for lists into corresponding laws for foo. There is no need to use subst for this. -- /NAD From carette at mcmaster.ca Wed Mar 3 22:18:15 2021 From: carette at mcmaster.ca (Jacques Carette) Date: Wed, 3 Mar 2021 16:18:15 -0500 Subject: [Agda] subst puzzle In-Reply-To: <6e448bbb-6657-ffb7-df70-f19dc8fc781b@cse.gu.se> References: <4f2f0322-351d-e9ac-4ba8-f623282efa0e@mcmaster.ca> <806edcc9-213e-8d95-c344-8f6f50fe3604@cse.gu.se> <7e56c91d-cf20-f98b-415e-b4c7404a0cd5@mcmaster.ca> <6e448bbb-6657-ffb7-df70-f19dc8fc781b@cse.gu.se> Message-ID: <0412f9f7-0d75-5c18-564d-975c32884ef0@mcmaster.ca> On 2021-Mar.-03 10:30 , Nils Anders Danielsson wrote: > On 2021-03-02 21:35, Jacques Carette wrote: >> ?? infix 1 _?r_ >> ?? record _?r_ (T? T? : foo A) : Set where >> ???? field >> ?????? ?len : proj? T? ? proj? T??? -- note the flip >> ?????? ?Rtd : (x : Fin (proj? T?)) ? proj? T? (subst Fin ?len x) ? >> proj? T? x > > I guess that you do not want to rely on function extensionality. In this > setting there is still a split surjection from foo?A to List?A, so I > would suggest the following approach: [...] Oh, that is perfect, thank you! That will indeed simplify many things, even more than the current `cast` approach. It would be really nice to collect the "wisdom of the masters" for doing dependently-typed programming somewhere. So I'll volunteer: if people want to send me nuggets (links to blogs, to pieces of code and a comment why the technique should be known, etc), I'll find a way to put them up somewhere. The Agda wiki? Jacques From chantal.keller at wanadoo.fr Tue Mar 9 11:27:24 2021 From: chantal.keller at wanadoo.fr (Chantal Keller) Date: Tue, 9 Mar 2021 11:27:24 +0100 Subject: [Agda] 7th International Workshop on Proof eXchange for Theorem Proving (PxTP) - First CFP Message-ID: Call for Papers, PxTP 2021 The Seventh International Workshop on Proof eXchange for Theorem Proving (PxTP) https://pxtp.gitlab.io/2021 21 July 2021, online associated with the CADE-28 conference ## Background The PxTP workshop brings together researchers working on various aspects of communication, integration, and cooperation between reasoning systems and formalisms. The progress in computer-aided reasoning, both automatic and interactive, during the past decades, has made it possible to build deduction tools that are increasingly more applicable to a wider range of problems and are able to tackle larger problems progressively faster. In recent years, cooperation of such tools in larger verification environments has demonstrated the potential to reduce the amount of manual intervention. Examples include the Sledgehammer tool providing an interface between Isabelle and (untrusted) automated provers, and collaboration of the HOL Light and Isabelle systems in the formal proof of the Kepler conjecture. Cooperation between reasoning systems relies on availability of theoretical formalisms and practical tools for exchanging problems, proofs, and models. The PxTP workshop strives to encourage such cooperation by inviting contributions on suitable integration, translation, and communication methods, standards, protocols, and programming interfaces. The workshop welcomes developers of automated and interactive theorem proving tools, developers of combined systems, developers and users of translation tools and interfaces, and producers of standards and protocols. We are interested both in success stories and descriptions of current bottlenecks and proposals for improvement. ## Topics Topics of interest for this workshop include all aspects of cooperation between reasoning tools, whether automatic or interactive. More specifically, some suggested topics are: * applications that integrate reasoning tools (ideally with certification of the result); * interoperability of reasoning systems; * translations between logics, proof systems, models; * distribution of proof obligations among heterogeneous reasoning tools; * algorithms and tools for checking and importing (replaying, reconstructing) proofs; * proposed formats for expressing problems and solutions for different classes of logic solvers (SAT, SMT, QBF, first-order logic, higher-order logic, typed logic, rewriting, etc.); * meta-languages, logical frameworks, communication methods, standards, protocols, and APIs related to problems, proofs, and models; * comparison, refactoring, transformation, migration, compression and optimization of proofs; * data structures and algorithms for improved proof production in solvers (e.g., efficient proof representations); * (universal) libraries, corpora and benchmarks of proofs and theories; * alignment of diverse logics, concepts and theories across systems and libraries; * engineering aspects of proofs (e.g., granularity, flexiformality, persistence over time); * proof certificates; * proof checking; * mining of (mathematical) information from proofs (e.g., quantifier instantiations, unsat cores, interpolants, ...); * reverse engineering and understanding of formal proofs; * universality of proofs (i.e. interoperability of proofs between different proof calculi); * origins and kinds of proofs (e.g., (in)formal, automatically generated, interactive, ...) * Hilbert's 24th Problem (i.e. what makes a proof better than another?); * social aspects (e.g., community-wide initiatives related to proofs, cooperation between communities, the future of (formal) proofs); * applications relying on importing proofs from automatic theorem provers, such as certified static analysis, proof-carrying code, or certified compilation; * application-oriented proof theory; * practical experiences, case studies, feasibility studies. ## Submissions Researchers interested in participating are invited to submit either an extended abstract (up to 8 pages) or a regular paper (up to 15 pages). Submissions will be refereed by the program committee, which will select a balanced program of high-quality contributions. Short submissions that could stimulate fruitful discussion at the workshop are particularly welcome. We expect that one author of every accepted paper will present their work at the workshop. Submitted papers should describe previously unpublished work, and must be prepared using the LaTeX EPTCS class (http://style.eptcs.org). Papers will be submitted via EasyChair, at the PxTP'2021 workshop page (https://easychair.org/conferences/?conf=pxtp-7). Accepted regular papers will appear in an EPTCS volume. ## Important Dates * Abstract submission: April 21, 2021 * Paper submission: April 28, 2021 * Notification: May 26, 2021 * Camera ready versions due: June 16, 2021 * Workshop: July 11, 2021 (online) ## Invited Speakers TBA ## Program Committee * Haniel Barbosa (Universidade Federal de Minas Gerais (UFMG), Belo Horizonte, Brazil) * Denis Cousineau (Mitsubishi, France) * Stefania Dumbrava (ENSIIE, France) * Katalin Fazekas (TU Wien, Austria) * Mathias Fleury (Johannes Kepler University Linz, Austria), co-chair * Predrag Jani?i? (University of Belgrade, Serbia) * Chantal Keller (LRI, Universit? Paris-Saclay, France), co-chair * Aina Niemetz (Stanford University, USA) * Jens Otten (University of Oslo, Norway) * Giselle Reis (CMU-Qatar, Qatar) * Geoff Sutcliffe (University of Miami, USA) * Fran?ois Thir? (Nomadic Labs, France) * Sophie Tourret (Max-Planck-Institut f?r Informatik, Germany) * Josef Urban (Czech Institute of Informatics, Czech Republic) ## Previous PxTP Editions * PxTP 2019 (http://pxtp.gforge.inria.fr/2019), affiliated to CADE-27 * PxTP 2017 (https://pxtp.github.io/2017), affiliated to Tableaux 2017, FroCoS 2017 and ITP 2017 * PxTP 2015 (http://pxtp15.lri.fr), affiliated to CADE-25 * PxTP 2013 (http://www.cs.ru.nl/pxtp13), affiliated to CADE-24 * PxTP 2012 (http://pxtp2012.inria.fr), affiliated to IJCAR 2012 * PxTP 2011 (http://pxtp2011.loria.fr), affiliated to CADE-23 From joshs at mail2000.com.tw Tue Mar 9 11:44:09 2021 From: joshs at mail2000.com.tw (Josh Ko) Date: Tue, 9 Mar 2021 18:44:09 +0800 Subject: [Agda] Call for papers - Workshop on Type-Driven Development (TyDe 2021) at ICFP 2021 Message-ID: <5FD61081-1EBB-4B3F-A42D-C01C60FD9D2B@mail2000.com.tw> Workshop on Type-Driven Development 2021 (TyDe) co-located with ICFP 2021 ----------------------------------------- https://icfp21.sigplan.org/home/TyDe-2021 ----------------------------------------- May 19: Paper submission deadline May 26: Extended abstract submission deadline # Goals of the Workshop The Workshop on Type-Driven Development (TyDe) aims to show how static type information may be used effectively in the development of computer programs. Co-located with ICFP, this workshop brings together leading researchers and practitioners who are using or exploring types as a means of program development. We welcome all contributions, both theoretical and practical, on a range of topics including: * dependently typed programming; * generic programming; * design and implementation of programming languages, exploiting types in novel ways; * exploiting typed data, data dependent data, or type providers; * static and dynamic analyses of typed programs; * tools, IDEs, or testing tools exploiting type information; * pearls, being elegant, instructive examples of types used in the derivation, calculation, or * construction of programs. # Submission Details Submissions should fall into one of two categories: * regular research papers (12 pages); * extended abstracts (3 pages). The bibliography will not be counted against the page limits for either category. Regular research papers are expected to present novel and interesting research results, and will be included in the formal proceedings. Extended abstracts should report work in progress that the authors would like to present at the workshop. Extended abstracts will be distributed to workshop attendees but will not be published in the formal proceedings. More details can be found on https://icfp21.sigplan.org/home/TyDe-2021 # Important Dates * May 19: Paper submission deadline * May 26: Extended abstract submission deadline * June 16: Author notification * July 1: Camera-ready deadline * August 22: Workshop (tentative) # Program Committee Chairs: * Hsiang-Shang ?Josh? Ko, Institute of Information Science, Academia Sinica, Taiwan (co-chair) * Dominic Orchard, University of Kent, UK (co-chair) Programme Committee: * Kenichi Asai, Ochanomizu University, Japan * Jean-Philippe Bernardy, University of Gothenburg, Sweden * Liang-Ting Chen, Institute of Information Science, Academia Sinica, Taiwan * Ornela Dardha, University of Glasgow, UK * Martin Escardo, University of Birmingham, UK * Patricia Johann, Appalachian State University, USA * Neel Krishnaswami, University of Cambridge, UK * Ana Milanova, Rensselaer Polytechnic Institute, USA * Keiko Nakata, SAP Innovation Center Network, Potsdam, Germany * KC Sivaramakrishnan, IIT Madras, India * Stephanie Weirich, University of Pennsylvania, USA * James Wood, University of Strathclyde, UK * Beta Ziliani, FAMAF, UNC and CONICET, Argentina # Proceedings and Copyright We will have formal proceedings, published by the ACM. Accepted papers will be included in the ACM Digital Library. Authors must grant ACM publication rights upon acceptance, but may retain copyright if they wish. Authors are encouraged to publish auxiliary material with their paper (source code, test data, and so forth). The proceedings will be freely available for download from the ACM Digital Library from one week before the start of the conference until two weeks after the conference. From kbh at umn.edu Sat Mar 13 02:14:59 2021 From: kbh at umn.edu (Favonia) Date: Fri, 12 Mar 2021 19:14:59 -0600 Subject: [Agda] Research Programmer in HoTT and Cubical Type Theory Message-ID: We are hiring a research programmer at University of Minnesota to work with us on building next-generation proof assistant technology (broadly defined) based on homotopy type theory and cubical type theory. The ideal candidate would have some knowledge and interest in homotopy and cubical type theory, combined with concrete experience implementing type theoretic proof assistants using modern algorithms, such as bidirectional type checking and normalization-by-evaluation. You will be exposed to the latest research in the field and can get involved in theoretical development of the research ideas. We welcome applicants who do not have a Ph.D. degree---a BA/BS degree is sufficient. The research project is funded by the AFOSR through their MURI program, and your official affiliation would be the University of Minnesota with Favonia being your supervisor. However, you will frequently meet and collaborate with other researchers from Carnegie Mellon University, Wesleyan University, University of San Diego, and other institutions. Especially during the COVID-19 pandemic, most activities will be online, though you will have to be physically in the US. (We may be able to sponsor visas. Contact Favonia for details.) We are interviewing candidates on a rolling basis until a match is found. Candidates applying by the end of March (2021/3/31) would be given priority. Here is the official link for application: https://hr.myu.umn.edu/jobs/ext/339220 Please also drop an email to Favonia so that we can confirm that your application correctly enters the system. If you are a current employee of the University of Minnesota, please use https://hr.myu.umn.edu/jobs/int/339220 instead. # Some further information - What is the annual salary? About $60,000 USD. - When is the expected start date? As soon as you are ready. - How long does this position last? The position will last as long as the project can support it and benefit from it. However, the expectation is that you will be in this position around 1-3 years (negotiable) and may choose to leave early (for example, to start a Ph.D.). Your official contract will be one-year but renewable. - I see that there?s a ?work experience? requirement. What counts as ?work experience?? This requirement exists to satisfy an administrative requirement of the job code at the University of Minnesota. We will recognize a wide range of activities as ?work experience?, such as contributions on GitHub during weekends. **Please document related activities in your CV.** If you are not sure if something counts as work experience, please ask Favonia . - I have more questions! Please send an email to Favonia . Best, Favonia they/them/theirs -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrei.h.popescu at gmail.com Sat Mar 13 02:22:54 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Sat, 13 Mar 2021 01:22:54 +0000 Subject: [Agda] Lecturer in Verification position at University of Sheffield: deadline 29 March 2021 Message-ID: Greetings, The Department of Computer Science at University of Sheffield has an open position of Lecturer in Verification. Details can be found here: https://www.jobs.ac.uk/job/CEF438/lecturer-in-verification Applicants doing research with and on proof assistants are most welcome. Female applicants are particularly encouraged. Best wishes, Andrei From mechvel at scico.botik.ru Sun Mar 14 23:47:19 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 15 Mar 2021 01:47:19 +0300 Subject: [Agda] test report Message-ID: Dear all, I report of a test for Agda-2.6.1 + MAlonzo for a certain real-world program for polynomials. There is a simple method `simple' to find something and `efficient'. All this is first programmed in Haskell (without proofs) and run under ghc-8.8.3. * `efficient' must be supplied with the proof for its equivalence to `simple'. * It needs to be almost as fast as the Haskell program, say, 3 times slower. Concerning proof: if it was possible to separate proof from `efficient', then its proof-free part would be as simple and small as the Haskell's one. The results are as follows. * The source size is 5 times larger than Haskell's. It is all right, because there are many proofs, in particular, termination proved by proving various inequalities, and so on. * The program is built in 5 minutes under +RTS -M8G -RTS. 3 minutes of type checking, 2 minutes of complilation. In Haskell, it takes 3-4 seconds. It is all right, because there are many proofs. * It has the same cost order in performance as Haskell's, and it is only 2-3 times slower. Very good. * I failed to separate the proof. Because it forced me to move things under 'let' and 'where' to the functions on the top level, giving them many "prefix" arguments. Also it has four functions mutually recursing each other. So that there was a great confusion when I started to add proofs as separate, the very evaluation function needs an awful refactoring and complication. So I gave up and incorporated the proof accumulation (very recursively) into the evaluation function. This proof is much-much simpler to form. I feared of the performance overhead caused by this. But as usual, there is not any essential overhead. I somehow keep in mind that there is a general reason for this. * The Efficient.o file is 433 times larger than Efficient.o produced by GHC. I do not know, may be the MAlonzo part can be optimized. ? Regards, -- SM From nad at cse.gu.se Mon Mar 15 11:01:49 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 15 Mar 2021 11:01:49 +0100 Subject: [Agda] test report In-Reply-To: References: Message-ID: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> On 2021-03-14 23:47, mechvel at scico.botik.ru wrote: > * I failed to separate the proof. I suggest that you try to mark the proof parts with @0, so that they are erased by the compiler: https://agda.readthedocs.io/en/latest/language/runtime-irrelevance.html -- /NAD From mechvel at scico.botik.ru Mon Mar 15 13:11:46 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 15 Mar 2021 15:11:46 +0300 Subject: [Agda] test report In-Reply-To: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> Message-ID: <779449da8e5a6530a9a6093b584adba1@scico.botik.ru> On 2021-03-15 13:01, Nils Anders Danielsson wrote: > On 2021-03-14 23:47, mechvel at scico.botik.ru wrote: >> * I failed to separate the proof. > > I suggest that you try to mark the proof parts with @0, so that they > are > erased by the compiler: > > > https://agda.readthedocs.io/en/latest/language/runtime-irrelevance.html I have efficient-withProof : Pol ? ? Pol (\h -> h =? simple f) -- The proper result and the proof -- for its equality to the result of the simple method. -- There are ready the needed proofs for `simple', and they will be ported -- to `efficient' by using the proof part in efficient-withProof. -- (For `simple' proofs are simpler to build). efficient-withProof f = case foo f of \ { (no ?hm) ? let 0=simple-f = simple-?hm=0 f ?hm in (0? , 0=simple-f) ; ... has complex recursions } efficient : Pol -> Pol efficient = proj? ? efficient-withProof efficient-P : (f : Pol) -> P (efficient f) -- usage efficient-P f = let (h , h=simple-f) = efficient-withProof f in P-cong (simple-P f) (=sym h=simple-f) P (efficient f) is derived from h=simple-f derived here and from simple-P, P-cong proved earlier. I tried to insert @0 to various places in efficient-withProof signature and body, and it reports "Parse error". Is @0 (@erased) a language construct or it is a function to be imported from somewhere? Thanks, -- SM From mechvel at scico.botik.ru Mon Mar 15 14:34:52 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 15 Mar 2021 16:34:52 +0300 Subject: [Agda] test report In-Reply-To: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> Message-ID: On 2021-03-15 13:01, Nils Anders Danielsson wrote: > On 2021-03-14 23:47, mechvel at scico.botik.ru wrote: >> * I failed to separate the proof. > > I suggest that you try to mark the proof parts with @0, so that they > are > erased by the compiler: > > > https://agda.readthedocs.io/en/latest/language/runtime-irrelevance.html Here is a self-contained example (a small archive copy attached - for the case if the below source in wrongly printed in e-mail editor). Imagine that efficient+ pretends to be more efficient than Nat._+_. But it is needed to prove the properties for it, like Commutative, Associative, etc, and that it is difficult. So, the program proves the result equality for efficient+ to _+_, and proves the properties by using this equality. Imagine that the only practically feasible way to prove this equality is to incorporate the proof into the recursive structure for efficient+, which makes it efficient+withProof returning a pair. This is shown in in the below code. Then, define efficient+ m = proj? ? efficient+withProof m, and (Commutative efficient+) is proved by using efficient+withProof and +-comm. Imagine that the proofs are not erased here. How to force erasing by @erase as much as possible for this example? Where to set @0 ? Thanks, -- SM ----------------------------------------------------------- open import Algebra.Definitions using (Commutative) open import Data.Nat using (?; suc; _+_) open import Data.Nat.Properties using (+-comm) open import Data.Product using (_,_; proj?; ?) open import Function using (_?_) open import Relation.Binary.PropositionalEquality as PE using (_?_; refl; sym; cong) import Relation.Binary.Reasoning.Setoid as EqReasoning efficient+withProof : (m n : ?) ? ? ? (\s ? s ? m + n) efficient+withProof 0 n = (n , refl) efficient+withProof (suc m) n = let (eff-m-n , eff-m-n?m+n) = efficient+withProof m n s = suc eff-m-n s?1+m+n : s ? (suc m) + n s?1+m+n = cong suc eff-m-n?m+n in (s , s?1+m+n) efficient+ : (m n : ?) ? ? efficient+ m = proj? ? efficient+withProof m efficient+comm : Commutative _?_ efficient+ efficient+comm m n = let open EqReasoning (PE.setoid ?) (eff[m,n] , eff[m,n]?m+n) = efficient+withProof m n (eff[n,m] , eff[n,m]?n+m) = efficient+withProof n m in begin efficient+ m n ?? eff[m,n]?m+n ? m + n ?? +-comm m n ? n + m ?? sym (eff[n,m]?n+m) ? efficient+ n m ? ----------------------------------------------------------------- -------------- next part -------------- A non-text attachment was scrubbed... Name: TT.agda.zip Type: application/zip Size: 752 bytes Desc: not available URL: From nad at cse.gu.se Tue Mar 16 21:49:55 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Tue, 16 Mar 2021 21:49:55 +0100 Subject: [Agda] test report In-Reply-To: References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> Message-ID: <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> On 2021-03-15 14:34, mechvel at scico.botik.ru wrote: > How to force erasing by @erase as much as possible for this example? > Where to set @0 ? Here is one way to erase the proofs: record Erased (@0 A : Set) : Set where constructor [_] field @0 erased : A efficient+withProof : (m n : ?) ? ? ? (\s ? Erased (s ? m + n)) efficient+withProof 0 n = (n , [ refl ]) efficient+withProof (suc m) n = let (eff-m-n , [ eff-m-n?m+n ]) = efficient+withProof m n s = suc eff-m-n @0 s?1+m+n : s ? (suc m) + n s?1+m+n = cong suc eff-m-n?m+n in (s , [ s?1+m+n ]) efficient+ : (m n : ?) ? ? efficient+ m = proj? ? efficient+withProof m @0 efficient+comm : Commutative _?_ efficient+ efficient+comm m n = let open EqReasoning (PE.setoid ?) (eff[m,n] , [ eff[m,n]?m+n ]) = efficient+withProof m n (eff[n,m] , [ eff[n,m]?n+m ]) = efficient+withProof n m in begin efficient+ m n ?? eff[m,n]?m+n ? m + n ?? +-comm m n ? n + m ?? sym eff[n,m]?n+m ? efficient+ n m ? If, instead of using Erased, you switch to a variant of ? with an erased second field, then the GHC backend might erase more of your code: record ? (A : Set) (@0 B : A ? Set) : Set where constructor _,_ field proj? : A @0 proj? : B proj? With Erased I get the following Haskell code for efficient+withProof: d20 :: Integer -> Integer -> MAlonzo.Code.Agda.Builtin.Sigma.T14 d20 v0 v1 = case coe v0 of 0 -> coe MAlonzo.Code.Agda.Builtin.Sigma.C32 (coe v1) erased _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in coe MAlonzo.Code.Agda.Builtin.Sigma.C32 (coe addInt (coe (1 :: Integer)) (coe MAlonzo.Code.Agda.Builtin.Sigma.d28 (coe d20 (coe v2) (coe v1)))) erased With an erased second projection I get the following Haskell code instead: newtype T6 = C20 AgdaAny d16 :: T6 -> AgdaAny d16 v0 = case coe v0 of C20 v1 -> coe v1 _ -> MAlonzo.RTE.mazUnreachableError d28 :: Integer -> Integer -> T6 d28 v0 v1 = case coe v0 of 0 -> coe C20 v1 _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in coe C20 (addInt (coe (1 :: Integer)) (coe d16 (coe d28 (coe v2) (coe v1)))) -- /NAD From andrei.h.popescu at gmail.com Wed Mar 17 12:18:28 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Wed, 17 Mar 2021 11:18:28 +0000 Subject: [Agda] 21st Midlands Graduate School in the Foundations of Computing Science: Final Call for Participation Message-ID: FINAL CALL FOR PARTICIPATION 21st Midlands Graduate School in the Foundations of Computing Science MGS 21 12-16 April 2021, virtually https://staffwww.dcs.shef.ac.uk/people/G.Struth/mgs21.html OVERVIEW The annual Midlands Graduate School in the Foundations of Computing Science (MGS) offers an intensive programme of lectures on the mathematical foundations of computing. It addresses first of all PhD students in their first or second year, but is open to anyone interested in its topics, from academia to industry and around the world. The MGS has been run since 1999 and is hosted alternately by the Universities of Birmingham, Leicester, Nottingham and Sheffield. MGS 21 is its 21st incarnation. Information about previous events can be found at the MGS web site http://www.cs.nott.ac.uk/MGS PROGRAMME MGS 21 consists of eight courses, each with four or five hours of lectures and a similar number of exercise sessions. Three courses are introductory; one is given by an invited lecturer. These should be attended by all participants. The remaining more advanced courses should be selected based on interest. MGS 21 aims at a mix of livestreamed and prerecorded lectures and livestreamed exercise sessions, with additional social online events. Invited lectures: Monads and Interactions Tarmo Uustalu, Reykjavik Introductory courses: Category Theory Jacopo Emmenegger, Birmingham Type Theory Thorsten Altenkirch, Nottingham Proof Theory Anupam Das, Birmingham Advanced courses: Homotopy Type Theory Nicolai Kraus, Nottingham Inductive and Coinductive Reasoning with Isabelle/HOL Andrei Popescu, Sheffield Effects and Call-by-Push-Value Paul Levy, Birmingham Formal Modelling and Analysis of Concurrent Systems Mohammad Mousavi, Leicester In addition we are organising a session where participants can briefly present and discuss their own research. A call will be made in March. REGISTRATION Participation at MGS 21 is free of charge, but selective. Requests must be submitted online via https://staffwww.dcs.shef.ac.uk/people/G.Struth/mgs21.html Registration deadline is April 1. ORGANISATION Please direct all queries about MGS 21 to Georg Struth. The Sheffield organisers are Harsh Beohar (H.Beohar at sheffield.ac.uk) Andrei Popescu (A.Popescu at sheffield.ac.uk) Georg Struth (G.Struth at sheffield.ac.uk) From mechvel at scico.botik.ru Wed Mar 17 12:29:58 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 17 Mar 2021 14:29:58 +0300 Subject: [Agda] test report In-Reply-To: <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> Message-ID: On 2021-03-16 23:49, Nils Anders Danielsson wrote: > On 2021-03-15 14:34, mechvel at scico.botik.ru wrote: >> How to force erasing by @erase as much as possible for this example? >> Where to set @0 ? > > Here is one way to erase the proofs: > [..] Nils, thank you very much. I am going to try this approach. ------ Sergei > record Erased (@0 A : Set) : Set where > constructor [_] > field > @0 erased : A > > efficient+withProof : (m n : ?) ? ? ? (\s ? Erased (s ? m + n)) > > efficient+withProof 0 n = (n , [ refl ]) > efficient+withProof (suc m) n = > let > (eff-m-n , [ eff-m-n?m+n ]) = efficient+withProof m n > s = suc eff-m-n > > @0 s?1+m+n : s ? (suc m) + n > s?1+m+n = cong suc eff-m-n?m+n > in > (s , [ s?1+m+n ]) > > efficient+ : (m n : ?) ? ? > efficient+ m = proj? ? efficient+withProof m > > @0 efficient+comm : Commutative _?_ efficient+ > efficient+comm m n = > let > open EqReasoning (PE.setoid ?) > (eff[m,n] , [ eff[m,n]?m+n ]) = efficient+withProof m n > (eff[n,m] , [ eff[n,m]?n+m ]) = efficient+withProof n m > in > begin efficient+ m n ?? eff[m,n]?m+n ? > m + n ?? +-comm m n ? > n + m ?? sym eff[n,m]?n+m ? > efficient+ n m > ? > > If, instead of using Erased, you switch to a variant of ? with an > erased > second field, then the GHC backend might erase more of your code: > > record ? (A : Set) (@0 B : A ? Set) : Set where > constructor _,_ > field > proj? : A > @0 proj? : B proj? > > With Erased I get the following Haskell code for efficient+withProof: > > d20 :: Integer -> Integer -> MAlonzo.Code.Agda.Builtin.Sigma.T14 > d20 v0 v1 > = case coe v0 of > 0 -> coe MAlonzo.Code.Agda.Builtin.Sigma.C32 (coe v1) erased > _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in > coe > MAlonzo.Code.Agda.Builtin.Sigma.C32 > (coe > addInt (coe (1 :: Integer)) > (coe > MAlonzo.Code.Agda.Builtin.Sigma.d28 (coe d20 (coe > v2) (coe v1)))) > erased > > With an erased second projection I get the following Haskell code > instead: > > newtype T6 = C20 AgdaAny > > d16 :: T6 -> AgdaAny > d16 v0 > = case coe v0 of > C20 v1 -> coe v1 > _ -> MAlonzo.RTE.mazUnreachableError > > d28 :: Integer -> Integer -> T6 > d28 v0 v1 > = case coe v0 of > 0 -> coe C20 v1 > _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in > coe > C20 > (addInt (coe (1 :: Integer)) (coe d16 (coe d28 (coe v2) > (coe v1)))) From h.basold at liacs.leidenuniv.nl Mon Mar 22 14:48:12 2021 From: h.basold at liacs.leidenuniv.nl (Henning Basold) Date: Mon, 22 Mar 2021 14:48:12 +0100 Subject: [Agda] TYPES 2021: Call for Contributions Message-ID: <5a2192fd-4b3f-c8e9-148e-0d3138495b19@liacs.leidenuniv.nl> Call for Contributions TYPES 2021 26th International Conference on Types for Proofs and Programs 14 - 19 June 2021 Virtual and possibly Leiden, The Netherlands https://types21.liacs.nl/ Background -------------- The TYPES meetings are a forum to present new and on-going work in all aspects of type theory and its applications, especially in formalised and computer assisted reasoning and computer programming. The TYPES areas of interest include, but are not limited to: * Foundations of type theory and constructive mathematics; * Applications of type theory (e.g., linguistics or concurrency); * Dependently typed programming; * Industrial uses of type theory technology; * Meta-theoretic studies of type systems; * Proof assistants and proof technology; * Automation in computer-assisted reasoning; * Links between type theory and functional programming; * Formalising mathematics using type theory; * Homotopy type theory and univalent mathematics. We encourage talks proposing new ways of applying type theory. In the spirit of workshops, talks may be based on newly published papers, work submitted for publication, but also work in progress. Contributed Talks -------------------- TYPES solicits contributed talks to stimulate discussions. The contributed talks are selected on the base of extended abstracts/short papers of 2 pages (excluding bibliography) formatted with the LaTeX EasyChair3.5 (https://easychair.org/publications/for_authors) style. An abstract can be based on existing, submitted or novel work, and is not in conflict with any other forms of publication. Submissions are handled via EasyChair: https://easychair.org/conferences/?conf=types2021 Upon submission, authors have to select the category of their contribution: presentation-only talks and talks with the intent to contribute to the post-proceedings. Presentation-only talks will consist of a 5 minutes recorded video that is shown during the conference in combination with 5 minutes live discussion. The purpose of recording the talk beforehand is to avoid technical issues. Talks with the intent for post-proceedings submission get a slot for a 10 minutes live talk plus 5 minutes discussion during the conference. The idea is that in this case, an interactive discussion with more in-depth feedback will help to submit to the post-proceedings. Note that the selection at this stage only expresses an intent to submit to the post-proceedings, and that you are neither obliged to submit your work nor are you excluded from the submission to the post-proceedings should you not submit an intent at this stage. The idea is only to help you with more feedback during the conference. Please be fair in selecting this category because the time in a virtual conference is very limited and should be given to those authors who really need it. Important dates ------------------ * Submission of abstract 16 April 2021 AoE * Author notification 14 May 2021 * Camera-ready version of abstract 4 June 2021 AoE * Conference 14 - 18 June 2021 Camera-ready versions of the accepted contributions will be published in an informal book of abstracts for distribution during the conference. Venue ---------- This year?s TYPES will be held virtually (online), possibly in combination with a physical meeting in Leiden in the Netherlands if the political situation permits that. That the conference is held virtually constraints the time of talks, and complicates exchange and collaboration. TYPES 2021 will therefore not only consist of presentations, but also a setup of working groups that get together throughout the week. Every day will be split into a session of talks and tutorials, and a collaboration session during which the working groups will get together. The hope is that we can retain at least some of the exchange and chatter that is the heart of the TYPES conference series. Attendance and Fees ----------------------- Despite the difficulty that a virtual event brings, it also offers a chance. We will make TYPES as inclusive as possible, which means that attending virtually is free of charge, if you are not in the position to pay fees. For everyone else, the fees will be low and only to cover the costs of setting up the infrastructure and organisation. Should it be possible that we can have a hybrid virtual-physical meeting, then there will also be some costs for recording and streaming that will have to be shared between local and virtual attendees. However, we will keep these low in general and free for those who cannot afford to pay fees. About Types --------------- The TYPES meetings from 1990 to 2008 were annual workshops of a sequence of five EU funded networking projects. From 2009 to 2015, TYPES has been run as an independent conference series. From 2016, TYPES is partially supported by COST Action EUTypes CA15123. Previous TYPES meetings were held in Antibes (1990), Edinburgh (1991), B?stad (1992), Nijmegen (1993), B?stad (1994), Torino (1995), Aussois (1996), Kloster Irsee (1998), L?keberg (1999), Durham (2000), Berg en Dal near Nijmegen (2002), Torino (2003), Jouy-en-Josas near Paris (2004), Nottingham (2006), Cividale del Friuli (2007), Torino (2008), Aussois (2009), Warsaw (2010), Bergen (2011), Toulouse (2013), Paris (2014), Tallinn (2015), Novi Sad (2016), Budapest (2017), Braga (2018), Oslo (2019) and Turin (2020). Post-proceedings ------------------- Similarly to TYPES 2011 and TYPES 2013-2020, a post-proceedings volume will be published in the Leibniz International Proceedings in Informatics (LIPIcs) series. Submission to that volume will be open to everyone. Tentative dates for post-proceedings: * Non-binding intent (abstract) 29 October 2021 * Paper submission 26 November 2021 * Author notification 25 March 2022 The formal call with binding dates for the post-proceedings will be issued after the conference. Contact ----------- Email: types21 at liacs.leidenuniv.nl Web form: https://types21.liacs.nl/contact/ Programme Committee --------------------- Henning Basold (LIACS -- Leiden University) (chair) Stefano Berardi (Universit? di Torino) Marc Bezem (University of Bergen) Fr?d?ric Blanqui (INRIA -- ENS Paris-Saclay) Sandrine Blazy (INRIA -- University of Rennes) Ana Bove (Chalmers / U. of Gothenburg) Paolo Caprotti (TU Darmstadt) Jesper Cockx (TU Delft) Jos? Esp?rito Santo (University of Minho) Herman Geuvers (Radboud University Nijmegen) Silvia Ghilezan (University of Novi Sad) Nicolai Kraus (U. of Nottingham) Sergue? Lenglet (Univ. de Lorraine) Assia Mahboubi (INRIA -- Nantes and VU Amsterdam) Ralph Matthes (IRIT -- CNRS and University of Toulouse) Keiko Nakata (Kyoto University) Fredrik Nordvall Forsberg (University of Strathclyde) Jorge A. P?rez (University of Groningen) Gabriel Scherer (INRIA Saclay) Aleksy Schubert (University of Warsaw) Niccol? Veltri (Tallin UT) Stephanie Weirich (U. of Pennsylvania) Organiser ------------ Henning Basold (LIACS -- Leiden University) -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 665 bytes Desc: OpenPGP digital signature URL: From bruno.bernardo at tutanota.com Mon Mar 22 22:09:45 2021 From: bruno.bernardo at tutanota.com (Bruno Bernardo) Date: Mon, 22 Mar 2021 22:09:45 +0100 (CET) Subject: [Agda] FMBC 2021 - Call for Papers Message-ID: [ Please distribute, apologies for multiple postings. ] ======================================================================== 3rd International Workshop on Formal Methods for Blockchains (FMBC) - First Call https://fmbc.gitlab.io/2021 July 18 or 19 (TBA), 2021 Co-located with the 33nd International Conference on Computer-Aided Verification (CAV 2021) http://i-cav.org/2021/ ------------------------------------------------------------- IMPORTANT DATES -------------------------------- Abstract submission: April 22, 2021 Full paper submission: April 29, 2021 Notification: June 10, 2021 Camera-ready: July 8, 2021 Workshop: July 18 or 19 (TBA), 2021 Deadlines are Anywhere on Earth: https://en.wikipedia.org/wiki/Anywhere_on_Earth -------------------------------- -------------------------------- TOPICS OF INTEREST -------------------------------- Blockchains are decentralized transactional ledgers that rely on cryptographic hash functions for guaranteeing the integrity of the stored data. Participants on the network reach agreement on what valid transactions are through consensus algorithms. Blockchains may also provide support for Smart Contracts. Smart Contracts are scripts of an ad-hoc programming language that are stored in the Blockchain and that run on the network. They can interact with the ledger?s data and update its state. These scripts can express the logic of possibly complex contracts between users of the Blockchain. Thus, Smart Contracts can facilitate the economic activity of Blockchain participants. With the emergence and increasing popularity of cryptocurrencies such as Bitcoin and Ethereum, it is now of utmost importance to have strong guarantees of the behavior of Blockchain software. These guarantees can be brought by using Formal Methods. Indeed, Blockchain software encompasses many topics of computer science where using Formal Methods techniques and tools are relevant: consensus algorithms to ensure the liveness and the security of the data on the chain, programming languages specifically designed to write Smart Contracts, cryptographic protocols, such as zero-knowledge proofs, used to ensure privacy, etc. This workshop is a forum to identify theoretical and practical approaches of formal methods for Blockchain technology. Topics include, but are not limited to: * Formal models of Blockchain applications or concepts * Formal methods for consensus protocols * Formal methods for Blockchain-specific cryptographic primitives or protocols * Design and implementation of Smart Contract languages * Verification of Smart Contracts -------------------------------- -------------------------------- SUBMISSION -------------------------------- Submit original manuscripts (not published or considered elsewhere) with a page limit of 12 pages for full papers and 6 pages for short papers (excluding bibliography and short appendix of up to 5 additional pages). Alternatively you may also submit an extended abstract of up to 3 pages (including bibliography) summarizing your ongoing work in the area of formal methods and blockchain. Authors of selected extended-abstracts are invited to give a short lightning talk. Submission link: https://easychair.org/conferences/?conf=fmbc2021 Authors are encouraged to use LaTeX and prepare their submissions according to the instructions and styling guides for OASIcs provided by Dagstuhl. Instructions for authors: https://submission.dagstuhl.de/documentation/authors#oasics At least one author of an accepted paper is expected to present the paper at the workshop as a registered participant. -------------------------------- -------------------------------- PROCEEDINGS -------------------------------- All submissions will be peer-reviewed by at least three members of the program committee for quality and relevance. Accepted regular papers (full and short papers) will be included in the workshop proceedings, published as a volume of the OpenAccess Series in Informatics (OASIcs) by Dagstuhl. -------------------------------- -------------------------------- INVITED SPEAKER -------------------------------- To be confirmed -------------------------------- -------------------------------- PROGRAM COMMITTEE -------------------------------- PC CO-CHAIRS * Bruno Bernardo (Nomadic Labs, France) (bruno at nomadic-labs.com) * Diego Marmsoler (University of Exeter, UK) (D.Marmsoler at exeter.ac.uk) PC MEMBERS To be confirmed From casperbp at gmail.com Tue Mar 23 10:42:08 2021 From: casperbp at gmail.com (Casper Bach Poulsen) Date: Tue, 23 Mar 2021 10:42:08 +0100 Subject: [Agda] PhD Position in Programming Languages at TU Delft Message-ID: Dear all, I have an opening for a 4 year PhD position in the Programming Languages Group at Delft University of Technology. The PhD position is about defining and implementing typed programming languages in a modular way. The ideal candidate will have experience with one or more of the following topics: - functional programming - monads and/or algebraic effects and handlers - programming language engineering (interpreters/compilers/type checkers/...) The full ad (link below) contains suggestions for topics that can be explored as part of the PhD. But the topic is not limited to the suggestions in the ad. Get in touch if you are interested in doing research on defining and implementing typed programming languages, modularly. https://www.academictransfer.com/en/298133/phd-position-dynamic-semantics-specification/ The deadline for application is 2 June 2021, and the ideal start date is around September. Best regards, Casper Bach Poulsen Assistant Professor, Delft University of Technology http://casperbp.net -------------- next part -------------- An HTML attachment was scrubbed... URL: From carette at mcmaster.ca Thu Mar 25 17:28:13 2021 From: carette at mcmaster.ca (Carette, Jacques) Date: Thu, 25 Mar 2021 16:28:13 +0000 Subject: [Agda] Alectryon - My first case of Coq envy Message-ID: https://plv.csail.mit.edu/blog/alectryon.html It doesn't really get nice enough for envy until the uses of MathJAX for the Gauss lemma, and the graphics for Conway's game of life. Jacques -------------- next part -------------- An HTML attachment was scrubbed... URL: From Andrew.Pitts at cl.cam.ac.uk Thu Mar 25 18:52:29 2021 From: Andrew.Pitts at cl.cam.ac.uk (Andrew Pitts) Date: Thu, 25 Mar 2021 17:52:29 +0000 Subject: [Agda] Alectryon - My first case of Coq envy In-Reply-To: References: Message-ID: Alectryon! So a fundamental problem with getting something similar for Agda is that, as far as I know, there is no Norse god tasked with the care of chickens. :-) On Thu, 25 Mar 2021 at 16:28, Carette, Jacques wrote: > > https://plv.csail.mit.edu/blog/alectryon.html > > > > It doesn?t really get nice enough for envy until the uses of MathJAX for the Gauss lemma, and the graphics for Conway?s game of life. > > > > Jacques > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From claudio.sacerdoticoen at unibo.it Thu Mar 25 21:10:07 2021 From: claudio.sacerdoticoen at unibo.it (Claudio Sacerdoti Coen) Date: Thu, 25 Mar 2021 20:10:07 +0000 Subject: [Agda] CFP ICTCS 2021 - 22th Italian Conference on Theoretical Computer Science Message-ID: ICTCS 2021 - 22th Italian Conference on Theoretical Computer Science 13-15 September 2021, Bologna, Italy THE CONFERENCE WILL BE HELD ON-LINE DUE TO CORONAVIRUS RESTRICTIONS http://helm.cs.unibo.it/ictcs2021/index.html CALL FOR PAPERS ================ SCOPE AND TOPICS ================ The Italian Conference on Theoretical Computer Science (ICTCS) is the conference of the Italian Chapter of the European Association for Theoretical Computer Science. The purpose of ICTCS is to foster the cross-fertilization of ideas stemming from different areas of theoretical computer science. In particular, ICTCS provides an ideal environment where junior researchers and PhD students can meet senior researchers. Contributions in any area of theoretical computer science are warmly invited from researchers of all nationalities. The topics of interest include, but are not limited to, the following: agents, algorithms, argumentation, automata theory, complexity theory, computational logic, computational social choice, concurrency theory, cryptography, discrete mathematics, distributed computing, dynamical systems, formal methods, game theory, graph theory, knowledge representation, languages, model checking, process algebras, quantum computing, rewriting systems, security and trust, semantics, specification and verification, systems biology, theorem proving, type theory. ================ PAPER SUBMISSION ================ Two types of contributions, written in English and formatted accordingto Springer LNCS style, are solicited. Regular papers: up to 12 pages PLUS bibliography, presenting original results not appeared or submitted elsewhere. To ease the reviewing process, the authors of regula papers may add an appendix, although reviewers are not required to consider it in their evaluation. Communications: up to 5 pages PLUS bibliography, suitable for extended abstracts of papers already appeared/submitted or to be submitted elsewhere, as well as papers reporting ongoing research on which the authors wish to get feedback and overviews of PhD theses or research projects. Authors are invited to submit their manuscripts in PDF format via EasyChair: https://easychair.org/conferences/?conf=ictcs2021 All accepted original contributions (regular papers and communications) will be published on CEUR-WS.org. For each accepted contribution, at least one of the authors is required to attend the conference and present the paper. ============================ TCS Special Issue ============================ Following the tradition, the authors of the very best papers presented at the conference will be invited to submit an extended version of their work in a special issue of Theoretical Computer Science journal. Invitations will be sent out after the workshop. The target is to publish the special issue by the end of the year 2022. =============== IMPORTANT DATES =============== Abstract submission: 17 May 2021 Paper submission: 24 May 2021 Notification: 30 June 2021 Revised version for pre-proceedings: 19 July 2021 Conference: 13-15 September 2021 Final version for CEUR-WS proceedings: 31 October 2021 (tentative) ================== INVITED SPEAKERS ================== Luca Padovani (Universit? di Torino) Nadia Pisanti (Universit? di Pisa) ==================== PROGRAM COMMITTEE ==================== Program Committee: Claudio Sacerdoti Coen (co-chair) (University of Bologna, Italy) Ivano Salvo (co-chair) (University of Roma ?Sapienza?, Italy) Franco Barbanera (University of Catania, Italy) Davide Bil? (University of Sassari, Italy) Stefano Bistarelli (University of Perugia, Italy) Davide Bresolin (University of Padua, Italy) Mattia D?Emidio (University of L?Aquila; Gran Sasso Science Institute, Italy) Miriam Di Ianni (University of Rome "Tor Vergata", Italy) Diodato Ferraioli (University of Salerno, Italy) Roberta Gori (University of Pisa, Italy) Ruggero Lanotte (University of Insubria, Italy) Andrea Marino (University of Florence, Italy) Isabella Mastroeni (University of Verona, Italy) Marino Miculan (DMIF, University of Udine, Italy) Fabio Mogavero (University of Naples Federico II, Italy) Manuela Montangero (University of Modena e Reggio Emilia, Italy) Luca Roversi (University of Torino, Italy) Marinella Sciortino (University of Palermo, Italy) Francesca Scozzari (University of Chieti-Pescara, Italy) Elena Zucca (DIBRIS ? University of Genova, Italy) Roberto Zunino (University of Trento, Italy) -- Prof. Claudio Sacerdoti Coen Department of Computer Science and Engineering University of Bologna From m.escardo at cs.bham.ac.uk Thu Mar 25 22:46:53 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Thu, 25 Mar 2021 21:46:53 +0000 Subject: [Agda] Alectryon - My first case of Coq envy In-Reply-To: References: Message-ID: On 25/03/2021 17:52, Andrew Pitts wrote: > Alectryon! So a fundamental problem with getting something similar for > Agda is that, as far as I know, there is no Norse god tasked with the > care of chickens. :-) Are you sure? Perhaps Gullinkambi would do the job. Martin > > On Thu, 25 Mar 2021 at 16:28, Carette, Jacques wrote: >> >> https://plv.csail.mit.edu/blog/alectryon.html >> >> >> >> It doesn?t really get nice enough for envy until the uses of MathJAX for the Gauss lemma, and the graphics for Conway?s game of life. >> >> >> >> Jacques >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From mechvel at scico.botik.ru Tue Mar 30 01:04:48 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 30 Mar 2021 02:04:48 +0300 Subject: [Agda] test report In-Reply-To: <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> Message-ID: On 2021-03-16 23:49, Nils Anders Danielsson wrote: > On 2021-03-15 14:34, mechvel at scico.botik.ru wrote: >> How to force erasing by @erase as much as possible for this example? >> Where to set @0 ? > > Here is one way to erase the proofs: > > record Erased (@0 A : Set) : Set where > constructor [_] > field > @0 erased : A > [] > If, instead of using Erased, you switch to a variant of ? with an > erased > second field, then the GHC backend might erase more of your code: > > record ? (A : Set) (@0 B : A ? Set) : Set where > First I try Erased. I set record Erased {?} (@0 A : Set ?) : Set ? where constructor [_] field @0 erased : A @0 from[] : ? {?}{A : Set ?} ? Erased A ? A from[] [ x ] = x into my Prelude.agda. I decided that from[] is useful because there are places like where ... u'*?v-withEq = foo -- that returns a pair with erased second part u'*?v = proj? u'*?v-withEq u'vEq = proj? u'*?v-withEq This is not type-checked. So I changed the latter line to @0 u'vEq : u'*?v =? u' *? v u'vEq = from[] (proj? u'*?v-withEq) And u'vEq is used further as an erased thing. `Erased' is inserted into several function signatures in Foo.agda, its program is complex. The result is that Foo.hs has become ~11 times smaller: from 18.181.844 byte to 1.736.180. And Foo.o has become ~1.5 times smaller (from 5.708.416 to 3.273.360). The run-time performance remains (it was satisfactory) - must it remain? I have to test how it will change the time & space expense on type checking and compilation. Thanks, ------ Sergei > efficient+withProof : (m n : ?) ? ? ? (\s ? Erased (s ? m + n)) > > efficient+withProof 0 n = (n , [ refl ]) > efficient+withProof (suc m) n = > let > (eff-m-n , [ eff-m-n?m+n ]) = efficient+withProof m n > s = suc eff-m-n > > @0 s?1+m+n : s ? (suc m) + n > s?1+m+n = cong suc eff-m-n?m+n > in > (s , [ s?1+m+n ]) > > efficient+ : (m n : ?) ? ? > efficient+ m = proj? ? efficient+withProof m > > @0 efficient+comm : Commutative _?_ efficient+ > efficient+comm m n = > let > open EqReasoning (PE.setoid ?) > (eff[m,n] , [ eff[m,n]?m+n ]) = efficient+withProof m n > (eff[n,m] , [ eff[n,m]?n+m ]) = efficient+withProof n m > in > begin efficient+ m n ?? eff[m,n]?m+n ? > m + n ?? +-comm m n ? > n + m ?? sym eff[n,m]?n+m ? > efficient+ n m > ? > > If, instead of using Erased, you switch to a variant of ? with an > erased > second field, then the GHC backend might erase more of your code: > > record ? (A : Set) (@0 B : A ? Set) : Set where > constructor _,_ > field > proj? : A > @0 proj? : B proj? > > With Erased I get the following Haskell code for efficient+withProof: > > d20 :: Integer -> Integer -> MAlonzo.Code.Agda.Builtin.Sigma.T14 > d20 v0 v1 > = case coe v0 of > 0 -> coe MAlonzo.Code.Agda.Builtin.Sigma.C32 (coe v1) erased > _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in > coe > MAlonzo.Code.Agda.Builtin.Sigma.C32 > (coe > addInt (coe (1 :: Integer)) > (coe > MAlonzo.Code.Agda.Builtin.Sigma.d28 (coe d20 (coe > v2) (coe v1)))) > erased > > With an erased second projection I get the following Haskell code > instead: > > newtype T6 = C20 AgdaAny > > d16 :: T6 -> AgdaAny > d16 v0 > = case coe v0 of > C20 v1 -> coe v1 > _ -> MAlonzo.RTE.mazUnreachableError > > d28 :: Integer -> Integer -> T6 > d28 v0 v1 > = case coe v0 of > 0 -> coe C20 v1 > _ -> let v2 = subInt (coe v0) (coe (1 :: Integer)) in > coe > C20 > (addInt (coe (1 :: Integer)) (coe d16 (coe d28 (coe v2) > (coe v1)))) From nad at cse.gu.se Tue Mar 30 19:55:20 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Tue, 30 Mar 2021 19:55:20 +0200 Subject: [Agda] test report In-Reply-To: References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> Message-ID: <24698463-6856-bd57-86f6-4b8f8967d3fd@cse.gu.se> On 2021-03-30 01:04, mechvel at scico.botik.ru wrote: > The run-time performance remains (it was satisfactory) > - must it remain? No, but if your program was fairly optimised I am not surprised that the execution time did not change a lot. Even without the @0 annotation Agda erases certain things, and due to lazy evaluation things that are not erased might not be evaluated. However, one can construct programs where the annotation makes a difference. Try running the following program with and without the @0 annotations: open import Agda.Builtin.IO open import Agda.Builtin.Nat open import Agda.Builtin.Unit data Pair : Set where _,_ : Nat ? @0 Nat ? Pair f : Nat ? @0 Nat ? Pair f zero n = zero , n f (suc m) n = f m (suc n) fst : Pair ? Nat fst (m , _) = m postulate print : Nat ? IO ? {-# COMPILE GHC print = print #-} main : IO ? main = print (fst (f 10000000 0)) Using "+RTS -s" I get reports like the following one with the annotations: 80,046,988 bytes allocated in the heap 8,444 bytes copied during GC 42,724 bytes maximum residency (2 sample(s)) 31,004 bytes maximum slop 2 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 75 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s Gen 1 2 colls, 0 par 0.000s 0.000s 0.0001s 0.0001s INIT time 0.001s ( 0.000s elapsed) MUT time 0.144s ( 0.144s elapsed) GC time 0.001s ( 0.001s elapsed) EXIT time 0.000s ( 0.000s elapsed) Total time 0.145s ( 0.145s elapsed) %GC time 0.0% (0.0% elapsed) Alloc rate 557,463,190 bytes per MUT second Productivity 99.2% of total user, 99.2% of total elapsed And reports like the following one without the annotations (presumably because f's second argument becomes a larger and larger thunk as the computation progresses): 200,046,988 bytes allocated in the heap 466,762,004 bytes copied during GC 118,129,376 bytes maximum residency (8 sample(s)) 1,891,616 bytes maximum slop 232 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 184 colls, 0 par 0.222s 0.222s 0.0012s 0.0030s Gen 1 8 colls, 0 par 0.506s 0.507s 0.0634s 0.2491s INIT time 0.001s ( 0.001s elapsed) MUT time 0.138s ( 0.138s elapsed) GC time 0.728s ( 0.730s elapsed) EXIT time 0.000s ( 0.000s elapsed) Total time 0.866s ( 0.869s elapsed) %GC time 0.0% (0.0% elapsed) Alloc rate 1,447,119,322 bytes per MUT second Productivity 16.0% of total user, 15.9% of total elapsed -- /NAD From mechvel at scico.botik.ru Thu Apr 1 12:39:34 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Thu, 01 Apr 2021 13:39:34 +0300 Subject: [Agda] test report In-Reply-To: <24698463-6856-bd57-86f6-4b8f8967d3fd@cse.gu.se> References: <1d507283-e56a-327f-77cf-c4ca89cf865f@cse.gu.se> <8702f2d3-00ea-1bc2-7128-385f6c33705f@cse.gu.se> <24698463-6856-bd57-86f6-4b8f8967d3fd@cse.gu.se> Message-ID: <8d74f402b4c067102c1d1a836ea67959@scico.botik.ru> On 2021-03-30 20:55, Nils Anders Danielsson wrote: > On 2021-03-30 01:04, mechvel at scico.botik.ru wrote: >> The run-time performance remains (it was satisfactory) >> - must it remain? > > No, but if your program was fairly optimised I am not surprised that > the > execution time did not change a lot. Even without the @0 annotation > Agda > erases certain things, and due to lazy evaluation things that are not > erased might not be evaluated. > > However, one can construct programs where the annotation makes a > difference. > [..] I see, thank you. -- SM From bruno.bernardo at tutanota.com Sat Apr 10 12:50:06 2021 From: bruno.bernardo at tutanota.com (Bruno Bernardo) Date: Sat, 10 Apr 2021 12:50:06 +0200 (CEST) Subject: [Agda] FMBC 2021 - 2nd Call for Papers Message-ID: [ Please distribute, apologies for multiple postings. ] ======================================================================== 3rd International Workshop on Formal Methods for Blockchains (FMBC) - Second Call https://fmbc.gitlab.io/2021 July 18 or 19 (TBA), 2021 Co-located with the 33nd International Conference on Computer-Aided Verification (CAV 2021) http://i-cav.org/2021/ ------------------------------------------------------------- IMPORTANT DATES -------------------------------- Abstract submission: April 22, 2021 Full paper submission: April 29, 2021 Notification: June 10, 2021 Camera-ready: July 8, 2021 Workshop: July 18 or 19 (TBA), 2021 Deadlines are Anywhere on Earth: https://en.wikipedia.org/wiki/Anywhere_on_Earth -------------------------------- -------------------------------- TOPICS OF INTEREST -------------------------------- Blockchains are decentralized transactional ledgers that rely on cryptographic hash functions for guaranteeing the integrity of the stored data. Participants on the network reach agreement on what valid transactions are through consensus algorithms. Blockchains may also provide support for Smart Contracts. Smart Contracts are scripts of an ad-hoc programming language that are stored in the Blockchain and that run on the network. They can interact with the ledger?s data and update its state. These scripts can express the logic of possibly complex contracts between users of the Blockchain. Thus, Smart Contracts can facilitate the economic activity of Blockchain participants. With the emergence and increasing popularity of cryptocurrencies such as Bitcoin and Ethereum, it is now of utmost importance to have strong guarantees of the behavior of Blockchain software. These guarantees can be brought by using Formal Methods. Indeed, Blockchain software encompasses many topics of computer science where using Formal Methods techniques and tools are relevant: consensus algorithms to ensure the liveness and the security of the data on the chain, programming languages specifically designed to write Smart Contracts, cryptographic protocols, such as zero-knowledge proofs, used to ensure privacy, etc. This workshop is a forum to identify theoretical and practical approaches of formal methods for Blockchain technology. Topics include, but are not limited to: * Formal models of Blockchain applications or concepts * Formal methods for consensus protocols * Formal methods for Blockchain-specific cryptographic primitives or protocols * Design and implementation of Smart Contract languages * Verification of Smart Contracts -------------------------------- -------------------------------- SUBMISSION -------------------------------- Submit original manuscripts (not published or considered elsewhere) with a page limit of 12 pages for full papers and 6 pages for short papers (excluding bibliography and short appendix of up to 5 additional pages). Alternatively you may also submit an extended abstract of up to 3 pages (including bibliography) summarizing your ongoing work in the area of formal methods and blockchain. Authors of selected extended-abstracts are invited to give a short lightning talk. Submission link: https://easychair.org/conferences/?conf=fmbc2021 Authors are encouraged to use LaTeX and prepare their submissions according to the instructions and styling guides for OASIcs provided by Dagstuhl. Instructions for authors: https://submission.dagstuhl.de/documentation/authors#oasics At least one author of an accepted paper is expected to present the paper at the workshop as a registered participant. -------------------------------- -------------------------------- PROCEEDINGS -------------------------------- All submissions will be peer-reviewed by at least three members of the program committee for quality and relevance. Accepted regular papers (full and short papers) will be included in the workshop proceedings, published as a volume of the OpenAccess Series in Informatics (OASIcs) by Dagstuhl. -------------------------------- -------------------------------- INVITED SPEAKER -------------------------------- David Dill, Lead Researcher, Blockchain, Novi/Facebook, USA https://research.fb.com/people/dill-david/ -------------------------------- -------------------------------- PROGRAM COMMITTEE -------------------------------- PC CO-CHAIRS * Bruno Bernardo (Nomadic Labs, France) (bruno at nomadic-labs.com) * Diego Marmsoler (University of Exeter, UK) (D.Marmsoler at exeter.ac.uk) PC MEMBERS * Wolfgang Ahrendt (Chalmers University of Technology, Sweden) * Lacramioara Astefanoei (Nomadic Labs, France) * Massimo Bartoletti (University of Cagliari, Italy) * Joachim Breitner (Dfinity Foundation, Germany) * Achim Brucker (University of Exeter, UK) * Zaynah Dargaye (Nomadic Labs, France) * J?r?mie Decouchant (TU Delft, Netherlands) * Dana Drachsler Cohen (Technion, Israel) * Ansgar Fehnker (University of Twente, Netherlands) * Maurice Herlihy (Brown University, USA) * Lars Hupel (INNOQ, Germany) * Florian Kammueller (Middlesex University London, UK) * Igor Konnov (Informal Systems, Austria) * Andreas Lochbihler (Digital Asset, Switzerland) * Sim?o Melo de Sousa (Universidade da Beira Interior, Portugal) * Karl Palmskog (KTH, Sweden) * Maria Potop-Butucaru (Sorbonne Universit?, France) * Andreas Rossberg (Dfinity Foundation, Germany) * C?sar Sanchez (Imdea, Spain) * Clara Schneidewind (TU Wien, Austria) * Ilya Sergey (Yale-NUS College/NUS, Singapore) * Mark Staples (CSIRO Data61, Australia) * Meng Sun (Peking University, China) * Simon Thompson (University of Kent, UK) * Josef Widder (Informal Systems, Austria) From mechvel at scico.botik.ru Sun Apr 11 15:06:39 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 11 Apr 2021 16:06:39 +0300 Subject: [Agda] level setting problem Message-ID: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> Can, anyone, please, suggest a simplification for the below mConstr ? I mean the level values in the signature. Is there a way to get rid of implementing makeLevels ? (may be by using wildcard, Lift, \omega ...) Thanks, ------ Sergei ------------------------------------------- open import Data.List using (List; []; _?_) open import Data.Product using (_?_; _,_) open import Data.String using (String) open import Level using (Level; _?_) open import Relation.Binary using (Setoid) postulate a b : Level setoid0 : Setoid a b constr : ? {c d} ? Setoid c d ? Setoid (c ? d) (c ? d) makeLevels : List String ? Level ? Level makeLevels [] = (a , b) makeLevels (_ ? xs) = let (c , d) = makeLevels xs in (c ? d , c ? d) mConstr : (xs : List String) ? let (c , d) = makeLevels xs in Setoid c d mConstr [] = setoid0 mConstr (_ ? xs) = constr (mConstr xs) From godzbanebane at gmail.com Sun Apr 11 18:42:46 2021 From: godzbanebane at gmail.com (Georgi Lyubenov) Date: Sun, 11 Apr 2021 19:42:46 +0300 Subject: [Agda] level setting problem In-Reply-To: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> References: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> Message-ID: This seems to be essentially the same definition: module levels where open import Agda.Primitive data Two : Set where ff tt : Two if_then_else_ : {A : Set} -> Two -> A -> A -> A if ff then t else e = e if tt then t else e = t data Setoid (a b : Level) : Set where postulate a b : Level setoid0 : Setoid a b constr : ? {c d} ? Setoid c d ? Setoid (c ? d) (c ? d) mkConstr : (t : Two) -> Setoid (if t then a else (a ? b)) (if t then b else a ? b) mkConstr ff = constr setoid0 mkConstr tt = setoid0 Am I missing something? -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sun Apr 11 20:33:12 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 11 Apr 2021 21:33:12 +0300 Subject: [Agda] level setting problem In-Reply-To: References: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> Message-ID: <173b83af3b5fa0fc6d44f3a0b2988e7a@scico.botik.ru> On 2021-04-11 19:42, Georgi Lyubenov wrote: > This seems to be essentially the same definition: > module levels where > > open import Agda.Primitive > > data Two : Set where > ff tt : Two > > if_then_else_ : {A : Set} -> Two -> A -> A -> A > if ff then t else e = e > if tt then t else e = t > > data Setoid (a b : Level) : Set where > > postulate > a b : Level > setoid0 : Setoid a b > constr : ? {c d} ? Setoid c d ? Setoid (c ? d) (c ? d) > > mkConstr : (t : Two) -> Setoid (if t then a else (a ? b)) (if t then b > else a ? b) > mkConstr ff = constr setoid0 > mkConstr tt = setoid0 > > Am I missing something? Probably this is not the same. My function was mConstr : (xs : List String) ? let (c , d) = makeLevels xs in Setoid c d mConstr [] = setoid0 mConstr (_ ? xs) = constr (mConstr xs) It has an argument xs : List String. Also constr is composed (length xs) times, and each time the levels increase. ? -- SM From godzbanebane at gmail.com Sun Apr 11 20:55:47 2021 From: godzbanebane at gmail.com (Georgi Lyubenov) Date: Sun, 11 Apr 2021 21:55:47 +0300 Subject: [Agda] level setting problem In-Reply-To: <173b83af3b5fa0fc6d44f3a0b2988e7a@scico.botik.ru> References: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> <173b83af3b5fa0fc6d44f3a0b2988e7a@scico.botik.ru> Message-ID: You use the List for its strucutre/spine effectively only, so it can be reduced to a Nat instead at least. Upon a further look, as far as I can tell, your function makeLevels returns (a , b) if the list is empty, and (a ? b , a ? b) otherwise: n = 0: makeLevels [] = a , b done n = 1: makeLevels (x :: []) => let (c , d) = makeLevels [] in (c ? d , c ? d) => (a ? b , a ? b) done n = n' + 2: makeLevels (x :: xs) = let (c , d) = makeLevels xs in (c ? d , c ? d) => // by ih c = a ? b and d = a ? b ((a ? b) ? (a ? b) , (a ? b) ? (a ? b)) This is the only part I'm not sure about - is ? commutative and associative, and is x ? x == x? (And of course, does agda solve these equations "under the hood"?) If they are, then my argument should hold. -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Sun Apr 11 21:23:18 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sun, 11 Apr 2021 21:23:18 +0200 Subject: [Agda] level setting problem In-Reply-To: References: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> <173b83af3b5fa0fc6d44f3a0b2988e7a@scico.botik.ru> Message-ID: > This is the only part I'm not sure about - is ? commutative and associative, and is x ? x == x? (And of course, does agda solve these equations "under the hood"?) The answers are yes and yes and yes. Agda has a special internal representation of levels which takes into account commutativity, associativity, and idempotence, as well as neutrality of lzero (`lzero ? x == x`), subsumption (e.g. `x ? lsuc x == lsuc x`), and distributivity of lsuc over ? (`lsuc (x ? y) == lsuc x ? lsuc y`). It would actually nice to have something about this documented in the user manual at https://agda.readthedocs.io/en/latest/language/universe-levels.html. -- Jesper On Sun, Apr 11, 2021 at 8:56 PM Georgi Lyubenov wrote: > You use the List for its strucutre/spine effectively only, so it can be > reduced to a Nat instead at least. > > Upon a further look, as far as I can tell, your function makeLevels > returns (a , b) if the list is empty, and (a ? b , a ? b) otherwise: > > n = 0: > makeLevels [] = a , b > done > > n = 1: > makeLevels (x :: []) => > let (c , d) = makeLevels [] in (c ? d , c ? d) => > (a ? b , a ? b) > done > > n = n' + 2: > > makeLevels (x :: xs) = > let (c , d) = makeLevels xs in (c ? d , c ? d) => // by ih c = a ? b and d > = a ? b > ((a ? b) ? (a ? b) , (a ? b) ? (a ? b)) > > This is the only part I'm not sure about - is ? commutative and > associative, and is x ? x == x? (And of course, does agda solve these > equations "under the hood"?) > > If they are, then my argument should hold. > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sun Apr 11 23:23:28 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 12 Apr 2021 00:23:28 +0300 Subject: [Agda] level setting problem In-Reply-To: References: <3ae122b1eeb7aae3dc1d63d52faf30da@scico.botik.ru> <173b83af3b5fa0fc6d44f3a0b2988e7a@scico.botik.ru> Message-ID: Sorry, I have missed the point that adding (a ? b) two times gives the same level as adding it one time. Thank you. -- SM On 2021-04-11 21:55, Georgi Lyubenov wrote: > You use the List for its strucutre/spine effectively only, so it can > be reduced to a Nat instead at least. > > Upon a further look, as far as I can tell, your function makeLevels > returns (a , b) if the list is empty, and (a ? b , a ? b) > otherwise: > > n = 0: > makeLevels [] = a , b > done > > n = 1: > makeLevels (x :: []) => > let (c , d) = makeLevels [] in (c ? d , c ? d) => > (a ? b , a ? b) > done > > n = n' + 2: > > makeLevels (x :: xs) = > let (c , d) = makeLevels xs in (c ? d , c ? d) => // by ih c = a > ? b and d = a ? b > ((a ? b) ? (a ? b) , (a ? b) ? (a ? b)) > > This is the only part I'm not sure about - is ? commutative and > associative, and is x ? x == x? (And of course, does agda solve > these equations "under the hood"?) > > If they are, then my argument should hold. > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From matthewdaggitt at gmail.com Mon Apr 12 06:45:09 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Mon, 12 Apr 2021 12:45:09 +0800 Subject: [Agda] [ANNOUNCE] Standard library v1.6 - release candidate 1 Message-ID: Dear all, The Agda Team is pleased to announce the first release candidate for version 1.6 of the standard library. The release candidate has been tested using Agda 2.6.1 and Agda 2.6.1.3. This release includes many new features, the highlights of which are: - The first verified implementation of a sorting algorithm (available from Data.List.Sort). - Pseudo-random generators for ? (available from Data.Nat.Pseudorandom.LCG) - Large increase in the number of proofs about both normalised and unnormalised rational numbers. - Reorganised module dependency graph of the IO module so that a hello world program may be compiled without pulling in upwards of 130 modules. The release candidate can be downloaded here . We would be grateful for reports of any issues you may encounter with the new version of the library on the Github issues page . If no major issues are found we will aim to release the official version 1.6 in the next couple of weeks. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From chantal.keller at wanadoo.fr Mon Apr 12 17:55:55 2021 From: chantal.keller at wanadoo.fr (Chantal Keller) Date: Mon, 12 Apr 2021 17:55:55 +0200 Subject: [Agda] 7th International Workshop on Proof eXchange for Theorem Proving (PxTP) - Second CFP Message-ID: <63e9e0fa-0d27-d661-bc67-4f2c97025513@wanadoo.fr> Call for Papers, PxTP 2021 The Seventh International Workshop on Proof eXchange for Theorem Proving (PxTP) https://pxtp.gitlab.io/2021 21 July 2021, online associated with the CADE-28 conference ## Background The PxTP workshop brings together researchers working on various aspects of communication, integration, and cooperation between reasoning systems and formalisms. The progress in computer-aided reasoning, both automatic and interactive, during the past decades, has made it possible to build deduction tools that are increasingly more applicable to a wider range of problems and are able to tackle larger problems progressively faster. In recent years, cooperation of such tools in larger verification environments has demonstrated the potential to reduce the amount of manual intervention. Examples include the Sledgehammer tool providing an interface between Isabelle and (untrusted) automated provers, and collaboration of the HOL Light and Isabelle systems in the formal proof of the Kepler conjecture. Cooperation between reasoning systems relies on availability of theoretical formalisms and practical tools for exchanging problems, proofs, and models. The PxTP workshop strives to encourage such cooperation by inviting contributions on suitable integration, translation, and communication methods, standards, protocols, and programming interfaces. The workshop welcomes developers of automated and interactive theorem proving tools, developers of combined systems, developers and users of translation tools and interfaces, and producers of standards and protocols. We are interested both in success stories and descriptions of current bottlenecks and proposals for improvement. ## Topics Topics of interest for this workshop include all aspects of cooperation between reasoning tools, whether automatic or interactive. More specifically, some suggested topics are: * applications that integrate reasoning tools (ideally with certification of the result); * interoperability of reasoning systems; * translations between logics, proof systems, models; * distribution of proof obligations among heterogeneous reasoning tools; * algorithms and tools for checking and importing (replaying, reconstructing) proofs; * proposed formats for expressing problems and solutions for different classes of logic solvers (SAT, SMT, QBF, first-order logic, higher-order logic, typed logic, rewriting, etc.); * meta-languages, logical frameworks, communication methods, standards, protocols, and APIs related to problems, proofs, and models; * comparison, refactoring, transformation, migration, compression and optimization of proofs; * data structures and algorithms for improved proof production in solvers (e.g., efficient proof representations); * (universal) libraries, corpora and benchmarks of proofs and theories; * alignment of diverse logics, concepts and theories across systems and libraries; * engineering aspects of proofs (e.g., granularity, flexiformality, persistence over time); * proof certificates; * proof checking; * mining of (mathematical) information from proofs (e.g., quantifier instantiations, unsat cores, interpolants, ...); * reverse engineering and understanding of formal proofs; * universality of proofs (i.e. interoperability of proofs between different proof calculi); * origins and kinds of proofs (e.g., (in)formal, automatically generated, interactive, ...) * Hilbert's 24th Problem (i.e. what makes a proof better than another?); * social aspects (e.g., community-wide initiatives related to proofs, cooperation between communities, the future of (formal) proofs); * applications relying on importing proofs from automatic theorem provers, such as certified static analysis, proof-carrying code, or certified compilation; * application-oriented proof theory; * practical experiences, case studies, feasibility studies. ## Submissions Researchers interested in participating are invited to submit either an extended abstract (up to 8 pages) or a regular paper (up to 15 pages). Submissions will be refereed by the program committee, which will select a balanced program of high-quality contributions. Short submissions that could stimulate fruitful discussion at the workshop are particularly welcome. We expect that one author of every accepted paper will present their work at the workshop. Submitted papers should describe previously unpublished work, and must be prepared using the LaTeX EPTCS class (http://style.eptcs.org). Papers will be submitted via EasyChair, at the PxTP'2021 workshop page (https://easychair.org/conferences/?conf=pxtp-7). Accepted regular papers will appear in an EPTCS volume. ## Important Dates * Abstract submission: April 21, 2021 * Paper submission: April 28, 2021 * Notification: May 26, 2021 * Camera ready versions due: June 16, 2021 * Workshop: July 11, 2021 (online) ## Invited Speakers TBA ## Program Committee * Haniel Barbosa (Universidade Federal de Minas Gerais (UFMG), Belo Horizonte, Brazil) * Denis Cousineau (Mitsubishi, France) * Stefania Dumbrava (ENSIIE, France) * Katalin Fazekas (TU Wien, Austria) * Mathias Fleury (Johannes Kepler University Linz, Austria), co-chair * Predrag Jani?i? (University of Belgrade, Serbia) * Chantal Keller (LRI, Universit? Paris-Saclay, France), co-chair * Aina Niemetz (Stanford University, USA) * Jens Otten (University of Oslo, Norway) * Giselle Reis (CMU-Qatar, Qatar) * Geoff Sutcliffe (University of Miami, USA) * Fran?ois Thir? (Nomadic Labs, France) * Sophie Tourret (Max-Planck-Institut f?r Informatik, Germany) * Josef Urban (Czech Institute of Informatics, Czech Republic) ## Previous PxTP Editions * PxTP 2019 (http://pxtp.gforge.inria.fr/2019), affiliated to CADE-27 * PxTP 2017 (https://pxtp.github.io/2017), affiliated to Tableaux 2017, FroCoS 2017 and ITP 2017 * PxTP 2015 (http://pxtp15.lri.fr), affiliated to CADE-25 * PxTP 2013 (http://www.cs.ru.nl/pxtp13), affiliated to CADE-24 * PxTP 2012 (http://pxtp2012.inria.fr), affiliated to IJCAR 2012 * PxTP 2011 (http://pxtp2011.loria.fr), affiliated to CADE-23 From Enrico.Tassi at inria.fr Sun Apr 11 14:59:40 2021 From: Enrico.Tassi at inria.fr (Enrico Tassi) Date: Sun, 11 Apr 2021 14:59:40 +0200 Subject: [Agda] [CFP] Logical Frameworks and Meta-Languages: Theory and Practice Message-ID: <054099a4302d28fc5f584d3b3c6542a7d2b2c7ca.camel@inria.fr> ============================================================= Call for papers Logical Frameworks and Meta-Languages: Theory and Practice LFMTP 2021 Pittsburgh, USA, 16 July 2021 Affiliated with CADE-28 http://lfmtp.org/workshops/2021/ ============================================================= Abstract submission deadline: 19 April 2021 Paper submission deadline: 26 April 2021 Logical frameworks and meta-languages form a common substrate for representing, implementing and reasoning about a wide variety of deductive systems of interest in logic and computer science. Their design, implementation and their use in reasoning tasks, ranging from the correctness of software to the properties of formal systems, have been the focus of considerable research over the last two decades. This workshop will bring together designers, implementors and practitioners to discuss various aspects impinging on the structure and utility of logical frameworks, including the treatment of variable binding, inductive and co-inductive reasoning techniques and the expressiveness and lucidity of the reasoning process. LFMTP 2021 will provide researchers a forum to present state-of-the-art techniques and discuss progress in areas such as the following: * Encoding and reasoning about the meta-theory of programming languages, logical systems and related formally specified systems. * Theoretical and practical issues concerning the treatment of variable binding, especially the representation of, and reasoning about, datatypes defined from binding signatures. * Logical treatments of inductive and co-inductive definitions and associated reasoning techniques, including inductive types of higher dimension in homotopy type theory * Graphical languages for building proofs, applications in geometry, equational reasoning and category theory. * New theory contributions: canonical and substructural frameworks, contextual frameworks, proof-theoretic foundations supporting binders, functional programming over logical frameworks, homotopy and cubical type theory. * Applications of logical frameworks: proof-carrying architectures, proof exchange and transformation, program refactoring, etc. * Techniques for programming with binders in functional programming languages such as Haskell, OCaml or Agda, and logic programming languages such as lambda Prolog or Alpha-Prolog. Important Dates Abstract submission deadline: Monday April 19 Submission deadline: Monday April 26 Notification to authors: Monday May 31 Final version due: Monday June 14 Workshop date: Friday July 16 Submission In addition to regular papers, we welcome/encourage the submission of "work in progress" reports, in a broad sense. Those do not need to report fully polished research results, but should be of interest for the community at large. Submitted papers should be in PDF, formatted using the EPTCS style guidelines. The length is restricted to 15 pages for regular papers and 8 pages for "Work in Progress" papers. Submission is via EasyChair: https://easychair.org/conferences/?conf=lfmtp2021 Proceedings A selection of the presented papers will be published online in the Electronic Proceedings in Theoretical Computer Science (EPTCS). Invited Speakers * Giselle Reis (CMU-Qatar) * Matthieu Sozeau (Inria) Program Committee * David Baelde (LSV, ENS Paris-Saclay & Inria Paris) * Roberto Blanco (MPI-SP) * Alberto Ciaffaglione (University of Udine) * Claudio Sacerdoti Coen (University of Bologna) * Marina Lenisa (Universit? degli Studi di Udine) * Dennis M?ller (Friedrich-Alexander-University) * Michael Norrish (CSIRO) * Elaine Pimentel (Universidade Federal do Rio Grande do Norte) co- chair * Ulrich Sch?pp (fortiss GmbH) * Kathrin Stark (Princeton University) * Aaron Stump (The University of Iowa) * Nora Szasz (Universidad ORT Uruguay) * Enrico Tassi (Inria) co-chair * Alwen Tiu (The Australian National University) * Tjark Weber (Uppsala University) Best regards, -- Enrico Tassi From jonathan.protzenko at gmail.com Tue Apr 13 17:05:21 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Tue, 13 Apr 2021 08:05:21 -0700 Subject: [Agda] ML Family Workshop 2021: first call for short abstracts and presentations Message-ID: (tl;dr) The ML family workshop is back, and will be held virtually along with ICFP 2021. The workshop does not have proceedings, making it the perfect venue to run some ideas with the community or present some work in progress within a friendly environment. The PC has a broad expertise and submissions are 3 pages long: when in doubt, just submit! (long version) We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. The ML family workshop warmly welcomes submission touching on the programming languages traditionally seen as part of the "ML family" (Standard ML, OCaml, F#, CakeML, SML#, Manticore, MetaOCaml, etc.). The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of the members of the ML family. We also encourage presentations from related languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*, Eff, ATS, etc), to exchange experience of further developing ML ideas. ## Submission details Submissions must be at most three pages long; see the full call for papers for details. Submission site: https://ml21.hotcrp.com/ ## Important dates Thu, May 27th 2021 (AoE): submission deadline Thu, Jun 17th 2021 (AoE): author notification Thu, Aug 26th: workshop (time slots TBD) ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From h.basold at liacs.leidenuniv.nl Fri Apr 16 17:48:46 2021 From: h.basold at liacs.leidenuniv.nl (Henning Basold) Date: Fri, 16 Apr 2021 17:48:46 +0200 Subject: [Agda] TYPES 2021: Call for Contributions (speakers and deadline extension) Message-ID: Call for Contributions TYPES 2021 26th International Conference on Types for Proofs and Programs 14 - 19 June 2021 Virtual and possibly Leiden, The Netherlands https://types21.liacs.nl/ Note that the deadline for submission has been extended to 23 April. As the goal is to use TYPES as a forum for collaboration, you may also consider to submit an abstract based on your contribution that was planned to be presented during TYPES 2020, if you find that appropriate. Background -------------- The TYPES meetings are a forum to present new and on-going work in all aspects of type theory and its applications, especially in formalised and computer assisted reasoning and computer programming. The TYPES areas of interest include, but are not limited to: * Foundations of type theory and constructive mathematics; * Applications of type theory (e.g., linguistics or concurrency); * Dependently typed programming; * Industrial uses of type theory technology; * Meta-theoretic studies of type systems; * Proof assistants and proof technology; * Automation in computer-assisted reasoning; * Links between type theory and functional programming; * Formalising mathematics using type theory; * Homotopy type theory and univalent mathematics. We encourage talks proposing new ways of applying type theory. In the spirit of workshops, talks may be based on newly published papers, work submitted for publication, but also work in progress. Venue ---------- This year?s TYPES will be held virtually (online), possibly in combination with a physical meeting in Leiden in the Netherlands if the political situation permits that. That the conference is held virtually constrains the time of talks, and complicates exchange and collaboration. TYPES 2021 will therefore not only consist of presentations, but also a setup of working groups that get together throughout the week. Every day will be split into a session of talks and tutorials, and a collaboration session during which the working groups will get together. The hope is that we can retain at least some of the exchange and chatter that is the heart of the TYPES conference series. Invited Talks and Tutorials ----------------------------- Stephanie Balzer (Carnegie Mellon University) Ulrik Buchholtz (Technical University Darmstadt) Sara Negri (University of Genova) Pierre-Marie P?drot (INRIA -- Inria Rennes-Bretagne-Atlantique) Contributed Talks -------------------- TYPES solicits contributed talks to stimulate discussions. The contributed talks are selected on the base of extended abstracts/short papers of 2 pages (excluding bibliography) formatted with the LaTeX EasyChair3.5 (https://easychair.org/publications/for_authors) style. An abstract can be based on existing, submitted or novel work, and is not in conflict with any other forms of publication. Submissions are handled via EasyChair: https://easychair.org/conferences/?conf=types2021 Upon submission, authors have to select the category of their contribution: presentation-only talks and talks with the intent to contribute to the post-proceedings. Presentation-only talks will consist of a 5 minutes recorded video that is shown during the conference in combination with 5 minutes live discussion. The purpose of recording the talk beforehand is to avoid technical issues. Talks with the intent for post-proceedings submission get a slot for a 10 minutes live talk plus 5 minutes discussion during the conference. The idea is that in this case, an interactive discussion with more in-depth feedback will help to submit to the post-proceedings. Note that the selection at this stage only expresses an intent to submit to the post-proceedings, and that you are neither obliged to submit your work nor are you excluded from the submission to the post-proceedings should you not submit an intent at this stage. The idea is only to help you with more feedback during the conference. Please be fair in selecting this category because the time in a virtual conference is very limited and should be given to those authors who really need it. Important dates ------------------ * Submission of abstract 23 April 2021 AoE * Author notification 14 May 2021 * Camera-ready version of abstract 4 June 2021 AoE * Conference 14 - 18 June 2021 Camera-ready versions of the accepted contributions will be published in an informal book of abstracts for distribution during the conference. Attendance and Fees ----------------------- Despite the difficulty that a virtual event brings, it also offers a chance. We will make TYPES as inclusive as possible, which means that attending virtually is free of charge, if you are not in the position to pay fees. For everyone else, the fees will be low and only to cover the costs of setting up the infrastructure and organisation. Should it be possible that we can have a hybrid virtual-physical meeting, then there will also be some costs for recording and streaming that will have to be shared between local and virtual attendees. However, we will keep these low in general and free for those who cannot afford to pay fees. About Types --------------- The TYPES meetings from 1990 to 2008 were annual workshops of a sequence of five EU funded networking projects. From 2009 to 2015, TYPES has been run as an independent conference series. From 2016, TYPES is partially supported by COST Action EUTypes CA15123. Previous TYPES meetings were held in Antibes (1990), Edinburgh (1991), B?stad (1992), Nijmegen (1993), B?stad (1994), Torino (1995), Aussois (1996), Kloster Irsee (1998), L?keberg (1999), Durham (2000), Berg en Dal near Nijmegen (2002), Torino (2003), Jouy-en-Josas near Paris (2004), Nottingham (2006), Cividale del Friuli (2007), Torino (2008), Aussois (2009), Warsaw (2010), Bergen (2011), Toulouse (2013), Paris (2014), Tallinn (2015), Novi Sad (2016), Budapest (2017), Braga (2018), Oslo (2019) and Turin (2020). Post-proceedings ------------------- Similarly to TYPES 2011 and TYPES 2013-2020, a post-proceedings volume will be published in the Leibniz International Proceedings in Informatics (LIPIcs) series. Submission to that volume will be open to everyone. Tentative dates for post-proceedings: * Non-binding intent (abstract) 29 October 2021 * Paper submission 26 November 2021 * Author notification 25 March 2022 The formal call with binding dates for the post-proceedings will be issued after the conference. Contact ----------- Email: types21 at liacs.leidenuniv.nl Web form: https://types21.liacs.nl/contact/ Programme Committee --------------------- Henning Basold (LIACS -- Leiden University) (chair) Stefano Berardi (Universit? di Torino) Marc Bezem (University of Bergen) Fr?d?ric Blanqui (INRIA -- ENS Paris-Saclay) Sandrine Blazy (INRIA -- University of Rennes) Ana Bove (Chalmers / U. of Gothenburg) Paolo Capriotti (TU Darmstadt) Jesper Cockx (TU Delft) Jos? Esp?rito Santo (University of Minho) Herman Geuvers (Radboud University Nijmegen) Silvia Ghilezan (University of Novi Sad) Nicolai Kraus (U. of Nottingham) Sergue? Lenglet (Univ. de Lorraine) Assia Mahboubi (INRIA -- Nantes and VU Amsterdam) Ralph Matthes (IRIT -- CNRS and University of Toulouse) Keiko Nakata (Kyoto University) Fredrik Nordvall Forsberg (University of Strathclyde) Jorge A. P?rez (University of Groningen) Gabriel Scherer (INRIA Saclay) Aleksy Schubert (University of Warsaw) Niccol? Veltri (Tallin UT) Stephanie Weirich (U. of Pennsylvania) Organiser ------------ Henning Basold (LIACS -- Leiden University) -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 665 bytes Desc: OpenPGP digital signature URL: From asai at is.ocha.ac.jp Sun Apr 18 11:44:33 2021 From: asai at is.ocha.ac.jp (Kenichi Asai) Date: Sun, 18 Apr 2021 18:44:33 +0900 Subject: [Agda] Agda on Apple Silicon? Message-ID: What is the easy way to install agda on Apple Silicon mac? I used to install via homebrew, but homebrew (for native Apple Silicon) tells me I need to build from source, and if I do: brew install --build-from-source agda I am told to build ghc from source, too, which fails. Thanks in advance! -- Kenichi Asai From aldrovandi at math.fsu.edu Sun Apr 18 16:24:47 2021 From: aldrovandi at math.fsu.edu (Ettore Aldrovandi) Date: Sun, 18 Apr 2021 10:24:47 -0400 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: <56331B2C-D9C3-45E4-B40E-ED2CE237F50A@math.fsu.edu> Hi, building Agda from source on homebrew requires building ghc, which is not supported on Silicon (yet), although that might change soon, see https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html . I don?t know what happens if you try building ghc first with the ??HEAD?flag. ?Ettore Ettore Aldrovandi Department of Mathematics, Florida State University 1017 Academic Way * http://www.math.fsu.edu/~ealdrov Tallahassee, FL 32306-4510, USA * * aldrovandi at math dot fsu dot edu > On Apr 18, 2021, at 05:44, Kenichi Asai > wrote: > > What is the easy way to install agda on Apple Silicon mac? I used to > install via homebrew, but homebrew (for native Apple Silicon) tells me > I need to build from source, and if I do: > > brew install --build-from-source agda > > I am told to build ghc from source, too, which fails. Thanks in advance! > > -- > Kenichi Asai > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From anka.213 at gmail.com Sun Apr 18 17:02:27 2021 From: anka.213 at gmail.com (=?utf-8?Q?Andreas_K=C3=A4llberg?=) Date: Sun, 18 Apr 2021 23:02:27 +0800 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: <56331B2C-D9C3-45E4-B40E-ED2CE237F50A@math.fsu.edu> References: <56331B2C-D9C3-45E4-B40E-ED2CE237F50A@math.fsu.edu> Message-ID: <20479763-395D-4736-81D0-7364DD39C155@gmail.com> It should also be possible to use the ordinary x86_64 releases using rosetta2. I'm not sure how to tell brew to do that. > On 18 Apr 2021, at 22:24, Ettore Aldrovandi wrote: > > Hi, > > building Agda from source on homebrew requires building ghc, which is not supported on Silicon (yet), although that might change soon, see https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html . I don?t know what happens if you try building ghc first with the ??HEAD?flag. > > ?Ettore > > Ettore Aldrovandi > Department of Mathematics, Florida State University > 1017 Academic Way * http://www.math.fsu.edu/~ealdrov > Tallahassee, FL 32306-4510, USA * * aldrovandi at math dot fsu dot edu > >> On Apr 18, 2021, at 05:44, Kenichi Asai > wrote: >> >> What is the easy way to install agda on Apple Silicon mac? I used to >> install via homebrew, but homebrew (for native Apple Silicon) tells me >> I need to build from source, and if I do: >> >> brew install --build-from-source agda >> >> I am told to build ghc from source, too, which fails. Thanks in advance! >> >> -- >> Kenichi Asai >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Sun Apr 18 17:46:58 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sun, 18 Apr 2021 16:46:58 +0100 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: <56331B2C-D9C3-45E4-B40E-ED2CE237F50A@math.fsu.edu> References: <56331B2C-D9C3-45E4-B40E-ED2CE237F50A@math.fsu.edu> Message-ID: <26fce4a9-955a-565c-ced6-de19a258c408@cs.bham.ac.uk> For me it worked doing "arch -x86_64 /usr/local/bin/brew install agda" after following https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook/64883440 Martin On 18/04/2021 15:24, Ettore Aldrovandi wrote: > Hi,? > > building Agda from source on homebrew requires building ghc, which is > not supported on Silicon (yet), although that might change soon, > see?https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html > . I don?t > know what happens if you try building ghc first with the ??HEAD?flag.? > > ?Ettore > > Ettore Aldrovandi > Department of Mathematics, Florida State University > 1017 Academic Way ? ? ? ? ? ? ? ?* ? http://www.math.fsu.edu/~ealdrov > > Tallahassee, FL 32306-4510, USA * * aldrovandi at math dot fsu dot edu > >> On Apr 18, 2021, at 05:44, Kenichi Asai > > wrote: >> >> What is the easy way to install agda on Apple Silicon mac? ?I used to >> install via homebrew, but homebrew (for native Apple Silicon) tells me >> I need to build from source, and if I do: >> >> brew install --build-from-source agda >> >> I am told to build ghc from source, too, which fails. ?Thanks in advance! >> >> -- >> Kenichi Asai >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> >> > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From conal at conal.net Sun Apr 18 18:50:55 2021 From: conal at conal.net (Conal Elliott) Date: Sun, 18 Apr 2021 09:50:55 -0700 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: Yesterday I installed GHC on a new M1 MacBook Air described here (getting ghcup, GHC, and Cabal) and then ?cabal install Agda? and ?cabal v2-install --lib ieee754?. (The ieee754 Haskell package is needed for Agda compilation.) The homebrew instructions did not work for me. - Conal On Sun, Apr 18, 2021 at 2:44 AM Kenichi Asai wrote: > What is the easy way to install agda on Apple Silicon mac? I used to > install via homebrew, but homebrew (for native Apple Silicon) tells me > I need to build from source, and if I do: > > brew install --build-from-source agda > > I am told to build ghc from source, too, which fails. Thanks in advance! > > -- > Kenichi Asai > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From conal at conal.net Sun Apr 18 18:52:51 2021 From: conal at conal.net (Conal Elliott) Date: Sun, 18 Apr 2021 09:52:51 -0700 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: I did install homebrew at some point, though I forget whether I needed to in order to get GHC and Agda working. On Sun, Apr 18, 2021 at 9:50 AM Conal Elliott wrote: > Yesterday I installed GHC on a new M1 MacBook Air described here > (getting ghcup, GHC, and Cabal) > and then ?cabal install Agda? and ?cabal v2-install --lib ieee754?. (The > ieee754 Haskell package is needed for Agda compilation.) > > The homebrew instructions did not work for me. > > - Conal > > On Sun, Apr 18, 2021 at 2:44 AM Kenichi Asai wrote: > >> What is the easy way to install agda on Apple Silicon mac? I used to >> install via homebrew, but homebrew (for native Apple Silicon) tells me >> I need to build from source, and if I do: >> >> brew install --build-from-source agda >> >> I am told to build ghc from source, too, which fails. Thanks in advance! >> >> -- >> Kenichi Asai >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From asai at is.ocha.ac.jp Mon Apr 19 06:27:28 2021 From: asai at is.ocha.ac.jp (Kenichi Asai) Date: Mon, 19 Apr 2021 13:27:28 +0900 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: Thank you for all the information! I could install agda (2.6.1.3) successfully. For record, I write what I did (following Martin's message): softwareupdate --install-rosetta arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" arch -x86_64 /usr/local/bin/brew install agda -- Kenichi Asai From Enrico.Tassi at inria.fr Mon Apr 19 22:04:37 2021 From: Enrico.Tassi at inria.fr (Enrico Tassi) Date: Mon, 19 Apr 2021 22:04:37 +0200 Subject: [Agda] [CFP] Logical Frameworks and Meta-Languages: Theory and Practice - Extended Deadline Message-ID: ============================================================= Call for papers Logical Frameworks and Meta-Languages: Theory and Practice LFMTP 2021 Pittsburgh, USA, 16 July 2021 Affiliated with CADE-28 http://lfmtp.org/workshops/2021/ ============================================================= Abstract submission deadline: 26 April 2021 (extended) Paper submission deadline: 03 May 2021 (extended) Logical frameworks and meta-languages form a common substrate for representing, implementing and reasoning about a wide variety of deductive systems of interest in logic and computer science. Their design, implementation and their use in reasoning tasks, ranging from the correctness of software to the properties of formal systems, have been the focus of considerable research over the last two decades. This workshop will bring together designers, implementors and practitioners to discuss various aspects impinging on the structure and utility of logical frameworks, including the treatment of variable binding, inductive and co-inductive reasoning techniques and the expressiveness and lucidity of the reasoning process. LFMTP 2021 will provide researchers a forum to present state-of-the-art techniques and discuss progress in areas such as the following: * Encoding and reasoning about the meta-theory of programming languages, logical systems and related formally specified systems. * Theoretical and practical issues concerning the treatment of variable binding, especially the representation of, and reasoning about, datatypes defined from binding signatures. * Logical treatments of inductive and co-inductive definitions and associated reasoning techniques, including inductive types of higher dimension in homotopy type theory * Graphical languages for building proofs, applications in geometry, equational reasoning and category theory. * New theory contributions: canonical and substructural frameworks, contextual frameworks, proof-theoretic foundations supporting binders, functional programming over logical frameworks, homotopy and cubical type theory. * Applications of logical frameworks: proof-carrying architectures, proof exchange and transformation, program refactoring, etc. * Techniques for programming with binders in functional programming languages such as Haskell, OCaml or Agda, and logic programming languages such as lambda Prolog or Alpha-Prolog. Important Dates Abstract submission deadline: Monday April 26 (extended) Submission deadline: Monday May 03 (extended) Notification to authors: Monday May 31 Final version due: Monday June 14 Workshop date: Friday July 16 Submission In addition to regular papers, we welcome/encourage the submission of "work in progress" reports, in a broad sense. Those do not need to report fully polished research results, but should be of interest for the community at large. Submitted papers should be in PDF, formatted using the EPTCS style guidelines. The length is restricted to 15 pages for regular papers and 8 pages for "Work in Progress" papers. Submission is via EasyChair: https://easychair.org/conferences/?conf=lfmtp2021 Proceedings A selection of the presented papers will be published online in the Electronic Proceedings in Theoretical Computer Science (EPTCS). Invited Speakers * Giselle Reis (CMU-Qatar) * Matthieu Sozeau (Inria) Program Committee * David Baelde (LSV, ENS Paris-Saclay & Inria Paris) * Roberto Blanco (MPI-SP) * Alberto Ciaffaglione (University of Udine) * Claudio Sacerdoti Coen (University of Bologna) * Marina Lenisa (Universit? degli Studi di Udine) * Dennis M?ller (Friedrich-Alexander-University) * Michael Norrish (CSIRO) * Elaine Pimentel (Universidade Federal do Rio Grande do Norte) co- chair * Ulrich Sch?pp (fortiss GmbH) * Kathrin Stark (Princeton University) * Aaron Stump (The University of Iowa) * Nora Szasz (Universidad ORT Uruguay) * Enrico Tassi (Inria) co-chair * Alwen Tiu (The Australian National University) * Tjark Weber (Uppsala University) -- Enrico Tassi From mechvel at scico.botik.ru Wed Apr 21 22:07:28 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 21 Apr 2021 23:07:28 +0300 Subject: [Agda] `making' application Message-ID: People, I have an application of many .agda modules, and need to design a command that type-checks and also compiles all of them (with MAlonzo). I try > agda $adgaLibOpt -c TypeCheckAll.agda, (I) where TypeCheckAll.agda is ---------------------------------------- module TypeCheckAll where open import ForTests import M1 import dir1/M2 ... import dir3/Test1 import dir4/Test2 main : Main main = run (putStrLn "done") ---------------------------------------- The above ForTests reexports things by open import IO public using (Main; IO; run; putStrLn), and Test1 and Test2 import these from ForExport (ForExport exports "everything" to organize output in this application, in addition to things of IO). And the following files define the `main' function in them: dir3/Test1.agda, dir4/Test2.agda, TypeCheckAll.agda. (the first two run examples for demo-and-test). The problem is that I need a single command (or may be, two commands) that type-checks and compiles all the above files. So that when, after things are `made', and one loads the chosen test like > agda $adgaLibOpt -c dir3/Test1.agda (II) no time-consuming complilation must happen (because all the .o files are ready), and ./Test1 is created fast for running. In my various attempts to fix it, either (II) causes a long second session of compilation or (II) reports an error about MAlonzo/Code...main.hs, or (I) reports "no main function", ... Can anybody, please, advise on how to arrange this? Thanks, ------ Sergei From matthewdaggitt at gmail.com Thu Apr 22 04:54:02 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Thu, 22 Apr 2021 10:54:02 +0800 Subject: [Agda] [ANNOUNCE] Standard library v1.6 Message-ID: Dear all, The Agda Team is very pleased to announce the release of the standard library 1.6. The library has been tested using Agda 2.6.1.3. and 2.6.1. The new version of the library, CHANGELOG and README are available at http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.StandardLibrary Highlights include: - Reorganised module hierarchy in the dependency graph of the IO module so that a program as simple as "Hello world" may be compiled without pulling upwards of 130 modules. - First verified implementation of a sorting algorithm (available from Data.List.Sort). - Pseudo random generators for ? (available from Data.Nat.Pseudorandom.LCG) - Drastic increase in the performance of normalised rational numbers. - Large number of additional proofs about both normalised and unnormalised rational numbers. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Thu Apr 22 07:09:36 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Thu, 22 Apr 2021 08:09:36 +0300 Subject: [Agda] `making' application In-Reply-To: References: Message-ID: <6684c296d0fe6e80c28f8d06c95bbf87@scico.botik.ru> On 2021-04-21 23:07, mechvel at scico.botik.ru wrote: > People, > > I have an application of many .agda modules, and need to design a > command > that type-checks and also compiles all of them (with MAlonzo). A small stand alone example is in http://www.botik.ru/pub/local/Mechveliani/inAgda/makeInAgda.zip Can you, please, try (with Agda-2.6.1, MAlonzo, lib-1.6) the commands > unzip makeInAgda.zip > agda $adgaLibOpt -c TypeCheckAll.agda (I) > agda $adgaLibOpt -c Nat/NatTest.agda (II) ? (II) continues to compile things, while I expected that everything is compiled by (I). And it ends with /home/mechvel/inAgda/checkAllTest/real/MAlonzo/Code/Nat/NatTest.hs:1:1: error: The IO action ?main? is not defined in module ?MAlonzo.Code.Nat.NatTest? | 1 | {-# LANGUAGE EmptyDataDecls, EmptyCase, ExistentialQuantification, | ^ Then I comment out the two imports in TypeCheckAll which deal with `main': module TypeCheckAll where open import ForTests import Structures-I import Int.I import Int.I -- import Nat.NatTest -- import Int.IntTest main : Main main = run (putStrLn "done") And remove MAlozo/ and all *.agdai. Now, (I) and (II) make the needed executable. But the part (II) includes a long compilation of many modules. Is this possible to `make' the project so that the first command to do almost everything, so that the next command for making Nat/NatTest is done fast? Thanks, ------ Sergei _ From chantal.keller at wanadoo.fr Thu Apr 22 17:11:27 2021 From: chantal.keller at wanadoo.fr (Chantal Keller) Date: Thu, 22 Apr 2021 17:11:27 +0200 Subject: [Agda] 7th International Workshop on Proof eXchange for Theorem Proving (PxTP) - DEADLINE EXTENSION: May 5 Message-ID: <15d17c72-274f-cb50-df0c-54bb202e9b0b@wanadoo.fr> Call for Papers, PxTP 2021 The Seventh International Workshop on Proof eXchange for Theorem Proving (PxTP) https://pxtp.gitlab.io/2021 21 July 2021, online associated with the CADE-28 conference ## Background The PxTP workshop brings together researchers working on various aspects of communication, integration, and cooperation between reasoning systems and formalisms. The progress in computer-aided reasoning, both automatic and interactive, during the past decades, has made it possible to build deduction tools that are increasingly more applicable to a wider range of problems and are able to tackle larger problems progressively faster. In recent years, cooperation of such tools in larger verification environments has demonstrated the potential to reduce the amount of manual intervention. Examples include the Sledgehammer tool providing an interface between Isabelle and (untrusted) automated provers, and collaboration of the HOL Light and Isabelle systems in the formal proof of the Kepler conjecture. Cooperation between reasoning systems relies on availability of theoretical formalisms and practical tools for exchanging problems, proofs, and models. The PxTP workshop strives to encourage such cooperation by inviting contributions on suitable integration, translation, and communication methods, standards, protocols, and programming interfaces. The workshop welcomes developers of automated and interactive theorem proving tools, developers of combined systems, developers and users of translation tools and interfaces, and producers of standards and protocols. We are interested both in success stories and descriptions of current bottlenecks and proposals for improvement. ## Topics Topics of interest for this workshop include all aspects of cooperation between reasoning tools, whether automatic or interactive. More specifically, some suggested topics are: * applications that integrate reasoning tools (ideally with certification of the result); * interoperability of reasoning systems; * translations between logics, proof systems, models; * distribution of proof obligations among heterogeneous reasoning tools; * algorithms and tools for checking and importing (replaying, reconstructing) proofs; * proposed formats for expressing problems and solutions for different classes of logic solvers (SAT, SMT, QBF, first-order logic, higher-order logic, typed logic, rewriting, etc.); * meta-languages, logical frameworks, communication methods, standards, protocols, and APIs related to problems, proofs, and models; * comparison, refactoring, transformation, migration, compression and optimization of proofs; * data structures and algorithms for improved proof production in solvers (e.g., efficient proof representations); * (universal) libraries, corpora and benchmarks of proofs and theories; * alignment of diverse logics, concepts and theories across systems and libraries; * engineering aspects of proofs (e.g., granularity, flexiformality, persistence over time); * proof certificates; * proof checking; * mining of (mathematical) information from proofs (e.g., quantifier instantiations, unsat cores, interpolants, ...); * reverse engineering and understanding of formal proofs; * universality of proofs (i.e. interoperability of proofs between different proof calculi); * origins and kinds of proofs (e.g., (in)formal, automatically generated, interactive, ...) * Hilbert's 24th Problem (i.e. what makes a proof better than another?); * social aspects (e.g., community-wide initiatives related to proofs, cooperation between communities, the future of (formal) proofs); * applications relying on importing proofs from automatic theorem provers, such as certified static analysis, proof-carrying code, or certified compilation; * application-oriented proof theory; * practical experiences, case studies, feasibility studies. ## Submissions Researchers interested in participating are invited to submit either an extended abstract (up to 8 pages) or a regular paper (up to 15 pages). Submissions will be refereed by the program committee, which will select a balanced program of high-quality contributions. Short submissions that could stimulate fruitful discussion at the workshop are particularly welcome. We expect that one author of every accepted paper will present their work at the workshop. Submitted papers should describe previously unpublished work, and must be prepared using the LaTeX EPTCS class (http://style.eptcs.org). Papers will be submitted via EasyChair, at the PxTP'2021 workshop page (https://easychair.org/conferences/?conf=pxtp-7). Accepted regular papers will appear in an EPTCS volume. ## Important Dates * Abstract submission: *April 28*, 2021 * Paper submission: *May 5*, 2021 * Notification: May 26, 2021 * Camera ready versions due: June 16, 2021 * Workshop: July 11, 2021 (online) ## Invited Speakers TBA ## Program Committee * Haniel Barbosa (Universidade Federal de Minas Gerais (UFMG), Belo Horizonte, Brazil) * Denis Cousineau (Mitsubishi, France) * Stefania Dumbrava (ENSIIE, France) * Katalin Fazekas (TU Wien, Austria) * Mathias Fleury (Johannes Kepler University Linz, Austria), co-chair * Predrag Jani?i? (University of Belgrade, Serbia) * Chantal Keller (LRI, Universit? Paris-Saclay, France), co-chair * Aina Niemetz (Stanford University, USA) * Jens Otten (University of Oslo, Norway) * Giselle Reis (CMU-Qatar, Qatar) * Geoff Sutcliffe (University of Miami, USA) * Fran?ois Thir? (Nomadic Labs, France) * Sophie Tourret (Max-Planck-Institut f?r Informatik, Germany) * Josef Urban (Czech Institute of Informatics, Czech Republic) ## Previous PxTP Editions * PxTP 2019 (http://pxtp.gforge.inria.fr/2019), affiliated to CADE-27 * PxTP 2017 (https://pxtp.github.io/2017), affiliated to Tableaux 2017, FroCoS 2017 and ITP 2017 * PxTP 2015 (http://pxtp15.lri.fr), affiliated to CADE-25 * PxTP 2013 (http://www.cs.ru.nl/pxtp13), affiliated to CADE-24 * PxTP 2012 (http://pxtp2012.inria.fr), affiliated to IJCAR 2012 * PxTP 2011 (http://pxtp2011.loria.fr), affiliated to CADE-23 From niccolo.veltri at gmail.com Fri Apr 23 13:21:30 2021 From: niccolo.veltri at gmail.com (=?UTF-8?Q?Niccol=c3=b2_Veltri?=) Date: Fri, 23 Apr 2021 14:21:30 +0300 Subject: [Agda] PPDP 2021 Call for Papers Message-ID: ====================== PPDP 2021? Call for Papers ====================== 23rd International Symposium on Principles and Practice of Declarative Programming 6?8 September 2021, Tallinn, Estonia http://imft.ftn.uns.ac.rs/PPDP2021 Collocated with LOPSTR 2021 =================================== Important Dates --------------------- - 08.05.2021 title and abstract submission - 15.05.2021 paper submission - 29.06.2021 rebuttal period (48 hours) - 09.07.2021 notification - 23.07.2021 final paper - 06.09.2021 conference starts About PPDP ---------- The PPDP 2021 symposium brings together researchers from the declarative programming communities, including those working in the functional, logic, answer-set, and constraint handling programming paradigms. The goal is to stimulate research in the use of logical formalisms and methods for analyzing, performing, specifying, and reasoning about computations, including mechanisms for concurrency, security, static analysis, and verification. Scope ----- Submissions are invited on all topics related to declarative programming, from principles to practice, from foundations to applications. Topics of interest include, but are not limited to - Language Design: domain-specific languages; interoperability; ? concurrency, parallelism and distribution; modules; functional ? languages; reactive languages; languages with objects; languages for ? quantum computing; languages inspired by biological and chemical ? computation; metaprogramming. - Declarative languages in artificial intelligence: logic programming; ? database languages; knowledge representation languages; ? probabilistic languages; differentiable languages. - Implementations: abstract machines; interpreters; compilation; ? compile-time and run-time optimization; memory management. -?? Foundations: types; logical frameworks; monads and effects; semantics. -?? Analysis and Transformation: partial evaluation; abstract interpretation; ? control flow; data flow; information flow; termination analysis; resource ? analysis; type inference and type checking; verification; validation; ? debugging; testing. - Tools and Applications: programming and proof environments; ? verification tools; case studies in proof assistants or interactive ? theorem provers; certification; novel applications of declarative ? programming inside and outside of CS; declarative programming ? pearls; practical experience reports and industrial application; ? education. The PC chair will be happy to advise on the appropriateness of a topic. Submission web page --------------------- https://easychair.org/conferences/?conf=ppdp2021 Submission Categories --------------------- Submissions can be made in three categories: - Research Papers, - System Descriptions, - Experience Reports. Submissions of Research Papers must present original research which is unpublished and not submitted elsewhere. They must not exceed 12 pages ACM style 2-column (including figures, but excluding bibliography). Work that already appeared in unpublished or informally published workshop proceedings may be submitted (please contact the PC chair in case of questions). Research papers will be judged on originality, significance, correctness, clarity, and readability. Submission of System Descriptions must describe a working system whose description has not been published or submitted elsewhere. They must not exceed 10 pages and should contain a link to a working system. System Descriptions must be marked as such at the time of submission and will be judged on originality, significance, usefulness, clarity, and readability. Submissions of Experience Reports are meant to help create a body of published, refereed, citable evidence where declarative programming such as functional, logic, answer-set, constraint programming, etc., is used in practice. They must not exceed 5 pages **including references**.? Experience Reports must be marked as such at the time of submission and need not report original research results. They will be judged on significance, usefulness, clarity, and readability. Supplementary material may be provided via a link to an extended version of the submission (recommended), or in a clearly marked appendix beyond the above-mentioned page limits. Reviewers are not required to study extended versions or any material beyond the respective page limit. Formating Guidelines ---------------------------- We plan to use the same publication arrangements as PPDP has had in previous years. For each paper category, you must use the most recent version of the "Current ACM Master Template" which is available at . The most recent version at the time of writing is 1.75. You must use the LaTeX sigconf proceedings template as the conference organizers are unable to process final submissions in other formats. In case of problems with the templates, contact ACM's TeX support team at Aptara . Authors should note ACM's statement on author's rights (http://authors.acm.org/) which apply to final papers. Submitted papers should meet the requirements of ACM's plagiarism policy (http://www.acm.org/publications/policies/plagiarism_policy). Requirements for Publication ---------------------------- At least one author of each accepted submission will be expected to attend and present the work at the conference. The PC chair may retract a paper that is not presented. The PC chair may also retract a paper if complaints about the paper's correctness are raised which cannot be resolved by the final paper deadline. -------------------------? -------------------- --------------------- Program committee co-chair: Nick Benton, Facebook Program committee co-chair: Silvia Ghilezan, University of Novi Sad & Mathematical Institute SASA Organising committee chair: Niccol? Veltri, Tallinn University of Technology Steering committee chair: James Cheney, Edinburgh University -------------------------? -------------------- --------------------- All questions about submissions should be emailed to the program chair Silvia Ghilezan . All questions about local information should be emailed to the local organiser Niccol? Veltri . From bruno.bernardo at tutanota.com Tue Apr 27 09:21:39 2021 From: bruno.bernardo at tutanota.com (Bruno Bernardo) Date: Tue, 27 Apr 2021 09:21:39 +0200 (CEST) Subject: [Agda] FMBC 2021 - 3rd Call for Papers (Deadline extensions) Message-ID: [ Please distribute, apologies for multiple postings. ] ======================================================================== 3rd International Workshop on Formal Methods for Blockchains (FMBC) - Third Call https://fmbc.gitlab.io/2021 July 18 or 19 (TBA), 2021, *online* Co-located with the 33nd International Conference on Computer-Aided Verification (CAV 2021) http://i-cav.org/2021/ ------------------------------------------------------------- IMPORTANT DATES -------------------------------- Abstract submission: May 6, 2021 (extended) Paper submission: May 13, 2021 (extended) Notification: June 24, 2021 (extended) Camera-ready: July 8, 2021 Workshop: July 18 or 19 (TBA), 2021 Deadlines are Anywhere on Earth: https://en.wikipedia.org/wiki/Anywhere_on_Earth -------------------------------- -------------------------------- TOPICS OF INTEREST -------------------------------- Blockchains are decentralized transactional ledgers that rely on cryptographic hash functions for guaranteeing the integrity of the stored data. Participants on the network reach agreement on what valid transactions are through consensus algorithms. Blockchains may also provide support for Smart Contracts. Smart Contracts are scripts of an ad-hoc programming language that are stored in the Blockchain and that run on the network. They can interact with the ledger?s data and update its state. These scripts can express the logic of possibly complex contracts between users of the Blockchain. Thus, Smart Contracts can facilitate the economic activity of Blockchain participants. With the emergence and increasing popularity of cryptocurrencies such as Bitcoin and Ethereum, it is now of utmost importance to have strong guarantees of the behavior of Blockchain software. These guarantees can be brought by using Formal Methods. Indeed, Blockchain software encompasses many topics of computer science where using Formal Methods techniques and tools are relevant: consensus algorithms to ensure the liveness and the security of the data on the chain, programming languages specifically designed to write Smart Contracts, cryptographic protocols, such as zero-knowledge proofs, used to ensure privacy, etc. This workshop is a forum to identify theoretical and practical approaches of formal methods for Blockchain technology. Topics include, but are not limited to: * Formal models of Blockchain applications or concepts * Formal methods for consensus protocols * Formal methods for Blockchain-specific cryptographic primitives or protocols * Design and implementation of Smart Contract languages * Verification of Smart Contracts -------------------------------- -------------------------------- SUBMISSION -------------------------------- Submit original manuscripts (not published or considered elsewhere) with a page limit of 12 pages for full papers and 6 pages for short papers (excluding bibliography and short appendix of up to 5 additional pages). Alternatively you may also submit an extended abstract of up to 3 pages (including bibliography) summarizing your ongoing work in the area of formal methods and blockchain. Authors of selected extended-abstracts are invited to give a short lightning talk. Submission link: https://easychair.org/conferences/?conf=fmbc2021 Authors are encouraged to use LaTeX and prepare their submissions according to the instructions and styling guides for OASIcs provided by Dagstuhl. Instructions for authors: https://submission.dagstuhl.de/documentation/authors#oasics At least one author of an accepted paper is expected to present the paper at the workshop as a registered participant. -------------------------------- -------------------------------- PROCEEDINGS -------------------------------- All submissions will be peer-reviewed by at least three members of the program committee for quality and relevance. Accepted regular papers (full and short papers) will be included in the workshop proceedings, published as a volume of the OpenAccess Series in Informatics (OASIcs) by Dagstuhl. -------------------------------- -------------------------------- INVITED SPEAKER -------------------------------- David Dill, Lead Researcher, Blockchain, Novi/Facebook, USA https://research.fb.com/people/dill-david/ -------------------------------- -------------------------------- PROGRAM COMMITTEE -------------------------------- PC CO-CHAIRS * Bruno Bernardo (Nomadic Labs, France) (bruno at nomadic-labs.com) * Diego Marmsoler (University of Exeter, UK) (D.Marmsoler at exeter.ac.uk) PC MEMBERS * Wolfgang Ahrendt (Chalmers University of Technology, Sweden) * Lacramioara Astefanoei (Nomadic Labs, France) * Massimo Bartoletti (University of Cagliari, Italy) * Joachim Breitner (Dfinity Foundation, Germany) * Achim Brucker (University of Exeter, UK) * Zaynah Dargaye (Nomadic Labs, France) * J?r?mie Decouchant (TU Delft, Netherlands) * Dana Drachsler Cohen (Technion, Israel) * Ansgar Fehnker (University of Twente, Netherlands) * Maurice Herlihy (Brown University, USA) * Lars Hupel (INNOQ, Germany) * Florian Kammueller (Middlesex University London, UK) * Igor Konnov (Informal Systems, Austria) * Andreas Lochbihler (Digital Asset, Switzerland) * Sim?o Melo de Sousa (Universidade da Beira Interior, Portugal) * Karl Palmskog (KTH, Sweden) * Maria Potop-Butucaru (Sorbonne Universit?, France) * Andreas Rossberg (Dfinity Foundation, Germany) * Albert Rubio (Complutense University of Madrid, Spain) * C?sar Sanchez (Imdea, Spain) * Clara Schneidewind (TU Wien, Austria) * Ilya Sergey (Yale-NUS College/NUS, Singapore) * Mark Staples (CSIRO Data61, Australia) * Meng Sun (Peking University, China) * Simon Thompson (University of Kent, UK) * Josef Widder (Informal Systems, Austria) From harley.eades at gmail.com Wed Apr 28 17:08:18 2021 From: harley.eades at gmail.com (Harley D. Eades III) Date: Wed, 28 Apr 2021 11:08:18 -0400 Subject: [Agda] PhD Student Opportunity in the Granule Project Message-ID: Harley Eades of the Granule Project and Augusta University's ForML Lab is actively seeking applications for a PhD student starting Fall 2021. The successful applicant will be funded--including tuition, salary, and (international) conference travel--for the first three years of their appointment through a new NSF funded project: "Semantically and Practically Generalizing Graded Modal Types" A short overview of the main goals of this project is as follows: "We propose to investigate the theory and practice of graded modal types with the goal of combining and generalizing type-based software verification and data-usage tracking, thereby extending the verification abilities of type systems. To carry out this research we plan to: 1. investigate a new foundational theory for graded modal types based on the underlying theory of constructive modal logics that will support several new kinds of data-usage tracking making them more applicable to real-world problems. 2. design and implement Tenli; a general purpose functional programming language with graded modal types that supports general type-based software verification; 3. design new pedagogical materials for teaching resourceful software verification at both the undergraduate and graduate levels using Tenli, and other tools." The successful applicant will be advised by Harley Eades, but also collaborate with Dominic Orchard and his students in the Granule Project. In addition, they will have the opportunity to help mentor summer undergraduate research assistants through new collaborations with: - Clark Atlanta: A historically black university, and - Wesleyan College: An all womens school in Georgia. This is also an exciting time to join the ever growing Augusta University who has made Computer Science one of the main pillars of their university. We have successfully recruited ten new faculty (at all ranks) per year for the last three years. Fall 2021 marks the inaugural year of our PhD program (shorturl.at/gDTU9) and the successful applicant will be among the first PhD students in Computer Science at our university. Even though this is the inaugural year of our PhD program Harley Eades has mentored and collaborated with several PhD students over the course of the last six years. As part of a different NSF funded project Harley Eades recruited and collaborated with three PhD students from other universities through stipends. In addition, he actively collaborates with and has helped mentor PhD students working with Dominic Orchard. Finally, Harley Eades is an active SIGPLAN Mentor (https://www.sigplan.org/LongTermMentoring/) of one PhD student. Interested students should meet the following properties: - Be interested in the overall project as stated above. - Have or are about to complete a Bachelor of Science in Computer Science or a related field (Computer Engineering, Information Systems, Software Engineering, Mathematics, etc.). - Have a minimum cumulative GPA of 3.0 or better on a 4.0 scale. - Both national and International applicants are welcome. If you are interested in applying for this opportunity please begin by contacting Harley Eades (harley.eades at gmail.com) with the following information: - A brief introduction of yourself and if you've done any research already. - CV/Resume More information: - Harley Eades: https://metatheorem.org/ - Granule Project: https://granule-project.github.io/ - ForML Lab: https://the-au-forml-lab.github.io/index.html - AU PhD Program: https://www.augusta.edu/ccs/phd-ccs.php Thanks, Harley Eades -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthewdaggitt at gmail.com Thu Apr 29 04:34:16 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Thu, 29 Apr 2021 10:34:16 +0800 Subject: [Agda] Research internship Summer 2021 - Searching for verifiable neural network properties Message-ID: *On the search for formally verifiable properties of neural network-enhanced systems* Summer 2021 research internship Lab for AI Verification @ Heriott-Watt UniversityIn the last decade, advancement in neural networks have lead to an astounding array of new technologies, many of which use neural networks to interact with the real-world and, in particular, humans. However, neural networks for the most part remain black boxes and their results are hard to trust. To address this, in the last few years a range of tools have been developed that verify a given neural network obeys a given mathematical specification. The Lab for AI Verification at Heriot-Watt in Edinburgh has recently won a joint grant with Prof. Guy Katz from the Hebrew University of Jerusalem, author of Marabou , a cutting-edge tool for the verification of neural networks. Prof Katz will be visiting the robotics departments at Scottish Universities looking for systems which use neural networks and that have clear mathematical specifications that the neural network component should obey.We are looking for someone to collaborate with Prof Katz in creating a library of such properties, formally specified in an (yet undetermined) Interactive Theorem Prover such as Agda/Coq/Isabelle. The actual verification of these properties is not necessarily required as part of the internship. The ideal candidate will have prior experience of using an interactive theorem prover and know the basics about the operation of neural networks. We are looking for applicants with a range of experience from undergraduate/masters students/PhDs and RAs. Compensation will be dependent on experience. The internship will be between 2 and 3 months in Summer 2021 and we are flexible with respect to whether it is a full-time or part-time position and whether it is in-person or remote. Accommodation can be arranged at Heriot-Watt Univerisity, but will not be included as part of the compensation. If the applicant is interested, the position will also include fully-paid entry fees to SPLV 2021 .Please send enquiries to Prof. Ekaterina Komendantskya and Dr Matthew Daggitt at ek19 at hw.ac.uk and md2006 at hw.ac.uk -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaron-stump at uiowa.edu Sat May 1 06:20:08 2021 From: aaron-stump at uiowa.edu (Aaron Stump) Date: Fri, 30 Apr 2021 23:20:08 -0500 Subject: [Agda] normalization question Message-ID: Dear Agda community, I am doing some experiments with normalization, and am getting a surprising (to me) result. I have a function that I expected would normalize in linear time -- because I am expecting Agda will implement some kind of normal-order evaluation. But normalization seems to take exponential time. A self-contained version of the example is below. Asking Agda to normalize a term like busy 30 is prohibitively slow. For any nat n, busy n normalizes to the identity function. It seems as though one could prove by induction on n that busy n normalizes (with normal-order reduction) in something like 3 * n + 1 beta-reductions. Any insights appreciated. I observed the same behavior with Coq, by the way. Best, Aaron ----------------------------------------------- module Busy where data ? : Set where zero : ? suc : ? ? ? {-# BUILTIN NATURAL ? #-} busy : ? ? ? ? ? busy 0 = ? x ? x busy (suc n) = ? x ? let f = busy n in f (f x) -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Sat May 1 10:00:15 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sat, 1 May 2021 10:00:15 +0200 Subject: [Agda] normalization question In-Reply-To: References: Message-ID: Hi Aaron, Agda does inlining of let-bindings during elaboration, so your definition is equivalent to busy (suc n) = ? x ? busy n (busy n x) for which it is not surprising that it's slow. However, what is surprising to me is that the following version is still slow: twice : (? ? ?) ? ? ? ? twice f x = f (f x) busy' : ? ? ? ? ? busy' 0 = ? x ? x busy' (suc n) = twice (busy' n) Here it looks to me that lazy evaluation should kick in and make the definition fast, but apparently that's not the case. Maybe one of the other developers knows more about this. -- Jesper On Sat, May 1, 2021 at 6:21 AM Aaron Stump wrote: > Dear Agda community, > > I am doing some experiments with normalization, and am getting a > surprising (to me) result. I have a function that I expected would > normalize in linear time -- because I am expecting Agda will implement some > kind of normal-order evaluation. But normalization seems to take > exponential time. A self-contained version of the example is below. > Asking Agda to normalize a term like busy 30 is prohibitively slow. > > For any nat n, busy n normalizes to the identity function. It seems as > though one could prove by induction on n that busy n normalizes (with > normal-order reduction) in something like 3 * n + 1 beta-reductions. > > Any insights appreciated. I observed the same behavior with Coq, by the > way. > > Best, > Aaron > ----------------------------------------------- > module Busy where > > data ? : Set where > zero : ? > suc : ? ? ? > > {-# BUILTIN NATURAL ? #-} > > busy : ? ? ? ? ? > busy 0 = ? x ? x > busy (suc n) = ? x ? > let f = busy n in > f (f x) > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Sat May 1 11:55:32 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sat, 1 May 2021 10:55:32 +0100 Subject: [Agda] normalization question In-Reply-To: References: Message-ID: Regardless of evaluation strategy, there will be 2^n function applications, in both busy and in busy'. Martin On 01/05/2021 09:00, Jesper at sikanda.be wrote: > Hi Aaron, > > Agda does inlining of let-bindings during elaboration, so your > definition is equivalent to > > busy (suc n) = ? x ? busy n (busy n x) > > for which it is not surprising that it's slow. However, what is > surprising to me is that the following version is still slow: > > twice : (? ? ?) ? ? ? ? > twice f x = f (f x) > > busy' : ? ? ? ? ? > busy' 0 = ? x ? x > busy' (suc n) = twice (busy' n) > > Here it looks to me that lazy evaluation should kick in and make the > definition fast, but apparently that's not the case. Maybe one of the > other developers knows more about this. > > -- Jesper > > On Sat, May 1, 2021 at 6:21 AM Aaron Stump > wrote: > > Dear Agda community, > > I am doing some experiments with normalization, and am getting a > surprising (to me) result.? I have a function that I expected would > normalize in linear time -- because I am expecting Agda will > implement some kind of normal-order evaluation.? But normalization > seems to take exponential time.? A self-contained version of the > example is below.? Asking Agda to normalize a term like busy 30 is > prohibitively slow.?? > > For any nat n, busy? n normalizes to the identity function.? It > seems as though one could prove by induction on n that busy n > normalizes (with normal-order reduction) in something like 3 * n?+ 1 > beta-reductions. > > Any insights appreciated.? I observed the same behavior with Coq, by > the way.?? > > Best, > Aaron > ----------------------------------------------- > module Busy where > > data ? : Set where > ? zero : ?? > ? suc : ? ? ? > > {-# BUILTIN NATURAL ? #-} > > busy : ? ? ? ? ? > busy 0 = ? x ? x > busy (suc n) = ? x ? > ? let f = busy n in > ? ? f (f x) > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From ulf.norell at gmail.com Sat May 1 12:31:49 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Sat, 1 May 2021 12:31:49 +0200 Subject: [Agda] normalization question In-Reply-To: References: Message-ID: The key here is that function bodies are not shared. This is known as memoization and not something that you would do automatically. So even without Agda's naive treatment of let, when you say let f = busy n in ... you share the evaluation of `busy n` to `? x ? (code for body)`. Every time this function is evaluated the code for the body executes regardless of if you called it before. Implementing the example in Haskell has the same exponential performance. / Ulf On Sat, May 1, 2021 at 11:55 AM Martin Escardo wrote: > Regardless of evaluation strategy, there will be 2^n function > applications, in both busy and in busy'. Martin > > On 01/05/2021 09:00, Jesper at sikanda.be wrote: > > Hi Aaron, > > > > Agda does inlining of let-bindings during elaboration, so your > > definition is equivalent to > > > > busy (suc n) = ? x ? busy n (busy n x) > > > > for which it is not surprising that it's slow. However, what is > > surprising to me is that the following version is still slow: > > > > twice : (? ? ?) ? ? ? ? > > twice f x = f (f x) > > > > busy' : ? ? ? ? ? > > busy' 0 = ? x ? x > > busy' (suc n) = twice (busy' n) > > > > Here it looks to me that lazy evaluation should kick in and make the > > definition fast, but apparently that's not the case. Maybe one of the > > other developers knows more about this. > > > > -- Jesper > > > > On Sat, May 1, 2021 at 6:21 AM Aaron Stump > > wrote: > > > > Dear Agda community, > > > > I am doing some experiments with normalization, and am getting a > > surprising (to me) result. I have a function that I expected would > > normalize in linear time -- because I am expecting Agda will > > implement some kind of normal-order evaluation. But normalization > > seems to take exponential time. A self-contained version of the > > example is below. Asking Agda to normalize a term like busy 30 is > > prohibitively slow. > > > > For any nat n, busy n normalizes to the identity function. It > > seems as though one could prove by induction on n that busy n > > normalizes (with normal-order reduction) in something like 3 * n + 1 > > beta-reductions. > > > > Any insights appreciated. I observed the same behavior with Coq, by > > the way. > > > > Best, > > Aaron > > ----------------------------------------------- > > module Busy where > > > > data ? : Set where > > zero : ? > > suc : ? ? ? > > > > {-# BUILTIN NATURAL ? #-} > > > > busy : ? ? ? ? ? > > busy 0 = ? x ? x > > busy (suc n) = ? x ? > > let f = busy n in > > f (f x) > > > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > -- > Martin Escardo > http://www.cs.bham.ac.uk/~mhe > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaron-stump at uiowa.edu Sun May 2 06:09:40 2021 From: aaron-stump at uiowa.edu (Aaron Stump) Date: Sat, 1 May 2021 23:09:40 -0500 Subject: [Agda] normalization question In-Reply-To: References: Message-ID: Thanks, Jesper, Martin, and Ulf for your replies! Suppose we use a modification of the normal-order reduction strategy, where to normalize let x = t1 in t2 we first normalize t1 and then normalize t2 (and otherwise we use normal-order reduction). This is like being call-by-value for let-terms, and otherwise normal-order. Then busy n will normalize in O(n) steps, not O(2^n). Cedille actually implements this strategy, and sure enough, it can normalize busy 64, for example (Haskell, Agda, and Coq cannot). So Martin, even though I agree that there is an exponential-length reduction of busy n, I do not agree that all reductions are this length. This strategy would not help with your version, Jesper, as there we would use call-by-name for the application of twice to busy n, and then we would duplicate busy n (leading to exponential explosion). So your example shows that a cbv-let strategy would not be too robust! I do not believe this example requires some more sophisticated memoization, Ulf, as cbv-let (which is just a beta-reduction strategy, not some novel machinery for reduction) is sufficient. I have different example, based on this one, which does need machinery more like that of optimal beta to keep the time linear. For that variant and a bit more discussion, see my blog post of yesterday: https://queuea9.wordpress.com/2021/04/30/another-optimality-challenge/ Thanks again, Aaron On Sat, May 1, 2021 at 5:32 AM Ulf Norell wrote: > The key here is that function bodies are not shared. This is known as > memoization and not something > that you would do automatically. So even without Agda's naive treatment of > let, when you say > > let f = busy n in ... > > you share the evaluation of `busy n` to `? x ? (code for body)`. Every > time this function is evaluated the > code for the body executes regardless of if you called it before. > > Implementing the example in Haskell has the same exponential performance. > > / Ulf > > On Sat, May 1, 2021 at 11:55 AM Martin Escardo > wrote: > >> Regardless of evaluation strategy, there will be 2^n function >> applications, in both busy and in busy'. Martin >> >> On 01/05/2021 09:00, Jesper at sikanda.be wrote: >> > Hi Aaron, >> > >> > Agda does inlining of let-bindings during elaboration, so your >> > definition is equivalent to >> > >> > busy (suc n) = ? x ? busy n (busy n x) >> > >> > for which it is not surprising that it's slow. However, what is >> > surprising to me is that the following version is still slow: >> > >> > twice : (? ? ?) ? ? ? ? >> > twice f x = f (f x) >> > >> > busy' : ? ? ? ? ? >> > busy' 0 = ? x ? x >> > busy' (suc n) = twice (busy' n) >> > >> > Here it looks to me that lazy evaluation should kick in and make the >> > definition fast, but apparently that's not the case. Maybe one of the >> > other developers knows more about this. >> > >> > -- Jesper >> > >> > On Sat, May 1, 2021 at 6:21 AM Aaron Stump > > > wrote: >> > >> > Dear Agda community, >> > >> > I am doing some experiments with normalization, and am getting a >> > surprising (to me) result. I have a function that I expected would >> > normalize in linear time -- because I am expecting Agda will >> > implement some kind of normal-order evaluation. But normalization >> > seems to take exponential time. A self-contained version of the >> > example is below. Asking Agda to normalize a term like busy 30 is >> > prohibitively slow. >> > >> > For any nat n, busy n normalizes to the identity function. It >> > seems as though one could prove by induction on n that busy n >> > normalizes (with normal-order reduction) in something like 3 * n + 1 >> > beta-reductions. >> > >> > Any insights appreciated. I observed the same behavior with Coq, by >> > the way. >> > >> > Best, >> > Aaron >> > ----------------------------------------------- >> > module Busy where >> > >> > data ? : Set where >> > zero : ? >> > suc : ? ? ? >> > >> > {-# BUILTIN NATURAL ? #-} >> > >> > busy : ? ? ? ? ? >> > busy 0 = ? x ? x >> > busy (suc n) = ? x ? >> > let f = busy n in >> > f (f x) >> > >> > >> > >> > _______________________________________________ >> > Agda mailing list >> > Agda at lists.chalmers.se >> > https://lists.chalmers.se/mailman/listinfo/agda >> > >> > >> > >> > _______________________________________________ >> > Agda mailing list >> > Agda at lists.chalmers.se >> > https://lists.chalmers.se/mailman/listinfo/agda >> > >> >> -- >> Martin Escardo >> http://www.cs.bham.ac.uk/~mhe >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From nad at cse.gu.se Sun May 2 19:17:45 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Sun, 2 May 2021 19:17:45 +0200 Subject: [Agda] normalization question In-Reply-To: References: Message-ID: <6b2678b8-71e1-f2a8-d357-6c4da0333c44@cse.gu.se> On 2021-05-02 06:09, Aaron Stump wrote: > This is like being call-by-value for let-terms, and otherwise > normal-order. Then busy n will normalize in O(n) steps, not O(2^n). The term busy 3000 normalises quickly if you write the code in the following way: open import Agda.Builtin.Nat open import Agda.Builtin.Strict busy : Nat ? Nat ? Nat busy 0 = ? x ? x busy (suc n) = primForce (busy n) ? f ? ? x ? f (f x) However, this does not apply to the following piece of code: open import Agda.Builtin.Nat open import Agda.Builtin.Strict busy : Nat ? Nat ? Nat busy 0 = ? x ? x busy (suc n) = ? x ? primForce (busy n) ? f ? f (f x) -- /NAD From aaron-stump at uiowa.edu Mon May 3 05:43:16 2021 From: aaron-stump at uiowa.edu (Aaron Stump) Date: Sun, 2 May 2021 22:43:16 -0500 Subject: [Agda] normalization question In-Reply-To: <6b2678b8-71e1-f2a8-d357-6c4da0333c44@cse.gu.se> References: <6b2678b8-71e1-f2a8-d357-6c4da0333c44@cse.gu.se> Message-ID: Very interesting! I did not know about primForce. Thanks, Aaron On Sun, May 2, 2021 at 12:17 PM Nils Anders Danielsson wrote: > On 2021-05-02 06:09, Aaron Stump wrote: > > This is like being call-by-value for let-terms, and otherwise > > normal-order. Then busy n will normalize in O(n) steps, not O(2^n). > > The term busy 3000 normalises quickly if you write the code in the > following way: > > open import Agda.Builtin.Nat > open import Agda.Builtin.Strict > > busy : Nat ? Nat ? Nat > busy 0 = ? x ? x > busy (suc n) = > primForce (busy n) ? f ? > ? x ? f (f x) > > However, this does not apply to the following piece of code: > > open import Agda.Builtin.Nat > open import Agda.Builtin.Strict > > busy : Nat ? Nat ? Nat > busy 0 = ? x ? x > busy (suc n) = ? x ? > primForce (busy n) ? f ? > f (f x) > > -- > /NAD > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From benedikt.ahrens at gmail.com Mon May 3 20:41:16 2021 From: benedikt.ahrens at gmail.com (Benedikt Ahrens) Date: Mon, 3 May 2021 20:41:16 +0200 Subject: [Agda] 2nd Call for Contributions: (Virtual) Workshop on Homotopy Type Theory and Univalent Foundations (HoTT/UF'21) on July 17-18, 2021 Message-ID: <6cc34e40-186d-ce7e-3edd-3022f8aeda54@gmail.com> This is the Second Call for Contributions for the (Virtual) Workshop on Homotopy Type Theory and Univalent Foundations July 17-18, 2021, The Internet @ Buenos Aires, Argentina https://hott-uf.github.io/2021/ Co-located with FSCD 2021 https://fscd2021.dc.uba.ar/ Abstract submission deadline: May 25, 2021 Homotopy Type Theory is a young area of logic, combining ideas from several established fields: the use of dependent type theory as a foundation for mathematics, inspired by ideas and tools from abstract homotopy theory. Univalent Foundations are foundations of mathematics based on the homotopical interpretation of type theory. The goal of this workshop is to bring together researchers interested in all aspects of Homotopy Type Theory and Univalent Foundations: from the study of syntax and semantics of type theory to practical formalization in proof assistants based on univalent type theory. # Invited talks * Evan Cavallo (Carnegie Mellon University) * Peter LeFanu Lumsdaine (Stockholm University) * Anja Petkovic (University of Ljubljana) * Matthew Weaver (Princeton University) # Submissions * Abstract submission deadline: May 25, 2021 * Author notification: mid-June 2021 Submissions should consist of a title and an abstract, in pdf format, of no more than 2 pages, submitted via http://easychair.org/conferences/?conf=hottuf2021 Considering the broad background of the expected audience, we encourage authors to include information of pedagogical value in their abstract, such as motivation and context of their work. # Program committee * Benedikt Ahrens (University of Birmingham) * Carlo Angiuli (Carnegie Mellon University) * Paolo Capriotti (Technische Universit?t Darmstadt) * Floris van Doorn (University of Pittsburgh) * Favonia (University of Minnesota) * Eric Finster (University of Cambridge) * Chris Kapulkin (University of Western Ontario) * Paige Randall North (University of Pennsylvania) * Emily Riehl (Johns Hopkins University) * Christian Sattler (Chalmers University of Technology) * Andrew Swan (Carnegie Mellon University) # Organizers * Benedikt Ahrens (University of Birmingham) * Chris Kapulkin (University of Western Ontario) From Graham.Hutton at nottingham.ac.uk Tue May 4 11:31:25 2021 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Tue, 4 May 2021 09:31:25 +0000 Subject: [Agda] Journal of Functional Programming - Call for PhD Abstracts Message-ID: <260B8465-C20E-4028-8315-05B6A5A44A3E@nottingham.ac.uk> Dear all, If you or one of your students recently completed a PhD in the area of functional programming, please submit the dissertation abstract for publication in JFP: simple process, no refereeing, open access, ~200 published to date, deadline 31st May 2021. Please share! Best wishes, Graham Hutton ============================================================ CALL FOR PHD ABSTRACTS Journal of Functional Programming Deadline: 31st May 2021 http://tinyurl.com/jfp-phd-abstracts ============================================================ PREAMBLE: Many students complete PhDs in functional programming each year. As a service to the community, twice per year the Journal of Functional Programming publishes the abstracts from PhD dissertations completed during the previous year. The abstracts are made freely available on the JFP website, i.e. not behind any paywall. They do not require any transfer of copyright, merely a license from the author. A dissertation is eligible for inclusion if parts of it have or could have appeared in JFP, that is, if it is in the general area of functional programming. The abstracts are not reviewed. Please submit dissertation abstracts according to the instructions below. We welcome submissions from both the PhD student and PhD advisor/supervisor although we encourage them to coordinate. ============================================================ SUBMISSION: Please submit the following information to Graham Hutton by 31st May 2021: o Dissertation title: (including any subtitle) o Student: (full name) o Awarding institution: (full name and country) o Date of PhD award: (month and year; depending on the institution, this may be the date of the viva, corrections being approved, graduation ceremony, or otherwise) o Advisor/supervisor: (full names) o Dissertation URL: (please provide a permanently accessible link to the dissertation if you have one, such as to an institutional repository or other public archive; links to personal web pages should be considered a last resort) o Dissertation abstract: (plain text, maximum 350 words; you may use \emph{...} for emphasis, but we prefer no other markup or formatting; if your original abstract exceeds the word limit, please submit an abridged version within the limit) Please do not submit a copy of the dissertation itself, as this is not required. JFP reserves the right to decline to publish abstracts that are not deemed appropriate. ============================================================ PHD ABSTRACT EDITOR: Graham Hutton School of Computer Science University of Nottingham Nottingham NG8 1BB United Kingdom ============================================================ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From Jesper at sikanda.be Sat May 8 11:30:25 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sat, 8 May 2021 11:30:25 +0200 Subject: [Agda] Agda Implementors' Meeting XXXIV: Call for talks and participation Message-ID: The thirty-fourth Agda Implementors' Meeting will take place online from Monday 2021-06-07 to Friday 2021-06-12. The meeting will be organized in a similar way to AIM XXXIII, but the program is spread over a single week instead of two. See the wiki for details: https://wiki.portal.chalmers.se/agda/Main/AIMXXXIV You can register by editing the wiki page and adding your name. Alternatively, you can register by sending me an email with your name, affiliation, and time zone. Please also send me an email if you would like to give a talk, preferably before 2021-05-31. Best regards, Jesper -------------- next part -------------- An HTML attachment was scrubbed... URL: From carette at mcmaster.ca Sat May 8 13:23:58 2021 From: carette at mcmaster.ca (Jacques Carette) Date: Sat, 8 May 2021 07:23:58 -0400 Subject: [Agda] Agda Implementors' Meeting XXXIV: Call for talks and participation In-Reply-To: References: Message-ID: <69e4e3b4-ade7-fed9-7496-49ecfa978296@mcmaster.ca> The link that was sent actually goes to the last AIM. https://wiki.portal.chalmers.se/agda/Main/AIMXXXIV does work. Jacques On 2021-May-08 05:30 , Jesper Cockx wrote: > The thirty-fourth Agda Implementors' Meeting will take place online > from Monday 2021-06-07 to Friday 2021-06-12. The meeting will be > organized in a similar way to AIM XXXIII, but the program is spread > over a single week instead of two. See the wiki for details: > > https://wiki.portal.chalmers.se/agda/Main/AIMXXXIV > > > You can register by editing the wiki page and adding your name. > Alternatively, you can register by sending me an email with your name, > affiliation, and time zone. Please also send me an email if you would > like to give a talk, preferably before 2021-05-31. > > Best regards, > Jesper > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From bruno.bernardo at tutanota.com Mon May 10 13:26:21 2021 From: bruno.bernardo at tutanota.com (Bruno Bernardo) Date: Mon, 10 May 2021 13:26:21 +0200 (CEST) Subject: [Agda] FMBC 2021 - Final Call for Papers (Deadline extension) Message-ID: [ Please distribute, apologies for multiple postings. ] ======================================================================== 3rd International Workshop on Formal Methods for Blockchains (FMBC) - Final Call https://fmbc.gitlab.io/2021 July 18 or 19 (TBA), 2021, *online* Co-located with the 33nd International Conference on Computer-Aided Verification (CAV 2021) http://i-cav.org/2021/ ------------------------------------------------------------- IMPORTANT DATES -------------------------------- Abstract submission: May 16, 2021 (extended) Paper submission: May 23, 2021 (extended) Notification: June 30, 2021 (extended) Camera-ready: July 14, 2021 (extended) Workshop: July 18 or 19 (TBA), 2021 Deadlines are Anywhere on Earth: https://en.wikipedia.org/wiki/Anywhere_on_Earth -------------------------------- -------------------------------- TOPICS OF INTEREST -------------------------------- Blockchains are decentralized transactional ledgers that rely on cryptographic hash functions for guaranteeing the integrity of the stored data. Participants on the network reach agreement on what valid transactions are through consensus algorithms. Blockchains may also provide support for Smart Contracts. Smart Contracts are scripts of an ad-hoc programming language that are stored in the Blockchain and that run on the network. They can interact with the ledger?s data and update its state. These scripts can express the logic of possibly complex contracts between users of the Blockchain. Thus, Smart Contracts can facilitate the economic activity of Blockchain participants. With the emergence and increasing popularity of cryptocurrencies such as Bitcoin and Ethereum, it is now of utmost importance to have strong guarantees of the behavior of Blockchain software. These guarantees can be brought by using Formal Methods. Indeed, Blockchain software encompasses many topics of computer science where using Formal Methods techniques and tools are relevant: consensus algorithms to ensure the liveness and the security of the data on the chain, programming languages specifically designed to write Smart Contracts, cryptographic protocols, such as zero-knowledge proofs, used to ensure privacy, etc. This workshop is a forum to identify theoretical and practical approaches of formal methods for Blockchain technology. Topics include, but are not limited to: * Formal models of Blockchain applications or concepts * Formal methods for consensus protocols * Formal methods for Blockchain-specific cryptographic primitives or protocols * Design and implementation of Smart Contract languages * Verification of Smart Contracts -------------------------------- -------------------------------- SUBMISSION -------------------------------- Submit original manuscripts (not published or considered elsewhere) with a page limit of 12 pages for full papers and 6 pages for short papers (excluding bibliography and short appendix of up to 5 additional pages). Alternatively you may also submit an extended abstract of up to 3 pages (including bibliography) summarizing your ongoing work in the area of formal methods and blockchain. Authors of selected extended-abstracts are invited to give a short lightning talk. Submission link: https://easychair.org/conferences/?conf=fmbc2021 Authors are encouraged to use LaTeX and prepare their submissions according to the instructions and styling guides for OASIcs provided by Dagstuhl. Instructions for authors: https://submission.dagstuhl.de/documentation/authors#oasics At least one author of an accepted paper is expected to present the paper at the workshop as a registered participant. -------------------------------- -------------------------------- PROCEEDINGS -------------------------------- All submissions will be peer-reviewed by at least three members of the program committee for quality and relevance. Accepted regular papers (full and short papers) will be included in the workshop proceedings, published as a volume of the OpenAccess Series in Informatics (OASIcs) by Dagstuhl. -------------------------------- -------------------------------- INVITED SPEAKER -------------------------------- David Dill, Lead Researcher, Blockchain, Novi/Facebook, USA https://research.fb.com/people/dill-david/ -------------------------------- -------------------------------- PROGRAM COMMITTEE -------------------------------- PC CO-CHAIRS * Bruno Bernardo (Nomadic Labs, France) (bruno at nomadic-labs.com) * Diego Marmsoler (University of Exeter, UK) (D.Marmsoler at exeter.ac.uk) PC MEMBERS * Wolfgang Ahrendt (Chalmers University of Technology, Sweden) * Lacramioara Astefanoei (Nomadic Labs, France) * Massimo Bartoletti (University of Cagliari, Italy) * Joachim Breitner (Dfinity Foundation, Germany) * Achim Brucker (University of Exeter, UK) * Zaynah Dargaye (Nomadic Labs, France) * J?r?mie Decouchant (TU Delft, Netherlands) * Dana Drachsler Cohen (Technion, Israel) * Ansgar Fehnker (University of Twente, Netherlands) * Maurice Herlihy (Brown University, USA) * Lars Hupel (INNOQ, Germany) * Florian Kammueller (Middlesex University London, UK) * Igor Konnov (Informal Systems, Austria) * Andreas Lochbihler (Digital Asset, Switzerland) * Sim?o Melo de Sousa (Universidade da Beira Interior, Portugal) * Karl Palmskog (KTH, Sweden) * Maria Potop-Butucaru (Sorbonne Universit?, France) * Andreas Rossberg (Dfinity Foundation, Germany) * Albert Rubio (Complutense University of Madrid, Spain) * C?sar Sanchez (Imdea, Spain) * Clara Schneidewind (TU Wien, Austria) * Ilya Sergey (Yale-NUS College/NUS, Singapore) * Mark Staples (CSIRO Data61, Australia) * Meng Sun (Peking University, China) * Simon Thompson (University of Kent, UK) * Josef Widder (Informal Systems, Austria) From chisvasileandrei at gmail.com Wed May 12 11:13:46 2021 From: chisvasileandrei at gmail.com (Andrei Chis) Date: Wed, 12 May 2021 11:13:46 +0200 Subject: [Agda] CFP: SLE 2021 - 14th ACM SIGPLAN International Conference on Software Language Engineering Message-ID: ------------------------------------------------------------------------ 14th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2021) October 17-19, 2021 Chicago, Illinois https://conf.researchr.org/home/sle-2021 http://www.sleconf.org/2021 Follow us on twitter: https://twitter.com/sleconf ------------------------------------------------------------------------ We are pleased to invite you to submit papers to the 14th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2021), held in conjunction with SPLASH, GPCE and SAS 2021. Based on the future developments the conference will be hosted in Chicago, Illinois, United States on October 17-19, 2021 or will be held as a virtual event. --------------------------- Scope --------------------------- The ACM SIGPLAN International Conference on Software Language Engineering (SLE) is devoted to the principles of software languages: their design, their implementation, and their evolution. With the ubiquity of computers, software has become the dominating intellectual asset of our time. In turn, this software depends on software languages, namely the languages it is written in, the languages used to describe its environment, and the languages driving its development process. Given that everything depends on software and that software depends on software languages, it seems fair to say that for many years to come, everything will depend on software languages. Software language engineering (SLE) is the discipline of engineering languages and their tools required for the creation of software. It abstracts from the differences between programming languages, modelling languages, and other software languages, and emphasizes the engineering facet of the creation of such languages, that is, the establishment of the scientific methods and practices that enable the best results. While SLE is certainly driven by its metacircular character (software languages are engineered using software languages), SLE is not self-satisfying: its scope extends to the engineering of languages for all and everything. Like its predecessors, the 14th edition of the SLE conference, SLE 2021, will bring together researchers from different areas united by their common interest in the creation, capture, and tooling of software languages. It overlaps with traditional conferences on the design and implementation of programming languages, model-driven engineering, and compiler construction, and emphasizes the fusion of their communities. To foster the latter, SLE traditionally fills a two-day program with a single track, with the only temporal overlap occurring between co-located events. --------------------------- Topics of Interest --------------------------- SLE 2021 solicits high-quality contributions in areas ranging from theoretical and conceptual contributions, to tools, techniques, and frameworks in the domain of software language engineering. Broadly speaking, SLE covers software language engineering rather than engineering a specific software language. Topics of interest include, but are not limited to: * Software Language Design and Implementation - Approaches to and methods for language design - Static semantics (e.g., design rules, well-formedness constraints) - Techniques for specifying behavioral / executable semantics - Generative approaches (incl. code synthesis, compilation) - Meta-languages, meta-tools, language workbenches * Software Language Validation - Verification and formal methods for languages - Testing techniques for languages - Simulation techniques for languages * Software Language Integration and Composition - Coordination of heterogeneous languages and tools - Mappings between languages (incl. transformation languages) - Traceability between languages - Deployment of languages to different platforms * Software Language Maintenance - Software language reuse - Language evolution - Language families and variability * Domain-specific approaches for any aspects of SLE (design, implementation, validation, maintenance) * Empirical evaluation and experience reports of language engineering tools - User studies evaluating usability - Performance benchmarks - Industrial applications --------------------------- Important Dates --------------------------- All dates are Anywhere on Earth. * Mon 5 Jul 2021 - Abstract Submissions * Fri 9 Jul 2021 - Paper Submissions * Wed 1 Sep 2021 - Review Notification * Wed-Fri 1-3 Sep 2021 - Author Response Period * Mon 13 Sep 2021 - Notification * Wed 15 Sept 2021 - Artifact Submissions * Tue 28 Sep 2021 - Artifact Kick-the-tires Author Response * Tue 12 Oct 2021 - Artifact Notification * Sun-Tue 17-19 Oct 2021 - SLE Conference --------------------------- Types of Submissions --------------------------- SLE 2021 solicits three types of papers: * Research papers These are "traditional" papers detailing research contributions to SLE. These papers have a limit of 12 pages, and may optionally include 8 further pages of bibliography/appendices * Tool papers These are papers which focus on the tooling aspects which are often forgotten or neglected in research papers. A good tool paper focuses on practical insights that are likely to be useful to other implementers or users in the future. Any of the SLE topics of interest are appropriate areas for tool demonstrations. Submissions must not exceed 5 pages and may optionally include 1 further page of bibliography / appendices. They may optionally come with an appendix with a demo outline / screenshots and/or a short video/screencast illustrating the tool. The title of a Tool paper must start with "Tool Demo:". *New ideas / vision papers These are papers on forward-looking, innovative research in software language engineering. Our aim here is to accelerate the exposure of the software language engineering community to early yet potentially ground-breaking research results, or to techniques and perspectives that challenge the status quo in the discipline. New ideas / vision papers must not exceed 5 pages, and may optionally include 1 further page of bibliography / appendices. The title of a new ideas / vision papers must start with "New Ideas:" or "Vision:". --------------------------- Artifact Evaluation --------------------------- For the sixth year, SLE will use an evaluation process for assessing the quality of the artifacts on which papers are based to foster the culture of experimental reproducibility. Authors of accepted papers are invited to submit artifacts. For more information, please have a look at the Artifact Evaluation page (http://www.sleconf.org/2021/ArtifactEvaluation.html). --------------------------- Submission --------------------------- Submissions have to use the ACM SIGPLAN Conference Format ?acmart? ( http://sigplan.org/Resources/Author/#acmart-format); please make sure that you always use the latest ACM SIGPLAN acmart LaTeX template( https://www.acm.org/binaries/content/assets/publications/consolidated-tex-template/acmart-master.zip), and that the document class definition is \documentclass[sigplan,anonymous,review]{acmart}. Do not make any changes to this format! Ensure that your submission is legible when printed on a black and white printer. In particular, please check that colors remain distinct and font sizes in figures and tables are legible. To increase fairness in reviewing, a double-blind review process has become standard across SIGPLAN conferences. In this line, SLE will follow the double-blind process. Author names and institutions should be omitted from submitted papers, and references to the authors? own related work should be in the third person. No other changes are necessary, and authors will not be penalized if reviewers are able to infer their identities in implicit ways. All submissions must be in PDF format. Concurrent Submissions: Papers must describe unpublished work that is not currently submitted for publication elsewhere as described by SIGPLAN?s Republication Policy ( http://www.sigplan.org/Resources/Policies/Republication). Submitters should also be aware of ACM?s Policy and Procedures on Plagiarism ( http://www.acm.org/publications/policies/plagiarism_policy). Submissions that violate these policies will be desk-rejected. Submission Site: Submissions will be accepted at https://sle21.hotcrp.com/ --------------------------- Reviewing Process --------------------------- All submitted papers will be reviewed by at least three members of the program committee. Research papers and tool papers will be evaluated concerning novelty, correctness, significance, readability, and alignment with the conference call. New ideas / vision papers will be evaluated primarily concerning novelty, significance, readability, and alignment with the conference call. For fairness reasons, all submitted papers must conform to the above instructions. Submissions that violate these instructions may be rejected without review, at the discretion of the PC chairs. --------------------------- Awards --------------------------- * Distinguished paper: Award for most notable paper, as determined by the PC chairs based on the recommendations of the programme committee. * Distinguished reviewer: Award for distinguished reviewer, as determined by the PC chairs. * Distinguished artifact: Award for the artifact most significantly exceeding expectations, as determined by the AEC chairs based on the recommendations of the artifact evaluation committee. --------------------------- Publication --------------------------- All accepted papers will be published in the ACM Digital Library. AUTHORS TAKE NOTE: The official publication date is the date the proceedings are made available in the ACM Digital Library. This date may be up to two weeks prior to the first day of the conference. The official publication date affects the deadline for any patent filings related to published work. --------------------------- Organisation --------------------------- Chairs: * General chair: Eelco Visser, Delft University of Technology, Netherlands * Program co-chair: Dimitris Kolovos, University of York, United Kingdom * Program co-chair: Emma S?derberg, Lund University, Sweden * Artefact Evaluation co-chair: Elias Castegren, KTH, Sweden * Artefact Evaluation co-chair: Andreas Wortmann, RWTH Aachen University, Germany Program Committee: Vincent Aranega, University of Lille, France Mikhail Barash, University of Bergen, Norway Melanie Bats, Obeo, France David Broman, KTH, Sweden Shigeru Chiba, University of Tokyo, Japan Alfonso de la Vega, University of York, United Kingdom Juan De Lara, Universidad Aut?noma de Madrid, Spain Davide Di Ruscio, University of L'Aquila, Italy Marcos Didonet del Fabro, Universidade Federal do Paran?, Brazil Juergen Dingel, Queen's University, Canada Michalis Famelis, University of Montreal, Canada Bernd Fischer, Stellenbosch University, South Africa Niklas Fors, Lund University, Sweden Antonio Garcia Dominguez, Aston University, United Kingdom Esther Guerra, Universidad Aut?noma de Madrid, Spain G?rel Hedin, Lund University, Sweden Stuart Hutchesson, Independent, United Kingdom Adrian Johnstone, Royal Holloway, United Kingdom Paddy Krishnan, Oracle Labs, Australia James Noble, Victoria University of Wellington, New Zealand Carlos Olarte, ECT UFRN, Brazil Jo?o Saraiva, HASLab / INESC TEC and Universidade do Minho, Portugal Anthony Sloane, Macquarie University, Australia Daniel Str?ber, Radboud University , Netherlands Ulyana Tikhonova, CWI, Netherlands Mark van der Brand, TU Eindhoven, Netherlands Juan Manuel Vara, Universidad Rey Juan Carlos, Spain Ran Wei, Dalian University of Technology, China Bahman Zamani, University of Isfahan, Iran --------------------------- Contact --------------------------- For additional information, clarification, or answers to questions, please contact the Programme Chairs (Emma S?derberg and Dimitris Kolovos). -------------- next part -------------- An HTML attachment was scrubbed... URL: From bove at chalmers.se Wed May 12 12:14:49 2021 From: bove at chalmers.se (Ana Bove) Date: Wed, 12 May 2021 12:14:49 +0200 Subject: [Agda] CfP: CompLingInfoReasAI'21 / Computational Linguistics, Information, Reasoning, and AI 2021 Message-ID: <411394a1-2cbb-d14d-515f-8198e2490cb0@chalmers.se> Dear All, Despite the name of the event, it does fit the work done by many of us in this list! So please consider submitting even it time is a bit tight. --------------- CALL FOR PAPERS Special Session: Computational Linguistics, Information, Reasoning, and AI 2021 (CompLingInfoReasAI'21) Salamanca, Spain, 6th-8th October, 2021, HYBRID https://www.dcai-conference.net/special-sessions/clirai ** Extended Deadline for paper submissions: 28th May, 2021 ** SCOPE: Computational and technological developments that incorporate natural language and reasoning methods are proliferating. Adequate coverage encounters difficult problems related to partiality, underspecification, agents, and context dependency, which are signature features of information in nature, natural languages, and reasoning. The session covers theoretical work, applications, approaches, and techniques for computational models of information, language (artificial, human, or natural in other ways), reasoning. The goal is to promote computational systems and related models of thought, mental states, reasoning, and other cognitive processes. TOPICS: We invite contributions relevant to the following topics, without being limited to them, across approaches, methods, theories, implementations, and applications: - Theorem provers and assistants - Model checkers - Theory of computation - Theory of information - Computational methods of inferences in natural language - Computational theories and systems of reasoning in natural language - Transfer of reasoning in natural language to theorem provers, or vice versa - Transfer of reasoning between natural language, theorem provers, model checkers, and various computational assistants - Computational approaches of computational linguistics for domain specific areas - Theories for applications to language, information processing, reasoning - Type theories for applications to language, information processing, reasoning - Computational grammar - Computational syntax - Computational semantics of natural languages - Computational syntax-semantics interface - Interfaces between morphology, lexicon, syntax, semantics, speech, text, pragmatics - Parsing - Multilingual processing - Large-scale grammars of natural languages - Models of computation and algorithms for linguistics, natural language processing, argumentation - Computational models of partiality, underspecification, and context-dependency - Models of situations, contexts, and agents, for applications to computational linguistics - Information about space and time in language models and processing == - Data science in language processing - Machine learning of language and reasoning - Interdisciplinary methods - Integration of formal, computational, model theoretic, graphical, diagrammatic, statistical, and other related methods - Logic for information extraction or expression in written or spoken language - Logic for information integrations of diagrams, with written and / or spoken language == - Formal models of argumentations - Interactive computation, reasoning, argumentation - Computation with heterogeneous information - Reasoning with heterogeneous and/or inconsistent information - Dialog, interactions - Interdisciplinary approaches to language, computation, reasoning, memory - Argumentation in AI applications, e.g., to business, economy, justice, health, medical sciences ?== - Language processing based on biological fundamentals of information and languages - Computational neuroscience of language - etc. IMPORTANT DATES Deadline for paper submissions: 28th May, 2021 Notification of acceptance: 18th June, 2021 Camera-ready papers: 2st July, 2021 Conference: 6th-8th October, 2021 PAPER SUBMISSION https://www.dcai-conference.net/special-sessions https://www.dcai-conference.net/submission The papers must consist of original, relevant, and previously unpublished sound research results related to any of the topics of the Special Session CompLingInfoReasAI'21. SUBMITTING PAPERS DCAI Special Session papers must be formatted according to the Springer AISC Template, with a maximum length of 10 pages in length, including figures and references. All proposed papers must be submitted in electronic form (PDF format) using the Paper Submission Page. PUBLICATION All accepted, registered, and presented papers will be published by Advances in Intelligent Systems and Computing, AISC, series of Springer Verlag. At least one of the authors of an accepted paper will be required to register and attend the symposium to present the paper in order to include it in the conference proceedings. CHAIRS Ana Bove, Chalmers University of Technology, Gothenburg, Sweden Roussanka Loukanova, Institute of Mathematics and Informatics, Bulgarian Academy of Sciences, Bulgaria and Stockholm University, Sweden Sara Rodr?guez, University of Salamanca, Spain ====== -------------- next part -------------- An HTML attachment was scrubbed... URL: From niccolo.veltri at gmail.com Thu May 13 10:27:24 2021 From: niccolo.veltri at gmail.com (=?UTF-8?Q?Niccol=c3=b2_Veltri?=) Date: Thu, 13 May 2021 11:27:24 +0300 Subject: [Agda] LOPSTR 2021 - Call for Papers: Extended Deadline Message-ID: <42fe989c-43cc-3366-7669-d500e3ca6d03@gmail.com> 31st International Symposium on Logic-Based Program Synthesis and Transformation LOPSTR 2021 http://saks.iasi.cnr.it/lopstr21/ Tallinn (Estonia) and Virtual September 7-9, 2021 (co-located with PPDP 2021) *** EXTENDED SUBMISSION DEADLINE: June 7, 2021 *** * The conference will be held as a hybrid (blended) meeting, both in-person and virtual. * ============================================================ The aim of the LOPSTR series is to stimulate and promote international research and collaboration on logic-based program development. LOPSTR is open to contributions in logic-based program development in any language paradigm. LOPSTR has a reputation for being a lively, friendly forum for presenting and discussing work in progress. Formal proceedings are produced only after the symposium so that authors can incorporate this feedback in the published papers. The 31st International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2021) will be held as a hybrid (blended) meeting, both in-person (at the Teachers' House in Tallinn, Estonia) and virtual. Previous symposia were held in Bologna (as a virtual meeting), Porto, Frankfurt am Main, Namur, Edinburgh, Siena, Canterbury, Madrid, Leuven, Odense, Hagenberg, Coimbra, Valencia, Kongens Lyngby, Venice, London, Verona, Uppsala, Madrid, Paphos, London, Venice, Manchester, Leuven, Stockholm, Arnhem, Pisa, Louvain-la-Neuve, and Manchester. LOPSTR 2021 will be co-located with PPDP 2021 (International Symposium on Principles and Practice of Declarative Programming). Topics of interest cover all aspects of logic-based program development, all stages of the software life cycle, and issues of both programming-in-the-small and programming-in-the-large, including, but not limited to: ? - synthesis ? - transformation ? - specialization ? - composition ? - optimization ? - inversion ? - specification ? - analysis and verification ? - testing and certification ? - program and model manipulation ? - machine learning for program development ? - verification and testing of machine learning systems ? - transformational techniques in SE ? - applications and tools Both full papers and extended abstracts describing foundations and applications in these areas are welcome. Survey papers that present some aspects of the above topics from a new perspective and papers that describe experience with industrial applications are also welcome. Papers must describe original work, be written and presented in English, and must not substantially overlap with papers that have been published or that are simultaneously submitted to a journal, conference, or workshop with refereed proceedings. Work that already appeared in unpublished or informally published workshop proceedings may be submitted (please contact the PC chairs in case of questions). * Important Dates * Paper/Extended abstract submission (extended): June 7, 2021 Notification (extended): July 16, 2021 Camera-ready (for electronic pre-proceedings): August 20, 2021 Symposium: September 7-9, 2021 Revised paper submission: November 1, 2021 (AoE) Notification: December 1, 2021 Final version (for post-proceedings): January 16, 2022 * Submission Guidelines * Authors should submit an electronic copy of the paper (written in English) in PDF, formatted in LNCS style. Each submission must include on its first page the paper title; authors and their affiliations; contact author's email; abstract; and three to four keywords which will be used to assist the PC in selecting appropriate reviewers for the paper. Page numbers (and, if possible, line numbers) should appear on the manuscript to help the reviewers in writing their report. Full papers cannot exceed 15 pages excluding references. Extended abstracts cannot exceed 8 pages excluding references. Additional pages may be used for appendices not intended for publication. Reviewers are not required to read the appendices, and thus papers should be intelligible without them. Papers should be submitted via EasyChair: https://easychair.org/conferences/?conf=lopstr2021 * Proceedings * The formal post-conference proceedings will be published by Springer in the Lecture Notes in Computer Science series as in previous years. Full papers can be directly accepted for publication in the formal proceedings, or accepted only for presentation at the symposium and inclusion in informal proceedings. After the symposium, all authors of extended abstracts and full papers accepted only for presentation will be invited to revise and/or extend their submissions. Then, after another round of reviewing, these revised papers may also be published in the formal proceedings. Authors should consult Springer?s authors? guidelines and use their proceedings templates for the preparation of their papers. Springer encourages authors to include their ORCIDs in their papers. * Best paper awards * Thanks to Springer's sponsorship, two awards (including a 500 EUR prize each) will be given at LOPSTR 2021. The program committee will select the winning papers based on relevance, originality and technical quality but may also take authorship into account (e.g. a student paper). * Invited Speaker * TBA * Program Committee * Roberto Amadini, University of Bologna, Italy Sabine Broda, University of Porto, Portugal Maximiliano Cristi?, CIFASIS-UNR, Argentina W?odzimierz Drabent, IPI PAN, Poland & Link?ping University, Sweden Catherine Dubois, ENSIIE-Samovar, France Gregory Duck, National University of Singapore, Singapore Fabio Fioravanti, University of Chieti-Pescara, Italy Jeremy Gibbons, University of Oxford, UK Gopal Gupta, University of Texas at Dallas, USA Geoff Hamilton, Dublin City University, Ireland Michael Hanus, Kiel University, Germany Bishoksan Kafle, IMDEA Software Institute, Spain Maja Kirkeby, Roskilde University, Denmark Temur Kutsia, RISC J. Kepler University of Linz, Austria Michael Leuschel, University of D?sseldorf, Germany Pedro L?pez-Garc?a, IMDEA Software Institute & CSIC, Spain Jacopo Mauro, University of Southern Denmark, Denmark Fred Mesnard, Universit? de la R?union, France Alberto Momigliano, University of Milano, Italy Jorge A. Navas, SRI International, USA Naoki Nishida, Nagoya University, Japan Alicia Villanueva, Universitat Polit?cnica de Val?ncia, Spain * Program Chairs * Emanuele De Angelis, IASI-CNR, Italy Wim Vanhoof, University of Namur, Belgium * Local organisation * Niccol? Veltri, Tallinn University of Technology, Estonia * Contact * For more information, please contact the Program Committee Chairs: emanuele.deangelis at iasi.cnr.it, wim.vanhoof at unamur.be From mechvel at scico.botik.ru Mon May 17 18:57:01 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 17 May 2021 19:57:01 +0300 Subject: [Agda] comparing performance to Coq Message-ID: <830405f947772051e2e5c0dbfedd0760@scico.botik.ru> People, has anybody compared the performance of the Agda programs for ordinary computation (without proofs) to similar programs in Coq (in Gallina langage?) ? I mean Agda 2.6.1 + MAlonzo. For example: f : List Nat -> Bool f xs = let rs = reverse xs ys = sortByInsert xs ys' = sortByInsert rs zs = sortByMerge xs zs' = sortByMerge rs in ys =?= ys' and ys =?= zs and ys =?= zs' For example, xs = [1 .. 1000]. Or maybe, other examples. Thanks, ------ Sergei From benedikt.ahrens at gmail.com Mon May 17 21:45:28 2021 From: benedikt.ahrens at gmail.com (Benedikt Ahrens) Date: Mon, 17 May 2021 15:45:28 -0400 Subject: [Agda] Postdoc position (7 months) on type theory, working remotely is possible Message-ID: Dear All, I am advertising a short (7 months) postdoc position with me. The job is physically located in Birmingham, UK, but can be done remotely. The starting date is flexible, but the end date is fixed at 28 February 2022 (which is the end of the project that funds this position). Background: the current post holder, Jacopo Emmenegger, is moving on to a prestigious fellowship [1]. The official advertisement and application form are located at [2]. For any questions, please contact me at b.ahrens at cs.bham.ac.uk . Best, Benedikt [1] https://kaw.wallenberg.org/en/jacopo-emmenegger [2] https://bham.taleo.net/careersection/external/jobdetail.ftl?job=210000PQ From andrei.h.popescu at gmail.com Wed May 19 21:18:23 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Wed, 19 May 2021 20:18:23 +0100 Subject: [Agda] Position of Lecturer or Senior Lecturer in Cybersecurity at University of Sheffield Message-ID: Greetings, The Department of Computer Science at University of Sheffield has an open position of Lecturer or Senior Lecturer in Cybersecurity. Details can be found here: https://www.jobs.ac.uk/job/CFN168/lecturer-senior-lecturer-in-cybersecurity Note that "formalisation and proof of system security properties" is listed as a topic of interest. Women are particularly encouraged to apply. All applicants will be given equal consideration. Best wishes, Andrei From jsiek at indiana.edu Thu May 20 16:16:06 2021 From: jsiek at indiana.edu (Siek, Jeremy) Date: Thu, 20 May 2021 14:16:06 +0000 Subject: [Agda] another level problem Message-ID: I'd like to prove: EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ? From earlier threads it sounds like reasoning about equality of levels is mostly automated in Agda. So my question is how to use assumptions such as ??? ? ??? ? ???? Cheers, Jeremy -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsiek at indiana.edu Thu May 20 16:32:28 2021 From: jsiek at indiana.edu (Siek, Jeremy) Date: Thu, 20 May 2021 14:32:28 +0000 Subject: [Agda] another level problem In-Reply-To: References: Message-ID: Chuckle... and just minutes later I find a solution: ?-cong : ?{a b c d : Level} ? (a ? b) ? (c ? d) ? a ? c ? b ? d ?-cong refl refl = refl EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ?-cong eq1 eq2 Cheers, Jeremy ________________________________ From: Agda on behalf of Siek, Jeremy Sent: Thursday, May 20, 2021 10:16 AM To: Agda List Subject: [Agda] another level problem I'd like to prove: EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ? From earlier threads it sounds like reasoning about equality of levels is mostly automated in Agda. So my question is how to use assumptions such as ??? ? ??? ? ???? Cheers, Jeremy -------------- next part -------------- An HTML attachment was scrubbed... URL: From felix.wellen at posteo.de Thu May 20 17:59:23 2021 From: felix.wellen at posteo.de (Felix Cherubini) Date: Thu, 20 May 2021 15:59:23 +0000 Subject: [Agda] Absurd patterns and HoTT Message-ID: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> Dear all, are function definitions using the absurd pattern compatible with Book-HoTT? With compatible, I mean, that there should be a general procedure that translates definitions by pattern matching from Agda to Book-HoTT. Here is an example: Let Bool be the type with constructors true and false and Empty the type without constructors, then ok : true == false -> Empty ok () works in Agda (for the usual inductive definition of ==). As I understand it, Agda checks if for any constructor of the domain, the unification problems for all arguments end in conflict. Or in other words, the absurd pattern is a valid definition for a function on an inductive type, if it is not possible to find a constructor of the inductive type together with arguments make it have the right type. This is very different from any proof of that fact I know in Book-HoTT (one would be use a transport along the equality true==false that lands in Empty). And I also don't know how the general argument ("there is no valid constructor call, therefore...") could be done in HoTT. Thanks in advance for sheding any light on the matter! Best, Felix From m.escardo at cs.bham.ac.uk Thu May 20 18:34:33 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Thu, 20 May 2021 17:34:33 +0100 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> Message-ID: <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> In MLTT, the underlying type theory of Book-HoTT, you can't prove true == false -> Empty without a universe. Your "ok" proof doesn't use a universe. It is not clear what kind of type theory Agda is implementing here. Martin On 20/05/2021 16:59, felix.wellen at posteo.de wrote: > Dear all, > > are function definitions using the absurd pattern compatible with > Book-HoTT? > > With compatible, I mean, that there should be a general procedure that > translates definitions by pattern matching from Agda to Book-HoTT. > > Here is an example: Let Bool be the type with constructors true and > false and Empty the type without constructors, then > > ok : true == false -> Empty > ok () > > works in Agda (for the usual inductive definition of ==). As I > understand it, Agda checks if for any constructor of the domain, the > unification problems for all arguments end in conflict. Or in other > words, the absurd pattern is a valid definition for a function on an > inductive type, if it is not possible to find a constructor of the > inductive type together with arguments make it have the right type. > > This is very different from any proof of that fact I know in Book-HoTT > (one would be use a transport along the equality true==false that lands > in Empty). And I also don't know how the general argument ("there is no > valid constructor call, therefore...") could be done in HoTT. > > Thanks in advance for sheding any light on the matter! > Best, > Felix > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From dan.doel at gmail.com Thu May 20 18:39:26 2021 From: dan.doel at gmail.com (Dan Doel) Date: Thu, 20 May 2021 12:39:26 -0400 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> Message-ID: Some absurd patterns are usable with HoTT. The obvious one is the absurd match on the empty type: data Empty : Set where Cubical Agda will let you absurd match on that type. The absurd pattern in your example is supposed to be justified by the fact that constructors are always disjoint (and injective). So, if unification fails between two concrete terms, then the identity type is empty and the absurd match is valid. This is no longer universally true in HoTT. The whole point of HITs, for instance, is to add examples where this reasoning fails, so e.g. the constructors for propositional truncation are not disjoint/injective. It is still the case that absurd matches on the identity type would be justified for booleans. However, since it's not justified in general, you have to write the proof yourself, because you can't just assume that you could always write the universe-based proof (and Agda has no mechanism for specifying which particular types it would still work for). On Thu, May 20, 2021 at 11:59 AM Felix Cherubini wrote: > > Dear all, > > are function definitions using the absurd pattern compatible with Book-HoTT? > > With compatible, I mean, that there should be a general procedure that > translates definitions by pattern matching from Agda to Book-HoTT. > > Here is an example: Let Bool be the type with constructors true and > false and Empty the type without constructors, then > > ok : true == false -> Empty > ok () > > works in Agda (for the usual inductive definition of ==). As I > understand it, Agda checks if for any constructor of the domain, the > unification problems for all arguments end in conflict. Or in other > words, the absurd pattern is a valid definition for a function on an > inductive type, if it is not possible to find a constructor of the > inductive type together with arguments make it have the right type. > > This is very different from any proof of that fact I know in Book-HoTT > (one would be use a transport along the equality true==false that lands > in Empty). And I also don't know how the general argument ("there is no > valid constructor call, therefore...") could be done in HoTT. > > Thanks in advance for sheding any light on the matter! > Best, > Felix > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From felix.wellen at posteo.de Thu May 20 18:42:24 2021 From: felix.wellen at posteo.de (Felix Cherubini) Date: Thu, 20 May 2021 16:42:24 +0000 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> Message-ID: <39974707-84f7-f2d0-3098-9919667e6dfb@posteo.de> Thanks Martin! Does it mean I shouldn't use absurd patterns (except if they clearly correspond to the elimination rule for the Empty type) when using Agda as a proof assistant for HoTT? Is it possible to enforce that? I didn't find an option mentioning anything about absurd... On 5/20/21 6:34 PM, Martin Escardo wrote: > In MLTT, the underlying type theory of Book-HoTT, you can't prove true > == false -> Empty without a universe. Your "ok" proof doesn't use a > universe. It is not clear what kind of type theory Agda is implementing > here. Martin > > On 20/05/2021 16:59, felix.wellen at posteo.de wrote: >> Dear all, >> >> are function definitions using the absurd pattern compatible with >> Book-HoTT? >> >> With compatible, I mean, that there should be a general procedure that >> translates definitions by pattern matching from Agda to Book-HoTT. >> >> Here is an example: Let Bool be the type with constructors true and >> false and Empty the type without constructors, then >> >> ok : true == false -> Empty >> ok () >> >> works in Agda (for the usual inductive definition of ==). As I >> understand it, Agda checks if for any constructor of the domain, the >> unification problems for all arguments end in conflict. Or in other >> words, the absurd pattern is a valid definition for a function on an >> inductive type, if it is not possible to find a constructor of the >> inductive type together with arguments make it have the right type. >> >> This is very different from any proof of that fact I know in Book-HoTT >> (one would be use a transport along the equality true==false that lands >> in Empty). And I also don't know how the general argument ("there is no >> valid constructor call, therefore...") could be done in HoTT. >> >> Thanks in advance for sheding any light on the matter! >> Best, >> Felix >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > From fdhzs2010 at hotmail.com Thu May 20 18:46:38 2021 From: fdhzs2010 at hotmail.com (Jason -Zhong Sheng- Hu) Date: Thu, 20 May 2021 16:46:38 +0000 Subject: [Agda] another level problem In-Reply-To: References: , Message-ID: I find it's very strange that you can write equalities between universe levels, as it sounds to me Level should live in some metalevel. Why I in cubical agda lives in Set omega but Level only lives in Set? Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Agda on behalf of Siek, Jeremy Sent: May 20, 2021 10:32 AM To: Agda List Subject: Re: [Agda] another level problem Chuckle... and just minutes later I find a solution: ?-cong : ?{a b c d : Level} ? (a ? b) ? (c ? d) ? a ? c ? b ? d ?-cong refl refl = refl EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ?-cong eq1 eq2 Cheers, Jeremy ________________________________ From: Agda on behalf of Siek, Jeremy Sent: Thursday, May 20, 2021 10:16 AM To: Agda List Subject: [Agda] another level problem I'd like to prove: EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ? From earlier threads it sounds like reasoning about equality of levels is mostly automated in Agda. So my question is how to use assumptions such as ??? ? ??? ? ???? Cheers, Jeremy -------------- next part -------------- An HTML attachment was scrubbed... URL: From puttamalac at gmail.com Thu May 20 18:56:33 2021 From: puttamalac at gmail.com (=?UTF-8?B?QW5kcsOhcyBLb3bDoWNz?=) Date: Thu, 20 May 2021 18:56:33 +0200 Subject: [Agda] another level problem In-Reply-To: References: Message-ID: Making Level a first-class type, and putting it in the smallest universe, is OK: https://arxiv.org/abs/2103.00223 Jason -Zhong Sheng- Hu ezt ?rta (id?pont: 2021. m?j. 20., Cs, 18:46): > I find it's very strange that you can write equalities between universe > levels, as it sounds to me Level should live in some metalevel. Why I in > cubical agda lives in Set omega but Level only lives in Set? > > *Thanks,* > *Jason Hu* > *https://hustmphrrr.github.io/ * > ------------------------------ > *From:* Agda on behalf of Siek, Jeremy < > jsiek at indiana.edu> > *Sent:* May 20, 2021 10:32 AM > *To:* Agda List > *Subject:* Re: [Agda] another level problem > > Chuckle... and just minutes later I find a solution: > > ?-cong : ?{a b c d : Level} ? (a ? b) ? (c ? d) ? a ? c ? b ? d > ?-cong refl refl = refl > > EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? > (??? ? ??? ? ??? ? ??? ? ??? ? ???) > EQ eq1 eq2 = ?-cong eq1 eq2 > > Cheers, > Jeremy > > ------------------------------ > *From:* Agda on behalf of Siek, Jeremy < > jsiek at indiana.edu> > *Sent:* Thursday, May 20, 2021 10:16 AM > *To:* Agda List > *Subject:* [Agda] another level problem > > I'd like to prove: > > EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? > (??? ? ??? ? ??? ? ??? ? ??? ? ???) > EQ eq1 eq2 = ? > > From earlier threads it sounds like reasoning about equality of levels is > mostly automated > in Agda. > > So my question is how to use assumptions such as ??? ? ??? ? ???? > > Cheers, > Jeremy > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jsiek at indiana.edu Thu May 20 19:30:19 2021 From: jsiek at indiana.edu (Siek, Jeremy) Date: Thu, 20 May 2021 17:30:19 +0000 Subject: [Agda] another level problem In-Reply-To: References: , , Message-ID: I also find it strange. I'm new to thinking about universe levels... I'd prefer not to think about them, but I was forced into it as I started to write parameterized modules. Cheers, Jeremy ________________________________ From: Jason -Zhong Sheng- Hu Sent: Thursday, May 20, 2021 12:46 PM To: Siek, Jeremy ; Agda List Subject: Re: another level problem I find it's very strange that you can write equalities between universe levels, as it sounds to me Level should live in some metalevel. Why I in cubical agda lives in Set omega but Level only lives in Set? Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Agda on behalf of Siek, Jeremy Sent: May 20, 2021 10:32 AM To: Agda List Subject: Re: [Agda] another level problem Chuckle... and just minutes later I find a solution: ?-cong : ?{a b c d : Level} ? (a ? b) ? (c ? d) ? a ? c ? b ? d ?-cong refl refl = refl EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ?-cong eq1 eq2 Cheers, Jeremy ________________________________ From: Agda on behalf of Siek, Jeremy Sent: Thursday, May 20, 2021 10:16 AM To: Agda List Subject: [Agda] another level problem I'd like to prove: EQ : ? {??? ??? ??? ??? : Level} ? (??? ? ??? ? ???) ? (??? ? ??? ? ???) ? (??? ? ??? ? ??? ? ??? ? ??? ? ???) EQ eq1 eq2 = ? From earlier threads it sounds like reasoning about equality of levels is mostly automated in Agda. So my question is how to use assumptions such as ??? ? ??? ? ???? Cheers, Jeremy -------------- next part -------------- An HTML attachment was scrubbed... URL: From hancock at fastmail.fm Thu May 20 19:43:19 2021 From: hancock at fastmail.fm (Peter Hancock) Date: Thu, 20 May 2021 18:43:19 +0100 Subject: [Agda] another level problem In-Reply-To: References: Message-ID: <4c487451-17e3-1232-9643-b8dbc23e3166@fastmail.fm> On 20/05/2021 17:56, Andr?s Kov?cs wrote: > Making Level a first-class type, and putting it in the smallest universe, > is OK: https://arxiv.org/abs/2103.00223 I'm sorry to admit I haven't yet read your paper, but I wonder what is the "smallest" universe? Isn't that the empty universe? A very interesting (and important) universe may be the boolean universe. One reason to think it is important is explained in Jan Smith's paper: The Independence of Peano's Fourth Axiom from Martin-L?f's Type Theory without Universes April 1996Journal of Symbolic Logic 5 3(3) In between, there may be the singleton universe, in which there is only the empty set. And then, one may wonder whether there is a universe of finite sets. Etc. What's a universe? Peter Hancock From Jesper at sikanda.be Thu May 20 19:43:56 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Thu, 20 May 2021 19:43:56 +0200 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: <39974707-84f7-f2d0-3098-9919667e6dfb@posteo.de> References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> <39974707-84f7-f2d0-3098-9919667e6dfb@posteo.de> Message-ID: Hi Felix and Martin My thesis (and Conor McBride's before that) presents exactly what features you need in your type theory for absurd matches to be permissible: a universe and large elimination into this universe. This allows you to construct the type NoConfusion stating structural equality of two elements of a datatype, and the proof noConfusion that NoConfusion holds on the diagonal. From this, injectivity and disjointness of constructors follows. These principles are used in turn by the unification algorithm that is used during the elaboration of pattern matching (well, "used" in theory, since Agda does not actually perform the translation to eliminators). The equations package for Coq actually implements the translation, so you could try that if you don't believe me and want to see the elaborated terms :) Cubical Agda will make a distinction between regular datatypes and HITs, and it will only apply injectivity and disjointness for the former ones. So long story short, you should absolutely not worry about using absurd patterns in either standard Agda or Cubical Agda (unless you somehow don't want to assume the existence of a universe or large elimination, in which case Agda is perhaps not the right tool for you). Cheers, Jesper On Thu, May 20, 2021 at 6:43 PM Felix Cherubini wrote: > Thanks Martin! > Does it mean I shouldn't use absurd patterns (except if they clearly > correspond to the elimination rule for the Empty type) when using Agda > as a proof assistant for HoTT? > Is it possible to enforce that? I didn't find an option mentioning > anything about absurd... > > > On 5/20/21 6:34 PM, Martin Escardo wrote: > > In MLTT, the underlying type theory of Book-HoTT, you can't prove true > > == false -> Empty without a universe. Your "ok" proof doesn't use a > > universe. It is not clear what kind of type theory Agda is implementing > > here. Martin > > > > On 20/05/2021 16:59, felix.wellen at posteo.de wrote: > >> Dear all, > >> > >> are function definitions using the absurd pattern compatible with > >> Book-HoTT? > >> > >> With compatible, I mean, that there should be a general procedure that > >> translates definitions by pattern matching from Agda to Book-HoTT. > >> > >> Here is an example: Let Bool be the type with constructors true and > >> false and Empty the type without constructors, then > >> > >> ok : true == false -> Empty > >> ok () > >> > >> works in Agda (for the usual inductive definition of ==). As I > >> understand it, Agda checks if for any constructor of the domain, the > >> unification problems for all arguments end in conflict. Or in other > >> words, the absurd pattern is a valid definition for a function on an > >> inductive type, if it is not possible to find a constructor of the > >> inductive type together with arguments make it have the right type. > >> > >> This is very different from any proof of that fact I know in Book-HoTT > >> (one would be use a transport along the equality true==false that lands > >> in Empty). And I also don't know how the general argument ("there is no > >> valid constructor call, therefore...") could be done in HoTT. > >> > >> Thanks in advance for sheding any light on the matter! > >> Best, > >> Felix > >> _______________________________________________ > >> Agda mailing list > >> Agda at lists.chalmers.se > >> https://lists.chalmers.se/mailman/listinfo/agda > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From puttamalac at gmail.com Thu May 20 19:54:39 2021 From: puttamalac at gmail.com (=?UTF-8?B?QW5kcsOhcyBLb3bDoWNz?=) Date: Thu, 20 May 2021 19:54:39 +0200 Subject: [Agda] another level problem In-Reply-To: <4c487451-17e3-1232-9643-b8dbc23e3166@fastmail.fm> References: <4c487451-17e3-1232-9643-b8dbc23e3166@fastmail.fm> Message-ID: > but I wonder what is the "smallest" universe? I meant the universe with the smallest level index in the particular universe hierarchy that we're using. In Agda, the smallest such universe is Set0, and indeed we have Level : Set0 there. Peter Hancock ezt ?rta (id?pont: 2021. m?j. 20., Cs, 19:43): > On 20/05/2021 17:56, Andr?s Kov?cs wrote: > > Making Level a first-class type, and putting it in the smallest universe, > > is OK: https://arxiv.org/abs/2103.00223 > > I'm sorry to admit I haven't yet read your paper, but I wonder what is the > "smallest" > universe? Isn't that the empty universe? > > A very interesting (and important) universe may be the boolean universe. > One reason > to think it is important is explained in Jan Smith's paper: > The Independence of Peano's Fourth Axiom from Martin-L?f's Type Theory > without Universes > April 1996Journal of Symbolic Logic 5 3(3) > > In between, there may be the singleton universe, in which there is only > the empty set. > And then, one may wonder whether there is a universe of finite sets. Etc. > > What's a universe? > > Peter Hancock > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Thu May 20 20:55:39 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Thu, 20 May 2021 19:55:39 +0100 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> <39974707-84f7-f2d0-3098-9919667e6dfb@posteo.de> Message-ID: <033838d2-5612-7d7a-7dd8-1b2946ebb5de@cs.bham.ac.uk> On 20/05/2021 18:43, Jesper at sikanda.be wrote: > Hi Felix and Martin > > My thesis (and Conor McBride's before that) presents exactly what > features you need in your type theory for absurd matches to be > permissible: a universe and large elimination into this universe. This > allows you to construct the type NoConfusion stating structural equality > of two elements of a datatype, and the proof noConfusion that > NoConfusion holds on the diagonal. From this, injectivity and > disjointness of constructors follows. These principles are used in turn > by the unification algorithm that is used during the elaboration of > pattern matching (well, "used" in theory, since Agda does not actually > perform the translation to eliminators). The equations package for Coq > actually implements the translation, so you could try that if you don't > believe me and want to see the elaborated terms :) OK. I believe you. But let me understand what I am believing: what is exactly the meta-theorem you prove? Thanks, Martin From Jesper at sikanda.be Thu May 20 21:47:09 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Thu, 20 May 2021 21:47:09 +0200 Subject: [Agda] Absurd patterns and HoTT In-Reply-To: <033838d2-5612-7d7a-7dd8-1b2946ebb5de@cs.bham.ac.uk> References: <8f75f630-ab01-ab3a-b952-13389c516272@posteo.de> <1b06429a-4c59-03ce-0198-b3082a21fdb0@cs.bham.ac.uk> <39974707-84f7-f2d0-3098-9919667e6dfb@posteo.de> <033838d2-5612-7d7a-7dd8-1b2946ebb5de@cs.bham.ac.uk> Message-ID: Hi Martin, The meta-theorem is that for any definition by dependent pattern matching, there exists an equivalent one that only uses basic datatype eliminators, and that satisfies (at least) the same definitional equalities. -- Jesper On Thu, May 20, 2021 at 8:56 PM Martin Escardo wrote: > > > On 20/05/2021 18:43, Jesper at sikanda.be wrote: > > Hi Felix and Martin > > > > My thesis (and Conor McBride's before that) presents exactly what > > features you need in your type theory for absurd matches to be > > permissible: a universe and large elimination into this universe. This > > allows you to construct the type NoConfusion stating structural equality > > of two elements of a datatype, and the proof noConfusion that > > NoConfusion holds on the diagonal. From this, injectivity and > > disjointness of constructors follows. These principles are used in turn > > by the unification algorithm that is used during the elaboration of > > pattern matching (well, "used" in theory, since Agda does not actually > > perform the translation to eliminators). The equations package for Coq > > actually implements the translation, so you could try that if you don't > > believe me and want to see the elaborated terms :) > > OK. I believe you. But let me understand what I am believing: what is > exactly the meta-theorem you prove? > > Thanks, > Martin > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonathan.protzenko at gmail.com Fri May 21 05:19:41 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Thu, 20 May 2021 20:19:41 -0700 Subject: [Agda] ML Family Workshop 2021: final call for short abstracts and presentations Message-ID: <1e540338-2c3d-05af-1948-e717bfb07525@gmail.com> (tl;dr) The ML family workshop is back, and the deadline is in a week. The workshop does not have proceedings, making it the perfect venue to run some ideas with the community or present some work in progress within a friendly environment. The PC has a broad expertise and submissions are 3 pages long: when in doubt, just submit! (long version) We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. The ML family workshop warmly welcomes submission touching on the programming languages traditionally seen as part of the "ML family" (Standard ML, OCaml, F#, CakeML, SML#, Manticore, MetaOCaml, etc.). The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of the members of the ML family. We also encourage presentations from related languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*, Eff, ATS, etc), to exchange experience of further developing ML ideas. ## Submission details Submissions must be at most three pages long; see the full call for papers for details. Submission site: https://ml21.hotcrp.com/ ## Important dates Thu, May 27th 2021 (AoE): submission deadline Thu, Jun 17th 2021 (AoE): author notification Thu, Aug 26th: workshop (time slots TBD) ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From jonathan.protzenko at gmail.com Fri May 21 05:20:02 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Thu, 20 May 2021 20:20:02 -0700 Subject: [Agda] ML Family Workshop 2021: final call for short abstracts and presentations Message-ID: (tl;dr) The ML family workshop is back, and the deadline is in a week. The workshop does not have proceedings, making it the perfect venue to run some ideas with the community or present some work in progress within a friendly environment. The PC has a broad expertise and submissions are 3 pages long: when in doubt, just submit! (long version) We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. The ML family workshop warmly welcomes submission touching on the programming languages traditionally seen as part of the "ML family" (Standard ML, OCaml, F#, CakeML, SML#, Manticore, MetaOCaml, etc.). The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of the members of the ML family. We also encourage presentations from related languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*, Eff, ATS, etc), to exchange experience of further developing ML ideas. ## Submission details Submissions must be at most three pages long; see the full call for papers for details. Submission site: https://ml21.hotcrp.com/ ## Important dates Thu, May 27th 2021 (AoE): submission deadline Thu, Jun 17th 2021 (AoE): author notification Thu, Aug 26th: workshop (time slots TBD) ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From fdhzs2010 at hotmail.com Fri May 21 23:28:33 2021 From: fdhzs2010 at hotmail.com (Jason -Zhong Sheng- Hu) Date: Fri, 21 May 2021 21:28:33 +0000 Subject: [Agda] a stuck cubical Agda proof Message-ID: Hi all, I find the following proof should be very easy but I am not sure how to discharge the last obligation. What am I missing here (both in code and conceptually)? open import Cubical.Foundations.Prelude open import Cubical.Data.Nat data dot : Set where A B : dot Eq : A ? B IsSet : isSet dot get-? : dot ? ? get-? A = 0 get-? B = 0 get-? (Eq i) = 0 get-? (IsSet d d? eq eq? i j) = {!!} Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.tosun at pgr.bham.ac.uk Fri May 21 23:40:23 2021 From: a.tosun at pgr.bham.ac.uk (Ayberk Tosun) Date: Sat, 22 May 2021 00:40:23 +0300 Subject: [Agda] a stuck cubical Agda proof In-Reply-To: References: Message-ID: <8050bef9-fed7-ca96-f3a0-e653ea87dea7@pgr.bham.ac.uk> Hi Jason, On 22/05/2021 00:28, fdhzs2010 at hotmail.com wrote: > I find the following proof should be very easy but I am not sure how to > discharge the last obligation. What am I missing here (both in code and > conceptually)? It boils down to the fact that ? is itself a set: ``` open import Cubical.Foundations.Prelude open import Cubical.Data.Nat data dot : Set where A B : dot Eq : A ? B IsSet : isSet dot get-? : dot ? ? get-? A = 0 get-? B = 0 get-? (Eq i) = 0 get-? (IsSet d d? eq eq? i j) = isSet? (get-? d) (get-? d?) (? k ? get-? (eq k)) (? k ? get-? (eq? k)) i j ``` Best, Ayberk From fdhzs2010 at hotmail.com Sat May 22 01:54:25 2021 From: fdhzs2010 at hotmail.com (Jason -Zhong Sheng- Hu) Date: Fri, 21 May 2021 23:54:25 +0000 Subject: [Agda] a stuck cubical Agda proof In-Reply-To: <8050bef9-fed7-ca96-f3a0-e653ea87dea7@pgr.bham.ac.uk> References: , <8050bef9-fed7-ca96-f3a0-e653ea87dea7@pgr.bham.ac.uk> Message-ID: thank you very much. Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Ayberk Tosun Sent: May 21, 2021 5:40 PM To: agda at lists.chalmers.se Cc: fdhzs2010 at hotmail.com Subject: Re: [Agda] a stuck cubical Agda proof Hi Jason, On 22/05/2021 00:28, fdhzs2010 at hotmail.com wrote: > I find the following proof should be very easy but I am not sure how to > discharge the last obligation. What am I missing here (both in code and > conceptually)? It boils down to the fact that ? is itself a set: ``` open import Cubical.Foundations.Prelude open import Cubical.Data.Nat data dot : Set where A B : dot Eq : A ? B IsSet : isSet dot get-? : dot ? ? get-? A = 0 get-? B = 0 get-? (Eq i) = 0 get-? (IsSet d d? eq eq? i j) = isSet? (get-? d) (get-? d?) (? k ? get-? (eq k)) (? k ? get-? (eq? k)) i j ``` Best, Ayberk -------------- next part -------------- An HTML attachment was scrubbed... URL: From asr at eafit.edu.co Tue May 25 17:40:04 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Tue, 25 May 2021 10:40:04 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate Message-ID: Dear all, The Agda Team is very pleased to announce a release candidate of Agda 2.6.2. We plan to release 2.6.2 in a few days. # Highlights * Several improvements and bug-fixes related to Run-time Irrelevance ( https://agda.readthedocs.io/en/latest/language/runtime-irrelevance.html). * Several improvements and bug-fixes related to the JavaScript Backend ( https://agda.readthedocs.io/en/latest/tools/compilers.html#javascript-backend ). * Added experimental support for Guarded Cubical Agda ( https://agda.readthedocs.io/en/latest/language/guarded-cubical.html). * The Primitive Sorts ( https://agda.readthedocs.io/en/latest/language/built-ins.html#sorts) of Agda (`Set` and `Prop`) are no longer keywords and can be renamed when importing `Agda.Primitive`. * Added native support for the Inspect Idiom ( https://agda.readthedocs.io/en/latest/language/with-abstraction.html#with-abstraction-equality ). * Added support for making System Calls ( https://agda.readthedocs.io/en/latest/language/reflection.html#system-calls) from the reflection API. # GHC supported versions Agda 2.6.2 RC has been tested with GHC 9.0.1, 8.10.4, 8.8.4, 8.6.5, 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. # Installation Agda 2.6.2 RC can be installed using cabal-install or stack: * Getting the release candidate $ cabal get http://hackage.haskell.org/package/Agda-2.6.1.3.20210524/candidate/Agda-2.6.1.3.20210524.tar.gz $ cd Agda-2.6.1.3.20210524.tar.gz * Using cabal-install $ cabal install * Using stack $ stack --stack-yaml stack-a.b.c.yaml install replacing `a.b.c` with your version of GHC. # Standard library For the time being, you can use the *experimental* branch of the standard library with Agda 2.6.2 RC. This branch is available at https://github.com/agda/agda-stdlib/ # Fixed issues http://hackage.haskell.org/package/Agda-2.6.1.3.20210524/candidate/changelog Enjoy Agda 2.6.2 RC and please test as much as possible. -- Andr?s, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrei.h.popescu at gmail.com Wed May 26 15:10:49 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Wed, 26 May 2021 14:10:49 +0100 Subject: [Agda] =?utf-8?q?PhD_position_on_the_formalization_of_logical_ca?= =?utf-8?q?lculi_in_Saarbr=C3=BCcken?= Message-ID: A PhD position is open at the MPI for Informatics in Saarbr?cken, supervised by Christoph Weidenbach, Jasmin Blanchette and Sophie Tourret. The project is about using Isabelle/HOL to formalize logical calculi. See https://www.cs.vu.nl/~jbe248/sb_job.html for more information. From benedikt.ahrens at gmail.com Wed May 26 20:47:24 2021 From: benedikt.ahrens at gmail.com (Benedikt Ahrens) Date: Wed, 26 May 2021 20:47:24 +0200 Subject: [Agda] PhD position in HoTT/UF at TU Delft Message-ID: A PhD position [1] is open in the Programming Languages group [2] at TU Delft, in the area of HoTT/UF. The student will be supervised by Benedikt Ahrens [3]. Information about the position is available on the dedicated website [1]. If you have any questions or consider applying, please get in touch with Benedikt (benedikt.ahrens at gmail.com). [1] https://pl.ewi.tudelft.nl/hiring/2021/phd-student-hottuf/ [2] https://pl.ewi.tudelft.nl/ [3] https://benediktahrens.gitlab.io/ From matthewdaggitt at gmail.com Thu May 27 08:25:09 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Thu, 27 May 2021 14:25:09 +0800 Subject: [Agda] [ ANNOUNCE ] Standard library v1.7 - release candidate 1 Message-ID: Dear all, The Agda Team is pleased to announce the first release candidate for version 1.7 of the standard library. The release candidate has been tested using the first release candidate of Agda 2.6.2. This release includes many new features, the highlights of which are: - New module for making system calls during type checking, Reflection.External, which re-exports Agda.Builtin.Reflection.External. - New predicate for lists that are enumerations of their type in Data.List.Relation.Unary.Enumerates. - New weak induction schemes in Data.Fin.Induction that allows one to avoid the complicated use of Acc/inject/raise when proving inductive properties over finite sets. The release candidate can be downloaded here . We would be grateful for reports of any issues you may encounter with the new version of the library on the Github issues page . If no major issues are found we will aim to release the official version 1.7 soon after the release of Agda 2.6.2. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From david.nowak at univ-lille.fr Fri May 28 08:05:17 2021 From: david.nowak at univ-lille.fr (David Nowak) Date: Fri, 28 May 2021 08:05:17 +0200 Subject: [Agda] PhD position on program verification in Coq Message-ID: <8D28C8D0-8EFB-4BB0-B62B-227EFA0579DF@univ-lille.fr> Dear all, We have an opening for a 3-year PhD position at University of Lille, France. The successful applicant will be funded -- including salary and (international) conference travel -- through a new French-German ANR-funded project. There will also be an opportunity to collaborate with a research team in Japan. Lille is at the heart of Europe: 45 minutes from Bruxelles, 1 hour from Paris, 1 hour and half from London. This is an important university hub that hosts the annual International Cybersecurity Forum (FIC). The start date is September 1st, but might possibly be postponed to October 1st. The PhD position is about the formal proof in Coq for shallow-embedded imperative programs and their compilation into C (more details below). Interested students should meet the following requirements: - Be interested by the topic of the PhD :-) - Have or be about to complete a Master in Computer Science or a related field (Logic, Mathematics, etc.). If you are interested in applying for this opportunity please begin by contacting us {gilles.grimaud,samuel.hym,david.nowak}@univ-lille.fr as soon as possible with the following information: - CV/Resume - A brief introduction of yourself, your scientific interests, and if you are familiar with any of the following topics: * formal proof / formal verification, * functional programming * monads * semantics ??????????????????????????????????? Summary: The topic of this PhD offer is the formal proof in Coq for shallow-embedded imperative programs and their compilation into C. More precisely, the objective is to conceive and develop formal tools to simplify code writing and proof of system software for low-end devices. Context: The Coq proof assistant [1] allows to prove properties of programs. Its language, called Gallina, is purely functional. In the Pip project [2], we have considered a monadic subset of C-like Gallina enough to formally write an OS kernel. Objectives: A first objective of this PhD is to extend the monadic subset in order to include further imperative features (such as loops, references or exceptions) that will simplify code writing and proof of system software for low-end devices. For security properties the monadic Hoare logic used for Pip will have to be extended to deal with the new imperative features. For functional properties, there are two possible directions: either use the monadic Hoare logic or monadic equational reasoning as developed in Monae [3]. The relation with FreeSpec [4] should also be investigated. A second objective is to automatically translate programs written in this monadic subset into an AST of the CompCert C verified compiler [5] and to prove formally that this translation is correct, in the sense that properties proved on the monadic subset are also true of the generated C code. [1] https://coq.inria.fr [2] http://pip.univ-lille1.fr [3] https://github.com/affeldt-aist/monae [4] https://github.com/lthms/FreeSpec [5] https://compcert.org ??????????????????????????????????? All the best, -- Gilles Grimaud, Samuel Hym, David Nowak -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonathan.protzenko at gmail.com Fri May 28 21:06:34 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Fri, 28 May 2021 12:06:34 -0700 Subject: [Agda] ML Family Workshop 2021: deadline extension Message-ID: <842211ce-ada8-eb22-77e0-3b02d2efcfa6@gmail.com> The deadline for the ML family workshop has been extended by a week. If you were on the fence, please submit! --- We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. The ML family workshop warmly welcomes submission touching on the programming languages traditionally seen as part of the "ML family" (Standard ML, OCaml, F#, CakeML, SML#, Manticore, MetaOCaml, etc.). The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of the members of the ML family. We also encourage presentations from related languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*, Eff, ATS, etc), to exchange experience of further developing ML ideas. ## Submission details Submissions must be at most three pages long; see the full call for papers for details. Submission site: https://ml21.hotcrp.com/ ## Important dates Thu, Jun 3th 2021 (AoE): submission deadline Thu, Jun 24th 2021 (AoE): author notification Thu, Aug 26th: workshop (time slots TBD) ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From jonathan.protzenko at gmail.com Fri May 28 21:06:55 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Fri, 28 May 2021 12:06:55 -0700 Subject: [Agda] ML Family Workshop 2021: deadline extension Message-ID: The deadline for the ML family workshop has been extended by a week. If you were on the fence, please submit! --- We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. The ML family workshop warmly welcomes submission touching on the programming languages traditionally seen as part of the "ML family" (Standard ML, OCaml, F#, CakeML, SML#, Manticore, MetaOCaml, etc.). The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of the members of the ML family. We also encourage presentations from related languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*, Eff, ATS, etc), to exchange experience of further developing ML ideas. ## Submission details Submissions must be at most three pages long; see the full call for papers for details. Submission site: https://ml21.hotcrp.com/ ## Important dates Thu, Jun 3th 2021 (AoE): submission deadline Thu, Jun 24th 2021 (AoE): author notification Thu, Aug 26th: workshop (time slots TBD) ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From m.escardo at cs.bham.ac.uk Sun May 30 13:41:00 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sun, 30 May 2021 12:41:00 +0100 Subject: [Agda] Evaluation question Message-ID: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Consider the following Haskell code (also attached) and its translation to Agda (not included). * In Agda the (good) runtime behaviour of example1 is replicated - it is linear. * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda it seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. How do I rewrite the program in Agda to get the same times as in Haskell? The crucial function is "epsilon". -- *Main> example1 (nat (10^6)) True (2.83 secs, 696,069,600 bytes) *Main> example2 (nat (15)) False (1.09 secs, 504,960,752 bytes) *Main> example2 (nat 15) False (1.11 secs, 504,960,752 bytes) *Main> example2 (nat 16) False (2.44 secs, 1,130,698,664 bytes) *Main> example2 (nat 17) False (5.42 secs, 2,516,654,176 bytes) *Main> example2 (nat 18) False (12.03 secs, 5,571,156,248 bytes) -- data Nat = Zero | Succ Nat type Cantor = Nat -> Bool cons :: Bool -> Cantor -> Cantor cons b alpha Zero = b cons b alpha (Succ n) = alpha n epsilon :: Nat -> (Cantor -> Bool) -> Cantor epsilon Zero p = \i -> False epsilon (Succ n) p = cons b alpha where b :: Bool b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) alpha :: Cantor alpha = epsilon n (\alpha -> p (cons b alpha)) forevery :: Nat -> (Cantor -> Bool) -> Bool forevery n p = p (epsilon n p) -- Examples nat :: Integer -> Nat nat 0 = Zero nat n = Succ (nat (n-1)) p1 :: Nat -> Cantor -> Bool p1 n alpha = alpha n == alpha n example1 :: Nat -> Bool example1 n = forevery (Succ n) (p1 n) p2 :: Nat -> Cantor -> Bool p2 Zero alpha = True p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) example2 :: Nat -> Bool example2 n = forevery n (p2 n) I think that "b" in Haskell gets evaluated at most once, but in Agda it is evaluated zero times or else repeatedly. But I may be wrong. I tried primForce but it didn't seem to make any difference. How do I make example2 as fast as in Haskell? Martin -------------- next part -------------- A non-text attachment was scrubbed... Name: CantorSearch.hs Type: text/x-haskell Size: 858 bytes Desc: not available URL: From mechvel at scico.botik.ru Sun May 30 15:19:08 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 30 May 2021 16:19:08 +0300 Subject: [Agda] Evaluation question In-Reply-To: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Message-ID: <1f6f83c3b0f3059313a53b371e8f85bb@scico.botik.ru> The last exponential adventure I had with Agda 2.6.1 was with the function like f x = let y = g x in h y y The Glasgow Haskell compiler supports sharing of y, and Agda evaluates y twice (the needed sharing can be reached by introducing a certain additional function, as Ulf advised). I expect the same will be with `where' and `case'. This gives a cost explosion when mixed with recursion. I do not know of whether this thing is somehow hidden in your example, I just write for any occasion. -- SM On 2021-05-30 14:41, Martin Escardo wrote: > Consider the following Haskell code (also attached) and its translation > to Agda (not included). > > * In Agda the (good) runtime behaviour of example1 is replicated - it > is > linear. > > * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda > it > seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. > > How do I rewrite the program in Agda to get the same times as in > Haskell? The crucial function is "epsilon". > > -- > *Main> example1 (nat (10^6)) > True > (2.83 secs, 696,069,600 bytes) > *Main> example2 (nat (15)) > False > (1.09 secs, 504,960,752 bytes) > *Main> example2 (nat 15) > False > (1.11 secs, 504,960,752 bytes) > *Main> example2 (nat 16) > False > (2.44 secs, 1,130,698,664 bytes) > *Main> example2 (nat 17) > False > (5.42 secs, 2,516,654,176 bytes) > *Main> example2 (nat 18) > False > (12.03 secs, 5,571,156,248 bytes) > -- > > data Nat = Zero | Succ Nat > > type Cantor = Nat -> Bool > > cons :: Bool -> Cantor -> Cantor > cons b alpha Zero = b > cons b alpha (Succ n) = alpha n > > epsilon :: Nat -> (Cantor -> Bool) -> Cantor > epsilon Zero p = \i -> False > epsilon (Succ n) p = cons b alpha > where > b :: Bool > b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) > > alpha :: Cantor > alpha = epsilon n (\alpha -> p (cons b alpha)) > > forevery :: Nat -> (Cantor -> Bool) -> Bool > forevery n p = p (epsilon n p) > > -- Examples > > nat :: Integer -> Nat > nat 0 = Zero > nat n = Succ (nat (n-1)) > > p1 :: Nat -> Cantor -> Bool > p1 n alpha = alpha n == alpha n > > example1 :: Nat -> Bool > example1 n = forevery (Succ n) (p1 n) > > p2 :: Nat -> Cantor -> Bool > p2 Zero alpha = True > p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) > > example2 :: Nat -> Bool > example2 n = forevery n (p2 n) > > I think that "b" in Haskell gets evaluated at most once, but in Agda it > is evaluated zero times or else repeatedly. But I may be wrong. I tried > primForce but it didn't seem to make any difference. > > How do I make example2 as fast as in Haskell? > > Martin > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From ulf.norell at gmail.com Mon May 31 09:07:06 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Mon, 31 May 2021 09:07:06 +0200 Subject: [Agda] Evaluation question In-Reply-To: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Message-ID: I assume we are talking type-checking time evaluation and not compiling to Haskell. In this case, surprisingly, I don't think the lambda lifting of b is the problem. Rather I think the double exponential is because the Agda abstract machine is bad at evaluating lambdas. If you get rid of the lambda in the local ?: epsilon : Nat ? (Cantor ? Bool) ? Cantor epsilon zero p = ? i ? false epsilon (suc n) p = cons b ? where b : Bool b = p (cons false (epsilon n ? ? ? p (cons false ?))) ? : Cantor ? = epsilon n (p ? cons b) it runs in what looks like 3^n to me. With this version I can C-c C-n example2 11 in 10s. Still far from the Haskell performance, but at least it's no longer a double exponential. / Ulf On Sun, May 30, 2021 at 1:41 PM Martin Escardo wrote: > Consider the following Haskell code (also attached) and its translation > to Agda (not included). > > * In Agda the (good) runtime behaviour of example1 is replicated - it is > linear. > > * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda it > seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. > > How do I rewrite the program in Agda to get the same times as in > Haskell? The crucial function is "epsilon". > > -- > *Main> example1 (nat (10^6)) > True > (2.83 secs, 696,069,600 bytes) > *Main> example2 (nat (15)) > False > (1.09 secs, 504,960,752 bytes) > *Main> example2 (nat 15) > False > (1.11 secs, 504,960,752 bytes) > *Main> example2 (nat 16) > False > (2.44 secs, 1,130,698,664 bytes) > *Main> example2 (nat 17) > False > (5.42 secs, 2,516,654,176 bytes) > *Main> example2 (nat 18) > False > (12.03 secs, 5,571,156,248 bytes) > -- > > data Nat = Zero | Succ Nat > > type Cantor = Nat -> Bool > > cons :: Bool -> Cantor -> Cantor > cons b alpha Zero = b > cons b alpha (Succ n) = alpha n > > epsilon :: Nat -> (Cantor -> Bool) -> Cantor > epsilon Zero p = \i -> False > epsilon (Succ n) p = cons b alpha > where > b :: Bool > b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) > > alpha :: Cantor > alpha = epsilon n (\alpha -> p (cons b alpha)) > > forevery :: Nat -> (Cantor -> Bool) -> Bool > forevery n p = p (epsilon n p) > > -- Examples > > nat :: Integer -> Nat > nat 0 = Zero > nat n = Succ (nat (n-1)) > > p1 :: Nat -> Cantor -> Bool > p1 n alpha = alpha n == alpha n > > example1 :: Nat -> Bool > example1 n = forevery (Succ n) (p1 n) > > p2 :: Nat -> Cantor -> Bool > p2 Zero alpha = True > p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) > > example2 :: Nat -> Bool > example2 n = forevery n (p2 n) > > I think that "b" in Haskell gets evaluated at most once, but in Agda it > is evaluated zero times or else repeatedly. But I may be wrong. I tried > primForce but it didn't seem to make any difference. > > How do I make example2 as fast as in Haskell? > > Martin > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ulf.norell at gmail.com Mon May 31 09:18:00 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Mon, 31 May 2021 09:18:00 +0200 Subject: [Agda] Evaluation question In-Reply-To: References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Message-ID: If we also fix the lambda-lifting issue, using case_of_, we can get it down to 2^n: epsilon : Nat ? (Cantor ? Bool) ? Cantor epsilon zero p = ? i ? false epsilon (suc n) p = case p (cons false (epsilon n (p ? cons false))) of ? b ? cons b (epsilon n (p ? cons b)) This version runs about 6 times slower than ghci, which I think isn't too bad. / Ulf On Mon, May 31, 2021 at 9:07 AM Ulf Norell wrote: > I assume we are talking type-checking time evaluation and not compiling to > Haskell. > > In this case, surprisingly, I don't think the lambda lifting of b is the > problem. Rather I think > the double exponential is because the Agda abstract machine is bad at > evaluating lambdas. > If you get rid of the lambda in the local ?: > > epsilon : Nat ? (Cantor ? Bool) ? Cantor > epsilon zero p = ? i ? false > epsilon (suc n) p = cons b ? > where > b : Bool > b = p (cons false (epsilon n ? ? ? p (cons false ?))) > > ? : Cantor > ? = epsilon n (p ? cons b) > > it runs in what looks like 3^n to me. With this version I can C-c C-n > example2 11 in 10s. Still far > from the Haskell performance, but at least it's no longer a double > exponential. > > / Ulf > > On Sun, May 30, 2021 at 1:41 PM Martin Escardo > wrote: > >> Consider the following Haskell code (also attached) and its translation >> to Agda (not included). >> >> * In Agda the (good) runtime behaviour of example1 is replicated - it is >> linear. >> >> * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda it >> seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. >> >> How do I rewrite the program in Agda to get the same times as in >> Haskell? The crucial function is "epsilon". >> >> -- >> *Main> example1 (nat (10^6)) >> True >> (2.83 secs, 696,069,600 bytes) >> *Main> example2 (nat (15)) >> False >> (1.09 secs, 504,960,752 bytes) >> *Main> example2 (nat 15) >> False >> (1.11 secs, 504,960,752 bytes) >> *Main> example2 (nat 16) >> False >> (2.44 secs, 1,130,698,664 bytes) >> *Main> example2 (nat 17) >> False >> (5.42 secs, 2,516,654,176 bytes) >> *Main> example2 (nat 18) >> False >> (12.03 secs, 5,571,156,248 bytes) >> -- >> >> data Nat = Zero | Succ Nat >> >> type Cantor = Nat -> Bool >> >> cons :: Bool -> Cantor -> Cantor >> cons b alpha Zero = b >> cons b alpha (Succ n) = alpha n >> >> epsilon :: Nat -> (Cantor -> Bool) -> Cantor >> epsilon Zero p = \i -> False >> epsilon (Succ n) p = cons b alpha >> where >> b :: Bool >> b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) >> >> alpha :: Cantor >> alpha = epsilon n (\alpha -> p (cons b alpha)) >> >> forevery :: Nat -> (Cantor -> Bool) -> Bool >> forevery n p = p (epsilon n p) >> >> -- Examples >> >> nat :: Integer -> Nat >> nat 0 = Zero >> nat n = Succ (nat (n-1)) >> >> p1 :: Nat -> Cantor -> Bool >> p1 n alpha = alpha n == alpha n >> >> example1 :: Nat -> Bool >> example1 n = forevery (Succ n) (p1 n) >> >> p2 :: Nat -> Cantor -> Bool >> p2 Zero alpha = True >> p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) >> >> example2 :: Nat -> Bool >> example2 n = forevery n (p2 n) >> >> I think that "b" in Haskell gets evaluated at most once, but in Agda it >> is evaluated zero times or else repeatedly. But I may be wrong. I tried >> primForce but it didn't seem to make any difference. >> >> How do I make example2 as fast as in Haskell? >> >> Martin >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ulf.norell at gmail.com Mon May 31 09:21:27 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Mon, 31 May 2021 09:21:27 +0200 Subject: [Agda] Evaluation question In-Reply-To: References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Message-ID: Actually, after fixing the duplication of b the lambdas are no longer an issue, so epsilon : Nat ? (Cantor ? Bool) ? Cantor epsilon zero p = ? i ? false epsilon (suc n) p = case p (cons false (epsilon n ? ? ? p (cons false ?))) of ? b ? cons b (epsilon n ? ? ? p (cons b ?)) has the same performance. / Ulf On Mon, May 31, 2021 at 9:18 AM Ulf Norell wrote: > If we also fix the lambda-lifting issue, using case_of_, we can get it > down to 2^n: > > epsilon : Nat ? (Cantor ? Bool) ? Cantor > epsilon zero p = ? i ? false > epsilon (suc n) p = > case p (cons false (epsilon n (p ? cons false))) of ? > b ? cons b (epsilon n (p ? cons b)) > > This version runs about 6 times slower than ghci, which I think isn't too > bad. > > / Ulf > > On Mon, May 31, 2021 at 9:07 AM Ulf Norell wrote: > >> I assume we are talking type-checking time evaluation and not compiling >> to Haskell. >> >> In this case, surprisingly, I don't think the lambda lifting of b is the >> problem. Rather I think >> the double exponential is because the Agda abstract machine is bad at >> evaluating lambdas. >> If you get rid of the lambda in the local ?: >> >> epsilon : Nat ? (Cantor ? Bool) ? Cantor >> epsilon zero p = ? i ? false >> epsilon (suc n) p = cons b ? >> where >> b : Bool >> b = p (cons false (epsilon n ? ? ? p (cons false ?))) >> >> ? : Cantor >> ? = epsilon n (p ? cons b) >> >> it runs in what looks like 3^n to me. With this version I can C-c C-n >> example2 11 in 10s. Still far >> from the Haskell performance, but at least it's no longer a double >> exponential. >> >> / Ulf >> >> On Sun, May 30, 2021 at 1:41 PM Martin Escardo >> wrote: >> >>> Consider the following Haskell code (also attached) and its translation >>> to Agda (not included). >>> >>> * In Agda the (good) runtime behaviour of example1 is replicated - it is >>> linear. >>> >>> * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda it >>> seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. >>> >>> How do I rewrite the program in Agda to get the same times as in >>> Haskell? The crucial function is "epsilon". >>> >>> -- >>> *Main> example1 (nat (10^6)) >>> True >>> (2.83 secs, 696,069,600 bytes) >>> *Main> example2 (nat (15)) >>> False >>> (1.09 secs, 504,960,752 bytes) >>> *Main> example2 (nat 15) >>> False >>> (1.11 secs, 504,960,752 bytes) >>> *Main> example2 (nat 16) >>> False >>> (2.44 secs, 1,130,698,664 bytes) >>> *Main> example2 (nat 17) >>> False >>> (5.42 secs, 2,516,654,176 bytes) >>> *Main> example2 (nat 18) >>> False >>> (12.03 secs, 5,571,156,248 bytes) >>> -- >>> >>> data Nat = Zero | Succ Nat >>> >>> type Cantor = Nat -> Bool >>> >>> cons :: Bool -> Cantor -> Cantor >>> cons b alpha Zero = b >>> cons b alpha (Succ n) = alpha n >>> >>> epsilon :: Nat -> (Cantor -> Bool) -> Cantor >>> epsilon Zero p = \i -> False >>> epsilon (Succ n) p = cons b alpha >>> where >>> b :: Bool >>> b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) >>> >>> alpha :: Cantor >>> alpha = epsilon n (\alpha -> p (cons b alpha)) >>> >>> forevery :: Nat -> (Cantor -> Bool) -> Bool >>> forevery n p = p (epsilon n p) >>> >>> -- Examples >>> >>> nat :: Integer -> Nat >>> nat 0 = Zero >>> nat n = Succ (nat (n-1)) >>> >>> p1 :: Nat -> Cantor -> Bool >>> p1 n alpha = alpha n == alpha n >>> >>> example1 :: Nat -> Bool >>> example1 n = forevery (Succ n) (p1 n) >>> >>> p2 :: Nat -> Cantor -> Bool >>> p2 Zero alpha = True >>> p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) >>> >>> example2 :: Nat -> Bool >>> example2 n = forevery n (p2 n) >>> >>> I think that "b" in Haskell gets evaluated at most once, but in Agda it >>> is evaluated zero times or else repeatedly. But I may be wrong. I tried >>> primForce but it didn't seem to make any difference. >>> >>> How do I make example2 as fast as in Haskell? >>> >>> Martin >>> >>> _______________________________________________ >>> Agda mailing list >>> Agda at lists.chalmers.se >>> https://lists.chalmers.se/mailman/listinfo/agda >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Mon May 31 09:42:06 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Mon, 31 May 2021 08:42:06 +0100 Subject: [Agda] Evaluation question In-Reply-To: References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> Message-ID: <7f7b1c2f-1ef8-bead-375b-415eee7bbcae@cs.bham.ac.uk> Thanks, Ulf, for the three messages. I will try all that. At the same time, just before your message, I tried the release candidate of Agda 2.6.2, without any change to my code, and I can run example2 11 in about the same time as you. What has changed in 2.6.2 regarding evaluation? Best, Martin On 31/05/2021 08:07, ulf.norell at gmail.com wrote: > I assume we are talking type-checking time evaluation and not compiling > to Haskell. > > In this case, surprisingly, I don't think the lambda lifting of b is the > problem. Rather I think > the double exponential is because the Agda abstract machine is bad at > evaluating lambdas. > If you get rid of the lambda in the local ?: > > epsilon : Nat ? (Cantor ? Bool) ? Cantor > epsilon zero ? ?p = ? i ? false > epsilon (suc n) p = cons b ? > ? where > ? ? b : Bool > ? ? b = p (cons false (epsilon n ? ? ? p (cons false ?))) > > ? ? ? : Cantor > ? ? ? = epsilon n (p ? cons b) > > it runs in what looks like 3^n to me. With this version I can C-c C-n > example2 11 in 10s. Still far > from the Haskell performance, but at least it's no longer a double > exponential. > > / Ulf > > On Sun, May 30, 2021 at 1:41 PM Martin Escardo > wrote: > > Consider the following Haskell code (also attached) and its translation > to Agda (not included). > > * In Agda the (good) runtime behaviour of example1 is replicated - it is > linear. > > * However, example2 in Haskell runs in roughly O(2^n) whereas in Agda it > seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. > > How do I rewrite the program in Agda to get the same times as in > Haskell? The crucial function is "epsilon". > > -- > *Main> example1 (nat (10^6)) > True > (2.83 secs, 696,069,600 bytes) > *Main> example2 (nat (15)) > False > (1.09 secs, 504,960,752 bytes) > *Main> example2 (nat 15) > False > (1.11 secs, 504,960,752 bytes) > *Main> example2 (nat 16) > False > (2.44 secs, 1,130,698,664 bytes) > *Main> example2 (nat 17) > False > (5.42 secs, 2,516,654,176 bytes) > *Main> example2 (nat 18) > False > (12.03 secs, 5,571,156,248 bytes) > -- > > data Nat = Zero | Succ Nat > > type Cantor = Nat -> Bool > > cons :: Bool -> Cantor -> Cantor > cons b alpha Zero? ? ?= b > cons b alpha (Succ n) = alpha n > > epsilon :: Nat -> (Cantor -> Bool) -> Cantor > epsilon Zero p? ? ?= \i -> False > epsilon (Succ n) p = cons b alpha > ?where > ? b :: Bool > ? b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) > > ? alpha :: Cantor > ? alpha = epsilon n (\alpha -> p (cons b alpha)) > > forevery :: Nat -> (Cantor -> Bool) -> Bool > forevery n p = p (epsilon n p) > > -- Examples > > nat :: Integer -> Nat > nat 0 = Zero > nat n = Succ (nat (n-1)) > > p1 :: Nat -> Cantor -> Bool > p1 n alpha = alpha n == alpha n > > example1 :: Nat -> Bool > example1 n = forevery (Succ n) (p1 n) > > p2 :: Nat -> Cantor -> Bool > p2 Zero? ? ?alpha = True > p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) > > example2 :: Nat -> Bool > example2 n = forevery n (p2 n) > > I think that "b" in Haskell gets evaluated at most once, but in Agda it > is evaluated zero times or else repeatedly. But I may be wrong. I tried > primForce but it didn't seem to make any difference. > > How do I make example2 as fast as in Haskell? > > Martin > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From ulf.norell at gmail.com Mon May 31 11:15:56 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Mon, 31 May 2021 11:15:56 +0200 Subject: [Agda] Evaluation question In-Reply-To: <7f7b1c2f-1ef8-bead-375b-415eee7bbcae@cs.bham.ac.uk> References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> <7f7b1c2f-1ef8-bead-375b-415eee7bbcae@cs.bham.ac.uk> Message-ID: That's interesting. I don't know what changed, but it's very recent. I was using a build from a couple of weeks ago and got the doubly exponential behaviour. My guess would be https://github.com/agda/agda/issues/5379 which changed the strictness behaviour of the reduce monad. / Ulf On Mon, May 31, 2021 at 9:42 AM Martin Escardo wrote: > Thanks, Ulf, for the three messages. I will try all that. > > At the same time, just before your message, I tried the release > candidate of Agda 2.6.2, without any change to my code, and I can run > example2 11 in about the same time as you. > > What has changed in 2.6.2 regarding evaluation? > > Best, > Martin > > On 31/05/2021 08:07, ulf.norell at gmail.com wrote: > > I assume we are talking type-checking time evaluation and not compiling > > to Haskell. > > > > In this case, surprisingly, I don't think the lambda lifting of b is the > > problem. Rather I think > > the double exponential is because the Agda abstract machine is bad at > > evaluating lambdas. > > If you get rid of the lambda in the local ?: > > > > epsilon : Nat ? (Cantor ? Bool) ? Cantor > > epsilon zero p = ? i ? false > > epsilon (suc n) p = cons b ? > > where > > b : Bool > > b = p (cons false (epsilon n ? ? ? p (cons false ?))) > > > > ? : Cantor > > ? = epsilon n (p ? cons b) > > > > it runs in what looks like 3^n to me. With this version I can C-c C-n > > example2 11 in 10s. Still far > > from the Haskell performance, but at least it's no longer a double > > exponential. > > > > / Ulf > > > > On Sun, May 30, 2021 at 1:41 PM Martin Escardo > > wrote: > > > > Consider the following Haskell code (also attached) and its > translation > > to Agda (not included). > > > > * In Agda the (good) runtime behaviour of example1 is replicated - > it is > > linear. > > > > * However, example2 in Haskell runs in roughly O(2^n) whereas in > Agda it > > seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. > > > > How do I rewrite the program in Agda to get the same times as in > > Haskell? The crucial function is "epsilon". > > > > -- > > *Main> example1 (nat (10^6)) > > True > > (2.83 secs, 696,069,600 bytes) > > *Main> example2 (nat (15)) > > False > > (1.09 secs, 504,960,752 bytes) > > *Main> example2 (nat 15) > > False > > (1.11 secs, 504,960,752 bytes) > > *Main> example2 (nat 16) > > False > > (2.44 secs, 1,130,698,664 bytes) > > *Main> example2 (nat 17) > > False > > (5.42 secs, 2,516,654,176 bytes) > > *Main> example2 (nat 18) > > False > > (12.03 secs, 5,571,156,248 bytes) > > -- > > > > data Nat = Zero | Succ Nat > > > > type Cantor = Nat -> Bool > > > > cons :: Bool -> Cantor -> Cantor > > cons b alpha Zero = b > > cons b alpha (Succ n) = alpha n > > > > epsilon :: Nat -> (Cantor -> Bool) -> Cantor > > epsilon Zero p = \i -> False > > epsilon (Succ n) p = cons b alpha > > where > > b :: Bool > > b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) > > > > alpha :: Cantor > > alpha = epsilon n (\alpha -> p (cons b alpha)) > > > > forevery :: Nat -> (Cantor -> Bool) -> Bool > > forevery n p = p (epsilon n p) > > > > -- Examples > > > > nat :: Integer -> Nat > > nat 0 = Zero > > nat n = Succ (nat (n-1)) > > > > p1 :: Nat -> Cantor -> Bool > > p1 n alpha = alpha n == alpha n > > > > example1 :: Nat -> Bool > > example1 n = forevery (Succ n) (p1 n) > > > > p2 :: Nat -> Cantor -> Bool > > p2 Zero alpha = True > > p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) > > > > example2 :: Nat -> Bool > > example2 n = forevery n (p2 n) > > > > I think that "b" in Haskell gets evaluated at most once, but in Agda > it > > is evaluated zero times or else repeatedly. But I may be wrong. I > tried > > primForce but it didn't seem to make any difference. > > > > How do I make example2 as fast as in Haskell? > > > > Martin > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > > -- > Martin Escardo > http://www.cs.bham.ac.uk/~mhe > -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Mon May 31 22:28:13 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Mon, 31 May 2021 21:28:13 +0100 Subject: [Agda] Evaluation question In-Reply-To: References: <20d4272f-9550-b574-51b8-bf3fb81e3f68@cs.bham.ac.uk> <7f7b1c2f-1ef8-bead-375b-415eee7bbcae@cs.bham.ac.uk> Message-ID: <6e1152a2-8156-0283-6c9e-01b81856c05c@cs.bham.ac.uk> On 31/05/2021 10:15, ulf.norell at gmail.com wrote: > That's interesting. I don't know what changed, but it's very recent. I > was using a build from a couple > of weeks ago and got the doubly exponential behaviour. I think I know why: In Agda 2.6.1 the default is --auto-inline, as opposed to Agda 2.6.2. But case_of_ is useless efficiency-wise with inlining. In fact, your proposed solution with case_of_ doesn't make any difference in Agda 2.6.1, unless you declare {-# NOINLINE case_of_ #-} With this, I can get up to n=17 with 2.6.1 in example2, in 37sec in a core-i7 machine. And the time is 2^n quite precisely experimentally. For Agda 2.6.2 release candidate, I can do n=17 for example2 in 25sec provided: * I compile Agda with -foptimise-heavily * I run Agda with --auto-inline * But keep case_of_ as NOINLINE Because optimise-heavily and --auto-inline were default in 2.6.1, something seems to have got better in Agda 2.6.2. But for examples like this only. My repository TypeTopology types checks in 4min in both 2.6.1 and 2.6.2 with the above options. Also, as discussed, the original version without case_of_ is already fast enough in Agda 2.6.2. Martin > > My guess would be https://github.com/agda/agda/issues/5379 > which changed the strictness > behaviour > of the reduce monad. > > / Ulf > > On Mon, May 31, 2021 at 9:42 AM Martin Escardo > wrote: > > Thanks, Ulf, for the three messages. I will try all that. > > At the same time, just before your message, I tried the release > candidate of Agda 2.6.2, without any change to my code, and I can run > example2 11 in about the same time as you. > > What has changed in 2.6.2 regarding evaluation? > > Best, > Martin > > On 31/05/2021 08:07, ulf.norell at gmail.com > wrote: > > I assume we are talking type-checking time evaluation and not > compiling > > to Haskell. > > > > In this case, surprisingly, I don't think the lambda lifting of b > is the > > problem. Rather I think > > the double exponential is because the Agda abstract machine is bad at > > evaluating lambdas. > > If you get rid of the lambda in the local ?: > > > > epsilon : Nat ? (Cantor ? Bool) ? Cantor > > epsilon zero ? ?p = ? i ? false > > epsilon (suc n) p = cons b ? > > ? where > > ? ? b : Bool > > ? ? b = p (cons false (epsilon n ? ? ? p (cons false ?))) > > > > ? ? ? : Cantor > > ? ? ? = epsilon n (p ? cons b) > > > > it runs in what looks like 3^n to me. With this version I can C-c C-n > > example2 11 in 10s. Still far > > from the Haskell performance, but at least it's no longer a double > > exponential. > > > > / Ulf > > > > On Sun, May 30, 2021 at 1:41 PM Martin Escardo > > > >> > wrote: > > > >? ? ?Consider the following Haskell code (also attached) and its > translation > >? ? ?to Agda (not included). > > > >? ? ?* In Agda the (good) runtime behaviour of example1 is > replicated - it is > >? ? ?linear. > > > >? ? ?* However, example2 in Haskell runs in roughly O(2^n) whereas > in Agda it > >? ? ?seems to run in O(2^(2^n)). The largest I can run in Agda is n=4. > > > >? ? ?How do I rewrite the program in Agda to get the same times as in > >? ? ?Haskell? The crucial function is "epsilon". > > > >? ? ?-- > >? ? ?*Main> example1 (nat (10^6)) > >? ? ?True > >? ? ?(2.83 secs, 696,069,600 bytes) > >? ? ?*Main> example2 (nat (15)) > >? ? ?False > >? ? ?(1.09 secs, 504,960,752 bytes) > >? ? ?*Main> example2 (nat 15) > >? ? ?False > >? ? ?(1.11 secs, 504,960,752 bytes) > >? ? ?*Main> example2 (nat 16) > >? ? ?False > >? ? ?(2.44 secs, 1,130,698,664 bytes) > >? ? ?*Main> example2 (nat 17) > >? ? ?False > >? ? ?(5.42 secs, 2,516,654,176 bytes) > >? ? ?*Main> example2 (nat 18) > >? ? ?False > >? ? ?(12.03 secs, 5,571,156,248 bytes) > >? ? ?-- > > > >? ? ?data Nat = Zero | Succ Nat > > > >? ? ?type Cantor = Nat -> Bool > > > >? ? ?cons :: Bool -> Cantor -> Cantor > >? ? ?cons b alpha Zero? ? ?= b > >? ? ?cons b alpha (Succ n) = alpha n > > > >? ? ?epsilon :: Nat -> (Cantor -> Bool) -> Cantor > >? ? ?epsilon Zero p? ? ?= \i -> False > >? ? ?epsilon (Succ n) p = cons b alpha > >? ? ??where > >? ? ?? b :: Bool > >? ? ?? b = p (cons False (epsilon n (\alpha -> p (cons False alpha)))) > > > >? ? ?? alpha :: Cantor > >? ? ?? alpha = epsilon n (\alpha -> p (cons b alpha)) > > > >? ? ?forevery :: Nat -> (Cantor -> Bool) -> Bool > >? ? ?forevery n p = p (epsilon n p) > > > >? ? ?-- Examples > > > >? ? ?nat :: Integer -> Nat > >? ? ?nat 0 = Zero > >? ? ?nat n = Succ (nat (n-1)) > > > >? ? ?p1 :: Nat -> Cantor -> Bool > >? ? ?p1 n alpha = alpha n == alpha n > > > >? ? ?example1 :: Nat -> Bool > >? ? ?example1 n = forevery (Succ n) (p1 n) > > > >? ? ?p2 :: Nat -> Cantor -> Bool > >? ? ?p2 Zero? ? ?alpha = True > >? ? ?p2 (Succ n) alpha = alpha Zero /= p2 n (\i -> alpha (Succ i)) > > > >? ? ?example2 :: Nat -> Bool > >? ? ?example2 n = forevery n (p2 n) > > > >? ? ?I think that "b" in Haskell gets evaluated at most once, but > in Agda it > >? ? ?is evaluated zero times or else repeatedly. But I may be > wrong. I tried > >? ? ?primForce but it didn't seem to make any difference. > > > >? ? ?How do I make example2 as fast as in Haskell? > > > >? ? ?Martin > > > >? ? ?_______________________________________________ > >? ? ?Agda mailing list > >? ? ?Agda at lists.chalmers.se > > > >? ? ?https://lists.chalmers.se/mailman/listinfo/agda > > >? ? ? > > > > > -- > Martin Escardo > http://www.cs.bham.ac.uk/~mhe > -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From icfp.publicity at googlemail.com Wed Jun 2 21:11:35 2021 From: icfp.publicity at googlemail.com (Sam Tobin-Hochstadt) Date: Wed, 02 Jun 2021 15:11:35 -0400 Subject: [Agda] Call for Tutorial, Panel, and Discussion Proposals: ICFP 2021 Message-ID: <60b7d7e714d2b_24cee294-445@homer.mail> CALL FOR TUTORIAL, PANEL, AND DISCUSSION PROPOSALS ICFP 2020 25th ACM SIGPLAN International Conference on Functional Programming August 22 - 27, 2021 Virtual https://icfp21.sigplan.org/ The 25th ACM SIGPLAN International Conference on Functional Programming will be held virtually on August 22-27, 2021. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for tutorials, lasting approximately 3 hours each, to be presented during ICFP and its co-located workshops and other events. These tutorials are the successor to the CUFP tutorials from previous years, but we also welcome tutorials whose primary audience is researchers rather than practitioners. Tutorials may focus either on a concrete technology or on a theoretical or mathematical tool. Ideally, tutorials will have a concrete result, such as "Learn to do X with Y" rather than "Learn language Y". Just like last year, following the success of the #ShutDownPL event @ ICFP, we are also inviting proposals for panels and discussions on topics of broader interest to the PL community. Tutorials, panels, and discussions may occur before or after ICFP, co-located with the associated workshops, on August 22 or August 26-27. ---------------------------------------------------------------------- Submission details Deadline for submission: June 28th, 2020 Notification of acceptance: July 5th, 2020 Prospective organizers of tutorials are invited to submit a completed tutorial proposal form in plain text format to the ICFP 2021 workshop co-chairs (Leonidas Lampropoulos and Zoe Paraskevopoulou), via email to icfp-workshops-2021 at googlegroups.com by June 28th, 2021. Please note that this is a firm deadline. Organizers will be notified if their event proposal is accepted by July 5th, 2021. The proposal form is available at: http://www.icfpconference.org/icfp2021-files/icfp21-panel-form.txt http://www.icfpconference.org/icfp2021-files/icfp21-tutorials-form.txt ---------------------------------------------------------------------- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2021 organizing committee. Tutorials Co-Chair: Zoe Paraskevopoulou (Northeastern) Tutorials Co-Chair: Leonidas Lampropoulos (University of Maryland) General Chair: Sukyoung Ryu (KAIST) Program Chair: Ron Garcia (University of British Columbia) ---------------------------------------------------------------------- Further information Any queries should be addressed to the tutorial co-chairs ( Leonidas Lampropoulos and Zoe Paraskevopoulou), via email to icfp-workshops-2021 at googlegroups.com From W.S.Swierstra at uu.nl Thu Jun 3 11:04:27 2021 From: W.S.Swierstra at uu.nl (Swierstra, W.S. (Wouter)) Date: Thu, 3 Jun 2021 09:04:27 +0000 Subject: [Agda] Eta for Bool Message-ID: Dear all, Suppose I have the following (silly) identity function: id : Bool -> Bool id True = True id False = False It's easy enough to show that this really is the identity function by proving: id-id : (b : Bool) -> id b ? b id-id True = refl id-id False = refl This is all easy enough -- but I've been writing a program where there are quite a few pattern matches of this form, often with the same (up to implicit arguments) right hand sides. Is there some idiom or eliminator that can reduce the amount of pattern matching required? I could write 'id-id' using the usual eliminator for booleans, but I still need to pass in two copies of refl. What are my options for keeping the number of cases in check? Thanks in advance, Wouter From ulf.norell at gmail.com Thu Jun 3 15:37:30 2021 From: ulf.norell at gmail.com (Ulf Norell) Date: Thu, 3 Jun 2021 15:37:30 +0200 Subject: [Agda] Eta for Bool In-Reply-To: References: Message-ID: Hi Wouter, I think your best bet here is using reflection. Something like open import Agda.Builtin.Bool open import Agda.Builtin.Equality open import Agda.Builtin.Reflection open import Agda.Builtin.Unit open import Agda.Builtin.List id : Bool ? Bool id false = false id true = true the-hammer : Term ? TC ? the-hammer hole = unify hole (con (quote refl) []) smash-bool : (tac : Term ? TC ?) {P : Bool ? Set} {@(tactic tac) f : P false} {@(tactic tac) t : P true} ? ? b ? P b smash-bool tac {f = f} {t = t} false = f smash-bool tac {f = f} {t = t} true = t id-id : ? b ? id b ? b id-id = smash-bool the-hammer / Ulf On Thu, Jun 3, 2021 at 11:04 AM Swierstra, W.S. (Wouter) < W.S.Swierstra at uu.nl> wrote: > Dear all, > > Suppose I have the following (silly) identity function: > > id : Bool -> Bool > id True = True > id False = False > > It's easy enough to show that this really is the identity function by > proving: > > id-id : (b : Bool) -> id b ? b > id-id True = refl > id-id False = refl > > This is all easy enough -- but I've been writing a program where there > are quite a few pattern matches of this form, often with the same (up to > implicit arguments) right hand sides. Is there some idiom or eliminator > that can reduce the amount of pattern matching required? I could write > 'id-id' using the usual eliminator for booleans, but I still need to > pass in two copies of refl. What are my options for keeping the number > of cases in check? Thanks in advance, > > Wouter > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From benedikt.ahrens at gmail.com Thu Jun 3 23:00:54 2021 From: benedikt.ahrens at gmail.com (Benedikt Ahrens) Date: Thu, 3 Jun 2021 23:00:54 +0200 Subject: [Agda] Research position in Formal Verification at HENSOLDT Cyber in Munich Message-ID: <867193af-8aa3-14c4-23be-f61abe6da98c@gmail.com> Dear All, A job opening for a "Researcher (in) Formal Verification" is being advertised at Hensoldt Cyber GmbH at the outskirts of Munich, Germany. If you would like to contribute to making software and hardware more secure, this job might be for you! The job ad (reproduced below), with information on how to apply, is located at https://hensoldt-cyber.com/job-offers/#job-549910. The ad mentions an official contact email address. Additionally, please don't hesitate to get in touch with me with any informal inquiries. All the best, Benedikt HENSOLDT Cyber develops embedded IT products that meet the highest security requirements. It integrates an invulnerable operating system with security-hardened hardware to build the most secure product on the global IT market. The company combines more than 50 years of domain experience with world-class expertise in hardware and software design to achieve global leadership. We are buidling up a new research team, which is working on cutting-edge projects targeting the aspects formal verification, operating system design and cryptography with the focus on secure embedded systems. If you have a strong interest and/or background in secure operating system development, we would like to get in touch with you. Tasks ===== - Research on formal verification of software, with a focus on deductive verification - Design new tools and methods to make verification possible in new areas, or extend and improve existing tools to reduce verification effort - Actively participate in international and national funded research and customer projects - Contribute to research communities and efforts, including publishing in top conferences and relevant journals Requirements ============ - PhD in Computer Science, Mathematics or other comparable subject - Demonstrable experience in theorem proving (e.g. Coq, Isabelle, Agda) - Strong publication record and demonstrated research capability (e.g. obtained grants, patent submissions, etc.) - Prior experience in software verification is a plus - Experience in hardware verification is a plus - Experience in cryptography is a plus - Experience in C/C++ programming would be an advantage - Proficiency in English (both written and spoken) and interest to work in a truly diverse cultural environment - Excellent communication skills, teamwork spirit, initiative and autonomous working are required We are not only offering flexible and mobile working, but the opportunity to be involved in the development of cutting-edge security products in an international and innovative environment. Did we spark your interest? Then we are looking forward to your application. If you have any questions on the vacancy please don't hesitate to contact us via mail (hr-cyber at hensoldt-cyber.com). From h.basold at liacs.leidenuniv.nl Fri Jun 4 21:27:36 2021 From: h.basold at liacs.leidenuniv.nl (Henning Basold) Date: Fri, 4 Jun 2021 21:27:36 +0200 Subject: [Agda] TYPES 2021: Call for Participation Message-ID: Call for Participation TYPES 2021 27th International Conference on Types for Proofs and Programs 14 - 18 June 2021 Virtual in Leiden, The Netherlands Leiden Institute for Advanced Computer Science https://types21.liacs.nl/ Venue ---------- This year?s TYPES will be held virtually in an interactive environment. That the conference is held virtually constrains the time of talks, and complicates exchange and collaboration. TYPES 2021 will therefore not only consist of presentations, but also a setup of working groups that get together throughout the week. Every day will be split into a session of talks and tutorials, and a collaboration session during which the working groups will get together. The hope is that we can retain at least some of the exchange and chatter that is the heart of the TYPES conference series. The programme can be found here: https://types21.liacs.nl/programme/ Registration and (no) Fees ---------------------------- Despite the difficulty that a virtual event brings, it also offers a chance. We will make TYPES as inclusive as possible, which means that attending is free of charge for all participants. The costs for the conference are kindly covered by the Leiden Institute of Advanced Computer Science (LIACS, liacs.leidenuniv.nl/). However, registration is required to participate in the TYPES meeting. If you wish to attend, then please fill in the registration form latest by *10 June 2021 AoE*: https://types21.liacs.nl/registration/ In the form you can choose the days on which you wish to attend. Please make sure that you will be, at least partially, present during those days. This helps us to estimate the overall costs better and to ensure that decisions made during the business meeting will be valid. Invited Speakers ----------------------------- Stephanie Balzer (Carnegie Mellon University) Ulrik Buchholtz (Technical University Darmstadt) Sara Negri (University of Genova) Pierre-Marie P?drot (INRIA -- Inria Rennes-Bretagne-Atlantique) Contributed Talks -------------------- The contributed talks can be found here: https://types21.liacs.nl/programme/accepted-contributions/ Abstracts for the contributions will be made available before the conference on the same website. About Types --------------- The TYPES meetings are a forum to present new and on-going work in all aspects of type theory and its applications, especially in formalised and computer assisted reasoning and computer programming. The TYPES areas of interest include, but are not limited to: * Foundations of type theory and constructive mathematics; * Applications of type theory (e.g., linguistics or concurrency); * Dependently typed programming; * Industrial uses of type theory technology; * Meta-theoretic studies of type systems; * Proof assistants and proof technology; * Automation in computer-assisted reasoning; * Links between type theory and functional programming; * Formalising mathematics using type theory; * Homotopy type theory and univalent mathematics. The TYPES meetings from 1990 to 2008 were annual workshops of a sequence of five EU funded networking projects. From 2009 to 2015, TYPES has been run as an independent conference series. From 2016 to 2020, TYPES was partially supported by COST Action EUTypes CA15123. Previous TYPES meetings were held in Antibes (1990), Edinburgh (1991), B?stad (1992), Nijmegen (1993), B?stad (1994), Torino (1995), Aussois (1996), Kloster Irsee (1998), L?keberg (1999), Durham (2000), Berg en Dal near Nijmegen (2002), Torino (2003), Jouy-en-Josas near Paris (2004), Nottingham (2006), Cividale del Friuli (2007), Torino (2008), Aussois (2009), Warsaw (2010), Bergen (2011), Toulouse (2013), Paris (2014), Tallinn (2015), Novi Sad (2016), Budapest (2017), Braga (2018), Oslo (2019) and Torino (2020). Post-proceedings ------------------- Similarly to TYPES 2011 and TYPES 2013-2020, a post-proceedings volume will be published in the Leibniz International Proceedings in Informatics (LIPIcs) series. Submission to that volume will be open to everyone. Tentative dates for post-proceedings: * Non-binding intent (abstract) 29 October 2021 * Paper submission 26 November 2021 * Author notification 25 March 2022 The formal call with binding dates for the post-proceedings will be issued after the conference. Contact ----------- Email: types21 at liacs.leidenuniv.nl Web form: https://types21.liacs.nl/contact/ Programme Committee --------------------- Andreas Abel (Gothenburg University/Chalmers) Henning Basold (LIACS -- Leiden University) (chair) Stefano Berardi (Universit? di Torino) Marc Bezem (University of Bergen) Fr?d?ric Blanqui (INRIA -- ENS Paris-Saclay) Sandrine Blazy (INRIA -- University of Rennes) Ana Bove (Chalmers / U. of Gothenburg) Paolo Capriotti (no affiliation) Jesper Cockx (TU Delft) Jos? Esp?rito Santo (University of Minho) Herman Geuvers (Radboud University Nijmegen) Silvia Ghilezan (University of Novi Sad) Nicolai Kraus (U. of Nottingham) Sergue? Lenglet (Univ. de Lorraine) Assia Mahboubi (INRIA -- Nantes and VU Amsterdam) Ralph Matthes (IRIT -- CNRS and University of Toulouse) Keiko Nakata (Kyoto University) Fredrik Nordvall Forsberg (University of Strathclyde) Jorge A. P?rez (University of Groningen) Gabriel Scherer (INRIA Saclay) Aleksy Schubert (University of Warsaw) Niccol? Veltri (Tallin UT) Stephanie Weirich (U. of Pennsylvania) Organiser ------------ Henning Basold (LIACS -- Leiden University) Tanjona Ralaivaosaona (LIACS -- Leiden University) -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 665 bytes Desc: OpenPGP digital signature URL: From mechvel at scico.botik.ru Sat Jun 5 12:21:32 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 05 Jun 2021 13:21:32 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: Message-ID: On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > Dear all, > > The Agda Team is very pleased to announce a release candidate of Agda > 2.6.2. We plan to release 2.6.2 in a few days. > [..] > Agda 2.6.2 RC has been tested with GHC 9.0.1, 8.10.4, 8.8.4, 8.6.5, > 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. > In Ubuntu Linux 18.04, I first tried it with ghc-8.8.3 : > cabal install And it has failed, it has reported several errors, I do not recall what precisely, but something essential. (probably, you can try it under ghc-8.8.3, Linux). Then I tried this under ghc-9.0.1, and it has installed. Now, I am going to apply this candidate. Regards, ----- Sergei From Jesper at sikanda.be Sat Jun 5 12:38:30 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sat, 5 Jun 2021 12:38:30 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: Message-ID: Dear Sergei, Note that 8.8.3 is not supported, so it is not surprising that the compilation failed. -- Jesper On Sat, Jun 5, 2021 at 12:22 PM wrote: > On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > > Dear all, > > > > The Agda Team is very pleased to announce a release candidate of Agda > > 2.6.2. We plan to release 2.6.2 in a few days. > > [..] > > > Agda 2.6.2 RC has been tested with GHC 9.0.1, 8.10.4, 8.8.4, 8.6.5, > > 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. > > > > In Ubuntu Linux 18.04, I first tried it with ghc-8.8.3 : > > > cabal install > > And it has failed, it has reported several errors, I do not recall what > precisely, > but something essential. > (probably, you can try it under ghc-8.8.3, Linux). > > Then I tried this under ghc-9.0.1, and it has installed. > Now, I am going to apply this candidate. > > Regards, > > ----- > Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sat Jun 5 13:14:04 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 05 Jun 2021 14:14:04 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: Message-ID: <31f3ad68bc67ad75873f7db199f58863@scico.botik.ru> On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > Dear all, > > The Agda Team is very pleased to announce a release candidate of Agda > 2.6.2. We plan to release 2.6.2 in a few days. > > # Standard library > > For the time being, you can use the *experimental* branch of the > standard library with Agda 2.6.2 RC. This branch is available at > > https://github.com/agda/agda-stdlib/ > I have downloaded the .zip archive from https://github.com/agda/agda-stdlib/, Code, and tried to type-check my application under Ubuntu-Linux 18.04, ghc-9.0.1. > agda $agdaLibOpt ForTests reports .../source/ForTests.agda:22,1-24,30 Importing module IO using the --guardedness flag from a module which does not. when scope checking the declaration open import IO public using (Main; IO; run; putStr; putStrLn; readFiniteFile; writeFile; appendFile) Something has changed in standard library? -- SM From Jesper at sikanda.be Sat Jun 5 14:05:59 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sat, 5 Jun 2021 14:05:59 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: <31f3ad68bc67ad75873f7db199f58863@scico.botik.ru> References: <31f3ad68bc67ad75873f7db199f58863@scico.botik.ru> Message-ID: Hi Sergei, As noted in the changelog, in Agda 2.6.2 the --guardedness flag (which is used to typecheck modules that rely on the guardedness criterion for checking productivity of coinductive functions) is no longer enabled by default, so you need to add that flag if you want to use it (or if you want to use another module that uses it, as is the case here). If you do not want to add --guardedness to individual modules in your library, you can also simply put `flags: --guardedness` in your .agda-lib file to enable it for all modules in the library. (The reason for this change is that we have two ways to check productivity: either --guardedness or --sized-types, but these two are incompatible. So from 2.6.2 you now have to choose which one you want to use.) -- Jesper On Sat, Jun 5, 2021 at 1:15 PM wrote: > On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > > Dear all, > > > > The Agda Team is very pleased to announce a release candidate of Agda > > 2.6.2. We plan to release 2.6.2 in a few days. > > > > > # Standard library > > > > For the time being, you can use the *experimental* branch of the > > standard library with Agda 2.6.2 RC. This branch is available at > > > > https://github.com/agda/agda-stdlib/ > > > > I have downloaded the .zip archive from > https://github.com/agda/agda-stdlib/, Code, > > and tried to type-check my application under Ubuntu-Linux 18.04, > ghc-9.0.1. > > > agda $agdaLibOpt ForTests > > reports > > .../source/ForTests.agda:22,1-24,30 > Importing module IO using the --guardedness flag from a module > which does not. > when scope checking the declaration > open import IO public > using (Main; IO; run; putStr; putStrLn; readFiniteFile; > writeFile; > appendFile) > > Something has changed in standard library? > > -- > SM > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sat Jun 5 20:50:24 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 05 Jun 2021 21:50:24 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: <31f3ad68bc67ad75873f7db199f58863@scico.botik.ru> Message-ID: On 2021-06-05 15:05, Jesper Cockx wrote: > Hi Sergei, > > As noted in the changelog, in Agda 2.6.2 the --guardedness flag (which > is used to typecheck modules that rely on the guardedness criterion > for checking productivity of coinductive functions) is no longer > enabled by default, so you need to add that flag if you want to use it > (or if you want to use another module that uses it, as is the case > here). If you do not want to add --guardedness to individual modules > in your library, you can also simply put `flags: --guardedness` in > your .agda-lib file to enable it for all modules in the library. > > (The reason for this change is that we have two ways to check > productivity: either --guardedness or --sized-types, but these two are > incompatible. So from 2.6.2 you now have to choose which one you want > to use.) But what is the reason for not keeping the default option, as in Agda 2.6.1 ? I expect that many users (like myself) do not know what are coinductive functions, nor of productivity of these function, nor of sized types. These people simply need to print out the result of a computation (putStrLn). This forces them to import IO, and then, comes this --guardedness ... ? Regards, -- SM > > -- Jesper > > On Sat, Jun 5, 2021 at 1:15 PM wrote: > >> On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: >>> Dear all, >>> >>> The Agda Team is very pleased to announce a release candidate of >> Agda >>> 2.6.2. We plan to release 2.6.2 in a few days. >>> >> >>> # Standard library >>> >>> For the time being, you can use the *experimental* branch of the >>> standard library with Agda 2.6.2 RC. This branch is available at >>> >>> https://github.com/agda/agda-stdlib/ >>> >> >> I have downloaded the .zip archive from >> https://github.com/agda/agda-stdlib/, Code, >> >> and tried to type-check my application under Ubuntu-Linux 18.04, >> ghc-9.0.1. >> >>> agda $agdaLibOpt ForTests >> >> reports >> >> .../source/ForTests.agda:22,1-24,30 >> Importing module IO using the --guardedness flag from a module >> which does not. >> when scope checking the declaration >> open import IO public >> using (Main; IO; run; putStr; putStrLn; >> readFiniteFile; >> writeFile; >> appendFile) >> >> Something has changed in standard library? >> >> -- >> SM >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda From mechvel at scico.botik.ru Sat Jun 5 22:29:34 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 05 Jun 2021 23:29:34 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: Message-ID: <726ce8fb0fbf45a05f17c09a024195dc@scico.botik.ru> On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > Dear all, > > The Agda Team is very pleased to announce a release candidate of Agda > 2.6.2. We plan to release 2.6.2 in a few days. > Please, consider http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc/ and apply there > cd source > agda $agdaLibOpt --guardedness +RTS -M24G -RTS Pol/Karatsuba.agda In Agda-2.6.1 (where --guardedness is the default) + ghc-8.8.3, Ubuntu Linux 18.04 it was sufficient 7G to type-check this in 15 minutes on a 3 GHz machine. And in this candidate for Agda-2.6.2 + ghc-9.0.1 24G is not sufficient to type-check this in any reasonable time. What can be the source of this? I do not know, does it inline things that were not inlined in 2.6.1 ? Regards, ------ Sergei From asr at eafit.edu.co Sat Jun 5 23:07:04 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sat, 5 Jun 2021 16:07:04 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: Message-ID: Dear all, The Agda Team is very pleased to announce the second release candidate (RC2) of Agda 2.6.2. We plan to release 2.6.2 in a few days. # Changes respect to the first release candidate In Agda 2.6.2 RC2 we fixed a couple of additional issues and a regression. # Installation Agda 2.6.2 RC2 can be installed using cabal-install or stack: * Getting the release candidate $ cabal get https://hackage.haskell.org/package/Agda-2.6.1.3.20210605/candidate/Agda-2.6.1.3.20210605.tar.gz $ cd Agda-2.6.1.3.20210605 * Using cabal-install $ cabal install * Using stack $ stack --stack-yaml stack-a.b.c.yaml install replacing `a.b.c` with your version of GHC. # Fixed issues http://hackage.haskell.org/package/Agda-2.6.1.3.20210605/candidate/changelog Enjoy Agda 2.6.2 RC2 and please test as much as possible. -- Andr?s, on behalf of the Agda Team From asr at eafit.edu.co Sun Jun 6 08:14:24 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sun, 6 Jun 2021 01:14:24 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: <726ce8fb0fbf45a05f17c09a024195dc@scico.botik.ru> References: <726ce8fb0fbf45a05f17c09a024195dc@scico.botik.ru> Message-ID: Hi Sergei, Thank you for your feedback. On Sat, 5 Jun 2021 at 15:29, wrote: > And in this candidate for Agda-2.6.2 + ghc-9.0.1 > 24G is not sufficient to type-check this in any reasonable time. >From CHANGELOG.md: * New option `--auto-inline` turns on automatic compile-time inlining of simple functions. This was previously enabled by default. Note that the absence of automatic inlining can make typechecking substantially slower. I could type-check your program in 8 min, on GHC 8.10.4, using Agda 2.6.2 RC2 and the experimental branch of the standard library by running: `agda --auto-inline +RTS -M7G -RTS Pol/Karatsuba.agda` (I couldn't type-check your program without using the `--auto-inline` option.) Best, -- Andr?s From Jesper at sikanda.be Sun Jun 6 09:26:50 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Sun, 6 Jun 2021 09:26:50 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: References: <31f3ad68bc67ad75873f7db199f58863@scico.botik.ru> Message-ID: Hi Sergei, The reason why we chose to not leave --guardedness by default is because that would mean all libraries would use --guardedness by default as well, which would make it impossible to use those libraries together with --sized-types. It is easier to remember to enable --guardedness when you need it, instead of having to remember to *disable* it when you *don't* need it. I hope this explains why we decided to make this change. -- Jesper On Sat, Jun 5, 2021 at 8:51 PM wrote: > On 2021-06-05 15:05, Jesper Cockx wrote: > > Hi Sergei, > > > > As noted in the changelog, in Agda 2.6.2 the --guardedness flag (which > > is used to typecheck modules that rely on the guardedness criterion > > for checking productivity of coinductive functions) is no longer > > enabled by default, so you need to add that flag if you want to use it > > (or if you want to use another module that uses it, as is the case > > here). If you do not want to add --guardedness to individual modules > > in your library, you can also simply put `flags: --guardedness` in > > your .agda-lib file to enable it for all modules in the library. > > > > (The reason for this change is that we have two ways to check > > productivity: either --guardedness or --sized-types, but these two are > > incompatible. So from 2.6.2 you now have to choose which one you want > > to use.) > > > But what is the reason for not keeping the default option, as in Agda > 2.6.1 ? > > I expect that many users (like myself) do not know what are coinductive > functions, > nor of productivity of these function, nor of sized types. > These people simply need to print out the result of a computation > (putStrLn). > This forces them to import IO, and then, comes this --guardedness ... > ? > > Regards, > > -- > SM > > > > > > > -- Jesper > > > > On Sat, Jun 5, 2021 at 1:15 PM wrote: > > > >> On 2021-05-25 18:40, Andr?s Sicard-Ram?rez wrote: > >>> Dear all, > >>> > >>> The Agda Team is very pleased to announce a release candidate of > >> Agda > >>> 2.6.2. We plan to release 2.6.2 in a few days. > >>> > >> > >>> # Standard library > >>> > >>> For the time being, you can use the *experimental* branch of the > >>> standard library with Agda 2.6.2 RC. This branch is available at > >>> > >>> https://github.com/agda/agda-stdlib/ > >>> > >> > >> I have downloaded the .zip archive from > >> https://github.com/agda/agda-stdlib/, Code, > >> > >> and tried to type-check my application under Ubuntu-Linux 18.04, > >> ghc-9.0.1. > >> > >>> agda $agdaLibOpt ForTests > >> > >> reports > >> > >> .../source/ForTests.agda:22,1-24,30 > >> Importing module IO using the --guardedness flag from a module > >> which does not. > >> when scope checking the declaration > >> open import IO public > >> using (Main; IO; run; putStr; putStrLn; > >> readFiniteFile; > >> writeFile; > >> appendFile) > >> > >> Something has changed in standard library? > >> > >> -- > >> SM > >> _______________________________________________ > >> Agda mailing list > >> Agda at lists.chalmers.se > >> https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sun Jun 6 15:11:21 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 16:11:21 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: Message-ID: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> On 2021-06-06 00:07, Andr?s Sicard-Ram?rez wrote: > Dear all, > > The Agda Team is very pleased to announce the second release candidate > (RC2) of Agda 2.6.2. We plan to release 2.6.2 in a few days. > I have tested it on my application http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc under MAlonzo, ghc-9.0.1, Ubuntu Linux 18.04. It looks like working correct. But the performance has reduced on 20% relatively to Agda-2.6.1 + ghc-8.8.3. To keep the correspondence to 2.6.1, the keys --auto-inline --guardedness are added to the making command. The performance test for the polynomial arithmetic is made and run by > agda -c $agdaLibOpt --auto-inline --guardedness Pol/KTest > ./KTest In Pol/KTest it is set n = 12. And its time (for pk) is 7.7 sec (on my 3 GHz machine) for 2.6.1 + ghc-8.8.3 - see the timing table and its column for pk. 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. Setting there n = 13 also shows 20% overhead. (There "kThreshold = 19" is a typo, in reality it is 18, and this difference must not be essential). Also I have tested the polynomial arithmetic performance in Haskell for ghc-8.8.3 and ghc-9.0.1. The latter is 5% slower. 20% is not so highly important, but some minor questions can arise. I do not know, may be it worth to try various keys, may be, concerning inlining for `case_of_' or such. May be 2.6.2-rc2 applies different optimization keys ... Regards, ------ Sergei From m.escardo at cs.bham.ac.uk Sun Jun 6 16:43:36 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sun, 6 Jun 2021 15:43:36 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> Message-ID: <15b60731-07f8-66d8-c05e-4a69bdb48e5a@cs.bham.ac.uk> You also need to install agda, if you use cabal, with -foptimise-heavily. The omission of this option adds 25% to the type checking time. The omission of the option --auto-inline, mentioned earlier, also adds 25%. So the omission of both adds 50%. The omission of these two options is now the default. This is the case, at least, in one of my Agda developments, whose type checking time goes from 4 to 6 minutes. So you need to add them both to regain the performance of Agda 2.6.1. At least I do. M. On 06/06/2021 14:11, mechvel at scico.botik.ru wrote: > On 2021-06-06 00:07, Andr?s Sicard-Ram?rez wrote: >> Dear all, >> >> The Agda Team is very pleased to announce the second release candidate >> (RC2) of Agda 2.6.2. We plan to release 2.6.2 in a few days. >> > > > I have tested it on my application > ? http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc > > under? MAlonzo, ghc-9.0.1, Ubuntu Linux 18.04. > > It looks like working correct. > But the performance has reduced on? 20%? relatively to? Agda-2.6.1 + > ghc-8.8.3. > > To keep the correspondence to 2.6.1, the keys --auto-inline --guardedness > are added to the making command. > The performance test for the polynomial arithmetic is made and run by > > ? > agda -c $agdaLibOpt --auto-inline --guardedness Pol/KTest > ? > ./KTest > > In? Pol/KTest?? it is set? n = 12. > And its time (for pk) is? 7.7 sec (on my 3 GHz machine) for 2.6.1 + > ghc-8.8.3 > - see the timing table and its column for pk. > > 2.6.2.rc2 + ghc-9.0.1? spends 20% more of time. > > Setting there n = 13 also shows 20% overhead. > > (There "kThreshold = 19" is a typo, in reality it is 18, and this > difference must not be essential). > > Also I have tested the polynomial arithmetic performance in Haskell for > ghc-8.8.3 and ghc-9.0.1.? The latter is? 5%? slower. > > 20% is not so highly important, but some minor questions can arise. > I do not know, may be it worth to try various keys, may be, concerning > inlining for `case_of_' > or such. > May be 2.6.2-rc2 applies different optimization keys ... > > Regards, > > ------ > Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From nad at cse.gu.se Sun Jun 6 18:01:22 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Sun, 6 Jun 2021 18:01:22 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> Message-ID: <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: > But the performance has reduced on 20% relatively to Agda-2.6.1 + ghc-8.8.3. > 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. If I understood you correctly you used two different versions of GHC. Can you rerun the test using one version of GHC? -- /NAD From nad at cse.gu.se Sun Jun 6 18:03:55 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Sun, 6 Jun 2021 18:03:55 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate In-Reply-To: <726ce8fb0fbf45a05f17c09a024195dc@scico.botik.ru> References: <726ce8fb0fbf45a05f17c09a024195dc@scico.botik.ru> Message-ID: On 2021-06-05 22:29, mechvel at scico.botik.ru wrote: > > agda $agdaLibOpt --guardedness +RTS -M24G -RTS Pol/Karatsuba.agda Note that you can put --guardedness in your project's .agda-lib file (if you have one): flags: --guardedness -- /NAD From mechvel at scico.botik.ru Sun Jun 6 20:23:36 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 21:23:36 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> Message-ID: On 2021-06-06 19:01, Nils Anders Danielsson wrote: > On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: >> But the performance has reduced on 20% relatively to Agda-2.6.1 + >> ghc-8.8.3. > >> 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. > > If I understood you correctly you used two different versions of GHC. > Can you rerun the test using one version of GHC? No, because 2.6.2.rc1 cannot install under ghc-8.8.3, and I expect that 2.6.2.rc2 also would not. -- SM From mechvel at scico.botik.ru Sun Jun 6 20:45:17 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 21:45:17 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> Message-ID: Also if you mean the performance comparison for the code produced by different ghc versions, then most of users have various Haskell programs, so they can compare ghc-8.8.3 with ghc-9.0.1. In my example of polynomial arithmetic the time overhead is 5%. I think of putting the Haskell program on public. Being a neighbor of the polynomial arithmetic written in Agda, this small package will provide a nice test for the performance in the two systems and for provable programming overhead. Each new Haskell and Agda version can be tested on these two libraries (the one in Haskell is mush smaller). -- SM On 2021-06-06 21:23, mechvel at scico.botik.ru wrote: > On 2021-06-06 19:01, Nils Anders Danielsson wrote: >> On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: >>> But the performance has reduced on 20% relatively to Agda-2.6.1 + >>> ghc-8.8.3. >> >>> 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. >> >> If I understood you correctly you used two different versions of GHC. >> Can you rerun the test using one version of GHC? > > > No, > because 2.6.2.rc1 cannot install under ghc-8.8.3, > and I expect that 2.6.2.rc2 also would not. > > -- > SM > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From mechvel at scico.botik.ru Sun Jun 6 20:53:01 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 21:53:01 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> Message-ID: Also we forget of the standard library versions, probably, they are different for Agda-2.6.1 and for Agda 2.6.2.rc2 (the latter uses `master' of June 5). For example, if there is a change in Nat or Integer arithmetic implementation, then the performance change in my example can be great. -- SM On 2021-06-06 16:11, mechvel at scico.botik.ru wrote: > On 2021-06-06 00:07, Andr?s Sicard-Ram?rez wrote: >> Dear all, >> >> The Agda Team is very pleased to announce the second release candidate >> (RC2) of Agda 2.6.2. We plan to release 2.6.2 in a few days. >> > > > I have tested it on my application > http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc > > under MAlonzo, ghc-9.0.1, Ubuntu Linux 18.04. > > It looks like working correct. > But the performance has reduced on 20% relatively to Agda-2.6.1 + > ghc-8.8.3. > [..] From mechvel at scico.botik.ru Sun Jun 6 21:22:45 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 22:22:45 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> Message-ID: <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> On 2021-06-06 19:01, Nils Anders Danielsson wrote: > On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: >> But the performance has reduced on 20% relatively to Agda-2.6.1 + >> ghc-8.8.3. > >> 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. > > If I understood you correctly you used two different versions of GHC. > Can you rerun the test using one version of GHC? Currently the situation is as follows. * I have only ghc-9.0.1 and ghc-8.8.3 installed. * It is a long process to install another ghc version, it is better for me to avoid this now. * Agda-2.6.1 cannot be installed on ghc-8.8.3, * If Agda-2.6.1 can be installed under ghc-9.0.1, then I could try. Also I am looking at https://wiki.portal.chalmers.se/agda/Main/Download and do not find: which Agda version can be installed on which ghc versions. (?) -- SM From mechvel at scico.botik.ru Sun Jun 6 21:25:22 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 06 Jun 2021 22:25:22 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> Message-ID: On 2021-06-06 22:22, mechvel at scico.botik.ru wrote: > On 2021-06-06 19:01, Nils Anders Danielsson wrote: >> On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: >>> But the performance has reduced on 20% relatively to Agda-2.6.1 + >>> ghc-8.8.3. >> >>> 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. >> >> If I understood you correctly you used two different versions of GHC. >> Can you rerun the test using one version of GHC? > > > Currently the situation is as follows. > * I have only ghc-9.0.1 and ghc-8.8.3 installed. > * It is a long process to install another ghc version, > it is better for me to avoid this now. > * Agda-2.6.1 cannot be installed on ghc-8.8.3, A typo. It needs to be * Agda-2.6.2-rc2 cannot be installed on ghc-8.8.3, > * If Agda-2.6.1 can be installed under ghc-9.0.1, > then I could try. > > Also I am looking at > https://wiki.portal.chalmers.se/agda/Main/Download > > and do not find: which Agda version can be installed on which ghc > versions. > (?) > > -- > SM > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From asr at eafit.edu.co Mon Jun 7 03:22:07 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sun, 6 Jun 2021 20:22:07 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> Message-ID: On Sun, 6 Jun 2021 at 14:25, wrote: > * Agda-2.6.2-rc2 cannot be installed on ghc-8.8.3, Although GHC 8.8.3 is not officially supported, I could install Agda 2.6.2-rc2 on this version of GHC without any problem (using cabal-install 3.2.0.0 and running `cabal install`). -- Andr?s From nad at cse.gu.se Mon Jun 7 11:28:04 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 7 Jun 2021 11:28:04 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> Message-ID: On 2021-06-06 20:23, mechvel at scico.botik.ru wrote: > No, > because 2.6.2.rc1 cannot install under ghc-8.8.3, > and I expect that 2.6.2.rc2 also would not. It should not matter what version of GHC you use to compile Agda, only which version you use to compile the Haskell code that is generated from your Agda development. -- /NAD From nad at cse.gu.se Mon Jun 7 11:28:21 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 7 Jun 2021 11:28:21 +0200 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> Message-ID: <1fc9f499-ef20-b5b1-1af8-6f2dda9d23e5@cse.gu.se> On 2021-06-06 20:53, mechvel at scico.botik.ru wrote: > Also we forget of the standard library versions, > probably, they are different for Agda-2.6.1 and for Agda 2.6.2.rc2 > (the latter uses `master' of June 5). > For example, if there is a change in Nat or Integer arithmetic implementation, then the > performance change in my example can be great. That's a good point. Version 1.6 of the library should work with Agda 2.6.1. The changelog for version 1.7 does not suggest that there have been any relevant changes related to natural number or integer arithmetic. There has been a change related to the Maybe type, but that change is related to a change to Agda. -- /NAD From mechvel at scico.botik.ru Mon Jun 7 12:23:53 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 07 Jun 2021 13:23:53 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> Message-ID: On 2021-06-07 04:22, Andr?s Sicard-Ram?rez wrote: > On Sun, 6 Jun 2021 at 14:25, wrote: >> * Agda-2.6.2-rc2 cannot be installed on ghc-8.8.3, > > Although GHC 8.8.3 is not officially supported, I could install Agda > 2.6.2-rc2 on this version of GHC without any problem (using > cabal-install 3.2.0.0 and running `cabal install`). > I have cabal-2.4.1.0. Now I try to install cabal-3.4.0.0, and hope that it will help me to install Agda-2.6.2-rc2 on ghc-8.8.3. Then, Agda-2.6.1 and Agda-2.6.2-rc2 will become comparable under the same ghc version. -- SM From mechvel at scico.botik.ru Tue Jun 8 14:36:56 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 08 Jun 2021 15:36:56 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <15b60731-07f8-66d8-c05e-4a69bdb48e5a@cs.bham.ac.uk> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <15b60731-07f8-66d8-c05e-4a69bdb48e5a@cs.bham.ac.uk> Message-ID: <2978a2ee305d8a26749135b83080ec39@scico.botik.ru> On 2021-06-06 17:43, Martin Escardo wrote: > You also need to install agda, if you use cabal, with > -foptimise-heavily. > > The omission of this option adds 25% to the type checking time. > > The omission of the option --auto-inline, mentioned earlier, also adds > 25%. > > So the omission of both adds 50%. > > The omission of these two options is now the default. > > This is the case, at least, in one of my Agda developments, whose type > checking time goes from 4 to 6 minutes. > > So you need to add them both to regain the performance of Agda 2.6.1. > At least I do. > Martin, thank you. I shall try all this. As I understand, -foptimise-heavily is only for the `cabal install' command when making Agda, and --auto-inline is only for the `agda' command when type checking .agda modules (please, correct me if this is not so). ------ Sergei > > On 06/06/2021 14:11, mechvel at scico.botik.ru wrote: >> On 2021-06-06 00:07, Andr?s Sicard-Ram?rez wrote: >>> Dear all, >>> >>> The Agda Team is very pleased to announce the second release >>> candidate >>> (RC2) of Agda 2.6.2. We plan to release 2.6.2 in a few days. >>> >> >> >> I have tested it on my application >> ? http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc >> >> under? MAlonzo, ghc-9.0.1, Ubuntu Linux 18.04. >> >> It looks like working correct. >> But the performance has reduced on? 20%? relatively to? Agda-2.6.1 + >> ghc-8.8.3. >> [..] From mechvel at scico.botik.ru Tue Jun 8 15:48:31 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 08 Jun 2021 16:48:31 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 release candidate 2 In-Reply-To: <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> Message-ID: On 2021-06-06 19:01, Nils Anders Danielsson wrote: > On 2021-06-06 15:11, mechvel at scico.botik.ru wrote: >> But the performance has reduced on 20% relatively to Agda-2.6.1 + >> ghc-8.8.3. > >> 2.6.2.rc2 + ghc-9.0.1 spends 20% more of time. > > If I understood you correctly you used two different versions of GHC. > Can you rerun the test using one version of GHC? Now I have installed Agda-2.6.2.rc2 + master-lib-june-5 made under ghc-8.8.3. And the example KTest runs 20% faster than in the same Agda made under ghc-9.0.1. The example is http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc/ > cd source > agda $agdaLibOpt --auto-inline --guardedness +RTS -M15G -RTS Pol/KTest.agda > ./KTest (may be -M7G is sufficient, but not the default one). This refers to Pol/KTest.agda, the table {- Timing for Agda-2.6.1, MAlonzo, ghc-8.8.3, Ubuntu-Libux 18.04, .... -} The rows of n = 12, 13, in this table and the column of pk. First set the value in the line of n = ..., then command > agda $agdaLibOpt ... Pol/KTest.agda > ./KTest When this Agda is made under ghc-8.8.3, their times (on my machine) are 7.7 sec, 24.6 sec. When it is made under ghc-9.0.1, their times are 9.5 sec, 29.6 sec. > It should not matter what version of GHC you use to compile Agda, only > which version you use to compile the Haskell code that is generated > from > your Agda development. > which ghc reports /home/mechvel/ghc/8.8.3/inst0/bin/ghc, and ghc-9.0.1 is not currently visible. So, I think that ghc-8.8.3 is applied at all the stages (if only Agda (MAlonzo?) does not apply any its local and hidden ghc). For any occasion, I measure the time like this: > time ./KTest deg = 4096 check = (0) |mons| = 4097 coefSum = <79293 mod 99991> 7.686u 0.183s 0:07.87 99.8% 0+0k 0+0io 0pf+0w Then I round the first number to 7.7 and put it to the table. It is important not to run any other expensive processes during this computation (for example, not to run movies on the Web). ? I have an impression that using ghc-9.0.1 slows down running on 20%. But I am no so sure. It would be nice if someone repeats this experiment. For all the source and instruction are given here. And I do not know now whether it worth to make Agda-2.6.2.rc2 under ghc-9.0.1. Regards, ------ Sergei From mechvel at scico.botik.ru Tue Jun 8 21:13:37 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 08 Jun 2021 22:13:37 +0300 Subject: [Agda] UPolyLight announce Message-ID: <9618d562e4927d99f4178452c5bbab0e@scico.botik.ru> http://www.botik.ru/pub/local/Mechveliani/inHaskell/UPolyLight.zip is a small library for the Univariate Polynomial Arithmetic written in Haskell in a certain simplest way. See there Readme.txt. It implements the same algorithms as the Pol part of the Agda library http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc So that running the modules KTest.hs and Pol/KTest.agda of these libraries one can compare the performance of the certified Agda programs to such of the Haskell programs (under Glasgow Haskell), with changing the Agda and GHC versions. -- SM From matthewdaggitt at gmail.com Wed Jun 9 05:30:00 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Wed, 9 Jun 2021 11:30:00 +0800 Subject: [Agda] [ ANNOUNCE ] Standard library v1.7 - release candidate 2 Message-ID: Dear all, The Agda Team is pleased to announce the second release candidate for version 1.7 of the standard library. The release candidate has been tested using the second release candidate of Agda 2.6.2. The main difference between this and the previous release candidate is that Data.Container(.Indexed) no longer depends on guardedness or sized types and hence is compatible with the --safe flag. The release candidate can be downloaded here . We would be grateful for reports of any issues you may encounter with the new version of the library on the Github issues page. If no major issues are found we will aim to release the official version 1.7 soon after the release of Agda 2.6.2. Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From asai at is.ocha.ac.jp Wed Jun 9 09:44:50 2021 From: asai at is.ocha.ac.jp (Kenichi Asai) Date: Wed, 9 Jun 2021 16:44:50 +0900 Subject: [Agda] Dimension-safe matrix operations? Message-ID: <20210609074450.GA4861@pllab.is.ocha.ac.jp> If I want to use dimension-safe matrix operations (on a type of matrices parameterized by numbers of rows and columns, similar to Vec), what is the good way? Are there comprehensive libraries for them already, probably? I appreciate any information. Also, is the same (or similar) thing possible in Haskell (or even OCaml)? If so, information on Haskell (or OCaml) libraries is also welcome. Thank you in advance. -- Kenichi Asai From manuel at enigmage.de Wed Jun 9 09:50:15 2021 From: manuel at enigmage.de (=?UTF-8?Q?Manuel_B=c3=a4renz?=) Date: Wed, 9 Jun 2021 09:50:15 +0200 Subject: [Agda] Dimension-safe matrix operations? In-Reply-To: <20210609074450.GA4861@pllab.is.ocha.ac.jp> References: <20210609074450.GA4861@pllab.is.ocha.ac.jp> Message-ID: <0041b8d7-21fa-b398-48bd-de044f193893@enigmage.de> > If I want to use dimension-safe matrix operations (on a type of > matrices parameterized by numbers of rows and columns, similar to > Vec), what is the good way? Are there comprehensive libraries for > them already, probably? I appreciate any information. You might want to look into https://github.com/ryanorendorff/functional-linear-algebra/ which is well-maintained and does your job, I believe. > Also, is the same (or similar) thing possible in Haskell (or even > OCaml)? If so, information on Haskell (or OCaml) libraries is also > welcome. Thank you in advance. You can do this (inefficiently) in Haskell using GADTs (and datakinds), since type-level natural numbers and fixed-length vectors can be implemented. Or you can do it efficiently but somewhat unsafely by encapsulating the types of your favourite linear algebra package in a newtype annotated with the assumed dimensions. From thiemann at informatik.uni-freiburg.de Wed Jun 9 11:41:36 2021 From: thiemann at informatik.uni-freiburg.de (Peter Thiemann) Date: Wed, 9 Jun 2021 11:41:36 +0200 Subject: [Agda] Dimension-safe matrix operations? In-Reply-To: <20210609074450.GA4861@pllab.is.ocha.ac.jp> References: <20210609074450.GA4861@pllab.is.ocha.ac.jp> Message-ID: <4bc52a86-8029-75eb-36ae-a17aa6efa814@informatik.uni-freiburg.de> A good place to look is the Accelerate library for Haskell+GPU https://hackage.haskell.org/package/accelerate Several years back, I tried to make an Agda frontend for that library, but the Haskell implementation pushes the limit of what you can express in the types pretty far, so I didn't get much extra mileage from Agda. There is also related work by Jeremy Gibbons; that paper should give you a start: * Jeremy Gibbons: APLicative Programming with Naperian Functors.ESOP2017 :556-583 * -Peter On 09.06.21 09:44, Kenichi Asai wrote: > If I want to use dimension-safe matrix operations (on a type of > matrices parameterized by numbers of rows and columns, similar to > Vec), what is the good way? Are there comprehensive libraries for > them already, probably? I appreciate any information. > > Also, is the same (or similar) thing possible in Haskell (or even > OCaml)? If so, information on Haskell (or OCaml) libraries is also > welcome. Thank you in advance. > From matthewdaggitt at gmail.com Wed Jun 9 11:41:52 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Wed, 9 Jun 2021 17:41:52 +0800 Subject: [Agda] Dimension-safe matrix operations? In-Reply-To: <0041b8d7-21fa-b398-48bd-de044f193893@enigmage.de> References: <20210609074450.GA4861@pllab.is.ocha.ac.jp> <0041b8d7-21fa-b398-48bd-de044f193893@enigmage.de> Message-ID: I'm not aware of any large scale matrix libraries in Agda. I have a very small one in my own library for routing protocols which lies in the directories underneath RoutingLib.Data.Matrix. I've always been hesitant to add it to the standard library as I kind of believe we should be leapfrogging it directly for `Tensor` but maybe I'm sacrificing good on the altar of perfection! On Wed, Jun 9, 2021 at 3:50 PM Manuel B?renz wrote: > > > If I want to use dimension-safe matrix operations (on a type of > > matrices parameterized by numbers of rows and columns, similar to > > Vec), what is the good way? Are there comprehensive libraries for > > them already, probably? I appreciate any information. > You might want to look into > https://github.com/ryanorendorff/functional-linear-algebra/ which is > well-maintained and does your job, I believe. > > Also, is the same (or similar) thing possible in Haskell (or even > > OCaml)? If so, information on Haskell (or OCaml) libraries is also > > welcome. Thank you in advance. > You can do this (inefficiently) in Haskell using GADTs (and datakinds), > since type-level natural numbers and fixed-length vectors can be > implemented. Or you can do it efficiently but somewhat unsafely by > encapsulating the types of your favourite linear algebra package in a > newtype annotated with the assumed dimensions. > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Wed Jun 9 18:51:44 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 09 Jun 2021 19:51:44 +0300 Subject: [Agda] [ ANNOUNCE ] Standard library v1.7 - release candidate 2 In-Reply-To: References: Message-ID: <18612b533b45e5dabfbf503d9c41566b@scico.botik.ru> On 2021-06-09 06:30, Matthew Daggitt wrote: > Dear all, > The Agda Team is pleased to announce the second release candidate for > version 1.7 of the standard library. The release candidate has been > tested using the second release candidate of Agda 2.6.2. I tried it with Agda 2.6.2-rc2 + ghc-8.8.3, have tested it on the library http://www.botik.ru/pub/local/Mechveliani/docon-A/3.2rc It looks all right. -- SM From andrei.h.popescu at gmail.com Mon Jun 14 09:00:00 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Mon, 14 Jun 2021 08:00:00 +0100 Subject: [Agda] Certified Programs and Proofs (CPP) 2022: Call for Papers Message-ID: Certified Programs and Proofs (CPP) is an international conference on practical and theoretical topics in all areas that consider formal verification and certification as an essential paradigm for their work. CPP spans areas of computer science, mathematics, logic, and education. CPP 2022 (https://popl22.sigplan.org/home/CPP-2022) will be held on 16-18 January 2022 and will be co-located with POPL 2022 in Philadelphia, Pennsylvania, United States. CPP 2022 is sponsored by ACM SIGPLAN, in cooperation with ACM SIGLOG. CPP 2022 will welcome contributions from all members of the community. The CPP 2022 organizers will strive to enable both in-person and remote participation, in cooperation with the POPL 2022 organizers. IMPORTANT DATES * Abstract Submission Deadline: 16 September 2021 at 23:59 AoE (UTC-12h) * Paper Submission Deadline: 22 September 2021 at 23:59 AoE (UTC-12h) * Notification (tentative): 22 November 2021 * Camera Ready Deadline (tentative): 12 December 2021 * Conference: 16-18 January 2022 Deadlines expire at the end of the day, anywhere on earth. Abstract and submission deadlines are strict and there will be no extensions. DISTINGUISHED PAPER AWARDS Around 10% of the accepted papers at CPP 2022 will be designated as Distinguished Papers. This award highlights papers that the CPP program committee thinks should be read by a broad audience due to their relevance, originality, significance and clarity. TOPICS OF INTEREST We welcome submissions in research areas related to formal certification of programs and proofs. The following is a non-exhaustive list of topics of interest to CPP: * certified or certifying programming, compilation, linking, OS kernels, runtime systems, security monitors, and hardware; * certified mathematical libraries and mathematical theorems; * proof assistants (e.g, ACL2, Agda, Coq, Dafny, F*, HOL4, HOL Light, Idris, Isabelle, Lean, Mizar, Nuprl, PVS, etc); * new languages and tools for certified programming; * program analysis, program verification, and program synthesis; * program logics, type systems, and semantics for certified code; * logics for certifying concurrent and distributed systems; * mechanized metatheory, formalized programming language semantics, and logical frameworks; * higher-order logics, dependent type theory, proof theory, logical systems, separation logics, and logics for security; * verification of correctness and security properties; * formally verified blockchains and smart contracts; * certificates for decision procedures, including linear algebra, polynomial systems, SAT, SMT, and unification in algebras of interest; * certificates for semi-decision procedures, including equality, first-order logic, and higher-order unification; * certificates for program termination; * formal models of computation; * mechanized (un)decidability and computational complexity proofs; * formally certified methods for induction and coinduction; * integration of interactive and automated provers; * logical foundations of proof assistants; * applications of AI and machine learning to formal certification; * user interfaces for proof assistants and theorem provers; * teaching mathematics and computer science with proof assistants. SUBMISSION GUIDELINES Prior to the paper submission deadline, the authors should upload their anonymized paper in PDF format through the HotCRP system at https://cpp2022.hotcrp.com The submissions must be written in English and provide sufficient detail to allow the program committee to assess the merits of the contribution. They must be formatted following the ACM SIGPLAN Proceedings format using the acmart style with the sigplan option, which provides a two-column style, using 10 point font for the main text, and a header for double blind review submission, i.e., \documentclass[sigplan,10pt,anonymous,review]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false} The submitted papers should not exceed 12 pages, including tables and figures, but excluding bibliography and clearly marked appendices. The papers should be self-contained without the appendices. Shorter papers are welcome and will be given equal consideration. Submissions not conforming to the requirements concerning format and maximum length may be rejected without further consideration. CPP 2022 will employ a lightweight double-blind reviewing process. To facilitate this, the submissions must adhere to two rules: (1) author names and institutions must be omitted, and (2) references to authors? own related work should be in the third person (e.g., not "We build on our previous work ..." but rather "We build on the work of ..."). The purpose of this process is to help the PC and external reviewers come to an initial judgment about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing it more difficult. In particular, important background references should not be omitted or anonymized. In addition, authors are free to disseminate their ideas or draft versions of their papers as usual. For example, authors may post drafts of their papers on the web or give talks on their research ideas. POPL has answers to frequently asked questions addressing many common concerns: https://popl20.sigplan.org/track/POPL-2020-Research-Papers#Submission-and-Reviewing-FAQ We strongly encourage the authors to provide any supplementary material that supports the claims made in the paper, such as proof scripts or experimental data. This material must be uploaded at submission time, as an archive, not via a URL. Two forms of supplementary material may be submitted: (1) Anonymous supplementary material is made available to the reviewers before they submit their first-draft reviews. (2) Non-anonymous supplementary material is made available to the reviewers after they have submitted their first-draft reviews and have learned the identity of the authors. Please use anonymous supplementary material whenever possible, so that it can be taken into account from the beginning of the reviewing process. The submitted papers must adhere to the SIGPLAN Republication Policy (https://www.sigplan.org/Resources/Policies/Republication/) and the ACM Policy on Plagiarism (https://www.acm.org/publications/policies/plagiarism). Concurrent submissions to other conferences, journals, workshops with proceedings, or similar forums of publication are not allowed. The PC chairs should be informed of closely related work submitted to a conference or journal in advance of submission. One author of each accepted paper is expected to present it at the (possibly virtual) conference. PUBLICATION, COPYRIGHT AND OPEN ACCESS The CPP 2022 proceedings will be published by the ACM, and authors of accepted papers will be required to choose one of the following publication options: (1) Author retains copyright of the work and grants ACM a non-exclusive permission-to-publish license and, optionally, licenses the work under a Creative Commons license. (2) Author retains copyright of the work and grants ACM an exclusive permission-to-publish license. (3) Author transfers copyright of the work to ACM. For authors who can afford it, we recommend option (1), which will make the paper Gold Open Access, and also encourage such authors to license their work under the CC-BY license. ACM will charge you an article processing fee for this option (currently, US$700), which you have to pay directly with the ACM. For everyone else, we recommend option (2), which is free and allows you to achieve Green Open Access, by uploading a preprint of your paper to a repository that guarantees permanent archival such as arXiv or HAL. This is anyway a good idea for timely dissemination even if you chose option 1. Ensuring timely dissemination is particularly important for this edition, since, because of the very tight schedule, the official proceedings might not be available in time for CPP. The official CPP 2022 proceedings will also be available via SIGPLAN OpenTOC (http://www.sigplan.org/OpenTOC/#cpp). For ACM?s take on this, see their Copyright Policy (http://www.acm.org/publications/policies/copyright-policy) and Author Rights (http://authors.acm.org/main.html). PROGRAM COMMITTEE Andrei Popescu, University of Sheffield, United Kingdom (co-chair) Steve Zdancewic, University of Pennsylvania, United States (co-chair) Mohammad Abdulaziz, TU M?nchen, Germany Mauricio Ayala-Rinc?n, Universidade de Bras?lia, Brazil Andrej Bauer, University of Ljubljana, Slovenia Thomas Bauereiss, University of Cambridge, United Kingdom Yves Bertot, Inria and Universit? Cote d'Azur, France Lars Birkedal, Aarhus University, Denmark Sylvie Boldo, Inria and Universit? Paris-Saclay, France Qinxiang Cao, Shanghai Jiao Tong University, China ?velyne Contejean, Laboratoire M?thodes Formelles, CNRS, France Benjamin Delaware, Purdue University, United States Simon Foster, University of York, United Kingdom Alwyn Goodloe, NASA Langley Research Center, United States Arma?l Gu?neau, Aarhus University, Denmark John Harrison, Amazon Web Services, United States Joe Hendrix, Galois, Inc, United States Aquinas Hobor, National University of Singapore, Singapore Ralf Jung, MPI-SWS, Germany Cezary Kaliszyk, University of Innsbruck, Austria Jeehoon Kang, KAIST, South Korea Hongjin Liang, Nanjing University, China Gregory Malecha, BedRock Systems, Inc, United States Anders M?rtberg, Stockholm University, Sweden Toby Murray, University of Melbourne, Australia Zoe Paraskevopoulou , Northeastern University, United States Brigitte Pientka, McGill University, Canada Aseem Rastogi, Microsoft Research, India Bas Spitters, Aarhus University, Denmark Kathrin Stark, Princeton University, United States Hira Taqdees Syeda, Chalmers University of Technology, Sweden Joseph Tassarotti, Boston College, United States Laura Titolo, NIA/NASA LaRC, United States Sophie Tourret, Inria, France Dmitriy Traytel, University of Copenhagen, Denmark Floris van Doorn, Paris-Saclay University, France Freek Verbeek, Open University of The Netherlands, Netherlands Freek Wiedijk, Radboud Universiteit Nijmegen, Netherlands ORGANIZERS Lennart Beringer, Princeton University, United States (conference co-chair) Robbert Krebbers, Radboud University, Netherlands (conference co-chair) Andrei Popescu, University of Sheffield, United Kingdom (PC co-chair) Steve Zdancewic, University of Pennsylvania, United States (PC co-chair) CONTACT For any questions please contact the two PC chairs: Andrei Popescu Steve Zdancewic From andrei.h.popescu at gmail.com Mon Jun 14 09:00:00 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Mon, 14 Jun 2021 08:00:00 +0100 Subject: [Agda] Call for Papers: Fifth Workshop on Formal Mathematics for Mathematicians (FMM 2021) Message-ID: ========================================================= Call for Papers Fifth Workshop on Formal Mathematics for Mathematicians (FMM 2021) 26-31 July 2021 (exact date TBA) Timisoara, Romania (hybrid or fully virtual) https://cicm-conference.org/2021/cicm.php?event=fmm Co-located with 14th Conference on Intelligent Computer Mathematics (CICM 2021) https://cicm-conference.org/2021/cicm.php ========================================================== Paper submission: 14 July 2021 AoE Author notification: 21 July 2021 Final version due: 25 July 2021 ========================================================== Scope ===== The FMM workshop series enables mathematicians interested in computer assistance and researchers in formal and computer-understandable mathematics to meet and exchange ideas. The meeting provides a platform for discussion of suitable forms of computer assistance between the formal community and interested mathematicians and other researchers. The main points of interest include * formalization of challenging mathematical problems * design of proof languages and techniques * repositories of formalized mathematics * interactive and automated theorem proving * development of proof assistants * semantic representation of mathematical knowledge * formal tools in program verification * foundations and philosophy of mathematics * proof assistants in education Invited Speakers ================ Mario Carneiro (Carnegie Mellon University, USA) Manuel Eberl (Technical University of Munich, Germany) Submission Guidelines ===================== Electronic submission is continuous and done via EasyChair: https://easychair.org/conferences/?conf=cicm2021 Select the author role, select the "new submission" tab, and choose FMM. We welcome submission of short papers presenting research related to the workshop's points of interest. Submitted papers should be 4-6 pages long and formatted in LaTeX using the style "onecolceurws". The corresponding style files can be downloaded from http://ceur-ws.org/Vol-XXX/samplestyles/ Submission is continuous until 14 July 2021 AoE. At least one author of each accepted paper is expected to attend FMM and present the work (online or in person). We plan to publish electronic proceedings in the CEUR Workshop Proceedings series. Program Committee (TBC) ======================= Mauricio Ayala Rincon (Brasilia University, Brasil) Jasmin Blanchette (Vrije Universiteit Amsterdam, the Netherlands; co-chair) Anthony Bordg (Cambridge University, UK) Johan Commelin (Universitaet Freiburg, Germany) Sander Dahmen (Vrije Universiteit Amsterdam, the Netherlands) Adam Naumowicz (University of Bialystok, Poland; co-chair) From ifl21.publicity at gmail.com Tue Jun 15 17:29:13 2021 From: ifl21.publicity at gmail.com (Pieter Koopman) Date: Tue, 15 Jun 2021 17:29:13 +0200 Subject: [Agda] IFL2021 second call for papers Message-ID: ================================================================================ IFL 2021 33rd Symposium on Implementation and Application of Functional Languages venue: online 1 - 3 September 2021 https://ifl21.cs.ru.nl ================================================================================ News - Paper submission is now open: https://easychair.org/conferences/?conf=ifl21 . - Invited speakers are added: Stephanie Weirich and John Hughes - Sponsor added: Facebook Research Scope The goal of the IFL symposia is to bring together researchers actively engaged in the implementation and application of functional and function-based programming languages. IFL 2021 will be a venue for researchers to present and discuss new ideas and concepts, work in progress, and publication-ripe results related to the implementation and application of functional languages and function-based programming. Industrial track and topics of interest This year's edition of IFL explicitly solicits original work concerning *applications* of functional programming in industry and academia. These contributions will be reviewed by experts with an industrial background. Topics of interest to IFL include, but are not limited to: * language concepts * type systems, type checking, type inferencing * compilation techniques * staged compilation * run-time function specialisation * run-time code generation * partial evaluation * (abstract) interpretation * meta-programming * generic programming * automatic program generation * array processing * concurrent/parallel programming * concurrent/parallel program execution * embedded systems * web applications * (embedded) domain-specific languages * security * novel memory management techniques * run-time profiling performance measurements * debugging and tracing * testing and proofing * virtual/abstract machine architectures * validation, verification of functional programs * tools and programming techniques * applications of functional programming in the industry, including ** functional programming techniques for large applications ** successes of the application functional programming ** challenges for functional programming encountered ** any topic related to the application of functional programming that is interesting for the IFL community Post-symposium peer-review Following IFL tradition, IFL 2021 will use a post-symposium review process to produce the formal proceedings. Before the symposium authors submit draft papers. These draft papers will be screened by the program chairs to make sure that they are within the scope of IFL. The draft papers will be made available to all participants at the symposium. Each draft paper is presented by one of the authors at the symposium. After the symposium every presenter is invited to submit a full paper, incorporating feedback from discussions at the symposium. Work submitted to IFL may not be simultaneously submitted to other venues; submissions must adhere to ACM SIGPLAN's republication policy. The program committee will evaluate these submissions according to their correctness, novelty, originality, relevance, significance, and clarity, and will thereby determine whether the paper is accepted or rejected for the formal proceedings. We plan to publish these proceedings in the International Conference Proceedings Series of the ACM Digital Library, as in previous years. Moreover, the proceedings will also be made publicly available as open access. Important dates Submission deadline of draft papers: 17 August 2021 Notification of acceptance for presentation: 19 August 2021 Registration deadline: 30 August 2021 IFL Symposium: 1-3 September 2021 Submission of papers for proceedings: 6 December 2021 Notification of acceptance: 3 February 2022 Camera-ready version: 15 March 2022 Submission details All contributions must be written in English. Papers must use the ACM two columns conference format, which can be found at: http://www.acm.org/publications/proceedings-template The submission Web page for IFL21 is https://easychair.org/conferences/?conf=ifl21 . Peter Landin Prize The Peter Landin Prize is awarded to the best paper presented at the symposium every year. The honoured article is selected by the program committee based on the submissions received for the formal review process. The prize carries a cash award equivalent to 150 Euros. Organisation IFL 2021 Chairs: Pieter Koopman and Peter Achten, Radboud University, The Netherlands IFL Publicity chair: Pieter Koopman, Radboud University, The Netherlands PC: Peter Achten (co-chair) - Radboud University, Netherlands Thomas van Binsbergen - University of Amsterdam, Netherlands Edwin Brady - University of St. Andrews, Scotland Laura Castro - University of A Coru?a, Spain Youyou Cong - Tokyo Institute of Technology, Japan Olaf Chitil - University of Kent, England Andy Gill - University of Kansas, USA Clemens Grelck - University of Amsterdam, Netherlands John Hughes - Chalmers University, Sweden Pieter Koopman (co-chair) - Radboud University, Netherlands Cynthia Kop - Radboud University, Netherlands Jay McCarthey - University of Massachussetts Lowell, USA Neil Mitchell - Facebook, England Jan De Muijnck-Hughes - Glasgow University, Scotland Keiko Nakata - SAP Innovation Center Potsdam, Germany Jurri?n Stutterheim - Standard Chartered, Singapore Simon Thompson - University of Kent, England Melinda T?th - E?tvos Lor?nd University, Hungary Phil Trinder - Glasgow University, Scotland Meng Wang - University of Bristol, England Vikt?ria Zs?k - E?tvos Lor?nd University, Hungary Virtual symposium Because of the Covid-19 pandemic, this year IFL 2021 will be an online event, consisting of paper presentations, discussions and virtual social gatherings. Registered participants can take part from anywhere in the world. [image: beacon] -------------- next part -------------- An HTML attachment was scrubbed... URL: From icfp.publicity at googlemail.com Thu Jun 17 04:40:38 2021 From: icfp.publicity at googlemail.com (Sam Tobin-Hochstadt) Date: Wed, 16 Jun 2021 22:40:38 -0400 Subject: [Agda] ICFP 2021 Student Research Competition: Call for Submissions Message-ID: <60cab626581a5_4e48e294-498@homer.mail> ICFP 2021 Student Research Competition Call for Submissions ICFP invites students to participate in the Student Research Competition, which will be held virtually alongside the main conference, in order to present their research and receive feedback from prominent members of the programming language research community. As usual, the SRC consists of three rounds: * Extended abstract * Poster session at ICFP 2021 * ICFP presentation To make the virtual competition fruitful, we will make sure that every student will have an "invited audience"?during the poster?session.? We are also planning to organize a social event for the students. Please visit the SRC website for updates. ### Important Dates Submissions due: 2 July 2021 (Friday) https://icfp21src.hotcrp.com Notification: 16 July 2021 (Friday) Conference: 22 August (Sunday) - 27 August (Friday) ### Submission Details Each submission (referred to as "abstract" below) should include the student author?s name and e-mail address; institutional affiliation; research advisor?s name; ACM student member number; category (undergraduate or graduate); research title; and an extended abstract addressing the following: * Problem and Motivation: Clearly state the problem being addressed and explain the reasons for seeking a solution to this problem. * Background and Related Work: Describe the specialized (but pertinent) background necessary to appreciate the work in the context of ICFP areas of interest. Include references to the literature where appropriate, and briefly explain where your work departs from that done by others. * Approach and Uniqueness: Describe your approach in addressing the problem and clearly state how your approach is novel. * Results and Contributions: Clearly show how the results of your work contribute to programming language design and implementation in particular and to computer science in general; explain the significance of those results. * Submissions must be original research that is not already published at ICFP or another conference or journal. One of the goals of the SRC is to give students feedback on ongoing, unpublished work. Furthermore, the abstract must be authored solely by the student. If the work is collaborative with others and*or part of a larger group project, the abstract should make clear what the student?s role was and should focus on that portion of the work. * Formatting: Submissions must be in PDF format, printable in black and white on US Letter sized paper, and interpretable by common PDF tools. All submissions must adhere to the "ACM Small" template that is available (in both LaTeX and Word formats) from https://www.acm.org/publications/authors/submissions. For authors using LaTeX, a lighter-weight package, including only the essential files, is available from http://sigplan.org/Resources/Author/#acmart-format. The submission must not exceed 3 pages in PDF format. Reference lists do not count towards the 3-page limit. Further information is available at the ICFP SRC website: https://icfp21.sigplan.org/track/icfp-2021-Student-Research-Competition Program Committee: Chair: Anders Miltner (UT Austin) Andreea Costea (NUS Singapore) Andrew Hirsch (MPI-SWS) Liam O'Connor (University of Edinburgh) Lionel Parreaux (HKUST) Daming Zou (ETH Zurich) From asr at eafit.edu.co Sat Jun 19 08:38:41 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sat, 19 Jun 2021 01:38:41 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: Message-ID: Dear all, The Agda Team is very pleased to announce the release of Agda 2.6.2. # Highlights * Several improvements and bug-fixes related to Run-time Irrelevance ( https://agda.readthedocs.io/en/v2.6.2/language/runtime-irrelevance.html). * Several improvements and bug-fixes related to the JavaScript Backend ( https://agda.readthedocs.io/en/v2.6.2/tools/compilers.html#javascript-backend ). * Added experimental support for Guarded Cubical Agda ( https://agda.readthedocs.io/en/v2.6.2/language/guarded-cubical.html). * The Primitive Sorts ( https://agda.readthedocs.io/en/v2.6.2/language/built-ins.html#sorts) of Agda (`Set` and `Prop`) are no longer keywords and can be renamed when importing `Agda.Primitive`. * Added native support for the Inspect Idiom ( https://agda.readthedocs.io/en/v2.6.2/language/with-abstraction.html#with-abstraction-equality ). * Added support for making System Calls ( https://agda.readthedocs.io/en/v2.6.2/language/reflection.html#system-calls) from the reflection API. # GHC supported versions Agda 2.6.2 has been tested with GHC 9.0.1, 8.10.5, 8.8.4, 8.6.5, 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. # Installation You can install Agda 2.6.2 with Cabal or stack. See https://agda.readthedocs.io/en/v2.6.2/getting-started/installation.html . # Standard library For the time being, you can use the *master* branch of the standard library with Agda 2.6.2 (https://github.com/agda/agda-stdlib/). # Fixed issues https://hackage.haskell.org/package/Agda-2.6.2/changelog Enjoy Agda 2.6.2. -- Andr?s, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sat Jun 19 12:56:56 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 19 Jun 2021 13:56:56 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: Message-ID: <6064f7bbfbf3eb9339814502f91ed992@scico.botik.ru> On 2021-06-19 09:38, Andr?s Sicard-Ram?rez wrote: > Dear all, > > The Agda Team is very pleased to announce the release of Agda 2.6.2. > I try to install it from source under cabal-3.4.0.0, ghc-9.0.1, Ubuntu Linux 18.04: > cabal install > cabal update This approach worked for earlier versions (with smaller versions of cabal and ghc). And this time it reports cabal: filepath wildcard 'doc/user-manual.pdf' does not match any files. I test: > cabal --v cabal-install version 3.4.0.0 compiled using version 3.4.0.0 of the Cabal library > ghc -V The Glorious Glasgow Haskell Compilation System, version 9.0.1 Can you, please, advise on this? Thanks, ------ Sergei From asr at eafit.edu.co Sat Jun 19 15:38:12 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sat, 19 Jun 2021 08:38:12 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: <6064f7bbfbf3eb9339814502f91ed992@scico.botik.ru> References: <6064f7bbfbf3eb9339814502f91ed992@scico.botik.ru> Message-ID: On Sat, 19 Jun 2021 at 05:57, wrote: > > I try to install it from source under > cabal-3.4.0.0, ghc-9.0.1, Ubuntu Linux 18.04: > > > cabal install > > cabal update > > I guess you meant $ cabal update $ cabal install > And this time it reports > > cabal: filepath wildcard 'doc/user-manual.pdf' does not match any > files. > > It seems you were installing Agda 2.6.2 from a directory with a `Agda.cabal` file. Try to install Agda from a different directory. Best, -- Andr?s -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sat Jun 19 21:31:38 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 19 Jun 2021 22:31:38 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: <6064f7bbfbf3eb9339814502f91ed992@scico.botik.ru> Message-ID: On 2021-06-19 16:38, Andr?s Sicard-Ram?rez wrote: > On Sat, 19 Jun 2021 at 05:57, wrote: > >> I try to install it from source under >> cabal-3.4.0.0, ghc-9.0.1, Ubuntu Linux 18.04: >> >>> cabal install >>> cabal update > > I guess you meant > > $ cabal update > $ cabal install > >> And this time it reports >> >> cabal: filepath wildcard 'doc/user-manual.pdf' does not match any >> files. > > It seems you were installing Agda 2.6.2 from a directory with a > `Agda.cabal` file. Try to install Agda from a different directory. > Thank you. This helps. This happens in the directory ~/agda/2.6.2/ where Agda.cabal resides. Now I try > cd ~/agda > cabal install 2.6.2/Agda This does not work. But > cabal install Agda does work. Is this a new feature in Cabal (cabal-install) ? The whole approach looks strange: to apply "cabal install Agda" staying somewhere aside, without specifying where the target Agda.cabal resides. There are directories with other Agda versions, and they also contain Agda.cabal. How does the user know where it will find this file? And if I specify its residence, this is treated as an error. Does not this look strange? Regards, ------ Sergei From asr at eafit.edu.co Sun Jun 20 01:42:32 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Sat, 19 Jun 2021 18:42:32 -0500 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: <6064f7bbfbf3eb9339814502f91ed992@scico.botik.ru> Message-ID: On Sat, 19 Jun 2021 at 14:31, wrote: > How does the user know where it will find this file? > You can run the following commands: $ cabal get Agda $ cd Agda-2.6.2 $ cabal install Best, -- Andr?s -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthewdaggitt at gmail.com Sun Jun 20 09:23:06 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Sun, 20 Jun 2021 15:23:06 +0800 Subject: [Agda] [ ANNOUNCE ] Standard library version 1.7 Message-ID: Dear all, The Agda Team is pleased to announce the release of version 1.7 of the standard library. The release has been tested using Agda 2.6.2, and includes many new features, the highlights of which are: - New module for making system calls during type checking, Reflection.External, which re-exports Agda.Builtin.Reflection.External. - New predicate for lists that are enumerations of their type in Data.List.Relation.Unary.Enumerates. - New weak induction schemes in Data.Fin.Induction that allows one to avoid the complicated use of Acc/inject/raise when proving inductive properties over finite sets. The release can be downloaded here . Best wishes, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Sun Jun 20 13:52:53 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sun, 20 Jun 2021 12:52:53 +0100 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: Now just following the cabal installation instructions in the Agda wiki works for the apple m1 chip. I did this to install the new version of Agda. M. On 19/04/2021 05:27, asai at is.ocha.ac.jp wrote: > Thank you for all the information! I could install agda (2.6.1.3) > successfully. For record, I write what I did (following Martin's > message): > > softwareupdate --install-rosetta > arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" > arch -x86_64 /usr/local/bin/brew install agda From liang.ting.chen.tw at gmail.com Sun Jun 20 14:25:28 2021 From: liang.ting.chen.tw at gmail.com (Liang-Ting Chen) Date: Sun, 20 Jun 2021 20:25:28 +0800 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: The latest GHC 8.10.5 now supports the native code generation for Apple M1 (arm64), and homebrew has updated its formula to use GHC 8.10.5 for building Agda. https://formulae.brew.sh/formula/agda#default So, on macOS, installing it via homebrew just works again. Best regards, Liang-Ting On Sun, Jun 20, 2021 at 19:53 Martin Escardo wrote: > Now just following the cabal installation instructions in the Agda wiki > works for the apple m1 chip. I did this to install the new version of > Agda. M. > > On 19/04/2021 05:27, asai at is.ocha.ac.jp wrote: > > Thank you for all the information! I could install agda (2.6.1.3) > > successfully. For record, I write what I did (following Martin's > > message): > > > > softwareupdate --install-rosetta > > arch -x86_64 /bin/bash -c "$(curl -fsSL > https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" > > arch -x86_64 /usr/local/bin/brew install agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -- -- Dr Liang-Ting Chen Institute of Information Science Academia Sinica, Taiwan -------------- next part -------------- An HTML attachment was scrubbed... URL: From m.escardo at cs.bham.ac.uk Sun Jun 20 18:30:06 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Sun, 20 Jun 2021 17:30:06 +0100 Subject: [Agda] Agda on Apple Silicon? In-Reply-To: References: Message-ID: <23b95e8b-9dba-b0b7-daa4-7421b71a344b@cs.bham.ac.uk> Good. The cabal installation also produced native code. (Something that typed checked in 4m30s now typechecks in 4m.) Martin On 20/06/2021 13:25, liang.ting.chen.tw at gmail.com wrote: > The latest GHC 8.10.5 now supports the native code generation for Apple > M1 (arm64), and homebrew has updated its formula to use GHC 8.10.5 for > building Agda. > > https://formulae.brew.sh/formula/agda#default > > > So, on macOS, installing it via homebrew just works again. > > Best regards, > Liang-Ting > > On Sun, Jun 20, 2021 at 19:53 Martin Escardo > wrote: > > Now just following the cabal installation instructions in the Agda wiki > works for the apple m1 chip. I did this to install the new version of > Agda. M. > > On 19/04/2021 05:27, asai at is.ocha.ac.jp > wrote: > > Thank you for all the information!? I could install agda (2.6.1.3) > > successfully.? For record, I write what I did (following Martin's > > message): > > > > softwareupdate --install-rosetta > > arch -x86_64 /bin/bash -c "$(curl -fsSL > https://raw.githubusercontent.com/Homebrew/install/master/install.sh > )" > > arch -x86_64 /usr/local/bin/brew install agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > -- > -- > Dr Liang-Ting Chen > Institute of Information Science > Academia Sinica, Taiwan > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From eduardoochs at gmail.com Fri Jul 2 16:46:15 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Fri, 2 Jul 2021 11:46:15 -0300 Subject: [Agda] Compilation of Parser.y depends on the locale on Debian too Message-ID: Hi list, the latest version of the Agda Manual from https://readthedocs.org/projects/agda/downloads/pdf/latest/ mentions a certain error as something that can only happen on M$ Windows. It says: Warning: If you are installing Agda using Cabal on Windows, depending on your system locale setting, cabal install Agda may fail with an error message: hGetContents: invalid argument (invalid byte sequence) If this happens, you can try changing the console code page to UTF-8 using the command: CHCP 65001 I'm on Debian stable and I got something similar. I tried to install Agda with cabal update cabal install Agda and it failed with: happy: src/full/Agda/Syntax/Parser/Parser.y: hGetContents: invalid argument (invalid byte sequence) cabal: Failed to build Agda-2.6.2. See the build log above for details. My default value for $LC_ALL is "C" and the only uncommented line in my /etc/locale.gen is this one: en_GB.UTF-8 UTF-8 If I run this export LC_ALL=en_GB.UTF-8 cabal install Agda instead of just "cabal install Agda" the compilation succeeds. Cheers, Eduardo Ochs http://angg.twu.net/#eev http://angg.twu.net/math-b.html From asr at eafit.edu.co Fri Jul 2 19:07:43 2021 From: asr at eafit.edu.co (=?UTF-8?B?QW5kcsOpcyBTaWNhcmQtUmFtw61yZXo=?=) Date: Fri, 2 Jul 2021 12:07:43 -0500 Subject: [Agda] Compilation of Parser.y depends on the locale on Debian too In-Reply-To: References: Message-ID: Hi Eduardo, Thank you for reporting the issue and his solution. I could reproduce the issue after running `export LC_ALL=C` in my Ubuntu machine. Please report the issue in https://github.com/agda/agda/issues so we can track similar issues. I shall update the documentation shortly. Best, On Fri, 2 Jul 2021 at 09:46, Eduardo Ochs wrote: > > Hi list, > > the latest version of the Agda Manual from > > https://readthedocs.org/projects/agda/downloads/pdf/latest/ > > mentions a certain error as something that can only happen on M$ > Windows. It says: > > Warning: If you are installing Agda using Cabal on Windows, > depending on your system locale setting, cabal install Agda may fail > with an error message: > > hGetContents: invalid argument (invalid byte sequence) > > If this happens, you can try changing the console code page to UTF-8 > using the command: > > CHCP 65001 > > I'm on Debian stable and I got something similar. I tried to install > Agda with > > cabal update > cabal install Agda > > and it failed with: > > happy: src/full/Agda/Syntax/Parser/Parser.y: hGetContents: invalid > argument (invalid byte sequence) > cabal: Failed to build Agda-2.6.2. See the build log above for > details. > > My default value for $LC_ALL is "C" and the only uncommented line in > my /etc/locale.gen is this one: > > en_GB.UTF-8 UTF-8 > > If I run this > > export LC_ALL=en_GB.UTF-8 > cabal install Agda > > instead of just "cabal install Agda" the compilation succeeds. > > Cheers, > Eduardo Ochs > http://angg.twu.net/#eev > http://angg.twu.net/math-b.html > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > La informaci?n contenida en este correo electr?nico est? dirigida ?nicamente a su destinatario y puede contener informaci?n confidencial, material privilegiado o informaci?n protegida por derecho de autor. Est? prohibida cualquier copia, utilizaci?n, indebida retenci?n, modificaci?n, difusi?n, distribuci?n o reproducci?n total o parcial. Si usted recibe este mensaje por error, por favor contacte al remitente y elim?nelo. La informaci?n aqu? contenida es responsabilidad exclusiva de su remitente por lo tanto la Universidad EAFIT no se hace responsable de lo que el mensaje contenga. The information contained in this email is addressed to its recipient only and may contain confidential information, privileged material or information protected by copyright. Its prohibited any copy, use, improper retention, modification, dissemination, distribution or total or partial reproduction. If you receive this message by error, please contact the sender and delete it. The information contained herein is the sole responsibility of the sender therefore Universidad EAFIT is not responsible for what the message contains. -- Andr?s From bruno.bernardo at tutanota.com Mon Jul 5 23:01:42 2021 From: bruno.bernardo at tutanota.com (Bruno Bernardo) Date: Mon, 5 Jul 2021 23:01:42 +0200 (CEST) Subject: [Agda] FMBC 2021 - Call for Participation Message-ID: [ Please distribute, apologies for multiple postings. ] ======================================================================== 3rd International Workshop on Formal Methods for Blockchains (FMBC) 2021 - Call for Participation https://fmbc.gitlab.io/2021 July 18 and 19, 2021, Online, 8AM-10AM PDT Co-located with the 33rd International Conference on Computer-Aided Verification (CAV 2021) http://i-cav.org/2021/ --------------------------------------------------------- The FMBC workshop is a forum to identify theoretical and practical approaches of formal methods for Blockchain technology. Topics include, but are not limited to: * Formal models of Blockchain applications or concepts * Formal methods for consensus protocols * Formal methods for Blockchain-specific cryptographic primitives or protocols * Design and implementation of Smart Contract languages * Verification of Smart Contracts The list of lightning talks and conditionally accepted papers is available on the FMBC 2021 website: https://fmbc.gitlab.io/2021/program.html There will be one keynote by David Dill, Lead Researcher on Blockchain at Novi/Facebook and professor emeritus at Stanford University, USA. Registration Registration to FMBC 2021 is done through the CAV 2021 registration form: http://i-cav.org/2021/attending/ (*Early bird deadline is July 9.*) From matthewdaggitt at gmail.com Tue Jul 6 05:34:25 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Tue, 6 Jul 2021 11:34:25 +0800 Subject: [Agda] Starting work on v2.0 of the Agda Standard Library Message-ID: Dear all, After a recent discussion on Zulip, various members of the Agda community have come to the conclusion that we have accumulated enough bad design decisions in the Agda standard library that it is now worth starting work on a v2.0. This isn't envisaged to be a radical overhaul, and although we will be fixing things that require unavoidable backwards incompatible changes, we still expect the vast majority of code written with v1.7 to work in v2.0. We will however be removing all code that was deprecated before the release of v1.0. We know making breaking changes is always somewhat unpopular. However, the art of designing large developments in dependently-typed systems such as Agda is still relatively poorly understood, and we believe that in the long term it's more important to find and implement the right design decisions, rather than build upon the sub-optimal ones! After the temporary disruption, we hope that the changes will make all the users of the standard library's lives easier going forward. Obviously community feedback on this process is vital! Over the coming weeks and months, in the hope of starting discussions with those interested, we'll be posting on Zulip and on the mailing list about the bigger changes before we start work on them. Equally, if there's any parts of the standard library that you've always thought could be done better, now's the time to open an issue on the issue tracker . Many thanks, Matthew, on behalf of the Agda Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthewdaggitt at gmail.com Tue Jul 6 06:43:28 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Tue, 6 Jul 2021 12:43:28 +0800 Subject: [Agda] [RFC stdlib v2.0] 1. Numeric ops with non-zero proofs Message-ID: Dear all, To kick things off, the first RFC (request for comment) for v2.0 of the Agda standard library is about proposed changes to how numeric operations that require non-zero proofs (e.g. division) work. The current situation Currently operations such as division are defined as follows : _/_ : (dividend divisor : ?) {?0 : False (divisor ? 0)} ? ? taking an implicit proof that the result of the decision procedure of testing whether it is zero reduces to false. This is preferable to passing a direct proof of the form divisor ? 0 as it means that when divisor normalises to something of the form suc n then the type of the proof reduces to unit ? which Agda automatically fills in. Consequently you can write 7 / 3 or m / sucn without having to explicitly construct the proof. The current problems 1. When the denominator is not in the form suc _, Agda can't infer the proof and therefore it must always be passed explicitly even when the proof is in scope. This leads to having to write the ugly code like the following: ? m n {gcd?0 : NonZero (gcd m n)} ? Coprime ((m / gcd m n) {gcd?0}) ((n / gcd m n) {gcd?0}) 1. When proving equalities over _/_ you can't use cong? from Relation.Binary.PropositionalEquality directly as Agda requires that you explicitly prove the proofs of non-zeroness do not affect the result. This makes it very finicky to use equational reasoning. 2. The use of the decision procedure _?_ means that the definition must depend on Data.Nat.Properties where _?_ lives. This means that a) type-checking anything involving _/_ requires type-checking a much larger proportion of the library that one would expect and b) _/_ can't live in Data.Nat.Base. 3. Constructing a proof of the type False (divisor ? 0) is much trickier than a proof of divisor ? 0and requires extra imports from Relation.Nullary. Proposed solution We propose to take a leaf out of Ulf Norell's Prelude library and instead pass the proofs as *irrelevant*, *instance* arguments that use the new NonZero predicates introduced in v1.5: _/_ : (dividend divisor : ?) {{.(NonZero divisor)}} ? ? which preserves the ability to not provide the proofs for divisors of the form suc _ and fixes the problems listed above as follows: 1. Agda automatically fills in instance arguments if they are in scope, therefore removing the need to supply them to every place in the expression where they can't be inferred. For example we would then be able to write the much nicer: ? m n {{NonZero (gcd m n)}} ? Coprime (m / gcd m n) (n / gcd m n) 1. Agda doesn't consider irrelevant arguments when proving propositional equality. Therefore to prove m / n and x / y are propositionally equal will only require that we prove m equals x and n equals y and will not require us to explicitly prove that the result doesn't depend on the proofs of non-zeroness. 2. The NonZero predicate is much more lightweight than the decidability proof and lives in Data.Nat.Base rather than Data.Nat.Properties. 3. The NonZero predicate comes with nice constructors nonZero-< and nonZero-? that makes constructing such proofs much easier. This has an additional advantage in that for certain operations that always result in a non-zero result, e.g. factorial, it will be possible to declare a proof of the non-zeroness as an instance and you will never have to explicitly pass a proof. Backwards incompatibilities In cases where the proof is already automatically inferred nothing will need to change. In places where the proof has to be passed explicitly, then the type of the proof will need to change and will need to be passed using instance brackets {{_}} rather than implict brackets {_}. As mentioned above, NonZero comes with constructors so constructing the new proofs should be much easier. Feedback Any feedback would be greatly appreciated! Please feel free to reply in one of the following issues: https://github.com/agda/agda-stdlib/issues/921 https://github.com/agda/agda-stdlib/issues/1170 https://github.com/agda/agda-stdlib/issues/1408 -------------- next part -------------- An HTML attachment was scrubbed... URL: From eduardoochs at gmail.com Wed Jul 7 06:04:19 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Wed, 7 Jul 2021 01:04:19 -0300 Subject: [Agda] Poor man's way to latex Agda source Message-ID: Hello list, how do I latex small snippets of Agda code? Ok, let me explain... I am a beginner with Agda and I am alternating between reading the tutorials and trying to understand the agda-categories library: https://github.com/agda/agda-categories https://arxiv.org/abs/2005.07059 I've been working on ways to visualize some statements and proofs in Category Theory and on ways to translate between different notations, and I would like to be able to add to a diagram like this one http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=33 the information on how to translate each of my terms to Agda, using exactly the terminology of the agda-categories library whenever possible... My guess is that it should be possible to write a "poor man's way to typeset Agda source", like this thing here, that requires the user to add lots of backslashes by hand: % \co: a low-level way to typeset code; a poor man's "\verb" \def\co#1{{% \def\%{\char37}% \def\\{\char92}% \def\^{\char94}% \def\~{\char126}% \tt#1% }} \def\qco#1{`\co{#1}'} \def\qqco#1{``\co{#1}''} _and_ I guess that some people here may have written hacks like this, which is why I am asking... the tricky part is how to handle the unicode characters. By the way, I use lualatex most of the time and pdflatex when I need, and I've spent too much time learning how to use tricks like these \catcode`?=13 \def?{\nearrow} % lualatex \DeclareUnicodeCharacter{2198}{\searrow} % pdflatex and how to fix them when they break. =/ Thanks in advance! Eduardo Ochs http://angg.twu.net/math-b.html http://angg.twu.net/dednat6.html From fdhzs2010 at hotmail.com Wed Jul 7 06:09:24 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Wed, 7 Jul 2021 04:09:24 +0000 Subject: [Agda] Poor man's way to latex Agda source In-Reply-To: References: Message-ID: I am still not sure what exactly you are looking for. What I do is I use minted to typeset the code, and I just copy and paste the code in. other packages, of course, would also work. Or are you asking how to handle the Unicode used in an Agda source? From: Eduardo Ochs Sent: Wednesday, July 7, 2021 12:04 AM To: agda at lists.chalmers.se Subject: [Agda] Poor man's way to latex Agda source Hello list, how do I latex small snippets of Agda code? Ok, let me explain... I am a beginner with Agda and I am alternating between reading the tutorials and trying to understand the agda-categories library: https://github.com/agda/agda-categories https://arxiv.org/abs/2005.07059 I've been working on ways to visualize some statements and proofs in Category Theory and on ways to translate between different notations, and I would like to be able to add to a diagram like this one http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=33 the information on how to translate each of my terms to Agda, using exactly the terminology of the agda-categories library whenever possible... My guess is that it should be possible to write a "poor man's way to typeset Agda source", like this thing here, that requires the user to add lots of backslashes by hand: % \co: a low-level way to typeset code; a poor man's "\verb" \def\co#1{{% \def\%{\char37}% \def\\{\char92}% \def\^{\char94}% \def\~{\char126}% \tt#1% }} \def\qco#1{`\co{#1}'} \def\qqco#1{``\co{#1}''} _and_ I guess that some people here may have written hacks like this, which is why I am asking... the tricky part is how to handle the unicode characters. By the way, I use lualatex most of the time and pdflatex when I need, and I've spent too much time learning how to use tricks like these \catcode`?=13 \def?{\nearrow} % lualatex \DeclareUnicodeCharacter{2198}{\searrow} % pdflatex and how to fix them when they break. =/ Thanks in advance! Eduardo Ochs http://angg.twu.net/math-b.html http://angg.twu.net/dednat6.html _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From eduardoochs at gmail.com Wed Jul 7 06:21:17 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Wed, 7 Jul 2021 01:21:17 -0300 Subject: [Agda] Poor man's way to latex Agda source In-Reply-To: References: Message-ID: On Wed, 7 Jul 2021 at 01:09, Jason Hu wrote: > > I am still not sure what exactly you are looking for. What I do is I > use minted to typeset the code, and I just copy and paste the code > in. other packages, of course, would also work. I'll try to do that! > Or are you asking how to handle the Unicode used in an Agda source? I guess that minted handles it in the right way, and I'll probably be able to learn what I need by studying its output. Minted is not mentioned in the Agda User Manual, and I was looking for pointers... Thanks!!! =) Eduardo From matthewdaggitt at gmail.com Wed Jul 7 09:21:06 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Wed, 7 Jul 2021 15:21:06 +0800 Subject: [Agda] [RFC stdlib v2.0] 1. Numeric ops with non-zero proofs In-Reply-To: References: Message-ID: Hi Philip, I think the key point is that irrelevant arguments still have to be valid members of the type. It's not that Agda doesn't require a valid value for an irrelevant argument, it's that Agda doesn't care which particular valid value you provide. So in your example "proof", you would not be able to divide by "a - b" as you would not have a proof that it is non-zero. However if in different circumstances you had *two* proofs that "a - b" is non-zero then the irrelevancy would ensure that Agda wouldn't care which one you used. In summary, using irrelevant arguments does not allow us to prove 1 == 2. There's also been some discussion on the type of irrelevance we should be aiming for on this pull request that you might find interesting: https://github.com/agda/agda-stdlib/pull/1538 Cheers, Matthew On Wed, Jul 7, 2021 at 2:22 AM Philip Wadler wrote: > There is a standard proof that 1 = 2. You are probably familiar with it; > if not, see below. You write: > > Agda doesn't consider irrelevant arguments when proving propositional >> equality. Therefore to prove m / n and x / y are propositionally equal >> will only require that we prove m equals x and n equals y and will not >> require us to explicitly prove that the result doesn't depend on the proofs >> of non-zeroness. > > > Does making the proof of nonzero divisor an irrelevant argument open up > the possibility to prove 1 = 2? Go well, -- P > > https://www.quickanddirtytips.com/education/math/how-to-prove-that-1-2 > > Here's how it works: > > - > > Assume that we have two variables *a* and *b*, and that: *a = b* > - > > Multiply both sides by *a* to get: *a2 = **ab* > - > > Subtract *b*2 from both sides to get: *a2 - b2 = ab - b2* > - > > This is the tricky part: Factor the left side (using FOIL from > algebra) to get (*a* + *b*)(*a* - *b*) and factor out *b* from the > right side to get *b*(*a* - *b*). If you're not sure how FOIL or > factoring works, don't worry?you can check that this all works by > multiplying everything out to see that it matches. The end result is that > our equation has become: *(a + b)(a - b) = b(a - b)* > - > > Since (*a* - *b*) appears on both sides, we can cancel it to get: > *a + b = b* > - > > Since *a* = *b* (that's the assumption we started with), we can > substitute *b* in for *a* to get: *b + b = b* > - > > Combining the two terms on the left gives us: *2b = b* > - > > Since *b* appears on both sides, we can divide through by *b* to get: *2 > = 1* > > Wait, what?! Everything we did there looked totally reasonable. How in the > world did we end up proving that 2 = 1? > . \ Philip Wadler, Professor of Theoretical Computer Science, > . /\ School of Informatics, University of Edinburgh > . / \ and Senior Research Fellow, IOHK > . http://homepages.inf.ed.ac.uk/wadler/ > > > > On Tue, 6 Jul 2021 at 05:43, Matthew Daggitt > wrote: > >> This email was sent to you by someone outside the University. >> You should only click on links or attachments if you are certain that the >> email is genuine and the content is safe. >> >> Dear all, >> To kick things off, the first RFC (request for comment) for v2.0 of the >> Agda standard library is about proposed changes to how numeric operations >> that require non-zero proofs (e.g. division) work. >> >> The current situation >> >> Currently operations such as division are defined as follows >> >> : >> >> _/_ : (dividend divisor : ?) {?0 : False (divisor ? 0)} ? ? >> >> taking an implicit proof that the result of the decision procedure of >> testing whether it is zero reduces to false. This is preferable to >> passing a direct proof of the form divisor ? 0 as it means that when >> divisor normalises to something of the form suc n then the type of the >> proof reduces to unit ? which Agda automatically fills in. Consequently >> you can write 7 / 3 or m / sucn without having to explicitly construct >> the proof. >> >> The current problems >> >> 1. When the denominator is not in the form suc _, Agda can't infer >> the proof and therefore it must always be passed explicitly even when the >> proof is in scope. This leads to having to write the ugly code like the >> following: >> >> ? m n {gcd?0 : NonZero (gcd m n)} ? Coprime ((m / gcd m n) {gcd?0}) ((n / gcd m n) {gcd?0}) >> >> >> 1. >> >> When proving equalities over _/_ you can't use cong? from >> Relation.Binary.PropositionalEquality directly as Agda requires that >> you explicitly prove the proofs of non-zeroness do not affect the result. >> This makes it very finicky to use equational reasoning. >> 2. >> >> The use of the decision procedure _?_ means that the definition must >> depend on Data.Nat.Properties where _?_ lives. This means that a) >> type-checking anything involving _/_ requires type-checking a much >> larger proportion of the library that one would expect and b) _/_ can't >> live in Data.Nat.Base. >> 3. >> >> Constructing a proof of the type False (divisor ? 0) is much trickier >> than a proof of divisor ? 0and requires extra imports from >> Relation.Nullary. >> >> Proposed solution >> >> We propose to take a leaf out of Ulf Norell's Prelude library and instead >> pass the proofs as *irrelevant*, *instance* arguments that use the new >> NonZero predicates introduced in v1.5: >> >> _/_ : (dividend divisor : ?) {{.(NonZero divisor)}} ? ? >> >> which preserves the ability to not provide the proofs for divisors of the >> form suc _ and fixes the problems listed above as follows: >> >> 1. Agda automatically fills in instance arguments if they are in >> scope, therefore removing the need to supply them to every place in the >> expression where they can't be inferred. For example we would then be able >> to write the much nicer: >> >> ? m n {{NonZero (gcd m n)}} ? Coprime (m / gcd m n) (n / gcd m n) >> >> >> 1. >> >> Agda doesn't consider irrelevant arguments when proving propositional >> equality. Therefore to prove m / n and x / y are propositionally >> equal will only require that we prove m equals x and n equals y and >> will not require us to explicitly prove that the result doesn't depend on >> the proofs of non-zeroness. >> 2. >> >> The NonZero predicate is much more lightweight than the decidability >> proof and lives in Data.Nat.Base rather than Data.Nat.Properties. >> 3. >> >> The NonZero predicate comes with nice constructors nonZero-< and >> nonZero-? that makes constructing such proofs much easier. >> >> This has an additional advantage in that for certain operations that >> always result in a non-zero result, e.g. factorial, it will be possible to >> declare a proof of the non-zeroness as an instance and you will never have >> to explicitly pass a proof. >> >> Backwards incompatibilities >> >> In cases where the proof is already automatically inferred nothing will >> need to change. In places where the proof has to be passed explicitly, then >> the type of the proof will need to change and will need to be passed using >> instance brackets {{_}} rather than implict brackets {_}. As mentioned >> above, NonZero comes with constructors so constructing the new proofs >> should be much easier. >> >> Feedback >> >> Any feedback would be greatly appreciated! Please feel free to reply in >> one of the following issues: >> https://github.com/agda/agda-stdlib/issues/921 >> https://github.com/agda/agda-stdlib/issues/1170 >> https://github.com/agda/agda-stdlib/issues/1408 >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Thorsten.Altenkirch at nottingham.ac.uk Wed Jul 7 11:18:37 2021 From: Thorsten.Altenkirch at nottingham.ac.uk (Thorsten Altenkirch) Date: Wed, 7 Jul 2021 09:18:37 +0000 Subject: [Agda] Poor man's way to latex Agda source In-Reply-To: References: Message-ID: <6F7078C3-90FD-4490-8C47-D04CF66E3F4C@nottingham.ac.uk> I am using lhs2tex with agda mode which produces nice embedded latex code and also works for snippets in text. Agda can produce latex output for codde it has type checked but I find this is too inflexible and doesn't work well for snippets and examples. Thorsten ?On 07/07/2021, 05:04, "Agda on behalf of Eduardo Ochs" wrote: Hello list, how do I latex small snippets of Agda code? Ok, let me explain... I am a beginner with Agda and I am alternating between reading the tutorials and trying to understand the agda-categories library: https://github.com/agda/agda-categories https://arxiv.org/abs/2005.07059 I've been working on ways to visualize some statements and proofs in Category Theory and on ways to translate between different notations, and I would like to be able to add to a diagram like this one http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=33 the information on how to translate each of my terms to Agda, using exactly the terminology of the agda-categories library whenever possible... My guess is that it should be possible to write a "poor man's way to typeset Agda source", like this thing here, that requires the user to add lots of backslashes by hand: % \co: a low-level way to typeset code; a poor man's "\verb" \def\co#1{{% \def\%{\char37}% \def\\{\char92}% \def\^{\char94}% \def\~{\char126}% \tt#1% }} \def\qco#1{`\co{#1}'} \def\qqco#1{``\co{#1}''} _and_ I guess that some people here may have written hacks like this, which is why I am asking... the tricky part is how to handle the unicode characters. By the way, I use lualatex most of the time and pdflatex when I need, and I've spent too much time learning how to use tricks like these \catcode`?=13 \def?{\nearrow} % lualatex \DeclareUnicodeCharacter{2198}{\searrow} % pdflatex and how to fix them when they break. =/ Thanks in advance! Eduardo Ochs http://angg.twu.net/math-b.html http://angg.twu.net/dednat6.html _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From wadler at inf.ed.ac.uk Wed Jul 7 19:18:46 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Wed, 7 Jul 2021 18:18:46 +0100 Subject: [Agda] Poor man's way to latex Agda source In-Reply-To: <6F7078C3-90FD-4490-8C47-D04CF66E3F4C@nottingham.ac.uk> References: <6F7078C3-90FD-4490-8C47-D04CF66E3F4C@nottingham.ac.uk> Message-ID: I have an intern producing tooling to convert .lagda.md files to Latex. Agda's latex mode supports embedded code but makes snippets difficult, while markdown (.lagda.md) supports both. I will announce the tool here when it is complete, in about one month. Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ On Wed, 7 Jul 2021 at 10:18, Thorsten Altenkirch < Thorsten.Altenkirch at nottingham.ac.uk> wrote: > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > > I am using lhs2tex with agda mode which produces nice embedded latex code > and also works for snippets in text. > > Agda can produce latex output for codde it has type checked but I find > this is too inflexible and doesn't work well for snippets and examples. > > Thorsten > > ?On 07/07/2021, 05:04, "Agda on behalf of Eduardo Ochs" < > agda-bounces at lists.chalmers.se on behalf of eduardoochs at gmail.com> wrote: > > Hello list, > > how do I latex small snippets of Agda code? > > Ok, let me explain... I am a beginner with Agda and I am alternating > between reading the tutorials and trying to understand the > agda-categories library: > > https://github.com/agda/agda-categories > https://arxiv.org/abs/2005.07059 > > I've been working on ways to visualize some statements and proofs in > Category Theory and on ways to translate between different notations, > and I would like to be able to add to a diagram like this one > > http://angg.twu.net/LATEX/2020favorite-conventions.pdf#page=33 > > the information on how to translate each of my terms to Agda, using > exactly the terminology of the agda-categories library whenever > possible... > > My guess is that it should be possible to write a "poor man's way to > typeset Agda source", like this thing here, that requires the user to > add lots of backslashes by hand: > > % \co: a low-level way to typeset code; a poor man's "\verb" > \def\co#1{{% > \def\%{\char37}% > \def\\{\char92}% > \def\^{\char94}% > \def\~{\char126}% > \tt#1% > }} > \def\qco#1{`\co{#1}'} > \def\qqco#1{``\co{#1}''} > > _and_ I guess that some people here may have written hacks like this, > which is why I am asking... the tricky part is how to handle the > unicode characters. > > By the way, I use lualatex most of the time and pdflatex when I need, > and I've spent too much time learning how to use tricks like these > > \catcode`?=13 \def?{\nearrow} % lualatex > \DeclareUnicodeCharacter{2198}{\searrow} % pdflatex > > and how to fix them when they break. =/ > > Thanks in advance! > Eduardo Ochs > http://angg.twu.net/math-b.html > http://angg.twu.net/dednat6.html > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > > > This message and any attachment are intended solely for the addressee > and may contain confidential information. If you have received this > message in error, please contact the sender and delete the email and > attachment. > > Any views or opinions expressed by the author of this email do not > necessarily reflect the views of the University of Nottingham. Email > communications with the University of Nottingham may be monitored > where permitted by law. > > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: not available URL: From amp12 at cam.ac.uk Thu Jul 8 12:11:41 2021 From: amp12 at cam.ac.uk (Andrew Pitts) Date: Thu, 8 Jul 2021 10:11:41 +0000 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: Message-ID: > On 19 Jun 2021, at 07:38, Andr?s Sicard-Ram?rez wrote: > > The Agda Team is very pleased to announce the release of Agda 2.6.2. > > # Highlights ? I took a look at Agda.Primitive and saw {-# BUILTIN TYPE Set #-} {-# BUILTIN PROP Prop #-} {-# BUILTIN SETOMEGA Set? #-} which I guess has to do with > * The Primitive Sorts (https://agda.readthedocs.io/en/v2.6.2/language/built-ins.html#sorts) of Agda (`Set` and `Prop`) are no longer keywords and can be renamed when importing `Agda.Primitive`. but then there is {-# BUILTIN STRICTSET SSet #-} {-# BUILTIN STRICTSETOMEGA SSet? #-} SSet and SSet? are undocumented (although the former appears in ) What are they for? Just curious, Andy From ifl21.publicity at gmail.com Fri Jul 9 07:55:43 2021 From: ifl21.publicity at gmail.com (Pieter Koopman) Date: Fri, 9 Jul 2021 05:55:43 +0000 Subject: [Agda] IFL'21 Third call for papers Message-ID: ================================================================================ IFL 2021 33rd Symposium on Implementation and Application of Functional Languages venue: online 1 - 3 September 2021 https://ifl21.cs.ru.nl ================================================================================ News - Paper submission details. - Registration information added Scope The goal of the IFL symposia is to bring together researchers actively engaged in the implementation and application of functional and function-based programming languages. IFL 2021 will be a venue for researchers to present and discuss new ideas and concepts, work in progress, and publication-ripe results related to the implementation and application of functional languages and function-based programming. Industrial track and topics of interest This year's edition of IFL explicitly solicits original work concerning *applications* of functional programming in industry and academia. These contributions will be reviewed by experts with an industrial background. Topics of interest to IFL include, but are not limited to: * language concepts * type systems, type checking, type inferencing * compilation techniques * staged compilation * run-time function specialisation * run-time code generation * partial evaluation * (abstract) interpretation * meta-programming * generic programming * automatic program generation * array processing * concurrent/parallel programming * concurrent/parallel program execution * embedded systems * web applications * (embedded) domain-specific languages * security * novel memory management techniques * run-time profiling performance measurements * debugging and tracing * testing and proofing * virtual/abstract machine architectures * validation, verification of functional programs * tools and programming techniques * applications of functional programming in the industry, including ** functional programming techniques for large applications ** successes of the application functional programming ** challenges for functional programming encountered ** any topic related to the application of functional programming that is interesting for the IFL community Post-symposium peer-review Following IFL tradition, IFL 2021 will use a post-symposium review process to produce the formal proceedings. Before the symposium authors submit draft papers. These draft papers will be screened by the program chairs to make sure that they are within the scope of IFL. The draft papers will be made available to all participants at the symposium. Each draft paper is presented by one of the authors at the symposium. After the symposium every presenter is invited to submit a full paper, incorporating feedback from discussions at the symposium. Work submitted to IFL may not be simultaneously submitted to other venues; submissions must adhere to ACM SIGPLAN's republication policy. The program committee will evaluate these submissions according to their correctness, novelty, originality, relevance, significance, and clarity, and will thereby determine whether the paper is accepted or rejected for the formal proceedings. We plan to publish these proceedings in the International Conference Proceedings Series of the ACM Digital Library, as in previous years. Moreover, the proceedings will also be made publicly available as open access. Important dates Submission deadline of draft papers: 17 August 2021 Notification of acceptance for presentation: 19 August 2021 Registration deadline: 30 August 2021 IFL Symposium: 1-3 September 2021 Submission of papers for proceedings: 6 December 2021 Notification of acceptance: 3 February 2022 Camera-ready version: 15 March 2022 Submission details All contributions must be written in English. Papers must use the ACM two columns conference format, which can be found at: http://www.acm.org/publications/proceedings-template . (For LaTeX users, start your document with \documentclass[format=sigconf]{acmart}.) Note that this format has a rather long but limited list of packages that can be used. Please make sure that your document adheres to this list. The submission Web page for IFL21 is https://easychair.org/conferences/?conf=ifl21 . Peter Landin Prize The Peter Landin Prize is awarded to the best paper presented at the symposium every year. The honoured article is selected by the program committee based on the submissions received for the formal review process. The prize carries a cash award equivalent to 150 Euros. Organisation IFL 2021 Chairs: Pieter Koopman and Peter Achten, Radboud University, The Netherlands IFL Publicity chair: Pieter Koopman, Radboud University, The Netherlands PC: Peter Achten (co-chair) - Radboud University, Netherlands Thomas van Binsbergen - University of Amsterdam, Netherlands Edwin Brady - University of St. Andrews, Scotland Laura Castro - University of A Coru?a, Spain Youyou Cong - Tokyo Institute of Technology, Japan Olaf Chitil - University of Kent, England Andy Gill - University of Kansas, USA Clemens Grelck - University of Amsterdam, Netherlands John Hughes - Chalmers University, Sweden Pieter Koopman (co-chair) - Radboud University, Netherlands Cynthia Kop - Radboud University, Netherlands Jay McCarthey - University of Massachussetts Lowell, USA Neil Mitchell - Facebook, England Jan De Muijnck-Hughes - Glasgow University, Scotland Keiko Nakata - SAP Innovation Center Potsdam, Germany Jurri?n Stutterheim - Standard Chartered, Singapore Simon Thompson - University of Kent, England Melinda T?th - E?tvos Lor?nd University, Hungary Phil Trinder - Glasgow University, Scotland Meng Wang - University of Bristol, England Vikt?ria Zs?k - E?tvos Lor?nd University, Hungary Virtual symposium Because of the Covid-19 pandemic, this year IFL 2021 will be an online event, consisting of paper presentations, discussions and virtual social gatherings. Registered participants can take part from anywhere in the world. Registration Please use the below link to register for IFL 2021: https://docs.google.com/forms/d/e/1FAIpQLSdMFjo-GumKjk4i7szs7n4DhWqKt96t8ofIqshfQFrf4jnvsA/viewform?usp=sf_link Thanks to the sponsors and the support of the Radboud university registration is free of charge. [image: beacon] -------------- next part -------------- An HTML attachment was scrubbed... URL: From tarmo at cs.ioc.ee Fri Jul 9 17:05:46 2021 From: tarmo at cs.ioc.ee (Tarmo Uustalu) Date: Fri, 9 Jul 2021 18:05:46 +0300 Subject: [Agda] ETAPS 2022 1st joint call for papers Message-ID: <20210709180546.66c1b98a@cs.ioc.ee> Why choose ETAPS? - ETAPS is one of the world's leading fora for research on software science, with a history of more than 25 years. - ESOP, FoSSaCS, TACAS are CORE 2021 rank A conferences. - The proceedings of ETAPS appear in gold open access, with no article processing charge for the authors specifically. - ETAPS has low participation fees for all and for students in particular. New in 2022: - Like FASE for several years already, ESOP will also use double-blind review this time. - FASE has a new paper category of new ideas and emerging results (NIER) papers. - The pre-paper-acceptance artifact submission deadline for TACAS is now a little later than the paper submission deadline. - ESOP and FASE welcome voluntary submission of artifacts for evaluation after paper acceptance; the outcome will not change the paper acceptance decision. - Among the satellite events, there is a PhD student mentoring workshop. ****************************************************************** JOINT CALL FOR PAPERS 25th European Joint Conferences on Theory and Practice of Software ETAPS 2022 Munich, Germany, 2-7 April 2022 https://etaps.org/2022 ****************************************************************** -- ABOUT ETAPS -- ETAPS is the primary European forum for academic and industrial researchers working on topics relating to software science. ETAPS, established in 1998, is a confederation of four annual conferences, accompanied by satellite workshops. ETAPS 2022 is the twenty-fifth event in the series. -- MAIN CONFERENCES (4-7 April) -- * ESOP: European Symposium on Programming (PC chair: Ilya Sergey, Yale-NUS College and National University of Singapore, Singapore) * FASE: Fundamental Approaches to Software Engineering (PC chairs:Einar Broch Johnsen, University of Oslo, Norway, and Manuel Wimmer, Johannes Kepler Universit?t Linz, Austria) * FoSSaCS: Foundations of Software Science and Computation Structures (PC chairs: Patricia Bouyer, CNRS, LMF, France, and Lutz Schr?der, FAU Erlangen-N?rnberg, Germany) * TACAS: Tools and Algorithms for the Construction and Analysis of Systems (PC chairs: Dana Fisman, Ben-Gurion University of the Negev, Israel, and Grigore Rosu, University of Illinois at Urbana-Champaign, USA) TACAS '22 will host the 11th Competition on Software Verification (SV-COMP). -- INVITED SPEAKERS -- * Unifying speakers: Alexandra Silva (University College London, UK / Cornell University, USA) Tom?? Vojnar (Brno University of Technology, Czechia) * FoSSaCS invited speaker: Nathalie Bertrand (Inria Rennes, France) * TACAS invited speaker: TBA * Tutorial speakers: TBA -- IMPORTANT DATES * Paper submission: 14 October 2021 23:59 AoE * Pre-paper-acceptance artifact submission (TACAS): 4 November 2021 23:59 AoE * Rebuttal (ESOP, FoSSaCS and, partially, TACAS): 7 December 00:01 AoE - 9 December 2021 23:59 AoE * Paper notification: 23 December 2021 * Post-paper-acceptance artifact submission (ESOP, FASE, TACAS): 5 January 2022 23:59 AoE * Paper final versions: 26 January 2022 * Artifact notification: 16 February 2022 -- SUBMISSION INSTRUCTIONS -- The four main conferences of ETAPS 2022 solicit contributions of the following types. All page limits are given **excluding the bibliography**. * ESOP: regular research papers of max 25 pp * FASE: regular research papers and empirical evaluation papers of max 18 pp, new ideas and emerging results (NIER) papers of max 8 pp, tool demonstration papers of max 6 pp (+ mandatory appendix of max 6 pp), * FoSSaCS: regular research papers of max 18 pp * TACAS: regular research papers, case study papers and regular tool papers of max 16 pp, tool demonstration papers of max 6 pp For definitions of the different paper types and specific instructions, where they are present, see the webpages of the individual conferences. All accepted papers will appear in the proceedings and have presentations during the conference. A condition of submission is that, if the submission is accepted, one of the authors attends the conference to give the presentation. We plan ETAPS 2022 as a hybrid conference; remote attendance and presentation will be possible. Submitted papers must be in English presenting original research. They must be unpublished and not submitted for publication elsewhere. In particular, simultaneous submission of the same contribution to multiple ETAPS conferences is also forbidden. Submissions must follow the formatting guidelines of Springer's LNCS (use the llncs.cls class) and be submitted electronically in pdf through the Easychair author interface of the respective conference. Submissions not adhering to the specified format and length may be rejected immediately. ESOP and FASE will use **double-blind reviewing**. Authors are asked to omit their names and institutions; refer to prior work in the third person, just as prior work by others; not to include acknowledgements that might identify them. ESOP and FoSSaCS will use an **author rebuttal phase**. TACAS will use rebuttal for selected submissions (those in the gray zone). Artifact submission and evaluation Regular tool paper and tool demonstration paper submissions to TACAS must be accompanied by an artifact submitted shortly after the paper. The artifact will be evaluated and the outcome will be taken into account in the acceptance decision of the paper. For research paper and case study paper submissions, pre-paper-acceptance submission of an artifact is optional; if an artifact is submitted at this point, it will be handled like described above. Alternatively, authors of papers of these categories may submit an artifact for evaluation after the paper has been accepted. The outcome of the artifact evaluation will then not change the paper acceptance decision. ESOP and FASE will also have artifact evaluation, but participation in it is voluntary; the artifact submission deadline is after the paper notification deadline. The outcome will not alter the paper acceptance decision. For specific instructions regarding artifacts, see the webpages of the individual conferences. -- PUBLICATION The proceedings will be published in the Advanced Research in Computing and Software Science (ARCoSS) subline of Springer's LNCS series. The proceedings volumes will appear in gold open access, so the published versions of all papers will be available for everyone to download from the publisher's website freely, from the date of online publication, perpetually. The copyright of the papers will remain with the authors. -- BEST PAPER AWARDS The strongest papers of the four conferences will be nominated for the ETAPS best paper awards of EAPLS, EASST and EATCS. The ETAPS test of time award recognizes outstanding papers published at ETAPS more than 10 years in the past. -- SATELLITE EVENTS (2-3 April) -- A number of satellite workshops and other events will take place before the main conferences. In particular, there will be a PhD student mentoring workshop organized by Caterina Urban, Wolfgang Ahrendt and Gidon Ernst. -- CITY AND HOST INSTITUTION -- Munich, Germany, is the capital and most populous city of Bavaria. Nowadays, the city is a global center of art, science, technology, finance, publishing, culture, innovation, education, business, and tourism. It is home to Ludwig Maximilian's University (LMU) and Technische Universit?t M?nchen (TUM), many scientific institutions, and world-class technology and science museums such as Deutsches Museum and BMW Museum. Iconic places to visit in Munich include the Munich Residenz, Marienplatz, the Old Town Hall, the famous Glockenspiel on the New Town Hall, the Frauenkirche, the English Garden, the Olympic Park and Nymphenburg Palace. The conference will be hosted by Technische Universit?t M?nchen. -- ORGANIZERS -- General chair: Jan K?et?nsk? (Technische Universit?t M?nchen, Germany) Workshops chair: Dirk Beyer (Ludwig-Maximilians Universit?t M?nchen, Germany) From andreasnuyts at gmail.com Wed Jul 28 09:35:54 2021 From: andreasnuyts at gmail.com (Andreas Nuyts) Date: Wed, 28 Jul 2021 09:35:54 +0200 Subject: [Agda] Cubical: "show", and families over HITs Message-ID: Hi everyone, I have two questions about Agda cubical, related to the following code: {-# OPTIONS --cubical #-} module hit-family-test where open import Cubical.Data.Equality hiding (Sub) renaming (reflc to refl) open import Cubical.Data.Bool open import Cubical.HITs.Interval open import Cubical.Foundations.Everything hiding (Sub ; _?_) --------------------------------- data Pest : Interval ? Set where ? pest : Bool ? Pest zero getPest : Pest one ? Bool getPest p = {!!} -- cannot match --------------------------------- data Test : Interval ? Set where ? test : ? {i} ? Bool ? i ? zero ? Test i getTest : Test one ? Bool getTest (test b p) = b test-one : Bool ? Test one test-one b = subst Test seg (test b refl) x : Test one x = {!test-one true!} Q1: is Test the best workaround if you really want Pest? Q2: the hole for "x" type-checks, but I wanted to see what it computes to. When I press C-c C-n, I get: transp (? i ? Test (seg i)) i0 (test true (? _ ? zero)) but when I press C-c C-c C-u C-n I get: Not in scope: ? show at when scope checking show I presume this "show" thing is something that should behave analogous to Haskell's "show". I can't find anything relevant on agda.readthedocs.io. Grepping the cubical library for "show" also yields no results. What is this show and how do I get it in scope? Should I implement it myself? Best regards, Andreas -------------- next part -------------- An HTML attachment was scrubbed... URL: From andreasnuyts at gmail.com Wed Jul 28 10:18:39 2021 From: andreasnuyts at gmail.com (Andreas Nuyts) Date: Wed, 28 Jul 2021 10:18:39 +0200 Subject: [Agda] Cubical: "show", and families over HITs In-Reply-To: References: Message-ID: Hi everyone, First, for clarity, I meant C-u C-u C-c C-n instead of C-c C-c C-u C-n. Anyway, I had not recognized transp (? i ? Test (seg i)) i0 (test true (? _ ? zero)) as a normal form, which apparently it is, so Q2 has been sufficiently answered for my purposes. Best regards, Andreas On 28.07.21 09:35, Andreas Nuyts wrote: > Hi everyone, > > I have two questions about Agda cubical, related to the following code: > > {-# OPTIONS --cubical #-} > module hit-family-test where > > open import Cubical.Data.Equality hiding (Sub) renaming (reflc to > refl) > open import Cubical.Data.Bool > open import Cubical.HITs.Interval > open import Cubical.Foundations.Everything hiding (Sub ; _?_) > > --------------------------------- > > data Pest : Interval ? Set where > ? pest : Bool ? Pest zero > > getPest : Pest one ? Bool > getPest p = {!!} -- cannot match > > --------------------------------- > > data Test : Interval ? Set where > ? test : ? {i} ? Bool ? i ? zero ? Test i > > getTest : Test one ? Bool > getTest (test b p) = b > > test-one : Bool ? Test one > test-one b = subst Test seg (test b refl) > > x : Test one > x = {!test-one true!} > > > Q1: is Test the best workaround if you really want Pest? > > Q2: the hole for "x" type-checks, but I wanted to see what it computes > to. When I press C-c C-n, I get: > > transp (? i ? Test (seg i)) i0 (test true (? _ ? zero)) > > > but when I press C-c C-c C-u C-n I get: > > Not in scope: > ? show at > when scope checking show > > > I presume this "show" thing is something that should behave analogous > to Haskell's "show". I can't find anything relevant on > agda.readthedocs.io. Grepping the cubical library for "show" also > yields no results. What is this show and how do I get it in scope? > Should I implement it myself? > > Best regards, > Andreas -------------- next part -------------- An HTML attachment was scrubbed... URL: From evan.cavallo at math.su.se Wed Jul 28 11:36:05 2021 From: evan.cavallo at math.su.se (Evan Cavallo) Date: Wed, 28 Jul 2021 11:36:05 +0200 Subject: [Agda] Cubical: "show", and families over HITs In-Reply-To: References: Message-ID: Hi Andreas, For Q1, to eliminate from an inductive family, you need to be general in the indices. The following works: getPest : ? {x} ? Pest x ? Bool getPest (pest x) = x Then you could specialize to x = one. Best, Evan On 7/28/21 10:18 AM, Andreas Nuyts wrote: > Hi everyone, > > First, for clarity, I meant C-u C-u C-c C-n instead of C-c C-c C-u C-n. > > Anyway, I had not recognized > > transp (? i ? Test (seg i)) i0 (test true (? _ ? zero)) > > > as a normal form, which apparently it is, so Q2 has been sufficiently > answered for my purposes. > > Best regards, > Andreas > > On 28.07.21 09:35, Andreas Nuyts wrote: >> Hi everyone, >> >> I have two questions about Agda cubical, related to the following code: >> >> {-# OPTIONS --cubical #-} >> module hit-family-test where >> >> open import Cubical.Data.Equality hiding (Sub) renaming (reflc to >> refl) >> open import Cubical.Data.Bool >> open import Cubical.HITs.Interval >> open import Cubical.Foundations.Everything hiding (Sub ; _?_) >> >> --------------------------------- >> >> data Pest : Interval ? Set where >> ? pest : Bool ? Pest zero >> >> getPest : Pest one ? Bool >> getPest p = {!!} -- cannot match >> >> --------------------------------- >> >> data Test : Interval ? Set where >> ? test : ? {i} ? Bool ? i ? zero ? Test i >> >> getTest : Test one ? Bool >> getTest (test b p) = b >> >> test-one : Bool ? Test one >> test-one b = subst Test seg (test b refl) >> >> x : Test one >> x = {!test-one true!} >> >> >> Q1: is Test the best workaround if you really want Pest? >> >> Q2: the hole for "x" type-checks, but I wanted to see what it >> computes to. When I press C-c C-n, I get: >> >> transp (? i ? Test (seg i)) i0 (test true (? _ ? zero)) >> >> >> but when I press C-c C-c C-u C-n I get: >> >> Not in scope: >> ? show at >> when scope checking show >> >> >> I presume this "show" thing is something that should behave analogous >> to Haskell's "show". I can't find anything relevant on >> agda.readthedocs.io. Grepping the cubical library for "show" also >> yields no results. What is this show and how do I get it in scope? >> Should I implement it myself? >> >> Best regards, >> Andreas > -------------- next part -------------- An HTML attachment was scrubbed... URL: From niccolo.veltri at gmail.com Thu Aug 5 08:36:17 2021 From: niccolo.veltri at gmail.com (=?UTF-8?Q?Niccol=c3=b2_Veltri?=) Date: Thu, 5 Aug 2021 09:36:17 +0300 Subject: [Agda] Call for Participation: PPDP & LOPSTR 2021 Message-ID: <792a9f6f-bdb5-10b9-a18e-0a0963802d23@gmail.com> ========================= PPDP 2021 | LOPSTR 2021 CALL FOR PARTICIPATION ========================= 23rd International Symposium on Principles and Practice of Declarative Programming (PPDP 2021) and 31st International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2021) 6?8 September 2021, Tallinn, Estonia, and online PPDP website: http://imft.ftn.uns.ac.rs/PPDP2021 LOPSTR website: http://saks.iasi.cnr.it/lopstr21/ Joint PPDP/LOPSTR conference website: http://cs.ioc.ee/ppdp-lopstr21/ =================================== REGISTRATION for physical and online participation: http://cs.ioc.ee/ppdp-lopstr21/regform.html Physical registration is open until *August 18*. =================================== Invited Speakers ---------------- Marko Gaboardi, Boston University (PPDP invited speaker) Harald S?ndergaard, University of Melbourne (joint PPDP-LOPSTR invited speaker) Stephen Wolfram, Wolfram Research (joint PPDP-LOPSTR invited speaker) Bernardo Toninho, Lu?s Caires, and Frank Pfenning (10 year most influential paper award, PPDP 2011) =================================== About PPDP ---------- The PPDP 2021 symposium brings together researchers from the declarative programming communities, including those working in the functional, logic, answer-set, and constraint handling programming paradigms. The goal is to stimulate research in the use of logical formalisms and methods for analyzing, performing, specifying, and reasoning about computations, including mechanisms for concurrency, security, static analysis, and verification. =================================== About LOPSTR ------------ The aim of the LOPSTR series is to stimulate and promote international research and collaboration on logic-based program development. LOPSTR is open to contributions in logic-based program development in any language paradigm. LOPSTR has a reputation for being a lively, friendly forum for presenting and discussing work in progress. Formal proceedings are produced only after the symposium so that authors can incorporate this feedback in the published papers. =================================== PPDP Program Committee ----------------------------- Zena Ariola, University of Oregon, USA Nick Benton, Facebook, UK (co-chair) Ma?gorzata Biernacka, University of Wroclaw, Poland James Cheney, The University of Edinburgh, UK Stefania Dumbrava, ENSIIE Paris-Evry, France Silvia Ghilezan, University of Novi Sad & Mathematical Institute SASA, Serbia (co-chair) Hugo Herbelin, INRIA, France Cosimo Laneve, University of Bologna, Italy Pierre Lescanne, ENS de Lyon, France Ugo de?Liguoro, University of Torino, Italy Francesca A. Lisi, University of Bari, Italy Yanhong Annie Liu, Stony Brook University, USA Elaine Pimentel, Federal University of Rio Grande do Norte, Brazil Yukiyoshi Kameyama, University of Tsukuba, Japan Petar Maksimovi?, Imperial College, London, UK Yutaka Nagashima, Yale-NUS College, Singapore & University of Innsbruck, Austria Aleksandar Nanevski, IMDEA Software Institute, Spain Vivek Nigam, fortiss GmbH, Germany & Federal University of Para?ba, Brazil Jorge A. P?rez, University of Groningen, The Netherlands Sanjiva Prasad, Indian Institute of Technology Delhi, India Alexis Saurin, CNRS, Universit? de Paris & INRIA , France Tom Schrijvers, KU Leuven, The Netherlands Paul Tarau, University of North Texas, USA Tarmo Uustalu, Reykjavik University, Iceland & Tallinn University of Technology, Estonia =================================== LOPSTR Program Committee ----------------------------- Roberto Amadini, University of Bologna, Italy Sabine Broda, University of Porto, Portugal Maximiliano Cristi?, CIFASIS-UNR, Argentina Emanuele De Angelis, IASI-CNR, Italy (co-chair) W?odzimierz Drabent, IPI PAN, Poland & Link?ping University, Sweden Catherine Dubois, ENSIIE-Samovar, France Gregory Duck, National University of Singapore, Singapore Fabio Fioravanti, University of Chieti-Pescara, Italy Jeremy Gibbons, University of Oxford, UK Gopal Gupta, University of Texas at Dallas, USA Geoff Hamilton, Dublin City University, Ireland Michael Hanus, Kiel University, Germany Bishoksan Kafle, IMDEA Software Institute, Spain Maja Kirkeby, Roskilde University, Denmark Temur Kutsia, RISC J. Kepler University of Linz, Austria Michael Leuschel, University of D?sseldorf, Germany Pedro L?pez-Garc?a, IMDEA Software Institute & CSIC, Spain Jacopo Mauro, University of Southern Denmark, Denmark Fred Mesnard, Universit? de la R?union, France Alberto Momigliano, University of Milano, Italy Jorge A. Navas, SRI International, USA Naoki Nishida, Nagoya University, Japan Wim Vanhoof, University of Namur, Belgium (co-chair) Alicia Villanueva, Universitat Polit?cnica de Val?ncia, Spain =================================== Local Organizers ----------------------------- Niccol? Veltri, Tallinn University of Technology, Estonia (chair) Tarmo Uustalu, Reykjavik University, Iceland & Tallinn University of Technology, Estonia =================================== Contact: ppdp-lopstr21 at cs.ioc.ee From ifl21.publicity at gmail.com Thu Aug 5 22:53:45 2021 From: ifl21.publicity at gmail.com (Pieter Koopman) Date: Thu, 5 Aug 2021 16:53:45 -0400 Subject: [Agda] IFL'21 Final call for papers Message-ID: ================================================================================ IFL 2021 33rd Symposium on Implementation and Application of Functional Languages venue: online 1 - 3 September 2021 https://ifl21.cs.ru.nl ================================================================================ Note: - We do accept extended abstracts for presentation - Submission is open - Registration is open Scope The goal of the IFL symposia is to bring together researchers actively engaged in the implementation and application of functional and function-based programming languages. IFL 2021 will be a venue for researchers to present and discuss new ideas and concepts, work in progress, and publication-ripe results related to the implementation and application of functional languages and function-based programming. Industrial track and topics of interest This year's edition of IFL explicitly solicits original work concerning *applications* of functional programming in industry and academia. These contributions will be reviewed by experts with an industrial background. Topics of interest to IFL include, but are not limited to: * language concepts * type systems, type checking, type inferencing * compilation techniques * staged compilation * run-time function specialisation * run-time code generation * partial evaluation * (abstract) interpretation * meta-programming * generic programming * automatic program generation * array processing * concurrent/parallel programming * concurrent/parallel program execution * embedded systems * web applications * (embedded) domain-specific languages * security * novel memory management techniques * run-time profiling performance measurements * debugging and tracing * testing and proofing * virtual/abstract machine architectures * validation, verification of functional programs * tools and programming techniques * applications of functional programming in the industry, including ** functional programming techniques for large applications ** successes of the application functional programming ** challenges for functional programming encountered ** any topic related to the application of functional programming that is interesting for the IFL community Post-symposium peer-review Following IFL tradition, IFL 2021 will use a post-symposium review process to produce the formal proceedings. Before the symposium authors submit draft papers. These draft papers will be screened by the program chairs to make sure that they are within the scope of IFL. The draft papers will be made available to all participants at the symposium. Each draft paper is presented by one of the authors at the symposium. After the symposium every presenter is invited to submit a full paper, incorporating feedback from discussions at the symposium. Work submitted to IFL may not be simultaneously submitted to other venues; submissions must adhere to ACM SIGPLAN's republication policy. The program committee will evaluate these submissions according to their correctness, novelty, originality, relevance, significance, and clarity, and will thereby determine whether the paper is accepted or rejected for the formal proceedings. We plan to publish these proceedings in the International Conference Proceedings Series of the ACM Digital Library, as in previous years. Moreover, the proceedings will also be made publicly available as open access. Important dates Submission deadline of draft papers: 17 August 2021 Notification of acceptance for presentation: 19 August 2021 Registration deadline: 30 August 2021 IFL Symposium: 1-3 September 2021 Submission of papers for proceedings: 6 December 2021 Notification of acceptance: 3 February 2022 Camera-ready version: 15 March 2022 Submission details All contributions must be written in English. Papers must use the ACM two columns conference format, which can be found at: http://www.acm.org/publications/proceedings-template . (For LaTeX users, start your document with \documentclass[format=sigconf]{acmart}.) Note that this format has a rather long but limited list of packages that can be used. Please make sure that your document adheres to this list. The submission Web page for IFL21 is https://easychair.org/conferences/?conf=ifl21 . Peter Landin Prize The Peter Landin Prize is awarded to the best paper presented at the symposium every year. The honoured article is selected by the program committee based on the submissions received for the formal review process. The prize carries a cash award equivalent to 150 Euros. Organisation IFL 2021 Chairs: Pieter Koopman and Peter Achten, Radboud University, The Netherlands IFL Publicity chair: Pieter Koopman, Radboud University, The Netherlands PC: Peter Achten (co-chair) - Radboud University, Netherlands Thomas van Binsbergen - University of Amsterdam, Netherlands Edwin Brady - University of St. Andrews, Scotland Laura Castro - University of A Coru?a, Spain Youyou Cong - Tokyo Institute of Technology, Japan Olaf Chitil - University of Kent, England Andy Gill - University of Kansas, USA Clemens Grelck - University of Amsterdam, Netherlands John Hughes - Chalmers University, Sweden Pieter Koopman (co-chair) - Radboud University, Netherlands Cynthia Kop - Radboud University, Netherlands Jay McCarthey - University of Massachussetts Lowell, USA Neil Mitchell - Facebook, England Jan De Muijnck-Hughes - Glasgow University, Scotland Keiko Nakata - SAP Innovation Center Potsdam, Germany Jurri?n Stutterheim - Standard Chartered, Singapore Simon Thompson - University of Kent, England Melinda T?th - E?tvos Lor?nd University, Hungary Phil Trinder - Glasgow University, Scotland Meng Wang - University of Bristol, England Vikt?ria Zs?k - E?tvos Lor?nd University, Hungary Virtual symposium Because of the Covid-19 pandemic, this year IFL 2021 will be an online event, consisting of paper presentations, discussions and virtual social gatherings. Registered participants can take part from anywhere in the world. Registration Please use the link below to register for IFL 2021: https://docs.google.com/forms/d/e/1FAIpQLSdMFjo-GumKjk4i7szs7n4DhWqKt96t8ofIqshfQFrf4jnvsA/viewform?usp=sf_link Thanks to the sponsors and the support of the Radboud university registration is free of charge. [image: beacon] -------------- next part -------------- An HTML attachment was scrubbed... URL: From icfp.publicity at googlemail.com Fri Aug 6 04:50:38 2021 From: icfp.publicity at googlemail.com (Sam Tobin-Hochstadt) Date: Thu, 05 Aug 2021 22:50:38 -0400 Subject: [Agda] Call for Participation: ICFP 2021 Message-ID: <610ca37e98a61_1ba72e4-494@homer.mail> ===================================================================== Call for Participation ICFP 2021 26th ACM SIGPLAN International Conference on Functional Programming and affiliated events August 22 - August 27, 2021 Online http://icfp21.sigplan.org/ Early Registration until August 7! ===================================================================== ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. The conference covers the entire spectrum of work, from practice to theory, including its peripheries. This year, the conference will be a virtual event. All activities will take place online. The main conference will take place from August 23-25, 2021 during two time bands. The first band will be 4PM-11PM Seoul time, and will include both technical and social activities. The second band will repeat (with some variation) the technical program and social activities 12 hours later, 3PM-10PM New York, the following day. We?re excited to announce that ICFP 2021 will feature an invited talk from Ravi Chugh of the University of Chicago. Keynote sessions will take place at 10 PM Seoul/9 AM New York. ICFP has officially accepted 35 exciting papers, and (in its second year) there will also be presentations of 4 papers accepted recently to the Journal of Functional Programming. Co-located symposia and workshops will take place the day before and two days immediately after the main conference. Registration is now open. The early registration deadline is August 7th, 2021. Registration is not free, but is significantly lower than usual, including a $10 discounted registration option available to all. Students who are ACM or SIGPLAN members may register for FREE before the early deadline. https://regmaster.com/2021conf/ICFP21/register.php New this year: Attendees will be able to sign-up for the ICFP Mentoring Program (either to be a mentor, receive mentorship or both). * Overview and affiliated events: http://icfp21.sigplan.org/home * Accepted papers: http://icfp21.sigplan.org/track/icfp-2021-papers#event-overview * JFP Talks: https://icfp21.sigplan.org/track/icfp-2021-jfp-talks#event-overview * Registration is available via: https://regmaster.com/2021conf/ICFP21/register.php Early registration ends 8 August, 2021. * Programming contest: https://icfpcontest2021.github.io/ * Student Research Competition: https://icfp21.sigplan.org/track/icfp-2021-Student-Research-Competition * Follow us on Twitter for the latest news: http://twitter.com/icfp_conference This year, there are 10 events co-located with ICFP: * Erlang Workshop (8/26) * Haskell Implementors' Workshop (8/22) * Haskell Symposium (8/26-8/27) * Higher-Order Programming with Effects (8/22) * miniKanren Workshop (8/26) * ML Family Workshop (8/26) * OCaml Workshop (8/27) * Programming Languages Mentoring Workshop (8/22) * Scheme Workshop (8/27) * Type-Driven Development (8/22) ### ICFP Organizers General Chair: Sukyoung Ryu (KAIST, South Korea) Program Chair: Ron Garcia (UBC, Canada) Artifact Evaluation Co-Chairs: Brent Yorgey (Hendrix College, USA) Gabriel Scherer (INRIA Saclay, France) Industrial Relations Chair: Alan Jeffrey (Roblox, USA) Simon Marlow (Facebook, UK) Programming Contest Organizers: Alex Lang and Jasper Van der Jeugt Publicity and Web Chair: Sam Tobin-Hochstadt (Indiana University, USA) Student Research Competition Chair: Anders Miltner (University of Texas, USA) Workshops Co-Chairs: Zoe Paraskevopoulou (Northeastern University, USA) Leonidas Lampropoulos (University of Maryland, USA) Video Co-Chairs: Leif Andersen (Northeastern University, USA) Ben Chung (Northeastern University, USA) Student Volunteer Co-Chairs: Hanneli Tavante (McGill University, Canada) Jaemin Hong (KAIST, South Korea) Lily Bryant (UBC, Canada) Accessibility Co-Chairs: Lindsey Kuper (UCSC, USA) Kathrin Stark (Princeton, USA) From W.S.Swierstra at uu.nl Mon Aug 9 16:39:07 2021 From: W.S.Swierstra at uu.nl (Swierstra, W.S. (Wouter)) Date: Mon, 9 Aug 2021 14:39:07 +0000 Subject: [Agda] Call by name vs call by need Message-ID: Dear all, I've implemented a generic memo-structure for memoising recursive computations in Agda. The idea -- originally due to Ralf Hinze [1], packaged in Haskell by Spencer Janssen and Conal Elliott [2,3] -- relies on lazy evaluation to share the memo structure across different recursive calls. Unfortunately, I don't seem to be able to reproduce the same kind of speedup in Agda as I can in Haskell -- and I can't figure out why. My understanding is that the Agda Abstract Machine uses a call by need reduction strategy, that can optionally be disabled. But it seems like the structure isn't being shared properly once it has been constructed. Is there any way to verify/debug this? Or any other information about how (sharing in) the Agda Abstract Machine works? I realise that compiling the code to Haskell would improve performance, but I'm particularly interested speeding up code evaluated at compile time -- so that wouldn't be much help. Thanks in advance for any pointers, Wouter [1] - http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.8.4069 [2] - https://hackage.haskell.org/package/MemoTrie [3] - http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries From james.smith.69781 at gmail.com Wed Aug 11 02:04:55 2021 From: james.smith.69781 at gmail.com (James Smith) Date: Tue, 10 Aug 2021 17:04:55 -0700 Subject: [Agda] Why disallow case splits that involve impossible unification Message-ID: This is probably a dumb beginner question. Out of curiosity, I'm trying to understand the "why" of the "I'm not sure if there should be a case for the constructor" error. I found https://doisinkidney.com/posts/2018-09-20-agda-tips.html and "How to Keep Your Neighbors In Order" which give the "what" of the end-user solution, which seems to be to express desired relations purely in datatype constructions/proofs rather than use functions. For example, instead of: ...? c {??} {??} (?? ++ ??) prefer: ...? c {??} {??} {?} (Appending ?? ?? ?) I also found this passage from Ulf Norell's thesis ( http://www.cse.chalmers.se/~ulfn/papers/thesis.pdf p.33?35) which I think is referring to this same issue: "If A = suc n ? suc m then the leqZero constructor cannot be used to construct an element of A, so splitting only generates a single new context where x has been instantiated with an application of leqSuc. If, on the other hand, A = f n ? m for some defined function f we cannot tell which constructors are legal and so splitting along x is not possible." ... "In some cases it might be possible to tell, but rather than resorting to complicated heuristics we chose the simpler approach of refusing to split." Small example: open import Data.Nat postulate f : ? ? ? data Ex : ? ? Set where c : {n : ?} ? Ex (f n) g : ? {A} ? Ex A ? ? g {zero} ex = { }0 g {suc A} ex = { }1 Case-split on ex gives the "I'm not sure..." with the unifier stuck on f n ? zero or f n ? suc A?. What goes wrong if I were allowed to split on ex to get (c {n})? I can see that I might be forced to write code to handle some impossible cases, e.g. if f was equivalent to suc, I could be forced to either extrinsically prove the zero case is impossible, or write some useless code. If the split were allowed instead, I could even imagine somehow getting to use f n ? ... on the right , something akin to a with_in_. -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Wed Aug 11 08:05:40 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Wed, 11 Aug 2021 06:05:40 +0000 Subject: [Agda] Why disallow case splits that involve impossible unification In-Reply-To: References: Message-ID: There is already a problem in your example. If split is allowed in this case, then you will obtain G {zero} (c {n}) = ? For some n. However, that is the same as solving f n = zero for a postulated `f`. This is what the system tells you: it cannot solve f n = zero. From: James Smith Sent: Tuesday, August 10, 2021 8:05 PM To: agda at lists.chalmers.se Subject: [Agda] Why disallow case splits that involve impossible unification This is probably a dumb beginner question. Out of curiosity, I'm trying to understand the "why" of the "I'm not sure if there should be a case for the constructor" error. I found https://doisinkidney.com/posts/2018-09-20-agda-tips.html and "How to Keep Your Neighbors In Order" which give the "what" of the end-user solution, which seems to be to express desired relations purely in datatype constructions/proofs rather than use functions. For example, instead of: ...? c {??} {??} (?? ++ ??) prefer: ...? c {??} {??} {?} (Appending ?? ?? ?) I also found this passage from Ulf Norell's thesis (http://www.cse.chalmers.se/~ulfn/papers/thesis.pdf p.33?35) which I think is referring to this same issue: "If A = suc n ? suc m then the leqZero constructor cannot be used to construct an element of A, so splitting only generates a single new context where x has been instantiated with an application of leqSuc. If, on the other hand, A = f n ? m for some defined function f we cannot tell which constructors are legal and so splitting along x is not possible." ... "In some cases it might be possible to tell, but rather than resorting to complicated heuristics we chose the simpler approach of refusing to split." Small example: open import Data.Nat postulate f : ? ? ? data Ex : ? ? Set where c : {n : ?} ? Ex (f n) g : ? {A} ? Ex A ? ? g {zero} ex = { }0 g {suc A} ex = { }1 Case-split on ex gives the "I'm not sure..." with the unifier stuck on f n ? zero or f n ? suc A?. What goes wrong if I were allowed to split on ex to get (c {n})? I can see that I might be forced to write code to handle some impossible cases, e.g. if f was equivalent to suc, I could be forced to either extrinsically prove the zero case is impossible, or write some useless code. If the split were allowed instead, I could even imagine somehow getting to use f n ? ... on the right , something akin to a with_in_. -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.wood.100 at strath.ac.uk Wed Aug 11 09:59:32 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Wed, 11 Aug 2021 08:59:32 +0100 Subject: [Agda] Why disallow case splits that involve impossible unification In-Reply-To: References: Message-ID: > If the split were allowed instead, I could even imagine somehow getting > to use f n ? ... on the right , something akin to a with_in_. One way to see this is that `with_in_` (AKA the inspect idiom) is just the syntax for this style of pattern matching. If you are to have a new assumption introduced by pattern matching, you also need the syntax to give it a name. Perhaps an improvement to interactive editing would be to automatically generate uses of the inspect idiom from a proposed pattern match. Still, there's a fundamental problem that persists even when we turn undetermined unification problems into propositional equations: if you get a variable `q : f n ? suc m`, it is still impossible to pattern-match on it for the same reason as before. The reason the technique of using relations rather than functions exists is because it's easier to work with relations fitting the shape of the problem than equations, subst, injectivity lemmas, &c. James On 11/08/2021 01:04, James Smith wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > This is probably a dumb beginner question. Out of curiosity, I'm trying > to understand the "why" of the "I'm not sure if there should be a case > for the constructor" error. > > I found https://doisinkidney.com/posts/2018-09-20-agda-tips.html > and "How to Keep Your Neighbors In Order" which give the "what" of the > end-user solution, which seems to be to express desired relations purely > in datatype constructions/proofs rather than use functions. For example, > instead of: > > ...? c {??} {??} (?? ++ ??) > > prefer: > > ...? c {??} {??} {?} (Appending ?? ?? ?) > > I also found this passage from Ulf Norell's thesis > (http://www.cse.chalmers.se/~ulfn/papers/thesis.pdf > p.33?35) which I think is referring to this same issue: "If A = suc n ? > suc m then the leqZero constructor cannot be used to construct an > element of A, so splitting only generates a single new context where x > has been instantiated with an application of leqSuc. If, on the other > hand, A = f n ? m for some defined function f we cannot tell which > constructors are legal and so splitting along x is not possible." ... > "In some cases it might be possible to tell, but rather than resorting > to complicated heuristics we chose the simpler approach of refusing to > split." > > Small example: > > open import Data.Nat > > postulate f : ? ? ? > > data Ex : ? ? Set where > ? c : {n : ?} ? Ex (f n) > > g : ? {A} ? Ex A ? ? > g {zero} ex = { }0 > g {suc A} ex = { }1 > > Case-split on ex gives the "I'm not sure..." with the unifier stuck on f > n ? zero orf n ? suc A?. > > What goes wrong if I were allowed to split on ex to get (c {n})? ?I can > see that I might be forced to write code to handle some impossible > cases, e.g. if f was equivalent to suc, I could be forced to either > extrinsically prove the zero case is impossible, or write some useless > code. > > If the split were allowed instead, I could even imagine somehow getting > to use f n?? ... on the right?, something akin to a with_in_. > > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From james.smith.69781 at gmail.com Wed Aug 11 17:32:10 2021 From: james.smith.69781 at gmail.com (James Smith) Date: Wed, 11 Aug 2021 08:32:10 -0700 Subject: [Agda] Why disallow case splits that involve impossible unification In-Reply-To: References: Message-ID: Thank you, this is a helpful perspective. w.r.t. being unable to pattern match on q : f n ? suc m, after posting I was thinking about whether K/UIP would allow you simply decide it's refl, and without K the RHS could be required to be proof irrelevant on q. But the point about inspect and working with relations is well taken. On Wed, Aug 11, 2021 at 12:59 AM James Wood wrote: > > If the split were allowed instead, I could even imagine somehow getting > > to use f n ? ... on the right , something akin to a with_in_. > > One way to see this is that `with_in_` (AKA the inspect idiom) is just > the syntax for this style of pattern matching. If you are to have a new > assumption introduced by pattern matching, you also need the syntax to > give it a name. Perhaps an improvement to interactive editing would be > to automatically generate uses of the inspect idiom from a proposed > pattern match. > > Still, there's a fundamental problem that persists even when we turn > undetermined unification problems into propositional equations: if you > get a variable `q : f n ? suc m`, it is still impossible to > pattern-match on it for the same reason as before. The reason the > technique of using relations rather than functions exists is because > it's easier to work with relations fitting the shape of the problem than > equations, subst, injectivity lemmas, &c. > > James > > On 11/08/2021 01:04, James Smith wrote: > > CAUTION: This email originated outside the University. Check before > > clicking links or attachments. > > This is probably a dumb beginner question. Out of curiosity, I'm trying > > to understand the "why" of the "I'm not sure if there should be a case > > for the constructor" error. > > > > I found https://doisinkidney.com/posts/2018-09-20-agda-tips.html > > > and "How to Keep Your Neighbors In Order" which give the "what" of the > > end-user solution, which seems to be to express desired relations purely > > in datatype constructions/proofs rather than use functions. For example, > > instead of: > > > > ...? c {??} {??} (?? ++ ??) > > > > prefer: > > > > ...? c {??} {??} {?} (Appending ?? ?? ?) > > > > I also found this passage from Ulf Norell's thesis > > (http://www.cse.chalmers.se/~ulfn/papers/thesis.pdf > > > p.33?35) which I think is referring to this same issue: "If A = suc n ? > > suc m then the leqZero constructor cannot be used to construct an > > element of A, so splitting only generates a single new context where x > > has been instantiated with an application of leqSuc. If, on the other > > hand, A = f n ? m for some defined function f we cannot tell which > > constructors are legal and so splitting along x is not possible." ... > > "In some cases it might be possible to tell, but rather than resorting > > to complicated heuristics we chose the simpler approach of refusing to > > split." > > > > Small example: > > > > open import Data.Nat > > > > postulate f : ? ? ? > > > > data Ex : ? ? Set where > > c : {n : ?} ? Ex (f n) > > > > g : ? {A} ? Ex A ? ? > > g {zero} ex = { }0 > > g {suc A} ex = { }1 > > > > Case-split on ex gives the "I'm not sure..." with the unifier stuck on f > > n ? zero orf n ? suc A?. > > > > What goes wrong if I were allowed to split on ex to get (c {n})? I can > > see that I might be forced to write code to handle some impossible > > cases, e.g. if f was equivalent to suc, I could be forced to either > > extrinsically prove the zero case is impossible, or write some useless > > code. > > > > If the split were allowed instead, I could even imagine somehow getting > > to use f n ? ... on the right , something akin to a with_in_. > > > > > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonathan.protzenko at gmail.com Wed Aug 11 23:14:02 2021 From: jonathan.protzenko at gmail.com (Jonathan Protzenko) Date: Wed, 11 Aug 2021 14:14:02 -0700 Subject: [Agda] Call for participation: ML Family Workshop 2021 Message-ID: <091fdc60-cf99-5a30-9e5d-72c7f44e8f4c@gmail.com> We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. We invite you to subscribe to, and attend the workshop, in addition to the main ICFP conference. We are thrilled to announce that Don Syme will give this year's keynote: "Narratives and Lessons from The Early History of F#". Please join us! The program features 14 exciting submissions, including 4 short talks. The workshop will be held online in the 6pm-3am time band (Seoul Time). Talks will be pre-recorded and uploaded online for those who cannot attend. * Program: https://icfp21.sigplan.org/home/mlfamilyworkshop-2021#program * Keynote: https://icfp21.sigplan.org/details/mlfamilyworkshop-2021-papers/15/Keynote-Narratives-and-Lessons-from-The-Early-History-of-F- * ICFP home: http://icfp21.sigplan.org/home ## Program committee Danel Ahman (University of Ljubljana) Robert Atkey (University of Strathclyde) Fr?d?ric Bour (Tarides) Ezgi ?i?ek (Facebook London) Youyou Cong (Tokyo Institute of Technology) Richard A. Eisenberg (Tweag I/O) Martin Elsman (University of Copenhagen, Denmark) Ohad Kammar (University of Edinburgh) Naoki Kobayashi (University of Tokyo, Japan) Beno?t Montagu (Inria) Jonathan Protzenko (Microsoft Research) (Chair) Kristina Sojakova (INRIA Paris) Don Syme (Microsoft) Mat?as Toro (University of Chile) Katsuhiro Ueno (Tohoku University) From cong at c.titech.ac.jp Thu Aug 12 14:00:29 2021 From: cong at c.titech.ac.jp (Youyou Cong) Date: Thu, 12 Aug 2021 21:00:29 +0900 Subject: [Agda] PEPM 2022 - First Call for Papers Message-ID: -- CALL FOR PAPERS -- ACM SIGPLAN Workshop on PARTIAL EVALUATION AND PROGRAM MANIPULATION (PEPM) 2022 =============================================================================== * Website : https://popl22.sigplan.org/home/pepm-2022 * Time : 17th--18th January 2022 * Place : Online or Philadelphia, Pennsylvania, United States (co-located with POPL 2022) **Note that the workshop will be held as a physical, virtual, or hybrid physical/virtual meeting in line with POPL 2022. Details to appear.** The ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM) has a history going back to 1991 and has been co-located with POPL every year since 2006. It originated with the discoveries of useful automated techniques for evaluating programs with only partial input. Over the years, the scope of PEPM has expanded to include a variety of research areas centred around the theme of semantics-based program manipulation ? the systematic exploitation of treating programs not only as subjects to black-box execution but also as data structures that can be generated, analysed, and transformed while establishing or maintaining important semantic properties. Scope ----- In addition to the traditional PEPM topics (see below), PEPM 2022 welcomes submissions in new domains, in particular: * Semantics based and machine-learning based program synthesis and program optimisation. * Modelling, analysis, and transformation techniques for distributed and concurrent protocols and programs, such as session types, linear types, and contract specifications. More generally, topics of interest for PEPM 2022 include, but are not limited to: * Program and model manipulation techniques such as: supercompilation, partial evaluation, fusion, on-the-fly program adaptation, active libraries, program inversion, slicing, symbolic execution, refactoring, decompilation, and obfuscation. * Techniques that treat programs/models as data objects including metaprogramming, generative programming, embedded domain-specific languages, program synthesis by sketching and inductive programming, staged computation, and model-driven program generation and transformation. * Program analysis techniques that are used to drive program/model manipulation such as: abstract interpretation, termination checking, binding-time analysis, constraint solving, type systems, automated testing and test case generation. * Application of the above techniques including case studies of program manipulation in real-world (industrial, open-source) projects and software development processes, descriptions of robust tools capable of effectively handling realistic applications, benchmarking. Examples of application domains include legacy program understanding and transformation, DSL implementations, visual languages and end-user programming, scientific computing, middleware frameworks and infrastructure needed for distributed and web-based applications, embedded and resource-limited computation, and security. This list of categories is not exhaustive, and we encourage submissions describing new theories and applications related to semantics-based program manipulation in general. If you have a question as to whether a potential submission is within the scope of the workshop, please contact the programme co-chairs, Zena M. Ariola and Youyou Cong . Submission categories and guidelines ------------------------------------ Two kinds of submissions will be accepted: * Regular Research Papers should describe new results, and will be judged on originality, correctness, significance, and clarity. Regular research papers must not exceed 12 pages. * Short Papers may include tool demonstrations and presentations of exciting if not fully polished research, and of interesting academic, industrial, and open-source applications that are new or unfamiliar. Short papers must not exceed 6 pages. References and appendices are not included in page limits. Appendices may not be read by reviewers. Both kinds of submissions should be typeset using the two-column ?sigplan? sub-format of the new ?acmart? format available at: http://sigplan.org/Resources/Author/ and submitted electronically via HotCRP: https://pepm22.hotcrp.com/ Reviewing will be single-blind. Submissions are welcome from PC members (except the two co-chairs). Accepted regular research papers will appear in formal proceedings published by ACM, and be included in the ACM Digital Library. Accepted short papers do not constitute formal publications and will not appear in the proceedings. At least one author of each accepted contribution must attend the workshop (physically or virtually) and present the work. In the case of tool demonstration papers, a live demonstration of the described tool is expected. Important dates --------------- * Paper submission deadline : **Thursday 7th October 2021 (AoE)** * Author notification : **Thursday 11th November 2021 (AoE)** * Workshop : **Monday 17th January 2022 to Tuesday 18th January 2022** Best paper award ---------------- PEPM 2022 continues the tradition of a Best Paper award. The winner will be announced at the workshop. Programme committee ------------------- * Chairs: Zena M. Ariola (University of Oregon, US) Youyou Cong (Tokyo Institute of Technology, Japan) * Maria Alpuente (U.P. Valencia, Spain) * William J. Bowman (UBC, Canada) * Jonathan Immanuel Brachth?user (EPFL, Switzerland) * William E. Byrd (University of Alabama at Birmingham, US) * Robert Gl?ck (University of Copenhagen, Denmark) * Zhenjiang Hu (Peking University, China) * Yukiyoshi Kameyama (University of Tsukuba, Japan) * Gabriele Keller (Utrecht University, Netherlands) * Julia Lawall (INRIA, France) * Y. Annie Liu (Stony Brook University, US) * Keiko Nakata (SAP Innovation Center Potsdam, Germany) * Antonina Nepeivoda (Program Systems Institute of RAS, Russia) * Zoe Paraskevopoulou (Northeastern University, US) * Yann R?gis-Gianas (Nomadic Labs, France) * Tiark Rompf (Purdue University, US) * KC Sivaramakrishnan (IIT Madras, India) * Dimitrios Vytiniotis (DeepMind, UK) * Beta Ziliani (FAMAF, UNC and Manas.Tech, Argentina) -------------- next part -------------- An HTML attachment was scrubbed... URL: From Graham.Hutton at nottingham.ac.uk Mon Aug 16 12:17:36 2021 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Mon, 16 Aug 2021 10:17:36 +0000 Subject: [Agda] Assistant/Associate Professorships in Nottingham Message-ID: <632910FD-C599-4335-A92E-E46B6AF45560@nottingham.ac.uk> Dear all, As part of a strategic expansion, the School of Computer Science at the University of Nottingham is seeking to make multiple new appointments at the Assistant or Associate Professor level: https://tinyurl.com/wruwpnpt https://tinyurl.com/284svw4y Applications in the area of the Functional Programming (FP) lab are strongly encouraged! The FP lab is keen to receive applications from candidates with an excellent publication record (e.g. papers in leading venues such as LICS, POPL, ICFP, JFP, TOPLAS, etc) and the ability to secure external funding to support their research. Further information about the FP lab is available from: https://tinyurl.com/y2ekdkqa The deadline for applications is Monday 20th September 2021. The advert mentions some specific research areas, but the positions are open to applicants from any area of Computer Science. -- Graham Hutton and Thorsten Altenkirch This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From andrei.h.popescu at gmail.com Thu Aug 19 09:00:00 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Thu, 19 Aug 2021 08:00:00 +0100 Subject: [Agda] Certified Programs and Proofs (CPP) 2022: Final Call for Papers Message-ID: Certified Programs and Proofs (CPP) is an international conference on practical and theoretical topics in all areas that consider formal verification and certification as an essential paradigm for their work. CPP spans areas of computer science, mathematics, logic, and education. CPP 2022 (https://popl22.sigplan.org/home/CPP-2022) will be held on 17-18 January 2022 and will be co-located with POPL 2022 in Philadelphia, Pennsylvania, United States. CPP 2022 is sponsored by ACM SIGPLAN, in cooperation with ACM SIGLOG. CPP 2022 will welcome contributions from all members of the community. The CPP 2022 organizers will strive to enable both in-person and remote participation, in cooperation with the POPL 2022 organizers. NEWS If the authors of a CPP 2022 accepted paper will be unable or unwilling to travel to the conference, the organizers can confirm that this will not affect the paper?s publication in the proceedings, and the authors will be able to upload recorded talks that will be made publicly available. IMPORTANT DATES * Abstract Submission Deadline: 16 September 2021 at 23:59 AoE (UTC-12h) * Paper Submission Deadline: 22 September 2021 at 23:59 AoE (UTC-12h) * Notification (tentative): 22 November 2021 * Camera Ready Deadline (tentative): 12 December 2021 * Conference: 17-18 January 2022 Deadlines expire at the end of the day, anywhere on earth. Abstract and submission deadlines are strict and there will be no extensions. DISTINGUISHED PAPER AWARDS Around 10% of the accepted papers at CPP 2022 will be designated as Distinguished Papers. This award highlights papers that the CPP program committee thinks should be read by a broad audience due to their relevance, originality, significance and clarity. TOPICS OF INTEREST We welcome submissions in research areas related to formal certification of programs and proofs. The following is a non-exhaustive list of topics of interest to CPP: * certified or certifying programming, compilation, linking, OS kernels, runtime systems, security monitors, and hardware; * certified mathematical libraries and mathematical theorems; * proof assistants (e.g, ACL2, Agda, Coq, Dafny, F*, HOL4, HOL Light, Idris, Isabelle, Lean, Mizar, Nuprl, PVS, etc); * new languages and tools for certified programming; * program analysis, program verification, and program synthesis; * program logics, type systems, and semantics for certified code; * logics for certifying concurrent and distributed systems; * mechanized metatheory, formalized programming language semantics, and logical frameworks; * higher-order logics, dependent type theory, proof theory, logical systems, separation logics, and logics for security; * verification of correctness and security properties; * formally verified blockchains and smart contracts; * certificates for decision procedures, including linear algebra, polynomial systems, SAT, SMT, and unification in algebras of interest; * certificates for semi-decision procedures, including equality, first-order logic, and higher-order unification; * certificates for program termination; * formal models of computation; * mechanized (un)decidability and computational complexity proofs; * formally certified methods for induction and coinduction; * integration of interactive and automated provers; * logical foundations of proof assistants; * applications of AI and machine learning to formal certification; * user interfaces for proof assistants and theorem provers; * teaching mathematics and computer science with proof assistants. SUBMISSION GUIDELINES Prior to the paper submission deadline, the authors should upload their anonymized paper in PDF format through the HotCRP system at https://cpp2022.hotcrp.com The submissions must be written in English and provide sufficient detail to allow the program committee to assess the merits of the contribution. They must be formatted following the ACM SIGPLAN Proceedings format using the acmart style with the sigplan option, which provides a two-column style, using 10 point font for the main text, and a header for double blind review submission, i.e., \documentclass[sigplan,10pt,anonymous,review]{acmart}\settopmatter{printfolios=true,printccs=false,printacmref=false} The submitted papers should not exceed 12 pages, including tables and figures, but excluding bibliography and clearly marked appendices. The papers should be self-contained without the appendices. Shorter papers are welcome and will be given equal consideration. Submissions not conforming to the requirements concerning format and maximum length may be rejected without further consideration. CPP 2022 will employ a lightweight double-blind reviewing process. To facilitate this, the submissions must adhere to two rules: (1) author names and institutions must be omitted, and (2) references to authors? own related work should be in the third person (e.g., not "We build on our previous work ..." but rather "We build on the work of ..."). The purpose of this process is to help the PC and external reviewers come to an initial judgment about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing it more difficult. In particular, important background references should not be omitted or anonymized. In addition, authors are free to disseminate their ideas or draft versions of their papers as usual. For example, authors may post drafts of their papers on the web or give talks on their research ideas. POPL has answers to frequently asked questions addressing many common concerns: https://popl20.sigplan.org/track/POPL-2020-Research-Papers#Submission-and-Reviewing-FAQ We strongly encourage the authors to provide any supplementary material that supports the claims made in the paper, such as proof scripts or experimental data. This material must be uploaded at submission time, as an archive, not via a URL. Two forms of supplementary material may be submitted: (1) Anonymous supplementary material is made available to the reviewers before they submit their first-draft reviews. (2) Non-anonymous supplementary material is made available to the reviewers after they have submitted their first-draft reviews and have learned the identity of the authors. Please use anonymous supplementary material whenever possible, so that it can be taken into account from the beginning of the reviewing process. The submitted papers must adhere to the SIGPLAN Republication Policy (https://www.sigplan.org/Resources/Policies/Republication/) and the ACM Policy on Plagiarism (https://www.acm.org/publications/policies/plagiarism). Concurrent submissions to other conferences, journals, workshops with proceedings, or similar forums of publication are not allowed. The PC chairs should be informed of closely related work submitted to a conference or journal in advance of submission. One author of each accepted paper is expected to present it at the (possibly virtual) conference. PUBLICATION, COPYRIGHT AND OPEN ACCESS The CPP 2022 proceedings will be published by the ACM, and authors of accepted papers will be required to choose one of the following publication options: (1) Author retains copyright of the work and grants ACM a non-exclusive permission-to-publish license and, optionally, licenses the work under a Creative Commons license. (2) Author retains copyright of the work and grants ACM an exclusive permission-to-publish license. (3) Author transfers copyright of the work to ACM. For authors who can afford it, we recommend option (1), which will make the paper Gold Open Access, and also encourage such authors to license their work under the CC-BY license. ACM will charge you an article processing fee for this option (currently, US$700), which you have to pay directly with the ACM. For everyone else, we recommend option (2), which is free and allows you to achieve Green Open Access, by uploading a preprint of your paper to a repository that guarantees permanent archival such as arXiv or HAL. This is anyway a good idea for timely dissemination even if you chose option 1. Ensuring timely dissemination is particularly important for this edition, since, because of the very tight schedule, the official proceedings might not be available in time for CPP. The official CPP 2022 proceedings will also be available via SIGPLAN OpenTOC (http://www.sigplan.org/OpenTOC/#cpp). For ACM?s take on this, see their Copyright Policy (http://www.acm.org/publications/policies/copyright-policy) and Author Rights (http://authors.acm.org/main.html). PROGRAM COMMITTEE Andrei Popescu, University of Sheffield, United Kingdom (co-chair) Steve Zdancewic, University of Pennsylvania, United States (co-chair) Mohammad Abdulaziz, TU M?nchen, Germany Mauricio Ayala-Rinc?n, Universidade de Bras?lia, Brazil Andrej Bauer, University of Ljubljana, Slovenia Thomas Bauereiss, University of Cambridge, United Kingdom Yves Bertot, Inria and Universit? Cote d'Azur, France Lars Birkedal, Aarhus University, Denmark Sylvie Boldo, Inria and Universit? Paris-Saclay, France Qinxiang Cao, Shanghai Jiao Tong University, China ?velyne Contejean, Laboratoire M?thodes Formelles, CNRS, France Benjamin Delaware, Purdue University, United States Simon Foster, University of York, United Kingdom Alwyn Goodloe, NASA Langley Research Center, United States Arma?l Gu?neau, Aarhus University, Denmark John Harrison, Amazon Web Services, United States Joe Hendrix, Galois, Inc, United States Aquinas Hobor, National University of Singapore, Singapore Ralf Jung, MPI-SWS, Germany Cezary Kaliszyk, University of Innsbruck, Austria Jeehoon Kang, KAIST, South Korea Hongjin Liang, Nanjing University, China Gregory Malecha, BedRock Systems, Inc, United States Anders M?rtberg, Stockholm University, Sweden Toby Murray, University of Melbourne, Australia Zoe Paraskevopoulou , Northeastern University, United States Brigitte Pientka, McGill University, Canada Aseem Rastogi, Microsoft Research, India Bas Spitters, Aarhus University, Denmark Kathrin Stark, Princeton University, United States Hira Taqdees Syeda, Chalmers University of Technology, Sweden Joseph Tassarotti, Boston College, United States Laura Titolo, NIA/NASA LaRC, United States Sophie Tourret, Inria, France Dmitriy Traytel, University of Copenhagen, Denmark Floris van Doorn, Paris-Saclay University, France Freek Verbeek, Open University of The Netherlands, Netherlands Freek Wiedijk, Radboud Universiteit Nijmegen, Netherlands ORGANIZERS Lennart Beringer, Princeton University, United States (conference co-chair) Robbert Krebbers, Radboud University, Netherlands (conference co-chair) Andrei Popescu, University of Sheffield, United Kingdom (PC co-chair) Steve Zdancewic, University of Pennsylvania, United States (PC co-chair) CONTACT For any questions please contact the two PC chairs: Andrei Popescu Steve Zdancewic From fdhzs2010 at hotmail.com Fri Aug 20 00:45:36 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Thu, 19 Aug 2021 22:45:36 +0000 Subject: [Agda] convenient induction on non-empty list? Message-ID: Hi all, It sounds like a stupid question but it seems to me there isn?t a convenient way to do it. What I want to do is to do induction on a non-empty list as defined in the stdlib in a ?standard? way. To illustrate the problem, consider the following program: open import Data.Nat open import Data.List open import Data.List.NonEmpty len : List? ? ? ? len (x ? []) = 1 len (x ? y ? l) = len (y ? l) As of 2.6.2, Agda doesn?t like this definition and complains that len does not terminate. What I am looking for is a solution that does not require defining a ?helper? which handle the underlying list, and the ?main? function which does the job separately. Any idea is appreciated. Thanks, Jason Hu -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthewdaggitt at gmail.com Fri Aug 20 04:08:28 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Fri, 20 Aug 2021 10:08:28 +0800 Subject: [Agda] convenient induction on non-empty list? In-Reply-To: References: Message-ID: That is weird. I don't have any concrete suggestions apart from the one you've already mentioned, apologies, but I'd definitely advise filing a bug report on the Agda repo. On Fri, Aug 20, 2021 at 6:45 AM Jason Hu wrote: > Hi all, > > > > It sounds like a stupid question but it seems to me there isn?t a > convenient way to do it. What I want to do is to do induction on a > non-empty list as defined in the stdlib in a ?standard? way. To illustrate > the problem, consider the following program: > > > > open import Data.Nat > > open import Data.List > > open import Data.List.NonEmpty > > > > len : List? ? ? ? > > len (x ? []) = 1 > > len (x ? y ? l) = len (y ? l) > > > > As of 2.6.2, Agda doesn?t like this definition and complains that len does > not terminate. What I am looking for is a solution that does not require > defining a ?helper? which handle the underlying list, and the ?main? > function which does the job separately. > > > > Any idea is appreciated. > > > > Thanks, > > Jason Hu > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthewdaggitt at gmail.com Fri Aug 20 04:53:59 2021 From: matthewdaggitt at gmail.com (Matthew Daggitt) Date: Fri, 20 Aug 2021 10:53:59 +0800 Subject: [Agda] [RFC stdlib v2.0] 2. Numeric proofs which restrict their arguments to be positive/non-negative etc. Message-ID: Dear all, The second RFC (request for comment) for v2.0 of the standard library closely relates to the first one. In the same way that many numeric operations and proofs require that one of their arguments is non-zero, many proofs require that one of their arguments is positive/non-negative/non-positive/negative. **The current situation** Currently the standard library is very inconsistent about how it handles such constraints. Proofs tend to be defined in one of two ways: 1. They either enforce the requirement via explicitly applying the relevant constructor, e.g. `?-steps : ? n ? i ? j ? i ? + n + j` where the requirement that the `+ n` is non-negative is enforced by the fact that it is of the form `+ _`. 2. They require the user to always explicitly construct and pass the relevant proof: `*-mono?-?-nonNeg : ? r ? NonNegative r ? (_* r) Preserves _?_ ? _?_` **The current problems** Although approach 1. has the advantage that you never have to explicitly pass in a proof of `NonNegative`, it does mean that when the argument is not in the form `+ _`, (e.g. `| a | + | b |`), then you can't apply the proof and the user is forced to do all sorts of ugly pattern matching to massage the argument into the required form. Although approach 2. has the advantage that it doesn't require the argument to be explicitly in the form of `+_`, it requires you explicitly construct and pass the proof, resulting in significant boilerplate in proofs, even when it is "obvious" that the argument is non-negative. **Proposed solution** We want to have our cake and eat it, and so we propose to use the same trick as used for `NonZero` proofs, and pass the proofs as irrelevant instance arguments, e.g. ```agda ?-steps : ? k .{{_ : NonNegative k}} ? i ? j ? i ? k + j *-mono?-?-nonNeg : ? r .{{_ : NonNegative r}} ? (_* r) Preserves _?_ ? _?_ ``` The advantages of this are as follows: 1. By declaring basic instances of `NonNegative` etc. ```agda instance nonNeg : ? {n} ? NonNegative (+ n) nonNeg = _ ``` we get the advantages of solution 1 as Agda will automatically fill in the generated instance arguments when the argument is in the right form `+_`. 2. By not explicitly using the `+_` constructors, we retain the advantages of solution 2 in that we're not restricted to passing in arguments in the right form. 3. Currently, in the case where you were applying the proofs to something like `| a | + | b |` (which is non-negative, but that fact is not immediately inferrable by Agda) you would still have to explicitly construct and provide the proof of non-negativity. However this will be easier than before, as we provide constructors for `NonNegative` and other predicates. However, if https://github.com/agda/agda/issues/5494 gets implemented in Agda 2.6.3 then we would be able to define further additional instances: ```agda instance |-|-nonNeg : ? {i} ? NonNegative | i | |-|-nonNeg = _ +-nonNeg : ? {i j} .{{_ : NonNegative i}} .{{_ : NonNegative j}} ? NonNegative (i + j) +-nonNeg ``` which would allow Agda to entirely automate the process of constructing the proofs. Additional such instances could be defined by users for their own custom operations. **Backwards incompatibilities** When adapting code that uses proofs that currently use approach 1. then the form of the numeric argument passed will have to change, e.g. instead of passing `n` you will have to pass `+ n`. For proofs that currently use approach 2., if the proof is findable by instance search then the proof argument can simply be removed, otherwise the proof argument will have to be wrapped in instance brackets `{{_}}`. **Feedback** I've opened a PR with the proposed changes. Please feel free to give any feedback you have on the proposal: https://github.com/agda/agda-stdlib/pull/1581 Cheers, Matthew -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.smith.69781 at gmail.com Fri Aug 20 05:48:55 2021 From: james.smith.69781 at gmail.com (James Smith) Date: Thu, 19 Aug 2021 20:48:55 -0700 Subject: [Agda] convenient induction on non-empty list? In-Reply-To: References: Message-ID: Out of curiosity why is the library's nonempty length not what you want? Maybe there is another approach. One observation is that there is some sneakiness in the ?, this program is: len : Data.List.NonEmpty.List? ? ? ? len (x Data.List.NonEmpty.? Data.List.[]) = 1 len (x Data.List.NonEmpty.? y Data.List.? l) = len (y Data.List.NonEmpty.? l ) So the RHS is not "obviously" smaller because it's a different constructor than the pattern match. The system is missing that there's a semantic relationship between the two cons'es that we see intuitively. This pattern does work when the constructors match: len2 : Data.List.List ? ? ? len2 (Data.List.[]) = 0 len2 (x Data.List.? Data.List.[]) = 1 len2 (x Data.List.? y Data.List.? l) = 1 + len2 (y Data.List.? l) On Thu, Aug 19, 2021 at 7:08 PM Matthew Daggitt wrote: > That is weird. I don't have any concrete suggestions apart from the one > you've already mentioned, apologies, but I'd definitely advise filing a bug > report on the Agda repo. > > On Fri, Aug 20, 2021 at 6:45 AM Jason Hu wrote: > >> Hi all, >> >> >> >> It sounds like a stupid question but it seems to me there isn?t a >> convenient way to do it. What I want to do is to do induction on a >> non-empty list as defined in the stdlib in a ?standard? way. To illustrate >> the problem, consider the following program: >> >> >> >> open import Data.Nat >> >> open import Data.List >> >> open import Data.List.NonEmpty >> >> >> >> len : List? ? ? ? >> >> len (x ? []) = 1 >> >> len (x ? y ? l) = len (y ? l) >> >> >> >> As of 2.6.2, Agda doesn?t like this definition and complains that len >> does not terminate. What I am looking for is a solution that does not >> require defining a ?helper? which handle the underlying list, and the >> ?main? function which does the job separately. >> >> >> >> Any idea is appreciated. >> >> >> >> Thanks, >> >> Jason Hu >> >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Fri Aug 20 05:53:33 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Fri, 20 Aug 2021 03:53:33 +0000 Subject: [Agda] convenient induction on non-empty list? In-Reply-To: References: Message-ID: Hi James, Len is just an example, not the problem I am working on. I am actually defining an interpretation of certain non-empty lists, and my definitions are irrefutable on paper, but it is just I can?t punch in as is in Agda. The fact that non-empty list doesn?t have a builtin induction principle is rather strange. Thanks, Jason Hu From: James Smith Sent: Thursday, August 19, 2021 11:49 PM To: agda at lists.chalmers.se Subject: Re: [Agda] convenient induction on non-empty list? Out of curiosity why is the library's nonempty length not what you want? Maybe there is another approach. One observation is that there is some sneakiness in the ?, this program is: len : Data.List.NonEmpty.List? ? ? ? len (x Data.List.NonEmpty.? Data.List.[]) = 1 len (x Data.List.NonEmpty.? y Data.List.? l) = len (y Data.List.NonEmpty.? l) So the RHS is not "obviously" smaller because it's a different constructor than the pattern match. The system is missing that there's a semantic relationship between the two cons'es that we see intuitively. This pattern does work when the constructors match: len2 : Data.List.List ? ? ? len2 (Data.List.[]) = 0 len2 (x Data.List.? Data.List.[]) = 1 len2 (x Data.List.? y Data.List.? l) = 1 + len2 (y Data.List.? l) On Thu, Aug 19, 2021 at 7:08 PM Matthew Daggitt > wrote: That is weird. I don't have any concrete suggestions apart from the one you've already mentioned, apologies, but I'd definitely advise filing a bug report on the Agda repo. On Fri, Aug 20, 2021 at 6:45 AM Jason Hu > wrote: Hi all, It sounds like a stupid question but it seems to me there isn?t a convenient way to do it. What I want to do is to do induction on a non-empty list as defined in the stdlib in a ?standard? way. To illustrate the problem, consider the following program: open import Data.Nat open import Data.List open import Data.List.NonEmpty len : List? ? ? ? len (x ? []) = 1 len (x ? y ? l) = len (y ? l) As of 2.6.2, Agda doesn?t like this definition and complains that len does not terminate. What I am looking for is a solution that does not require defining a ?helper? which handle the underlying list, and the ?main? function which does the job separately. Any idea is appreciated. Thanks, Jason Hu _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From p.l.lumsdaine at gmail.com Sat Aug 21 13:17:28 2021 From: p.l.lumsdaine at gmail.com (Peter LeFanu Lumsdaine) Date: Sat, 21 Aug 2021 12:17:28 +0100 Subject: [Agda] convenient induction on non-empty list? In-Reply-To: References: Message-ID: Dear Jason, Non-empty lists *do* have a built-in induction/pattern-matching principle, and the LHS of your definition is what that principle would accept. But like most primitive induction principles, it requires recursive calls to have ?structurally smaller? arguments, and in your second case len (x ? y ? l) = len (y ? l) the recursive call on the RHS is not structurally smaller than the LHS, since as James Smith points out, the ?y :: l? on the RHS is with the cons for non-empty lists, while the ?y :: l? on the LHS is the cons for plain lists. The thing that?s structurally decreasing in your example is the *list* argument of the non-empty-cons constructor, not the whole non-empty list. So you can make it acceptable by exposing that list as an argument of the function: len' : ? ? List ? ? ? len' x [] = 1 len' x (y ? zs) = len' y zs len : List? ? ? ? len (x ? yz) = len' x ys This is a kind of ?helper function on lists? approach, so perhaps isn?t what you hoped for. But it?s a fairly non-intrusive one, and easy to apply to more complicated definitions using the same ?induction principle? ? it didn?t need any refactoring of the definition apart from splitting the non-empty list argument into two separate arguments. Best, ?Peter. On Fri, Aug 20, 2021 at 4:54 AM Jason Hu wrote: > > Hi James, > > > > Len is just an example, not the problem I am working on. I am actually defining an interpretation of certain non-empty lists, and my definitions are irrefutable on paper, but it is just I can?t punch in as is in Agda. The fact that non-empty list doesn?t have a builtin induction principle is rather strange. > > > > Thanks, > > Jason Hu > > > > From: James Smith > Sent: Thursday, August 19, 2021 11:49 PM > To: agda at lists.chalmers.se > Subject: Re: [Agda] convenient induction on non-empty list? > > > > Out of curiosity why is the library's nonempty length not what you want? Maybe there is another approach. > > > > One observation is that there is some sneakiness in the ?, this program is: > > > > len : Data.List.NonEmpty.List? ? ? ? > > len (x Data.List.NonEmpty.? Data.List.[]) = 1 > > len (x Data.List.NonEmpty.? y Data.List.? l) = len (y Data.List.NonEmpty.? l) > > > > So the RHS is not "obviously" smaller because it's a different constructor than the pattern match. The system is missing that there's a semantic relationship between the two cons'es that we see intuitively. > > > > This pattern does work when the constructors match: > > > > len2 : Data.List.List ? ? ? > > len2 (Data.List.[]) = 0 > > len2 (x Data.List.? Data.List.[]) = 1 > > len2 (x Data.List.? y Data.List.? l) = 1 + len2 (y Data.List.? l) > > > > On Thu, Aug 19, 2021 at 7:08 PM Matthew Daggitt wrote: > > That is weird. I don't have any concrete suggestions apart from the one you've already mentioned, apologies, but I'd definitely advise filing a bug report on the Agda repo. > > > > On Fri, Aug 20, 2021 at 6:45 AM Jason Hu wrote: > > Hi all, > > > > It sounds like a stupid question but it seems to me there isn?t a convenient way to do it. What I want to do is to do induction on a non-empty list as defined in the stdlib in a ?standard? way. To illustrate the problem, consider the following program: > > > > open import Data.Nat > > open import Data.List > > open import Data.List.NonEmpty > > > > len : List? ? ? ? > > len (x ? []) = 1 > > len (x ? y ? l) = len (y ? l) > > > > As of 2.6.2, Agda doesn?t like this definition and complains that len does not terminate. What I am looking for is a solution that does not require defining a ?helper? which handle the underlying list, and the ?main? function which does the job separately. > > > > Any idea is appreciated. > > > > Thanks, > > Jason Hu > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.smith.69781 at gmail.com Tue Aug 24 06:07:24 2021 From: james.smith.69781 at gmail.com (James Smith) Date: Mon, 23 Aug 2021 21:07:24 -0700 Subject: [Agda] help with inductive sized types Message-ID: I'm trying to learn to use Sized Types to solve a simple non-termination issue. After reading a couple papers (MiniAgda, Equational Reasoning about Formal Languages in Coalgebraic Style) and everything I could find online, I was still confused. I've found a solution that works, but I don't know why my first attempt didn't work. Would love to learn the insight I am missing. A small lambda toy with separate neutrals and values: data Type : Set where Nat : Type _?_ : Type ? Type ? Type data Value : List Type ? Type ? Set data Neutral : List Type ? Type ? Set where var : ? {? T} ? T ? ? ? Neutral ? T app : ? {? S T} ? Neutral ? (S ? T) ? Value ? S ? Neutral ? T data Value where coerce : ? {? T} ? Neutral ? T ? Value ? T ?_?T : Type ? Set ? Nat ?T = ? ? S ? T ?T = ? S ?T ? ? T ?T ?_?C : List Type ? Set ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T {-# NON_TERMINATING #-} ?_?t : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest ? (coerce (app f x)) ?t ctx = (? coerce f ?t ctx) (? x ?t ctx) The final app clause is what causes a problem. A mutually recursive function pair works fine: ?_?t-v : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T ?_?t-n : ? {? T} ? Neutral ? T ? ? ? ?C ? ? T ?T ? (coerce n) ?t-v env = ? n ?t-n env ? (var (here px)) ?t-n (fst , _) rewrite px = fst ? (var (there x)) ?t-n (_ , rest) = ? var x ?t-n rest ? (app f x) ?t-n ctx = (? f ?t-n ctx) (? x ?t-v ctx) But I want the excuse to learn how to apply Sized Types, so I take a crack at getting rid of NON_TERMINATING by threading a Size index through everything. module SizedExample where open import Data.Nat open import Data.List open import Data.List.Membership.Propositional open import Data.List.Membership.Propositional.Properties open import Data.List.Relation.Unary.Any open import Data.Product open import Data.Unit open import Data.Vec open import Function open import Relation.Binary.PropositionalEquality open import Size data Type : Set where Nat : Type _?_ : Type ? Type ? Type data Value : Size ? List Type ? Type ? Set data Neutral : Size ? List Type ? Type ? Set data Neutral where var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szx ? S ? Neutral ((? szf) ?? szx) ? T data Value where coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T ?_?T : Type ? Set ? Nat ?T = ? ? S ? T ?T = ? S ?T ? ? T ?T ?_?C : List Type ? Set ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest ?_?t .{(? szf) ?? szx} (coerce (app {szf} {szx} f x)) ctx = ?_?t {szf} (coerce f) ctx (?_?t {szx} x ctx) The termination checker rejects the last line. But I don't see why. It looks to me like there's enough information there to see szf and szx are each smaller than their max to let those calls go through. I also tried giving extra headroom for szf in case that helped, but that didn't work either. A refactor to use Size< on parameters, instead of the max operator on the result, works: module SizedExample2 where open import Data.Nat open import Data.List open import Data.List.Membership.Propositional open import Data.List.Membership.Propositional.Properties open import Data.List.Relation.Unary.Any open import Data.Product open import Data.Unit open import Data.Vec open import Function open import Relation.Binary.PropositionalEquality open import Size data Type : Set where Nat : Type _?_ : Type ? Type ? Type data Value : Size ? List Type ? Type ? Set data Neutral : Size ? List Type ? Type ? Set data Neutral where var : ? {sz ? T} ? T ? ? ? Neutral sz ? T app : ? {sz} {szf szx : Size< sz} {? S T} ? Neutral szf ? (S ? T) ? Value szx ? S ? Neutral sz ? T data Value where coerce : ? {sz ? T} ? Neutral sz ? T ? Value sz ? T ?_?T : Type ? Set ? Nat ?T = ? ? S ? T ?T = ? S ?T ? ? T ?T ?_?C : List Type ? Set ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest ?_?t (coerce (app f x)) ctx = ? (coerce f) ?t ctx (? x ?t ctx) That makes me suspicious this is like a Size version of needing to avoid computed values in the result position of constructors, but I'm not really sure why the version with the max operator didn't work. Thanks in advance for any insight. -James -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonathanhwchan at gmail.com Wed Aug 25 04:30:56 2021 From: jonathanhwchan at gmail.com (Jonathan Chan) Date: Tue, 24 Aug 2021 19:30:56 -0700 Subject: [Agda] help with inductive sized types In-Reply-To: References: Message-ID: The only problem I can spot is that szx is *not* strictly smaller than max(szf + 1, szx), so the size of the type of app has to be either ? (szf ?? szx) or ? szf ?? ? szx. But even then, with the app case of ?_?t having either of these sizes, it still doesn't pass the termination check, so I'm not sure what's going there, because I'm pretty confident that szf and szx are both strictly smaller than ? (szf ?? szx) and ? szf ?? ? szx. It could just be that this isn't something that the size checker can verify. If you pick the first version ? that is, data Neutral where var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szx ? S ? Neutral (? (szf ?? szx)) ? T Then you could "raise" the size of the recursive arguments of ?_?t from szf and szx both to (szf ?? szx), so that the app branch is ?_?t .{? (szf ?? szx)} (coerce (app {szf} {szx} f x)) ctx = ?_?t {szf ?? szx} (coerce f) ctx (?_?t {szf ?? szx} x ctx) I don't remember if Agda has sized subtyping (I mean, probably, given that this passes termination checking), but for instance (coerce f) has type (Value szf ? T), which would need to be a subtype of (Value (szf ?? szx) ? T), which follows from (szf ? szf ?? szx), and finally (szf ?? szx ? ? (szf ?? szx)) for termination checking. The original version without the trick just needs (szf ? ? (szf ?? szx)) and (szx ? ? (szf ?? szx)) though, which holds by transitivity. Is Agda unable to check transitive subsizing relations like that? On Mon, 23 Aug 2021 at 21:07, James Smith wrote: > > I'm trying to learn to use Sized Types to solve a simple non-termination issue. After reading a couple papers (MiniAgda, Equational Reasoning about Formal Languages in Coalgebraic Style) and everything I could find online, I was still confused. I've found a solution that works, but I don't know why my first attempt didn't work. Would love to learn the insight I am missing. > > A small lambda toy with separate neutrals and values: > > data Type : Set where > Nat : Type > _?_ : Type ? Type ? Type > > data Value : List Type ? Type ? Set > data Neutral : List Type ? Type ? Set where > var : ? {? T} ? T ? ? ? Neutral ? T > app : ? {? S T} ? Neutral ? (S ? T) ? Value ? S ? Neutral ? T > > data Value where > coerce : ? {? T} ? Neutral ? T ? Value ? T > > ?_?T : Type ? Set > ? Nat ?T = ? > ? S ? T ?T = ? S ?T ? ? T ?T > > ?_?C : List Type ? Set > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > {-# NON_TERMINATING #-} > ?_?t : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > ? (coerce (app f x)) ?t ctx = (? coerce f ?t ctx) (? x ?t ctx) > > The final app clause is what causes a problem. A mutually recursive function pair works fine: > > ?_?t-v : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > ?_?t-n : ? {? T} ? Neutral ? T ? ? ? ?C ? ? T ?T > ? (coerce n) ?t-v env = ? n ?t-n env > ? (var (here px)) ?t-n (fst , _) rewrite px = fst > ? (var (there x)) ?t-n (_ , rest) = ? var x ?t-n rest > ? (app f x) ?t-n ctx = (? f ?t-n ctx) (? x ?t-v ctx) > > But I want the excuse to learn how to apply Sized Types, so I take a crack at getting rid of NON_TERMINATING by threading a Size index through everything. > > module SizedExample where > open import Data.Nat > open import Data.List > open import Data.List.Membership.Propositional > open import Data.List.Membership.Propositional.Properties > open import Data.List.Relation.Unary.Any > open import Data.Product > open import Data.Unit > open import Data.Vec > open import Function > open import Relation.Binary.PropositionalEquality > open import Size > > data Type : Set where > Nat : Type > _?_ : Type ? Type ? Type > > data Value : Size ? List Type ? Type ? Set > data Neutral : Size ? List Type ? Type ? Set > > data Neutral where > var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szx ? S ? Neutral ((? szf) ?? szx) ? T > > data Value where > coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T > > ?_?T : Type ? Set > ? Nat ?T = ? > ? S ? T ?T = ? S ?T ? ? T ?T > > ?_?C : List Type ? Set > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > ?_?t .{(? szf) ?? szx} (coerce (app {szf} {szx} f x)) ctx = ?_?t {szf} (coerce f) ctx (?_?t {szx} x ctx) > > The termination checker rejects the last line. But I don't see why. It looks to me like there's enough information there to see szf and szx are each smaller than their max to let those calls go through. I also tried giving extra headroom for szf in case that helped, but that didn't work either. > > A refactor to use Size< on parameters, instead of the max operator on the result, works: > > module SizedExample2 where > open import Data.Nat > open import Data.List > open import Data.List.Membership.Propositional > open import Data.List.Membership.Propositional.Properties > open import Data.List.Relation.Unary.Any > open import Data.Product > open import Data.Unit > open import Data.Vec > open import Function > open import Relation.Binary.PropositionalEquality > open import Size > > data Type : Set where > Nat : Type > _?_ : Type ? Type ? Type > > data Value : Size ? List Type ? Type ? Set > data Neutral : Size ? List Type ? Type ? Set > > data Neutral where > var : ? {sz ? T} ? T ? ? ? Neutral sz ? T > app : ? {sz} {szf szx : Size< sz} {? S T} ? Neutral szf ? (S ? T) ? Value szx ? S ? Neutral sz ? T > > data Value where > coerce : ? {sz ? T} ? Neutral sz ? T ? Value sz ? T > > ?_?T : Type ? Set > ? Nat ?T = ? > ? S ? T ?T = ? S ?T ? ? T ?T > > ?_?C : List Type ? Set > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > ?_?t (coerce (app f x)) ctx = ? (coerce f) ?t ctx (? x ?t ctx) > > > That makes me suspicious this is like a Size version of needing to avoid computed values in the result position of constructors, but I'm not really sure why the version with the max operator didn't work. > > Thanks in advance for any insight. > > -James > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From andreas.abel at ifi.lmu.de Wed Aug 25 13:46:32 2021 From: andreas.abel at ifi.lmu.de (Andreas Abel) Date: Wed, 25 Aug 2021 13:46:32 +0200 Subject: [Agda] help with inductive sized types In-Reply-To: References: Message-ID: <72de225c-1eae-e5ea-bb27-3e2ed1b0479f@ifi.lmu.de> The upper-bound operator for sizes is very experimental and should not be used. Its implementation is very incomplete. It works if you give both arguments of `app` the same upper bound `szf`: {-# OPTIONS --sized-types #-} module SizedExample where open import Data.Nat.Base open import Data.List.Base open import Data.List.Membership.Propositional open import Data.List.Relation.Unary.Any using (here; there) open import Data.Product using (_?_; _,_) open import Data.Unit open import Function.Base open import Size data Type : Set where Nat : Type _?_ : Type ? Type ? Type data Value : Size ? List Type ? Type ? Set data Neutral : Size ? List Type ? Type ? Set data Neutral where var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T app : ? {szf : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szf ? S ? Neutral (? szf) ? T data Value where coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T ?_?T : Type ? Set ? Nat ?T = ? ? S ? T ?T = ? S ?T ? ? T ?T ?_?C : List Type ? Set ?_?C = foldr _?_ ? ? map ?_?T ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest ?_?t .{(? szf)} (coerce (app {szf} f x)) ctx = ?_?t {szf} (coerce f) ctx (?_?t {szf} x ctx) On 2021-08-25 04:30, Jonathan Chan wrote: > The only problem I can spot is that szx is /not/ strictly smaller > thanmax(szf + 1, szx), so the size of the type of app has to be either ? > (szf ?? szx) or ? szf ?? ? szx. But even then, with the app case of ?_?t > having either of these sizes, it still doesn't pass the termination > check, so I'm not sure what's going there, because I'm pretty confident > that szf and szx are both strictly smaller than ? (szf ?? szx) and ? szf > ?? ? szx. > > It could just be that this isn't something that the size checker can > verify. If you pick the first version ? that is, > > data Neutral where > ? var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > ? app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szx > ? S ? Neutral (? (szf ?? szx)) ? T > > Then you could "raise" the size of the recursive arguments of ?_?t from > szf and szx both to (szf ?? szx), so that the app branch is > > ?_?t .{? (szf ?? szx)} (coerce (app {szf} {szx} f x)) ctx = ?_?t {szf ?? > szx} (coerce f) ctx (?_?t {szf ?? szx} x ctx) > > I don't remember if Agda has sized subtyping (I mean, probably, given > that this passes termination checking), but for instance (coerce f) has > type (Value szf ? T), which would need to be a subtype of (Value (szf ?? > szx) ? T), which follows from (szf ? szf ?? szx), and finally (szf ?? > szx ? ? (szf ?? szx)) for termination checking. > > The original version without the trick just needs (szf ? ? (szf ?? szx)) > and (szx ? ? (szf ?? szx)) though, which holds by transitivity. Is Agda > unable to check transitive subsizing relations like that? > > On Mon, 23 Aug 2021 at 21:07, James Smith > wrote: > > > > I'm trying to learn to use Sized Types to solve a simple > non-termination issue. After reading a couple papers (MiniAgda, > Equational Reasoning about Formal Languages in Coalgebraic Style) and > everything I could find online, I was still confused. I've found a > solution that works, but I don't know why my first attempt didn't work. > Would love to learn the insight I am missing. > > > > A small lambda toy with separate neutrals and values: > > > > ? ? data Type : Set where > > ? ? ? Nat : Type > > ? ? ? _?_ : Type ? Type ? Type > > > > ? ? data Value : List Type ? Type ? Set > > ? ? data Neutral : List Type ? Type ? Set where > > ? ? ? var : ? {? T} ? T ? ? ? Neutral ? T > > ? ? ? app : ? {? S T} ? Neutral ? (S ? T) ? Value ? S ? Neutral ? T > > > > ? ? data Value where > > ? ? ? coerce : ? {? T} ? Neutral ? T ? Value ? T > > > > ? ? ?_?T : Type ? Set > > ? ? ? Nat ?T = ? > > ? ? ? S ? T ?T = ? S ?T ? ? T ?T > > > > ? ? ?_?C : List Type ? Set > > ? ? ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > ? ? {-# NON_TERMINATING #-} > > ? ? ?_?t : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > > ? ? ? (coerce (var (here px))) ?t ?(fst , _) rewrite px = fst > > ? ? ? (coerce (var (there x))) ?t ?(_ , rest) = ? (coerce (var x)) ?t > rest > > ? ? ? (coerce (app f x)) ?t ?ctx = (? coerce f ?t ctx) (? x ?t ctx) > > > > The final app clause is what causes a problem. A mutually recursive > function pair works fine: > > > > ? ? ?_?t-v : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > > ? ? ?_?t-n : ? {? T} ? Neutral ? T ? ? ? ?C ? ? T ?T > > ? ? ? (coerce n) ?t-v env = ? n ?t-n env > > ? ? ? (var (here px)) ?t-n ?(fst , _) rewrite px = fst > > ? ? ? (var (there x)) ?t-n ?(_ , rest) = ? var x ?t-n rest > > ? ? ? (app f x) ?t-n ?ctx = (? f ?t-n ctx) (? x ?t-v ctx) > > > > But I want the excuse to learn how to apply Sized Types, so I take a > crack at getting rid of NON_TERMINATING by threading a Size index > through everything. > > > > ? module SizedExample where > > ? ? open import Data.Nat > > ? ? open import Data.List > > ? ? open import Data.List.Membership.Propositional > > ? ? open import Data.List.Membership.Propositional.Properties > > ? ? open import Data.List.Relation.Unary.Any > > ? ? open import Data.Product > > ? ? open import Data.Unit > > ? ? open import Data.Vec > > ? ? open import Function > > ? ? open import Relation.Binary.PropositionalEquality > > ? ? open import Size > > > > ? ? data Type : Set where > > ? ? ? Nat : Type > > ? ? ? _?_ : Type ? Type ? Type > > > > ? ? data Value : Size ? List Type ? Type ? Set > > ? ? data Neutral : Size ? List Type ? Type ? Set > > > > ? ? data Neutral where > > ? ? ? var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > > ? ? ? app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? > Value szx ? S ? Neutral ((? szf) ?? szx) ? T > > > > ? ? data Value where > > ? ? ? coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T > > > > ? ? ?_?T : Type ? Set > > ? ? ? Nat ?T = ? > > ? ? ? S ? T ?T = ? S ?T ? ? T ?T > > > > ? ? ?_?C : List Type ? Set > > ? ? ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > ? ? ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > > ? ? ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > > ? ? ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > > ? ? ?_?t .{(? szf) ?? szx} (coerce (app {szf} {szx} f x)) ctx = ?_?t > {szf} (coerce f) ctx (?_?t {szx} x ctx) > > > > The termination checker rejects the last line. But I don't see why. > It looks to me like there's enough information there to see szf and szx > are each smaller than their max to let those calls go through. I also > tried giving extra headroom for szf in case that helped, but that didn't > work either. > > > > A refactor to use Size< on parameters, instead of the max operator on > the result, works: > > > > module SizedExample2 where > > ? ? open import Data.Nat > > ? ? open import Data.List > > ? ? open import Data.List.Membership.Propositional > > ? ? open import Data.List.Membership.Propositional.Properties > > ? ? open import Data.List.Relation.Unary.Any > > ? ? open import Data.Product > > ? ? open import Data.Unit > > ? ? open import Data.Vec > > ? ? open import Function > > ? ? open import Relation.Binary.PropositionalEquality > > ? ? open import Size > > > > ? ? data Type : Set where > > ? ? ? Nat : Type > > ? ? ? _?_ : Type ? Type ? Type > > > > ? ? data Value : Size ? List Type ? Type ? Set > > ? ? data Neutral : Size ? List Type ? Type ? Set > > > > ? ? data Neutral where > > ? ? ? var : ? {sz ? T} ? T ? ? ? Neutral sz ? T > > ? ? ? app : ? {sz} {szf szx : Size< sz} {? S T} ? Neutral szf ? (S ? > T) ? Value szx ? S ? Neutral sz ? T > > > > ? ? data Value where > > ? ? ? coerce : ? {sz ? T} ? Neutral sz ? T ? Value sz ? T > > > > ? ? ?_?T : Type ? Set > > ? ? ? Nat ?T = ? > > ? ? ? S ? T ?T = ? S ?T ? ? T ?T > > > > ? ? ?_?C : List Type ? Set > > ? ? ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > ? ? ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > > ? ? ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > > ? ? ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > > ? ? ?_?t (coerce (app f x)) ctx = ? (coerce f) ?t ctx (? x ?t ctx) > > > > > > That makes me suspicious this is like a Size version of needing to > avoid computed values in the result position of constructors, but I'm > not really sure why the version with the max operator didn't work. > > > > Thanks in advance for any insight. > > > > -James > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From cj-xu at outlook.com Wed Aug 25 14:42:13 2021 From: cj-xu at outlook.com (Chuangjie Xu) Date: Wed, 25 Aug 2021 14:42:13 +0200 Subject: [Agda] Research position at fortiss, Munich Message-ID: We are looking for a researcher to strengthen our Safety & Security team at fortiss, a research institute in Munich with close connections both to the Munich universities TUM and LMU and to industry. The Safety & Security team develops new methods and engineering principles related to safety and security in software and system development. Example areas of interest include: - Automated reasoning for safety/security-engineering - Security aspects of distributed systems, such as accountability and privacy - Formal semantics, verification, and analysis of access control systems - Program analysis and type systems The position is available starting as soon as possible and will be for at least two years initially, with the possibility of extension. You would be a team member contributing to our research in one of the above areas. Applications from candidates with skills in related areas are also welcome. More details about this position can be found at: https://recruitment.fortiss.org/RESEARCHER-SAFETYSEVURITY-MFD-eng-j163.html -------------- next part -------------- An HTML attachment was scrubbed... URL: From ifl21.publicity at gmail.com Wed Aug 25 18:11:00 2021 From: ifl21.publicity at gmail.com (Pieter Koopman) Date: Wed, 25 Aug 2021 09:11:00 -0700 Subject: [Agda] IFL'21 call for participation Message-ID: ================================================================================ IFL 2021 33rd Symposium on Implementation and Application of Functional Languages venue: online 1 - 3 September 2021 https://ifl21.cs.ru.nl *Registration* Registration is free of charge, but required for participation! Use the below link to register for IFL 2021: https://docs.google.com/forms/d/e/1FAIpQLSdMFjo-GumKjk4i7szs7n4DhWqKt96t8ofIqshfQFrf4jnvsA/viewform?usp=sf_link *Scope* The goal of the IFL symposia is to bring together researchers actively engaged in the implementation and application of functional and function-based programming languages. IFL 2021 will be a venue for researchers to present and discuss new ideas and concepts, work in progress, and publication-ripe results related to the implementation and application of functional languages and function-based programming. *Program* The program is now available at https://ifl21.cs.ru.nl/Program . *Organisation* IFL 2021 Chairs: Pieter Koopman and Peter Achten, Radboud University, The Netherlands IFL Publicity chair: Pieter Koopman, Radboud University, The Netherlands *PC* Peter Achten (co-chair) - Radboud University, Netherlands Thomas van Binsbergen - University of Amsterdam, Netherlands Edwin Brady - University of St. Andrews, Scotland Laura Castro - University of A Coru?a, Spain Youyou Cong - Tokyo Institute of Technology, Japan Olaf Chitil - University of Kent, England Andy Gill - University of Kansas, USA Clemens Grelck - University of Amsterdam, Netherlands John Hughes - Chalmers University, Sweden Pieter Koopman (co-chair) - Radboud University, Netherlands Cynthia Kop - Radboud University, Netherlands Jay McCarthey - University of Massachussetts Lowell, USA Neil Mitchell - Facebook, England Jan De Muijnck-Hughes - Glasgow University, Scotland Keiko Nakata - SAP Innovation Center Potsdam, Germany Jurri?n Stutterheim - Standard Chartered, Singapore Simon Thompson - University of Kent, England Melinda T?th - E?tvos Lor?nd University, Hungary Phil Trinder - Glasgow University, Scotland Meng Wang - University of Bristol, England Vikt?ria Zs?k - E?tvos Lor?nd University, Hungary [image: beacon] -------------- next part -------------- An HTML attachment was scrubbed... URL: From james.smith.69781 at gmail.com Fri Aug 27 17:23:53 2021 From: james.smith.69781 at gmail.com (James Smith) Date: Fri, 27 Aug 2021 08:23:53 -0700 Subject: [Agda] help with inductive sized types In-Reply-To: <72de225c-1eae-e5ea-bb27-3e2ed1b0479f@ifi.lmu.de> References: <72de225c-1eae-e5ea-bb27-3e2ed1b0479f@ifi.lmu.de> Message-ID: Thank you all! This has been instructive. On Wed, Aug 25, 2021 at 4:46 AM Andreas Abel wrote: > The upper-bound operator for sizes is very experimental and should not > be used. Its implementation is very incomplete. > > It works if you give both arguments of `app` the same upper bound `szf`: > > > {-# OPTIONS --sized-types #-} > > module SizedExample where > open import Data.Nat.Base > open import Data.List.Base > open import Data.List.Membership.Propositional > open import Data.List.Relation.Unary.Any using (here; there) > open import Data.Product using (_?_; _,_) > open import Data.Unit > open import Function.Base > open import Size > > data Type : Set where > Nat : Type > _?_ : Type ? Type ? Type > > data Value : Size ? List Type ? Type ? Set > data Neutral : Size ? List Type ? Type ? Set > > data Neutral where > var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > app : ? {szf : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szf > ? S ? Neutral (? szf) ? T > > data Value where > coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T > > ?_?T : Type ? Set > ? Nat ?T = ? > ? S ? T ?T = ? S ?T ? ? T ?T > > ?_?C : List Type ? Set > ?_?C = foldr _?_ ? ? map ?_?T > > ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t rest > ?_?t .{(? szf)} (coerce (app {szf} f x)) ctx = ?_?t {szf} (coerce > f) ctx (?_?t {szf} x ctx) > > > On 2021-08-25 04:30, Jonathan Chan wrote: > > The only problem I can spot is that szx is /not/ strictly smaller > > thanmax(szf + 1, szx), so the size of the type of app has to be either ? > > (szf ?? szx) or ? szf ?? ? szx. But even then, with the app case of ?_?t > > having either of these sizes, it still doesn't pass the termination > > check, so I'm not sure what's going there, because I'm pretty confident > > that szf and szx are both strictly smaller than ? (szf ?? szx) and ? szf > > ?? ? szx. > > > > It could just be that this isn't something that the size checker can > > verify. If you pick the first version ? that is, > > > > data Neutral where > > var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > > app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? Value szx > > ? S ? Neutral (? (szf ?? szx)) ? T > > > > Then you could "raise" the size of the recursive arguments of ?_?t from > > szf and szx both to (szf ?? szx), so that the app branch is > > > > ?_?t .{? (szf ?? szx)} (coerce (app {szf} {szx} f x)) ctx = ?_?t {szf ?? > > szx} (coerce f) ctx (?_?t {szf ?? szx} x ctx) > > > > I don't remember if Agda has sized subtyping (I mean, probably, given > > that this passes termination checking), but for instance (coerce f) has > > type (Value szf ? T), which would need to be a subtype of (Value (szf ?? > > szx) ? T), which follows from (szf ? szf ?? szx), and finally (szf ?? > > szx ? ? (szf ?? szx)) for termination checking. > > > > The original version without the trick just needs (szf ? ? (szf ?? szx)) > > and (szx ? ? (szf ?? szx)) though, which holds by transitivity. Is Agda > > unable to check transitive subsizing relations like that? > > > > On Mon, 23 Aug 2021 at 21:07, James Smith > > wrote: > > > > > > I'm trying to learn to use Sized Types to solve a simple > > non-termination issue. After reading a couple papers (MiniAgda, > > Equational Reasoning about Formal Languages in Coalgebraic Style) and > > everything I could find online, I was still confused. I've found a > > solution that works, but I don't know why my first attempt didn't work. > > Would love to learn the insight I am missing. > > > > > > A small lambda toy with separate neutrals and values: > > > > > > data Type : Set where > > > Nat : Type > > > _?_ : Type ? Type ? Type > > > > > > data Value : List Type ? Type ? Set > > > data Neutral : List Type ? Type ? Set where > > > var : ? {? T} ? T ? ? ? Neutral ? T > > > app : ? {? S T} ? Neutral ? (S ? T) ? Value ? S ? Neutral ? T > > > > > > data Value where > > > coerce : ? {? T} ? Neutral ? T ? Value ? T > > > > > > ?_?T : Type ? Set > > > ? Nat ?T = ? > > > ? S ? T ?T = ? S ?T ? ? T ?T > > > > > > ?_?C : List Type ? Set > > > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > > > {-# NON_TERMINATING #-} > > > ?_?t : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > > > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > > > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t > > rest > > > ? (coerce (app f x)) ?t ctx = (? coerce f ?t ctx) (? x ?t ctx) > > > > > > The final app clause is what causes a problem. A mutually recursive > > function pair works fine: > > > > > > ?_?t-v : ? {? T} ? Value ? T ? ? ? ?C ? ? T ?T > > > ?_?t-n : ? {? T} ? Neutral ? T ? ? ? ?C ? ? T ?T > > > ? (coerce n) ?t-v env = ? n ?t-n env > > > ? (var (here px)) ?t-n (fst , _) rewrite px = fst > > > ? (var (there x)) ?t-n (_ , rest) = ? var x ?t-n rest > > > ? (app f x) ?t-n ctx = (? f ?t-n ctx) (? x ?t-v ctx) > > > > > > But I want the excuse to learn how to apply Sized Types, so I take a > > crack at getting rid of NON_TERMINATING by threading a Size index > > through everything. > > > > > > module SizedExample where > > > open import Data.Nat > > > open import Data.List > > > open import Data.List.Membership.Propositional > > > open import Data.List.Membership.Propositional.Properties > > > open import Data.List.Relation.Unary.Any > > > open import Data.Product > > > open import Data.Unit > > > open import Data.Vec > > > open import Function > > > open import Relation.Binary.PropositionalEquality > > > open import Size > > > > > > data Type : Set where > > > Nat : Type > > > _?_ : Type ? Type ? Type > > > > > > data Value : Size ? List Type ? Type ? Set > > > data Neutral : Size ? List Type ? Type ? Set > > > > > > data Neutral where > > > var : ? {i : Size} {? T} ? T ? ? ? Neutral i ? T > > > app : ? {szf szx : Size} {? S T} ? Neutral szf ? (S ? T) ? > > Value szx ? S ? Neutral ((? szf) ?? szx) ? T > > > > > > data Value where > > > coerce : ? {sz : Size} {? T} ? Neutral sz ? T ? Value sz ? T > > > > > > ?_?T : Type ? Set > > > ? Nat ?T = ? > > > ? S ? T ?T = ? S ?T ? ? T ?T > > > > > > ?_?C : List Type ? Set > > > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > > > ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > > > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > > > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t > rest > > > ?_?t .{(? szf) ?? szx} (coerce (app {szf} {szx} f x)) ctx = ?_?t > > {szf} (coerce f) ctx (?_?t {szx} x ctx) > > > > > > The termination checker rejects the last line. But I don't see why. > > It looks to me like there's enough information there to see szf and szx > > are each smaller than their max to let those calls go through. I also > > tried giving extra headroom for szf in case that helped, but that didn't > > work either. > > > > > > A refactor to use Size< on parameters, instead of the max operator on > > the result, works: > > > > > > module SizedExample2 where > > > open import Data.Nat > > > open import Data.List > > > open import Data.List.Membership.Propositional > > > open import Data.List.Membership.Propositional.Properties > > > open import Data.List.Relation.Unary.Any > > > open import Data.Product > > > open import Data.Unit > > > open import Data.Vec > > > open import Function > > > open import Relation.Binary.PropositionalEquality > > > open import Size > > > > > > data Type : Set where > > > Nat : Type > > > _?_ : Type ? Type ? Type > > > > > > data Value : Size ? List Type ? Type ? Set > > > data Neutral : Size ? List Type ? Type ? Set > > > > > > data Neutral where > > > var : ? {sz ? T} ? T ? ? ? Neutral sz ? T > > > app : ? {sz} {szf szx : Size< sz} {? S T} ? Neutral szf ? (S ? > > T) ? Value szx ? S ? Neutral sz ? T > > > > > > data Value where > > > coerce : ? {sz ? T} ? Neutral sz ? T ? Value sz ? T > > > > > > ?_?T : Type ? Set > > > ? Nat ?T = ? > > > ? S ? T ?T = ? S ?T ? ? T ?T > > > > > > ?_?C : List Type ? Set > > > ?_?C = Data.List.foldr _?_ ? ? Data.List.map ?_?T > > > > > > ?_?t : ? {sz ? T} ? Value sz ? T ? ? ? ?C ? ? T ?T > > > ? (coerce (var (here px))) ?t (fst , _) rewrite px = fst > > > ? (coerce (var (there x))) ?t (_ , rest) = ? (coerce (var x)) ?t > rest > > > ?_?t (coerce (app f x)) ctx = ? (coerce f) ?t ctx (? x ?t ctx) > > > > > > > > > That makes me suspicious this is like a Size version of needing to > > avoid computed values in the result position of constructors, but I'm > > not really sure why the version with the max operator didn't work. > > > > > > Thanks in advance for any insight. > > > > > > -James > > > > > > > > > _______________________________________________ > > > Agda mailing list > > > Agda at lists.chalmers.se > > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ifl21.publicity at gmail.com Mon Aug 30 21:32:29 2021 From: ifl21.publicity at gmail.com (Pieter Koopman) Date: Mon, 30 Aug 2021 12:32:29 -0700 Subject: [Agda] IFL'21 final call for participation Message-ID: ================================================================================ IFL 2021 33rd Symposium on Implementation and Application of Functional Languages venue: online 1 - 3 September 2021 https://ifl21.cs.ru.nl *Registration* *Registration is **free of charge, but required for participation!* We will mail the zoom link only to registered participants. Use the below link to register for IFL 2021: https://docs.google.com/forms/d/e/1FAIpQLSdMFjo-GumKjk4i7szs7n4DhWqKt96t8ofIqshfQFrf4jnvsA/viewform?usp=sf_link *Program* The program is now available at https://ifl21.cs.ru.nl/Program . *Scope* The goal of the IFL symposia is to bring together researchers actively engaged in the implementation and application of functional and function-based programming languages. IFL 2021 will be a venue for researchers to present and discuss new ideas and concepts, work in progress, and publication-ripe results related to the implementation and application of functional languages and function-based programming. *Organisation* IFL 2021 Chairs: Pieter Koopman and Peter Achten, Radboud University, The Netherlands IFL Publicity chair: Pieter Koopman, Radboud University, The Netherlands *PC* Peter Achten (co-chair) - Radboud University, Netherlands Thomas van Binsbergen - University of Amsterdam, Netherlands Edwin Brady - University of St. Andrews, Scotland Laura Castro - University of A Coru?a, Spain Youyou Cong - Tokyo Institute of Technology, Japan Olaf Chitil - University of Kent, England Andy Gill - University of Kansas, USA Clemens Grelck - University of Amsterdam, Netherlands John Hughes - Chalmers University, Sweden Pieter Koopman (co-chair) - Radboud University, Netherlands Cynthia Kop - Radboud University, Netherlands Jay McCarthey - University of Massachussetts Lowell, USA Neil Mitchell - Facebook, England Jan De Muijnck-Hughes - Glasgow University, Scotland Keiko Nakata - SAP Innovation Center Potsdam, Germany Jurri?n Stutterheim - Standard Chartered, Singapore Simon Thompson - University of Kent, England Melinda T?th - E?tvos Lor?nd University, Hungary Phil Trinder - Glasgow University, Scotland Meng Wang - University of Bristol, England Vikt?ria Zs?k - E?tvos Lor?nd University, Hungary [image: beacon] -------------- next part -------------- An HTML attachment was scrubbed... URL: From frederic.blanqui at inria.fr Fri Sep 3 10:01:27 2021 From: frederic.blanqui at inria.fr (=?UTF-8?B?RnLDqWTDqXJpYyBCbGFucXVp?=) Date: Fri, 3 Sep 2021 10:01:27 +0200 Subject: [Agda] EuroProofNet - Call for Working Group membership Application In-Reply-To: <973e881b-ab94-21e4-17b2-f94f75643e2b@inria.fr> References: <973e881b-ab94-21e4-17b2-f94f75643e2b@inria.fr> Message-ID: Dear all, Registration to EuroProofNet working groups is open on https://e-services.cost.eu/action/CA20111/working-groups/apply (it's possible to register to several working groups). EuroProofNet is new COST action (see https://www.cost.eu/actions/CA20111/) aiming at federating all the European researchers working on proofs in order to improve the interoperability of proof systems. There are currently 6 working groups (WG): - WG1: Proof systems interoperability. - WG2: Automated theorem provers. - WG3: Program verification. - WG4: Libraries of formal proofs. - WG5: Machine learning on proofs. - WG6: Type theory. You will find all the details on the objectives of EuroProofNet in https://e-services.cost.eu/files/domain_files/CA/Action_CA20111/mou/CA20111-e.pdf . A COST action can fund visits to other labs, and participation to summer schools, workshops and conferences. Anyone willing to contribute to the goals of the action is eligible. If you are interested, you just need to register on https://e-services.cost.eu/action/CA20111/working-groups/apply . Best regards, Fr?d?ric Blanqui, chair of EuroProofNet. From anders.mortberg at math.su.se Mon Sep 6 13:43:02 2021 From: anders.mortberg at math.su.se (Anders Mortberg) Date: Mon, 6 Sep 2021 13:43:02 +0200 Subject: [Agda] Postdoctoral position in homotopy type theory and related topics at Stockholm University Message-ID: Dear all, I?m pleased to announce that we?re hiring a postdoctoral researcher in homotopy type theory and related topics at Stockholm University. It?s a 2 year position, provisionally starting January 2022, in the computational mathematics group of the Mathematics Department. The application deadline is 1 October. We welcome all applicants interested in working on homotopy type theory and related topics. Potential project topics include, but are not limited to: homotopy type theory, categorical models of type theories, cubical type theories, implementation of proof assistants, computer formalization of mathematics and computer science. Full details and application at: https://www.su.se/english/about-the-university/work-at-su/available-jobs?rmpage=job&rmjob=15797&rmlang=UK Departmental webpage: https://www.math.su.se/english/research Please get in touch with me if you have any questions about the position! Best, Anders -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrei.h.popescu at gmail.com Wed Sep 8 09:00:00 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Wed, 8 Sep 2021 08:00:00 +0100 Subject: [Agda] 30 months postdoctoral research position at University of Sheffield involving proof-assistant-based verification -- application deadline 23 Sept. 2021 Message-ID: Greetings, A postdoctoral research position (Grade 7) is available at the University of Sheffield. The goal is to perform research in one of the following areas: 1. Formal modelling and verification of security properties for digital twins. This involves the design and development of theoretical mathematical models and the use of proof assistants, automated theorem provers, model checkers or related tools to formalize and verify properties of these models. 2. Fine-grained access control system for mission-critical digital twins. This involves the design and development of an advanced access control policy and the usage of security models and public key cryptography (such as CCA) to build proofs of concept in enhancing the security of digital twins. Closing date for applications: 23 Sept. 2021 Starting date: 7 Oct. 2021 or later Duration: 30 months Salary: ?32,344 Applications can be made by going to this page https://jobs.shef.ac.uk/sap/bc/webdynpro/sap/hrrcf_a_posting_apply?PARAM=cG9zdF9pbnN0X2d1aWQ9NjEyNzRBN0Y2QjU4M0VEMUUxMDAwMDAwQUMxRTg4NzgmY2FuZF90eXBlPUVYVA%3d%3d&sap-client=400&sap-language=EN&sap-accessibility=X&sap-ep-themeroot=%2fSAP%2fPUBLIC%2fBC%2fUR%2fuos# and clicking on the "Apply" link. The "About the job" link contains more details about the position. I am happy to answer any informal inquiries. Best wishes, Andrei From marco.maggesi at unifi.it Thu Sep 9 20:09:55 2021 From: marco.maggesi at unifi.it (Marco Maggesi) Date: Thu, 9 Sep 2021 20:09:55 +0200 Subject: [Agda] School on Univalent Mathematics, Cortona (Italy), July 17-23, 2022 Message-ID: We are pleased to announce the School on Univalent Mathematics 2022, to be held at the Palazzone di Cortona (https://www.sns.it/en/palazzone-di-cortona), Cortona, Italy, July 17-23, 2022 (https://unimath.github.io/cortona2022/) Overview ======== Homotopy Type Theory is an emerging field of mathematics that studies a fruitful relationship between homotopy theory and (dependent) type theory. This relation plays a crucial role in Voevodsky's program of Univalent Foundations, a new approach to foundations of mathematics based on ideas from homotopy theory, such as the Univalence Principle. The UniMath library is a large repository of computer-checked mathematics, developed from the univalent viewpoint. It is based on the computer proof assistant Coq. In this school, we aim to introduce newcomers to the ideas of Univalent Foundations and mathematics therein, and to the formalization of mathematics in UniMath (https://github.com/UniMath/UniMath), a library of Univalent Mathematics based on the Coq proof assistant. Format ======= Participants will receive an introduction to Univalent Foundations and to mathematics in those foundations. In the accompanying problem sessions, they will formalize pieces of univalent mathematics in the UniMath library. Prerequisites ========== Participants should be interested in mathematics and the use of computers for mathematical reasoning. Participants do not need to have prior knowledge of logic, Coq, or Univalent Foundations. Application and funding ======================= For information on how to participate, please visit https://unimath.github.io/cortona2022. Best regards, The organizers Benedikt Ahrens and Marco Maggesi -------------- next part -------------- An HTML attachment was scrubbed... URL: From cong at c.titech.ac.jp Wed Sep 22 14:00:00 2021 From: cong at c.titech.ac.jp (Youyou Cong) Date: Wed, 22 Sep 2021 21:00:00 +0900 Subject: [Agda] PEPM 2022 - Second Call for Papers Message-ID: -- CALL FOR PAPERS -- ACM SIGPLAN Workshop on PARTIAL EVALUATION AND PROGRAM MANIPULATION (PEPM) 2022 =============================================================================== * Website : https://popl22.sigplan.org/home/pepm-2022 * Time : 17th--18th January 2022 * Place : Online or Philadelphia, Pennsylvania, United States (co-located with POPL 2022) ** Deadline: 7th October ** ** Update: We are organizing a special event on the history of PEPM. Details will be posted on the workshop website. ** The ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM) has a history going back to 1991 and has been co-located with POPL every year since 2006. It originated with the discoveries of useful automated techniques for evaluating programs with only partial input. Over the years, the scope of PEPM has expanded to include a variety of research areas centred around the theme of semantics-based program manipulation ? the systematic exploitation of treating programs not only as subjects to black-box execution but also as data structures that can be generated, analysed, and transformed while establishing or maintaining important semantic properties. Scope ----- In addition to the traditional PEPM topics (see below), PEPM 2022 welcomes submissions in new domains, in particular: * Semantics based and machine-learning based program synthesis and program optimisation. * Modelling, analysis, and transformation techniques for distributed and concurrent protocols and programs, such as session types, linear types, and contract specifications. More generally, topics of interest for PEPM 2022 include, but are not limited to: * Program and model manipulation techniques such as: supercompilation, partial evaluation, fusion, on-the-fly program adaptation, active libraries, program inversion, slicing, symbolic execution, refactoring, decompilation, and obfuscation. * Techniques that treat programs/models as data objects including metaprogramming, generative programming, embedded domain-specific languages, program synthesis by sketching and inductive programming, staged computation, and model-driven program generation and transformation. * Program analysis techniques that are used to drive program/model manipulation such as: abstract interpretation, termination checking, binding-time analysis, constraint solving, type systems, automated testing and test case generation. * Application of the above techniques including case studies of program manipulation in real-world (industrial, open-source) projects and software development processes, descriptions of robust tools capable of effectively handling realistic applications, benchmarking. Examples of application domains include legacy program understanding and transformation, DSL implementations, visual languages and end-user programming, scientific computing, middleware frameworks and infrastructure needed for distributed and web-based applications, embedded and resource-limited computation, and security. This list of categories is not exhaustive, and we encourage submissions describing new theories and applications related to semantics-based program manipulation in general. If you have a question as to whether a potential submission is within the scope of the workshop, please contact the programme co-chairs, Zena M. Ariola and Youyou Cong . Submission categories and guidelines ------------------------------------ Two kinds of submissions will be accepted: * Regular Research Papers should describe new results, and will be judged on originality, correctness, significance, and clarity. Regular research papers must not exceed 12 pages. * Short Papers may include tool demonstrations and presentations of exciting if not fully polished research, and of interesting academic, industrial, and open-source applications that are new or unfamiliar. Short papers must not exceed 6 pages. References and appendices are not included in page limits. Appendices may not be read by reviewers. Both kinds of submissions should be typeset using the two-column ?sigplan? sub-format of the new ?acmart? format available at: http://sigplan.org/Resources/Author/ and submitted electronically via HotCRP: https://pepm22.hotcrp.com/ Reviewing will be single-blind. Submissions are welcome from PC members (except the two co-chairs). Accepted regular research papers will appear in formal proceedings published by ACM, and be included in the ACM Digital Library. Accepted short papers do not constitute formal publications and will not appear in the proceedings. At least one author of each accepted contribution must attend the workshop (physically or virtually) and present the work. In the case of tool demonstration papers, a live demonstration of the described tool is expected. Important dates --------------- * Paper submission deadline : **Thursday 7th October 2021 (AoE)** * Author notification : **Thursday 11th November 2021 (AoE)** * Workshop : **Monday 17th January 2022 to Tuesday 18th January 2022** Best paper award ---------------- PEPM 2022 continues the tradition of a Best Paper award. The winner will be announced at the workshop. Programme committee ------------------- * Chairs: Zena M. Ariola (University of Oregon, US) Youyou Cong (Tokyo Institute of Technology, Japan) * Maria Alpuente (U.P. Valencia, Spain) * William J. Bowman (UBC, Canada) * Jonathan Immanuel Brachth?user (EPFL, Switzerland) * William E. Byrd (University of Alabama at Birmingham, US) * Robert Gl?ck (University of Copenhagen, Denmark) * Zhenjiang Hu (Peking University, China) * Yukiyoshi Kameyama (University of Tsukuba, Japan) * Gabriele Keller (Utrecht University, Netherlands) * Julia Lawall (INRIA, France) * Y. Annie Liu (Stony Brook University, US) * Keiko Nakata (SAP Innovation Center Potsdam, Germany) * Antonina Nepeivoda (Program Systems Institute of RAS, Russia) * Zoe Paraskevopoulou (Northeastern University, US) * Yann R?gis-Gianas (Nomadic Labs, France) * Tiark Rompf (Purdue University, US) * KC Sivaramakrishnan (IIT Madras, India) * Dimitrios Vytiniotis (DeepMind, UK) * Beta Ziliani (FAMAF, UNC and Manas.Tech, Argentina) -------------- next part -------------- An HTML attachment was scrubbed... URL: From andersmortberg at gmail.com Fri Sep 24 13:19:44 2021 From: andersmortberg at gmail.com (Anders Mortberg) Date: Fri, 24 Sep 2021 13:19:44 +0200 Subject: [Agda] Reminder: 2 year position on HoTT and related topics in Stockholm, deadline Friday next week Message-ID: Dear all, A quick reminder of the postdoctoral position in HoTT and related topics that I advertised a couple of weeks ago, with deadline *October 1* (midnight Stockholm time). Full details and application at: https://www.su.se/english/about-the-university/work-at-su/available-jobs?rmpage=job&rmjob=15797&rmlang=UK Departmental webpage: https://www.math.su.se/english/research Once again, please get in touch with me if you have any questions about the position or application process! Best, Anders On Mon, Sep 6, 2021 at 1:43 PM Anders Mortberg wrote: > Dear all, > > I?m pleased to announce that we?re hiring a postdoctoral researcher in > homotopy type theory and related topics at Stockholm University. It?s a 2 > year position, provisionally starting January 2022, in the computational > mathematics group of the Mathematics Department. The application deadline > is 1 October. > > We welcome all applicants interested in working on homotopy type theory > and related topics. Potential project topics include, but are not limited > to: homotopy type theory, categorical models of type theories, cubical type > theories, implementation of proof assistants, computer formalization of > mathematics and computer science. > > Full details and application at: > https://www.su.se/english/about-the-university/work-at-su/available-jobs?rmpage=job&rmjob=15797&rmlang=UK > > Departmental webpage: https://www.math.su.se/english/research > > Please get in touch with me if you have any questions about the position! > > Best, > Anders > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tarmo at cs.ioc.ee Sat Sep 25 02:57:32 2021 From: tarmo at cs.ioc.ee (Tarmo Uustalu) Date: Sat, 25 Sep 2021 03:57:32 +0300 Subject: [Agda] ETAPS 2022 2nd joint call for papers Message-ID: <20210925035732.7627a6c8@cs.ioc.ee> Why choose ETAPS? - ETAPS is one of the world's leading fora for research on software science, with a history of more than 25 years. - The proceedings of ETAPS appear in gold open access, with no article processing charge for the authors specifically. - ETAPS has low participation fees for all and for students in particular. New in 2022: - Like FASE for several years already, ESOP will also use double-blind review this time. - FASE has a new paper category of new ideas and emerging results (NIER) papers. - The pre-paper-acceptance artifact submission deadline for TACAS is now a little later than the paper submission deadline. - ESOP and FASE welcome voluntary submission of artifacts for evaluation after paper acceptance; the outcome will not change the paper acceptance decision. - Among the satellite events, there is a PhD student mentoring workshop. ****************************************************************** JOINT CALL FOR PAPERS 25th European Joint Conferences on Theory and Practice of Software ETAPS 2022 Munich, Germany, 2-7 April 2022 https://etaps.org/2022 ****************************************************************** -- ABOUT ETAPS -- ETAPS is the primary European forum for academic and industrial researchers working on topics relating to software science. ETAPS, established in 1998, is a confederation of four annual conferences, accompanied by satellite workshops. ETAPS 2022 is the twenty-fifth event in the series. -- MAIN CONFERENCES (4-7 April) -- * ESOP: European Symposium on Programming (PC chair: Ilya Sergey, Yale-NUS College and National University of Singapore, Singapore) * FASE: Fundamental Approaches to Software Engineering (PC chairs:Einar Broch Johnsen, University of Oslo, Norway, and Manuel Wimmer, Johannes Kepler Universit?t Linz, Austria) * FoSSaCS: Foundations of Software Science and Computation Structures (PC chairs: Patricia Bouyer, CNRS, LMF, France, and Lutz Schr?der, FAU Erlangen-N?rnberg, Germany) * TACAS: Tools and Algorithms for the Construction and Analysis of Systems (PC chairs: Dana Fisman, Ben-Gurion University of the Negev, Israel, and Grigore Rosu, University of Illinois at Urbana-Champaign, USA) TACAS '22 will host the 11th Competition on Software Verification (SV-COMP). -- INVITED SPEAKERS -- * Unifying speakers: Alexandra Silva (University College London, UK / Cornell University, USA) Tom?? Vojnar (Brno University of Technology, Czechia) * FoSSaCS invited speaker: Nathalie Bertrand (Inria Rennes, France) * TACAS invited speaker: Lenore Zuck (University of Illinois at Chicago, USA) * Tutorial speakers: Stacey Jeffery (CWI and QuSoft, The Netherlands) a further tutorial speaker tba -- IMPORTANT DATES * Paper submission (also, pre-paper-acceptance artifact registration (TACAS)): 14 October 2021 23:59 AoE * Pre-paper-acceptance artifact submission (TACAS): 4 November 2021 23:59 AoE * Rebuttal (ESOP, FoSSaCS and, partially, TACAS): 7 December 00:01 AoE - 9 December 2021 23:59 AoE * Paper notification: 23 December 2021 * Post-paper-acceptance artifact submission (ESOP, FASE, TACAS): 5 January 2022 23:59 AoE * Paper final versions: 26 January 2022 * Artifact notification: 16 February 2022 -- SUBMISSION INSTRUCTIONS -- The four main conferences of ETAPS 2022 solicit contributions of the following types. All page limits are given **excluding the bibliography**. * ESOP: regular research papers of max 25 pp * FASE: regular research papers and empirical evaluation papers of max 18 pp, new ideas and emerging results (NIER) papers of max 8 pp, tool demonstration papers of max 6 pp (+ mandatory appendix of max 6 pp), * FoSSaCS: regular research papers of max 18 pp * TACAS: regular research papers, case study papers and regular tool papers of max 16 pp, tool demonstration papers of max 6 pp For definitions of the different paper types and specific instructions, where they are present, see the webpages of the individual conferences. All accepted papers will appear in the proceedings and have presentations during the conference. A condition of submission is that, if the submission is accepted, one of the authors attends the conference to give the presentation. We plan ETAPS 2022 as a hybrid conference; remote attendance and presentation will be possible. Submitted papers must be in English presenting original research. They must be unpublished and not submitted for publication elsewhere. In particular, simultaneous submission of the same contribution to multiple ETAPS conferences is also forbidden. Submissions must follow the formatting guidelines of Springer's LNCS (use the llncs.cls class) and be submitted electronically in pdf through the Easychair author interface of the respective conference. Submissions not adhering to the specified format and length may be rejected immediately. ESOP and FASE will use **double-blind reviewing**. Authors are asked to omit their names and institutions; refer to prior work in the third person, just as prior work by others; not to include acknowledgements that might identify them. ESOP and FoSSaCS will use an **author rebuttal phase**. TACAS will use rebuttal for selected submissions (those in the gray zone). Artifact submission and evaluation Regular tool paper and tool demonstration paper submissions to TACAS must be accompanied by an artifact submitted shortly after the paper. The artifact will be evaluated and the outcome will be taken into account in the acceptance decision of the paper. For research paper and case study paper submissions, pre-paper-acceptance submission of an artifact is optional; if an artifact is submitted at this point, it will be handled like described above. Alternatively, authors of papers of these categories may submit an artifact for evaluation after the paper has been accepted. The outcome of the artifact evaluation will then not change the paper acceptance decision. ESOP and FASE will also have artifact evaluation, but participation in it is voluntary; the artifact submission deadline is after the paper notification deadline. The outcome will not alter the paper acceptance decision. For specific instructions regarding artifacts, see the webpages of the individual conferences. -- PUBLICATION The proceedings will be published in the Advanced Research in Computing and Software Science (ARCoSS) subline of Springer's LNCS series. The proceedings volumes will appear in gold open access, so the published versions of all papers will be available for everyone to download from the publisher's website freely, from the date of online publication, perpetually. The copyright of the papers will remain with the authors. -- BEST PAPER AWARDS The strongest papers of the four conferences will be nominated for the ETAPS best paper awards of EAPLS, EASST and EATCS. The ETAPS test of time award recognizes outstanding papers published at ETAPS more than 10 years in the past. -- SATELLITE EVENTS (2-3 April) -- A number of satellite workshops and other events will take place before the main conferences: CMCS, COOP, HCVS, LiVe, MARS, MSFP, PLACES, QAVS, RRRR, Rust Workshop, SynCop, VerifyThis, VPT, WRLA Also in the satellite events program is a Mentoring Workshop. For closer information, check https://etaps.org/2022/workshops . -- CITY AND HOST INSTITUTION -- Munich, Germany, is the capital and most populous city of Bavaria. Nowadays, the city is a global center of art, science, technology, finance, publishing, culture, innovation, education, business, and tourism. It is home to Ludwig Maximilian's University (LMU) and Technische Universit?t M?nchen (TUM), many scientific institutions, and world-class technology and science museums such as Deutsches Museum and BMW Museum. Iconic places to visit in Munich include the Munich Residenz, Marienplatz, the Old Town Hall, the famous Glockenspiel on the New Town Hall, the Frauenkirche, the English Garden, the Olympic Park and Nymphenburg Palace. The conference will be hosted by Technische Universit?t M?nchen. -- ORGANIZERS -- General chair: Jan K?et?nsk? (Technische Universit?t M?nchen, Germany) Workshops chair: Dirk Beyer (Ludwig-Maximilians Universit?t M?nchen, Germany) From guillaume.brunerie at gmail.com Sat Sep 25 11:04:17 2021 From: guillaume.brunerie at gmail.com (Guillaume Brunerie) Date: Sat, 25 Sep 2021 11:04:17 +0200 Subject: [Agda] [HoTT] Reminder: 2 year position on HoTT and related topics in Stockholm, deadline Friday next week In-Reply-To: References: Message-ID: Den fre 24 sep. 2021 13:20Anders Mortberg skrev: > Dear all, > > A quick reminder of the postdoctoral position in HoTT and related topics > that I advertised a couple of weeks ago, with deadline *October 1* > (midnight Stockholm time). > > Full details and application at: > https://www.su.se/english/about-the-university/work-at-su/available-jobs?rmpage=job&rmjob=15797&rmlang=UK > > Departmental webpage: https://www.math.su.se/english/research > > Once again, please get in touch with me if you have any questions about > the position or application process! > > Best, > Anders > > > On Mon, Sep 6, 2021 at 1:43 PM Anders Mortberg > wrote: > >> Dear all, >> >> I?m pleased to announce that we?re hiring a postdoctoral researcher in >> homotopy type theory and related topics at Stockholm University. It?s a 2 >> year position, provisionally starting January 2022, in the computational >> mathematics group of the Mathematics Department. The application deadline >> is 1 October. >> >> We welcome all applicants interested in working on homotopy type theory >> and related topics. Potential project topics include, but are not limited >> to: homotopy type theory, categorical models of type theories, cubical type >> theories, implementation of proof assistants, computer formalization of >> mathematics and computer science. >> >> Full details and application at: >> https://www.su.se/english/about-the-university/work-at-su/available-jobs?rmpage=job&rmjob=15797&rmlang=UK >> >> Departmental webpage: https://www.math.su.se/english/research >> >> Please get in touch with me if you have any questions about the position! >> >> Best, >> Anders >> >> -- > You received this message because you are subscribed to the Google Groups > "Homotopy Type Theory" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to HomotopyTypeTheory+unsubscribe at googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/HomotopyTypeTheory/CAMWCppmGdAQmwEc9Uw_%2BC%3DkdZGkvjykMPQgRKChoog5UARcKNw%40mail.gmail.com > > . > -------------- next part -------------- An HTML attachment was scrubbed... URL: From wadler at inf.ed.ac.uk Sat Sep 25 12:38:51 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Sat, 25 Sep 2021 11:38:51 +0100 Subject: [Agda] Bizzare error Message-ID: The attached file yields the following error when compiled via ^C^L: /Users/wadler/Desktop/Lambda.lagda.md:522,5-5 /Users/wadler/Desktop/Lambda.lagda.md:522,5: Lexical error (you may want to replace tabs with spaces): refl However, if you delete the large commented portion that follows line 522 it compiles perfectly well. What is the problem? What is a workaround? I'm using Agda version 2.6.1.1-fce01db Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Lambda.lagda.md Type: text/markdown Size: 54253 bytes Desc: not available URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: not available URL: From james.wood.100 at strath.ac.uk Sat Sep 25 17:27:39 2021 From: james.wood.100 at strath.ac.uk (James Wood) Date: Sat, 25 Sep 2021 16:27:39 +0100 Subject: [Agda] Bizzare error In-Reply-To: References: Message-ID: <8869eec9-6eba-89a1-4b03-f6ad248c39c7@strath.ac.uk> Line 561 contains two tab characters. I guess Agda doesn't track locations within comment blocks. Regards, James On 25/09/2021 11:38, Philip Wadler wrote: > CAUTION: This email originated outside the University. Check before > clicking links or attachments. > The attached file yields the following error when compiled via ^C^L: > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > /Users/wadler/Desktop/Lambda.lagda.md:522 > Lexical error (you may want to replace tabs with spaces): > refl > > However, if you delete the large commented portion that follows line 522 > it compiles perfectly well. What is the problem? What is a workaround? > > I'm using > Agda version 2.6.1.1-fce01db > > Go well, -- P > > . ? \ Philip Wadler, Professor of Theoretical Computer Science, > . ? /\ School of Informatics, University of Edinburgh > .? /? \ and Senior Research Fellow, IOHK > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336. > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From wadler at inf.ed.ac.uk Mon Sep 27 09:39:13 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Mon, 27 Sep 2021 08:39:13 +0100 Subject: [Agda] Bizzare error In-Reply-To: <8869eec9-6eba-89a1-4b03-f6ad248c39c7@strath.ac.uk> References: <8869eec9-6eba-89a1-4b03-f6ad248c39c7@strath.ac.uk> Message-ID: Thanks, that fixed it! I did untabify, but appear to have missed one (or two). I am still amazed that a tab *in a comment* can cause a lexical error. Is that a known feature? Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ On Sat, 25 Sept 2021 at 16:27, James Wood wrote: > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > > Line 561 contains two tab characters. I guess Agda doesn't track > locations within comment blocks. > > Regards, > James > > On 25/09/2021 11:38, Philip Wadler wrote: > > CAUTION: This email originated outside the University. Check before > > clicking links or attachments. > > The attached file yields the following error when compiled via ^C^L: > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > Lexical error (you may want to replace tabs with spaces): > > refl > > > > However, if you delete the large commented portion that follows line 522 > > it compiles perfectly well. What is the problem? What is a workaround? > > > > I'm using > > Agda version 2.6.1.1-fce01db > > > > Go well, -- P > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > . /\ School of Informatics, University of Edinburgh > > . / \ and Senior Research Fellow, IOHK > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > > > > > > > > The University of Edinburgh is a charitable body, registered in > > Scotland, with registration number SC005336. > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From scm at iis.sinica.edu.tw Mon Sep 27 09:47:17 2021 From: scm at iis.sinica.edu.tw (Shin-Cheng Mu) Date: Mon, 27 Sep 2021 15:47:17 +0800 Subject: [Agda] Call for Papers: FLOPS 2022 Message-ID: <269FD4B8-BFDC-48F0-92FF-F166FF43B72E@iis.sinica.edu.tw> ============================================================================ Call For Papers FLOPS 2022: 16th International Symposium on Functional and Logic Programming ============================================================================ In-Cooperation with ACM SIGPLAN May 10-12, 2022, Kyoto, Japan https://conf.researchr.org/home/flops-2022 Writing down detailed computational steps is not the only way of programming. The alternative, being used increasingly in practice, is to start by writing down the desired properties of the result. The computational steps are then (semi-)automatically derived from these higher-level specifications. Examples of this declarative style include functional and logic programming, program transformation and re-writing, and extracting programs from proofs of their correctness. FLOPS aims to bring together practitioners, researchers and implementors of the declarative programming, to discuss mutually interesting results and common problems: theoretical advances, their implementations in language systems and tools, and applications of these systems in practice. The scope includes all aspects of the design, semantics, theory, applications, implementations, and teaching of declarative programming. FLOPS specifically aims to promote cross-fertilization between theory and practice and among different styles of declarative programming. *** Scope *** FLOPS solicits original papers in all areas of declarative programming: * functional, logic, functional-logic programming, rewriting systems, formal methods and model checking, program transformations and program refinements, developing programs with the help of theorem provers or SAT/SMT solvers, verifying properties of programs using declarative programming techniques; * foundations, language design, implementation issues (compilation techniques, memory management, run-time systems, etc.), applications and case studies. FLOPS promotes cross-fertilization among different styles of declarative programming. Therefore, research papers must be written to be understandable by the wide audience of declarative programmers and researchers. In particular, each submission should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant for its area, and comparing it with previous work. Submission of system descriptions and declarative pearls are especially encouraged. *** Submission *** Submissions should fall into one of the following categories: * Regular research papers: they should describe new results and will be judged on originality, correctness, and significance. * System descriptions: they should describe a working system and will be judged on originality, usefulness, and design. * Declarative pearls: new and excellent declarative programs or theories with illustrative applications. System descriptions and declarative pearls must be explicitly marked as such in the title. Submissions must be unpublished and not submitted for publication elsewhere. Work that already appeared in unpublished or informally published workshops proceedings may be submitted. See also ACM SIGPLAN Republication Policy, as explained at http://www.sigplan.org/Resources/Policies/Republication. Submissions must be written in English and can be up to 15 pages excluding references, though system descriptions and pearls are typically shorter. The formatting has to conform to Springer's guidelines. Regular research papers should be supported by proofs and/or experimental results. In case of lack of space, this supporting information should be made accessible otherwise (e.g., a link to an anonymized web page or an appendix, which does not count towards the page limit). However, it is the responsibility of the authors to guarantee that their paper can be understood and appreciated without referring to this supporting information; reviewers may simply choose not to look at it when writing their review. FLOPS 2022 will employ a double-blind reviewing process. To facilitate this, submitted papers must adhere to two rules: 1. author names and institutions must be omitted, and 2. references to authors' own related work should be in the third person (e.g., not "We build on our previous work..." but rather "We build on the work of..."). The purpose of this process is to help the reviewers come to a judgement about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing the paper more difficult (e.g., important background references should not be omitted or anonymized). In addition, authors should feel free to disseminate their ideas or draft versions of their paper as they normally would. For instance, authors may post drafts of their papers on the web or give talks on their research ideas. Papers should be submitted electronically at https://easychair.org/conferences/?conf=flops2022 Springer Guidelines https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines *** Proceedings *** The proceedings will be published by Springer International Publishing in the Lecture Notes in Computer Science (LNCS) series (www.springer.com/lncs). *** Important Dates *** Abstract submission: November 14, 2021 (AoE) Paper submission: November 21, 2021 (AoE) Notification: January 17, 2022 Camera ready due: February 17, 2022 Symposium: May 10-12, 2022 *** Program Comittee *** Andreas Abel Gothenburg University, Sweden Elvira Albert Universidad Complutense de Madrid Nada Amin Harvard Universuty, USA Davide Ancona Univ. Genova, Italy William Byrd University of Alabama, USA Matteo Cimini UMass Lowell, USA Youyou Cong Tokyo Institute of Technology, Japan Robert Gl?ck University of Copenhagen, Denmark Makoto Hamana Gunma University, Japan Michael Hanus Kiel University (co-chair) Zhenjiang Hu Peking University, China Atsushi Igarashi Kyoto University, Japan (co-chair) Ekaterina Komendantskaya Heriot-Watt University, UK Shin-Cheng Mu Academia Sinica, Taiwan Koko Muroya Kyoto University, Japan Klaus Ostermann University of Tuebingen, Germany Ricardo Rocha University of Porto, Portugal Tom Schrijvers KU Leuven, Belgium Harald Sondergaard University of Melbourne, Australia Hiroshi Unno University of Tsukuba, Japan Niki Vazou IMDEA, Spain Janis Voigtlaender University of Duisburg-Essen, Germany Nicolas Wu Imperial College, UK Ningning Xie University of Hong Kong, China Jeremy Yallop University of Cambridge, UK Neng-Fa Zhou City University of New York, USA *** Organizers *** Michael Hanus Kiel University, Germany (PC Co-Chair) Atsushi Igarashi Kyoto University, Japan (PC Co-Chair, General Chair) Keigo Imai Gifu University, Japan (Local Co-Chair) Taro Sekiyama National Institute of Informatics, Japan (Local Co-Chair) *** Contact Address *** flops2022 _AT_ easychair.org From P.Achten at cs.ru.nl Mon Sep 27 13:53:08 2021 From: P.Achten at cs.ru.nl (Peter Achten) Date: Mon, 27 Sep 2021 13:53:08 +0200 Subject: [Agda] [TFP'22] first call for papers: Trends in Functional Programming 2022, 10-11 February (with Lambda Days 2022 & TFPIE 2022) Message-ID: <6dcde292-5232-ab32-72be-00306cd05ea6@cs.ru.nl> ====== TFP 2022 ====== 23rd Symposium on Trends in Functional Programming 10-11 February, 2022 Krakow, Poland https://trendsfp.github.io/index.html == Important Dates == Submission deadline for pre-symposium review??????????? Wednesday 1st December, 2021 Submission deadline for draft papers??????????????????? Wednesday 12th January, 2022 Notification for pre-symposium submissions????????????? Friday 21st January, 2022 Notification for draft submissions????????????????????? Friday 21st January, 2022 Symposium dates???????????????????????????????????????? Thursday 10th - Friday 11th February, 2022 Submission deadline for post-symposium reviewing??????? Wednesday 16th March, 2022 Notification for post-symposium submissions???????????? Friday 13rd May, 2022 The Symposium on Trends in Functional Programming (TFP) is an international forum for researchers with interests in all aspects of functional programming, taking a broad view of current and future trends in the area. It aspires to be a lively environment for presenting the latest research results, and other contributions. Please be aware that TFP uses two distinct rounds of submissions. TFP 2022 will be co-located with two other functional programming events. TFP 2022 will be accompanied by the International Workshop on Trends in Functional Programming in Education (TFPIE), which will take place on February 11. Simultaneously with TFP, Lambda Days '22 is a two day conference where academia meets industry, where research and practical application collide. == Scope == The symposium recognizes that new trends may arise through various routes. As part of the Symposium's focus on trends we therefore identify the following five article categories. High-quality articles are solicited in any of these categories: * Research Articles: ? Leading-edge, previously unpublished research work * Position Articles: ?On what new trends should or should not be * Project Articles: ? Descriptions of recently started new projects * Evaluation Articles: ? What lessons can be drawn from a finished project * Overview Articles: ? Summarizing work with respect to a trendy subject Articles must be original and not simultaneously submitted for publication to any other forum. They may consider any aspect of functional programming: theoretical, implementation-oriented, or experience-oriented. Applications of functional programming techniques to other languages are also within the scope of the symposium. Topics suitable for the symposium include, but are not limited to: * Functional programming and multicore/manycore computing * Functional programming in the cloud * High performance functional computing * Extra-functional (behavioural) properties of functional programs * Dependently typed functional programming * Validation and verification of functional programs * Debugging and profiling for functional languages * Functional programming in different application areas: ? security, mobility, telecommunications applications, embedded ? systems, global computing, grids, etc. * Interoperability with imperative programming languages * Novel memory management techniques * Program analysis and transformation techniques * Empirical performance studies * Abstract/virtual machines and compilers for functional languages * (Embedded) domain specific languages * New implementation strategies * Any new emerging trend in the functional programming area If you are in doubt on whether your article is within the scope of TFP, please contact the TFP 2022 program chairs, Wouter Swierstra and Nicolas Wu. == Best Paper Awards == To reward excellent contributions, TFP awards a prize for the best paper accepted for the formal proceedings. TFP traditionally pays special attention to research students, acknowledging that students are almost by definition part of new subject trends. A student paper is one for which the authors state that the paper is mainly the work of students, the students are listed as first authors, and a student would present the paper. A prize for the best student paper is awarded each year. In both cases, it is the PC of TFP that awards the prize. In case the best paper happens to be a student paper, that paper will then receive both prizes. == Instructions to Author == Papers must be submitted at: ? https://easychair.org/conferences/?conf=tfp22 Authors of papers have the choice of having their contributions formally reviewed either before or after the Symposium. == Pre-symposium formal review == Papers to be formally reviewed before the symposium should be submitted before an early deadline and receive their reviews and notification of acceptance for both presentation and publication before the symposium. A paper that has been rejected in this process may still be accepted for presentation at the symposium, but will not be considered for the post-symposium formal review. == Post-symposium formal review == Draft papers will receive minimal reviews and notification of acceptance for presentation at the symposium. Authors of draft papers will be invited to submit revised papers based on the feedback received at the symposium. A post-symposium refereeing process will then select a subset of these articles for formal publication. == Paper categories == Draft papers and papers submitted for formal review are submitted as extended abstracts (4 to 10 pages in length) or full papers (20 pages). The submission must clearly indicate which category it belongs to: research, position, project, evaluation, or overview paper. It should also indicate which authors are research students, and whether the main author(s) are students. A draft paper for which all authors are students will receive additional feedback by one of the PC members shortly after the symposium has taken place. == Format == Papers must be written in English, and written using the LNCS style. For more information about formatting please consult the Springer LNCS web site. == Program Committee == Program Co-chairs Nicolas Wu - Imperial College London Wouter Swierstra - Utrecht University The remainder of the PC will be announced on the conference website. From andreas.abel at ifi.lmu.de Thu Sep 30 07:22:36 2021 From: andreas.abel at ifi.lmu.de (Andreas Abel) Date: Thu, 30 Sep 2021 07:22:36 +0200 Subject: [Agda] Bizzare error In-Reply-To: References: <8869eec9-6eba-89a1-4b03-f6ad248c39c7@strath.ac.uk> Message-ID: I definitely see room for better UX, so, welcome to report this on the bug tracker. --Andreas On 2021-09-27 09:39, Philip Wadler wrote: > Thanks, that fixed it! I did untabify, but appear to have missed one (or > two). > > I am still amazed that a tab *in a comment* can cause a lexical error. > Is that a known feature? > > Go well, -- P > > . ? \ Philip Wadler, Professor of Theoretical Computer Science, > . ? /\ School of Informatics, University of Edinburgh > .? /? \ and Senior Research Fellow, IOHK > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > On Sat, 25 Sept 2021 at 16:27, James Wood > wrote: > > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain > that the email is genuine and the content is safe. > > Line 561 contains two tab characters. I guess Agda doesn't track > locations within comment blocks. > > Regards, > James > > On 25/09/2021 11:38, Philip Wadler wrote: > > CAUTION: This email originated outside the University. Check before > > clicking links or attachments. > > The attached file yields the following error when compiled via ^C^L: > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > > > Lexical error (you may want to replace tabs with spaces): > > refl > > > > However, if you delete the large commented portion that follows > line 522 > > it compiles perfectly well. What is the problem? What is a > workaround? > > > > I'm using > > Agda version 2.6.1.1-fce01db > > > > Go well, -- P > > > > .? ?\ Philip Wadler, Professor of Theoretical Computer Science, > > .? ?/\ School of Informatics, University of Edinburgh > > .? /? \ and Senior Research Fellow, IOHK > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > > > > > > > > > > The University of Edinburgh is a charitable body, registered in > > Scotland, with registration number SC005336. > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > From wadler at inf.ed.ac.uk Fri Oct 1 13:05:28 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Fri, 1 Oct 2021 12:05:28 +0100 Subject: [Agda] Bizzare error In-Reply-To: References: <8869eec9-6eba-89a1-4b03-f6ad248c39c7@strath.ac.uk> Message-ID: Thank you for the suggestion. Done! (And thank you to James Wood for pointing out the derelict tabs!) Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ On Thu, 30 Sept 2021 at 06:22, Andreas Abel wrote: > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > > I definitely see room for better UX, so, welcome to report this on the > bug tracker. --Andreas > > On 2021-09-27 09:39, Philip Wadler wrote: > > Thanks, that fixed it! I did untabify, but appear to have missed one (or > > two). > > > > I am still amazed that a tab *in a comment* can cause a lexical error. > > Is that a known feature? > > > > Go well, -- P > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > . /\ School of Informatics, University of Edinburgh > > . / \ and Senior Research Fellow, IOHK > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > > > > > > On Sat, 25 Sept 2021 at 16:27, James Wood > > wrote: > > > > This email was sent to you by someone outside the University. > > You should only click on links or attachments if you are certain > > that the email is genuine and the content is safe. > > > > Line 561 contains two tab characters. I guess Agda doesn't track > > locations within comment blocks. > > > > Regards, > > James > > > > On 25/09/2021 11:38, Philip Wadler wrote: > > > CAUTION: This email originated outside the University. Check > before > > > clicking links or attachments. > > > The attached file yields the following error when compiled via > ^C^L: > > > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > > > > > > > > > /Users/wadler/Desktop/Lambda.lagda.md:522 > > > > > > > > Lexical error (you may want to replace tabs with spaces): > > > refl > > > > > > However, if you delete the large commented portion that follows > > line 522 > > > it compiles perfectly well. What is the problem? What is a > > workaround? > > > > > > I'm using > > > Agda version 2.6.1.1-fce01db > > > > > > Go well, -- P > > > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > > . /\ School of Informatics, University of Edinburgh > > > . / \ and Senior Research Fellow, IOHK > > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > > > > > > > > > > > > > > > > > > > The University of Edinburgh is a charitable body, registered in > > > Scotland, with registration number SC005336. > > > > > > > > > _______________________________________________ > > > Agda mailing list > > > Agda at lists.chalmers.se > > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stvienna at gmail.com Fri Oct 1 20:31:45 2021 From: stvienna at gmail.com (stvienna wiener) Date: Fri, 1 Oct 2021 20:31:45 +0200 Subject: [Agda] Is there currently a Problem with the standard lib from git? Message-ID: Dear all, I'm using the agda standard lib from git: commit 853e309e55bdc80407564e44396751a84e8c55f0 ~/agda-stdlib/src/Data/Nat/DivMod.agda:205,1-47 Agda.Primitive.Cubical.primTransp (? i ? m / Agda.Primitive.Cubical.primComp (? i? ? ?) (? i? .o ? Agda.Primitive.Cubical.primPOr (Agda.Primitive.Cubical.primIMax (Agda.Primitive.Cubical.primINeg i) ?) i (? .o? ? suc m?) (? .o? ? x i?) _) (suc m?) ? n / x? i) ? (/-mono-? x? (s?s x?)) is not usable at the required modality when checking the definition of /-mono-? $ agda --version Agda version 2.6.3-78ea6d2 Is this a known error, or is there a problem on my agda configuration? Thanks & regards Steve (from Vienna) -------------- next part -------------- An HTML attachment was scrubbed... URL: From stvienna at gmail.com Fri Oct 1 20:52:37 2021 From: stvienna at gmail.com (stvienna wiener) Date: Fri, 1 Oct 2021 20:52:37 +0200 Subject: [Agda] Is there currently a Problem with the standard lib from git? In-Reply-To: References: Message-ID: Sorry, was a false alarm. I did everything again in a virtual machine and then it worked. Steve Am Fr., 1. Okt. 2021 um 20:31 Uhr schrieb stvienna wiener < stvienna at gmail.com>: > Dear all, > > I'm using the agda standard lib from git: > commit 853e309e55bdc80407564e44396751a84e8c55f0 > > ~/agda-stdlib/src/Data/Nat/DivMod.agda:205,1-47 > Agda.Primitive.Cubical.primTransp > (? i ? > m / > Agda.Primitive.Cubical.primComp (? i? ? ?) > (? i? .o ? > Agda.Primitive.Cubical.primPOr > (Agda.Primitive.Cubical.primIMax > (Agda.Primitive.Cubical.primINeg i) ?) > i (? .o? ? suc m?) (? .o? ? x i?) _) > (suc m?) > ? n / x? i) > ? (/-mono-? x? (s?s x?)) is not usable at the required modality > when checking the definition of /-mono-? > > $ agda --version > Agda version 2.6.3-78ea6d2 > > Is this a known error, or is there a problem on my agda configuration? > > Thanks & regards > > Steve > (from Vienna) > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From tarmo at cs.ioc.ee Mon Oct 4 21:31:57 2021 From: tarmo at cs.ioc.ee (Tarmo Uustalu) Date: Mon, 4 Oct 2021 22:31:57 +0300 Subject: [Agda] ETAPS 2022 final call for papers Message-ID: <20211004223157.6965348e@cs.ioc.ee> Paper submission deadline: 14 Oct 2021 23:59 AoE ****************************************************************** JOINT CALL FOR PAPERS 25th European Joint Conferences on Theory and Practice of Software ETAPS 2022 Munich, Germany, 2-7 April 2022 https://etaps.org/2022 ****************************************************************** -- ABOUT ETAPS -- ETAPS is the primary European forum for academic and industrial researchers working on topics relating to software science. ETAPS, established in 1998, is a confederation of four annual conferences, accompanied by satellite workshops. ETAPS 2022 is the twenty-fifth event in the series. -- MAIN CONFERENCES (4-7 April) -- * ESOP: European Symposium on Programming (PC chair: Ilya Sergey, Yale-NUS College and National University of Singapore, Singapore) * FASE: Fundamental Approaches to Software Engineering (PC chairs:Einar Broch Johnsen, University of Oslo, Norway, and Manuel Wimmer, Johannes Kepler Universit?t Linz, Austria) * FoSSaCS: Foundations of Software Science and Computation Structures (PC chairs: Patricia Bouyer, CNRS, LMF, France, and Lutz Schr?der, FAU Erlangen-N?rnberg, Germany) * TACAS: Tools and Algorithms for the Construction and Analysis of Systems (PC chairs: Dana Fisman, Ben-Gurion University of the Negev, Israel, and Grigore Rosu, University of Illinois at Urbana-Champaign, USA) TACAS '22 will host the 11th Competition on Software Verification (SV-COMP). -- INVITED SPEAKERS -- * Unifying speakers: Alexandra Silva (University College London, UK / Cornell University, USA) Tom?? Vojnar (Brno University of Technology, Czechia) * FoSSaCS invited speaker: Nathalie Bertrand (Inria Rennes, France) * TACAS invited speaker: Lenore Zuck (University of Illinois at Chicago, USA) * Tutorial speakers: Stacey Jeffery (CWI and QuSoft, The Netherlands) a further tutorial speaker tba -- IMPORTANT DATES * Paper submission (also, pre-paper-acceptance artifact registration (TACAS)): 14 October 2021 23:59 AoE * Pre-paper-acceptance artifact submission (TACAS): 4 November 2021 23:59 AoE * Rebuttal (ESOP, FoSSaCS and, partially, TACAS): 7 December 00:01 AoE - 9 December 2021 23:59 AoE * Paper notification: 23 December 2021 * Post-paper-acceptance artifact submission (ESOP, FASE, TACAS): 5 January 2022 23:59 AoE * Paper final versions: 26 January 2022 * Artifact notification: 16 February 2022 -- SUBMISSION INSTRUCTIONS -- The four main conferences of ETAPS 2022 solicit contributions of the following types. All page limits are given **excluding the bibliography**. * ESOP: regular research papers of max 25 pp * FASE: regular research papers and empirical evaluation papers of max 18 pp, new ideas and emerging results (NIER) papers of max 8 pp, tool demonstration papers of max 6 pp (+ mandatory appendix of max 6 pp), * FoSSaCS: regular research papers of max 18 pp * TACAS: regular research papers, case study papers and regular tool papers of max 16 pp, tool demonstration papers of max 6 pp For definitions of the different paper types and specific instructions, where they are present, see the webpages of the individual conferences. All accepted papers will appear in the proceedings and have presentations during the conference. A condition of submission is that, if the submission is accepted, one of the authors attends the conference to give the presentation. We plan ETAPS 2022 as a hybrid conference; remote attendance and presentation will be possible. Submitted papers must be in English presenting original research. They must be unpublished and not submitted for publication elsewhere. In particular, simultaneous submission of the same contribution to multiple ETAPS conferences is also forbidden. Submissions must follow the formatting guidelines of Springer's LNCS (use the llncs.cls class) and be submitted electronically in pdf through the Easychair author interface of the respective conference. Submissions not adhering to the specified format and length may be rejected immediately. ESOP and FASE will use **double-blind reviewing**. Authors are asked to omit their names and institutions; refer to prior work in the third person, just as prior work by others; not to include acknowledgements that might identify them. ESOP and FoSSaCS will use an **author rebuttal phase**. TACAS will use rebuttal for selected submissions (those in the gray zone). Artifact submission and evaluation Regular tool paper and tool demonstration paper submissions to TACAS must be accompanied by an artifact submitted shortly after the paper. The artifact will be evaluated and the outcome will be taken into account in the acceptance decision of the paper. For research paper and case study paper submissions, pre-paper-acceptance submission of an artifact is optional; if an artifact is submitted at this point, it will be handled like described above. Alternatively, authors of papers of these categories may submit an artifact for evaluation after the paper has been accepted. The outcome of the artifact evaluation will then not change the paper acceptance decision. ESOP and FASE will also have artifact evaluation, but participation in it is voluntary; the artifact submission deadline is after the paper notification deadline. The outcome will not alter the paper acceptance decision. For specific instructions regarding artifacts, see the webpages of the individual conferences. -- PUBLICATION The proceedings will be published in the Advanced Research in Computing and Software Science (ARCoSS) subline of Springer's LNCS series. The proceedings volumes will appear in gold open access, so the published versions of all papers will be available for everyone to download from the publisher's website freely, from the date of online publication, perpetually. The copyright of the papers will remain with the authors. -- BEST PAPER AWARDS The strongest papers of the four conferences will be nominated for the ETAPS best paper awards of EAPLS, EASST and EATCS. The ETAPS test of time award recognizes outstanding papers published at ETAPS more than 10 years in the past. -- SATELLITE EVENTS (2-3 April) -- A number of satellite workshops and other events will take place before the main conferences: CMCS, COOP, HCVS, LiVe, MARS, MSFP, PLACES, QAVS, RRRR, Rust Workshop, SynCop, VerifyThis, VPT, WRLA Also in the satellite events program is a Mentoring Workshop. For closer information, check https://etaps.org/2022/workshops . -- CITY AND HOST INSTITUTION -- Munich, Germany, is the capital and most populous city of Bavaria. Nowadays, the city is a global center of art, science, technology, finance, publishing, culture, innovation, education, business, and tourism. It is home to Ludwig Maximilian's University (LMU) and Technische Universit?t M?nchen (TUM), many scientific institutions, and world-class technology and science museums such as Deutsches Museum and BMW Museum. Iconic places to visit in Munich include the Munich Residenz, Marienplatz, the Old Town Hall, the famous Glockenspiel on the New Town Hall, the Frauenkirche, the English Garden, the Olympic Park and Nymphenburg Palace. The conference will be hosted by Technische Universit?t M?nchen. -- ORGANIZERS -- General chair: Jan K?et?nsk? (Technische Universit?t M?nchen, Germany) Workshops chair: Dirk Beyer (Ludwig-Maximilians Universit?t M?nchen, Germany) From mechvel at scico.botik.ru Tue Oct 5 15:29:54 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 05 Oct 2021 16:29:54 +0300 Subject: [Agda] Noetherian vs WellFounded Message-ID: Can people, please, explain: how can Agda treat the relation between the Noetherian property of an ordering _<_ and its property of WellFounded (of Induction.WellFounded of Standard library) ? A relation _<_ is called Noetherian iff there does not exist any infinite sequence descending by _<_. The matter is that many proofs in mathematics look like this: "This process terminates because it includes forming a descending sequence a? > a? > ..., while the relation _>_ is Noetherian ". For example, I have to prove a certain termination, while having * a proof for Noetherian _<_, * a proof for DecTotalOrder for _<_, * a certain proved bijection algorithm Carrier <--> ? (whithout preserving the ordering). And I wonder of how to prove this termination in Agda. * Is it possible to prove in Agda (Noetherian ==> Wellfounded) for any partial ordering _<_ ? * What additional condition (the more generic the better) can be sufficient for this proof? For example: a) a bijection algorithm Carrier <--> ? (whithout a given proof for preserving the ordering), or/and b) DecTotalOrder for _<_. * Is there a counter-example for (Noetherian ==> Wellfounded) ? * What can be the consequences of using, say, postulate Noetherian?WellFounded : ? (_<_ : of DecTotalOrder) ? Noetherian _<_ ? WellFounded _<_ all through an applied library? Thank you for possible explanation. Regards, From fdhzs2010 at hotmail.com Tue Oct 5 15:40:27 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Tue, 5 Oct 2021 13:40:27 +0000 Subject: [Agda] Noetherian vs WellFounded In-Reply-To: References: Message-ID: how do you write down Noetherian in Agda? I'd imagine an infinite sequence is a function from Nat to A (your type comparable by _<_)? so Noetherian is something like "given an infinite sequence f, not (for all Nat n, f (1 + n) < f n)"? Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Agda on behalf of mechvel at scico.botik.ru Sent: October 5, 2021 9:29 AM To: agda at lists.chalmers.se Subject: [Agda] Noetherian vs WellFounded Can people, please, explain: how can Agda treat the relation between the Noetherian property of an ordering _<_ and its property of WellFounded (of Induction.WellFounded of Standard library) ? A relation _<_ is called Noetherian iff there does not exist any infinite sequence descending by _<_. The matter is that many proofs in mathematics look like this: "This process terminates because it includes forming a descending sequence a? > a? > ..., while the relation _>_ is Noetherian ". For example, I have to prove a certain termination, while having * a proof for Noetherian _<_, * a proof for DecTotalOrder for _<_, * a certain proved bijection algorithm Carrier <--> ? (whithout preserving the ordering). And I wonder of how to prove this termination in Agda. * Is it possible to prove in Agda (Noetherian ==> Wellfounded) for any partial ordering _<_ ? * What additional condition (the more generic the better) can be sufficient for this proof? For example: a) a bijection algorithm Carrier <--> ? (whithout a given proof for preserving the ordering), or/and b) DecTotalOrder for _<_. * Is there a counter-example for (Noetherian ==> Wellfounded) ? * What can be the consequences of using, say, postulate Noetherian?WellFounded : ? (_<_ : of DecTotalOrder) ? Noetherian _<_ ? WellFounded _<_ all through an applied library? Thank you for possible explanation. Regards, _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Tue Oct 5 16:35:04 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 05 Oct 2021 17:35:04 +0300 Subject: [Agda] Noetherian vs WellFounded In-Reply-To: References: Message-ID: <141b73052877f965fc62810dfe9d7a46@scico.botik.ru> On 2021-10-05 16:40, Jason Hu wrote: > how do you write down Noetherian in Agda? I'd imagine an infinite > sequence is a function from Nat to A (your type comparable by _<_)? so > Noetherian is something like "given an infinite sequence f, not (for > all Nat n, f (1 + n) < f n)"? Noetherian _<_ = ? (f : ? ? A) ? ? (\n ? ? (f n > f (suc n))) Here _>_ = flip _<_, and the existence ? is constructive: ? A (\n ? ? (f n > f (suc n)) -- SM > Thanks, > Jason Hu > https://hustmphrrr.github.io/ > > ------------------------- > > From: Agda on behalf of > mechvel at scico.botik.ru > Sent: October 5, 2021 9:29 AM > To: agda at lists.chalmers.se > Subject: [Agda] Noetherian vs WellFounded > > Can people, please, explain: > > how can Agda treat the relation between the Noetherian property of an > ordering _<_ > and its property of WellFounded > (of Induction.WellFounded of Standard library) ? > > A relation _<_ is called Noetherian iff there does not exist any > infinite sequence descending by _<_. > > The matter is that many proofs in mathematics look like this: > "This process terminates because it includes forming a descending > sequence a? > a? > ..., > while the relation _>_ is Noetherian > ". > > For example, I have to prove a certain termination, while having > * a proof for Noetherian _<_, > * a proof for DecTotalOrder for _<_, > * a certain proved bijection algorithm Carrier <--> ? > (whithout preserving the ordering). > > And I wonder of how to prove this termination in Agda. > > * Is it possible to prove in Agda (Noetherian ==> Wellfounded) > for any partial ordering _<_ ? > > * What additional condition (the more generic the better) can be > sufficient for this proof? > For example: > a) a bijection algorithm Carrier <--> ? > (whithout a given proof for preserving the ordering), > or/and > b) DecTotalOrder for _<_. > > * Is there a counter-example for (Noetherian ==> Wellfounded) ? > > * What can be the consequences of using, say, > postulate > Noetherian?WellFounded : > ? (_<_ : of DecTotalOrder) ? Noetherian _<_ ? WellFounded > _<_ > > all through an applied library? > > Thank you for possible explanation. > > Regards, > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From m.escardo at cs.bham.ac.uk Tue Oct 5 17:18:45 2021 From: m.escardo at cs.bham.ac.uk (Martin Escardo) Date: Tue, 5 Oct 2021 16:18:45 +0100 Subject: [Agda] Noetherian vs WellFounded In-Reply-To: References: Message-ID: You may wish to look here: https://mathoverflow.net/questions/239560/noetherian-rings-in-constructive-mathematics Martin On 05/10/2021 14:29, mechvel at scico.botik.ru wrote: > Can people, please, explain: > > how can Agda treat the relation between the Noetherian property of an > ordering _<_ > and its property of WellFounded > (of Induction.WellFounded of Standard library) ? > > A relation _<_ is called Noetherian iff there does not exist any > infinite sequence descending by _<_. > > The matter is that many proofs in mathematics look like this: > "This process terminates because it includes forming a descending > sequence? a? > a? > ..., > while the relation _>_ is Noetherian > ". > > For example, I have to prove a certain termination, while having > * a proof for Noetherian _<_, > * a proof for DecTotalOrder for _<_, > * a certain proved bijection algorithm Carrier <--> ? > ? (whithout preserving the ordering). > > And I wonder of how to prove this termination in Agda. > > > * Is it possible to prove in Agda? (Noetherian ==> Wellfounded) > ? for any partial ordering _<_ ? > > * What additional condition (the more generic the better) can be > sufficient for this proof? > ? For example: > ? a) a bijection algorithm Carrier <--> ? > ???? (whithout a given proof for preserving the ordering), > ? or/and > ? b) DecTotalOrder for _<_. > > * Is there a counter-example for (Noetherian ==> Wellfounded) ? > > * What can be the consequences of using, say, > ? postulate > ??? Noetherian?WellFounded : > ????? ? (_<_ : of DecTotalOrder) ? Noetherian _<_ ? WellFounded _<_ > > ? all through an applied library? > > > Thank you for possible explanation. > > Regards, > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda -- Martin Escardo http://www.cs.bham.ac.uk/~mhe From mechvel at scico.botik.ru Tue Oct 5 21:58:36 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 05 Oct 2021 22:58:36 +0300 Subject: [Agda] Noetherian vs WellFounded In-Reply-To: References: Message-ID: <94f1f169a7bd48d37963954da41d51e9@scico.botik.ru> On 2021-10-05 18:18, Martin Escardo wrote: > You may wish to look here: > > https://mathoverflow.net/questions/239560/noetherian-rings-in-constructive-mathematics > No, my subject is much simpler than ascending ideals in rings. Ideals are infinite sets, and I have only integer points on the plane. This relates to a normal form algorithm NF for multivariate polynomials. There is only Carrier = PP = ? ? ? -- "power product" Generally there are n components, but n = 2 is sufficient to test the approach. And there are _<_ : Rel PP _, _+'_ : PP ? PP ? PP defined as the pointwise addition. Axioms of _admissible ordering_ on PP: (A1) _<_ is of DecTotalOrder, (A2) ? e ? Nonzero e ? (0 , 0) < e, (A3) ? (e e' d) ? e < e' ? e +' d < e' +' d Let _<_ be admissible. This is not so easy, but it can be proved in Agda that _<_ is Noetherian. First one needs to prove the Dickson's lemma. After this, it is easy to prove Noetherian _<_. The NF algorithm includes forming a sequence in PP recursively from e to e', where e > e'. It is evident that Noetherian _<_ is a nice and regular base for the termination proof for NF. But I do not see how to derive WellFounded in this case. There is a certain nice classification for the admissible orderings. One may hope to use this classification to prove WellFounded. But a) to prove this classification is Agda will be extremely difficult, if ever possible, b) to prove in Agda WellFounded from this classification will also be difficult, if possible. And using Dickson => (Noetherian _<_) => terminating is nice and surely gives the result. -- SM > On 05/10/2021 14:29, mechvel at scico.botik.ru wrote: >> Can people, please, explain: >> >> how can Agda treat the relation between the Noetherian property of an >> ordering _<_ >> and its property of WellFounded >> (of Induction.WellFounded of Standard library) ? >> >> A relation _<_ is called Noetherian iff there does not exist any >> infinite sequence descending by _<_. >> >> The matter is that many proofs in mathematics look like this: >> "This process terminates because it includes forming a descending >> sequence? a? > a? > ..., >> while the relation _>_ is Noetherian >> ". >> >> For example, I have to prove a certain termination, while having >> * a proof for Noetherian _<_, >> * a proof for DecTotalOrder for _<_, >> * a certain proved bijection algorithm Carrier <--> ? >> ? (whithout preserving the ordering). >> >> And I wonder of how to prove this termination in Agda. >> >> >> * Is it possible to prove in Agda? (Noetherian ==> Wellfounded) >> ? for any partial ordering _<_ ? >> >> * What additional condition (the more generic the better) can be >> sufficient for this proof? >> ? For example: >> ? a) a bijection algorithm Carrier <--> ? >> ???? (whithout a given proof for preserving the ordering), >> ? or/and >> ? b) DecTotalOrder for _<_. >> >> * Is there a counter-example for (Noetherian ==> Wellfounded) ? >> >> * What can be the consequences of using, say, >> ? postulate >> ??? Noetherian?WellFounded : >> ????? ? (_<_ : of DecTotalOrder) ? Noetherian _<_ ? WellFounded _<_ >> >> ? all through an applied library? >> >> >> Thank you for possible explanation. >> >> Regards, >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda From selinger at mathstat.dal.ca Thu Oct 7 05:11:36 2021 From: selinger at mathstat.dal.ca (selinger at mathstat.dal.ca) Date: Thu, 7 Oct 2021 00:11:36 -0300 (ADT) Subject: [Agda] lectures on Agda Message-ID: Hi all, I gave a course on Agda this year, and have now made it available on this website: https://www.mathstat.dal.ca/~selinger/agda-lectures/ I don't know who maintains the list of courses at https://agda.readthedocs.io/en/latest/getting-started/tutorial-list.html, but if whoever does that could add my course to that list, that would be great! Thanks, -- Peter From Jesper at sikanda.be Thu Oct 7 09:26:16 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Thu, 7 Oct 2021 09:26:16 +0200 Subject: [Agda] lectures on Agda In-Reply-To: References: Message-ID: Hi Peter, The list is maintained as part of the Agda github at https://github.com/agda/agda/blob/master/doc/user-manual/getting-started/tutorial-list.rst. Feel free to make a PR to add a link to your course! -- Jesper On Thu, Oct 7, 2021 at 5:12 AM wrote: > Hi all, > > I gave a course on Agda this year, and have now made it available on > this website: > > https://www.mathstat.dal.ca/~selinger/agda-lectures/ > > I don't know who maintains the list of courses at > https://agda.readthedocs.io/en/latest/getting-started/tutorial-list.html, > but if whoever does that could add my course to that list, that would > be great! > > Thanks, -- Peter > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bladyjoker at gmail.com Thu Oct 7 12:18:46 2021 From: bladyjoker at gmail.com (Drazen Popovic) Date: Thu, 7 Oct 2021 12:18:46 +0200 Subject: [Agda] lectures on Agda In-Reply-To: References: Message-ID: Hi Peter, I watched a couple of lectures and enjoyed them a lot! Especially the tactics lectures. Thanks a lot for making this available. Regards, Drazen On Thu, 7 Oct 2021 at 05:11, wrote: > Hi all, > > I gave a course on Agda this year, and have now made it available on > this website: > > https://www.mathstat.dal.ca/~selinger/agda-lectures/ > > I don't know who maintains the list of courses at > https://agda.readthedocs.io/en/latest/getting-started/tutorial-list.html, > but if whoever does that could add my course to that list, that would > be great! > > Thanks, -- Peter > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From selinger at mathstat.dal.ca Thu Oct 7 18:04:03 2021 From: selinger at mathstat.dal.ca (selinger at mathstat.dal.ca) Date: Thu, 7 Oct 2021 13:04:03 -0300 (ADT) Subject: [Agda] lectures on Agda In-Reply-To: Message-ID: Hi Jesper, thanks, I created a pull request, and it failed with some "whitespace issue". Speficially, the script $HOME/.local/bin/fix-whitespace --check apparently failed. But I don't know what that script is checking or how to fix it. I just followed the same syntax as the other entries in that file. I'm hoping that someone who knows what this is about could have a look. Thanks, -- Peter Jesper Cockx wrote: > > Hi Peter, > > The list is maintained as part of the Agda github at https://github.com/agda/agda/blob/master/doc/user-manual/getting-started/tutorial-list.rst. Feel free to make a PR to add a link to your course! > > -- Jesper > > On Thu, Oct 7, 2021 at 5:12 AM > wrote: > Hi all, > > I gave a course on Agda this year, and have now made it available on > this website: > > https://www.mathstat.dal.ca/~selinger/agda-lectures/ > > I don't know who maintains the list of courses at > https://agda.readthedocs.io/en/latest/getting-started/tutorial-list.html, > but if whoever does that could add my course to that list, that would > be great! > > Thanks, -- Peter > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From wadler at inf.ed.ac.uk Sat Oct 9 17:32:51 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Sat, 9 Oct 2021 16:32:51 +0100 Subject: [Agda] Congruence rules vs frames Message-ID: Most mechanised formulations of reduction systems, such as those found in Software Foundations or in Programming Language Foundations in Agda, use one congruence rule for each evaluation context: ?-?? : ? {L L? M} ? L ?? L? ----------------- ? L ? M ?? L? ? M ?-?? : ? {V M M?} ? Value V ? M ?? M? ----------------- ? V ? M ?? V ? M? One might instead define frames that specify evaluation contexts and have a single congruence rule. data Frame : Set where ?? : Term ? Frame ?? : (V : Term) ? Value V ? Frame _[_] : Frame ? Term ? Term (?? M) [ L ] = L ? M (?? V _) [ M ] = V ? M ? : ? F {M M?} ? M ?? M? ------------------- ? F [ M ] ?? F [ M? ] However, one rapidly gets into problems. For instance, consider the proof that types are preserved by reduction. preserve : ? {M N A} ? ? ? M ? A ? M ?? N ---------- ? ? ? N ? A ... preserve (?L ? ?M) (? (?? _) L??L?) = (preserve ?L L??L?) ? ?M preserve (?L ? ?M) (? (?? _ _) M??M?) = ?L ? (preserve ?M M??M?) ... The first of these two lines gives an error message: I'm not sure if there should be a case for the constructor ?, because I get stuck when trying to solve the following unification problems (inferred index ? expected index): F [ M ] ? L ? M? F [ M? ] ? N when checking that the pattern ? (?? _) L??L? has type L ? M ?? N And the second provokes a similar error. This explains why so many formulations use one congruence rule for each evaluation context. But is there a way to make the approach with a single congruence rule work? Any citations to such approaches in the literature? Thank you for your help. Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: not available URL: From u.zalakain.1 at research.gla.ac.uk Sat Oct 9 17:46:29 2021 From: u.zalakain.1 at research.gla.ac.uk (Uma Zalakain (PGR)) Date: Sat, 9 Oct 2021 15:46:29 +0000 Subject: [Agda] Congruence rules vs frames In-Reply-To: References: Message-ID: I believe the problem here is the use of function applications (_[_]) as indices of a data type (_??_) by a constructor (?). Transforming the binary function into a ternary relation might solve the issue , and functionality can be recovered later, though the downside is that you will end up with two extra arguments in the constructor. ~uma ________________________________________ From: Agda on behalf of Philip Wadler Sent: 09 October 2021 16:32 To: Types list; Agda mailing list Subject: [Agda] Congruence rules vs frames Most mechanised formulations of reduction systems, such as those found in Software Foundations or in Programming Language Foundations in Agda, use one congruence rule for each evaluation context: ?-?? : ? {L L? M} ? L ?? L? ----------------- ? L ? M ?? L? ? M ?-?? : ? {V M M?} ? Value V ? M ?? M? ----------------- ? V ? M ?? V ? M? One might instead define frames that specify evaluation contexts and have a single congruence rule. data Frame : Set where ?? : Term ? Frame ?? : (V : Term) ? Value V ? Frame _[_] : Frame ? Term ? Term (?? M) [ L ] = L ? M (?? V _) [ M ] = V ? M ? : ? F {M M?} ? M ?? M? ------------------- ? F [ M ] ?? F [ M? ] However, one rapidly gets into problems. For instance, consider the proof that types are preserved by reduction. preserve : ? {M N A} ? ? ? M ? A ? M ?? N ---------- ? ? ? N ? A ... preserve (?L ? ?M) (? (?? _) L??L?) = (preserve ?L L??L?) ? ?M preserve (?L ? ?M) (? (?? _ _) M??M?) = ?L ? (preserve ?M M??M?) ... The first of these two lines gives an error message: I'm not sure if there should be a case for the constructor ?, because I get stuck when trying to solve the following unification problems (inferred index ? expected index): F [ M ] ? L ? M? F [ M? ] ? N when checking that the pattern ? (?? _) L??L? has type L ? M ?? N And the second provokes a similar error. This explains why so many formulations use one congruence rule for each evaluation context. But is there a way to make the approach with a single congruence rule work? Any citations to such approaches in the literature? Thank you for your help. Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ From jsiek at indiana.edu Sun Oct 10 03:51:03 2021 From: jsiek at indiana.edu (Siek, Jeremy) Date: Sun, 10 Oct 2021 01:51:03 +0000 Subject: [Agda] [TYPES] Congruence rules vs frames In-Reply-To: References: Message-ID: <618F7C3A-3547-49F3-84EF-FFD1809F015B@indiana.edu> The Decomposition / Composition Lemmas work for Frames too, provided they are typed analogously to how evaluation contexts are typed below. -Jeremy > On Oct 9, 2021, at 5:14 PM, Derek Dreyer wrote: > > ?[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] > > Hi, Phil. > > Yes, there is a way to make the single congruence rule work. See for > example the way I set things up in my Semantics course notes (see > Section 1.2): https://urldefense.com/v3/__https://courses.ps.uni-saarland.de/sem_ws1920/dl/21/lecture_notes_2nd_half.pdf__;!!IBzWLUs!G2Y7fSLG9GkuFfn_pRKp5yvrMo1tv78em8j3kc4xuW-yBS3NZuhJ49Y6sdougc4yziUkPf0h6W8$ > > (Note: the general approach described below is not original, but my > version may be easier to mechanize than others. Earlier work, such as > Wright-Felleisen 94 and Harper-Stone 97, presents variations on this > -- they use the term Replacement Lemma -- that I think are a bit > clunkier and/or more annoying to mechanize. Wright-Felleisen cites > Hindley-Seldin for this Replacement Lemma. In my version, the > Replacement Lemma is broken into two lemmas -- Decomposition and > Composition -- by defining a typing judgment for evaluation contexts.) > > Under this approach, you: > > 1. Divide the definition of reduction into two relations: let's call > them "base reduction" and "full reduction". The base one has all the > interesting basic reduction rules that actually do something (e.g. > beta). The full one has just one rule, which handles all the "search" > cases via eval ctxts: it says that K[e] reduces to K[e'] iff e > base-reduces to e'. I believe it isn't strictly necessary to separate > into two relations, but I've tried it without separating, and it makes > the proof significantly cleaner to separate. > > 2. Define a notion of evaluation context typing K : A => B (signifying > that K takes a hole of type A and returns a term of type B). This is > the key part that many other accounts skip, but it makes things > cleaner. > > With eval ctxt typing in hand, we can now prove the following two very > easy lemmas (each requires like only 1 or 2 lines of Coq): > > 3. Decomposition Lemma: If K[e] : B, then there exists A such that K : > A => B and e : A. > > 4. Composition Lemma, If K : A => B and e : A, then K[e] : B. > > (Without eval ctxt typing, you have to state and prove these lemmas as > one joint Replacement lemma.) > > Then, to prove preservation, you first prove preservation for base > reduction in the usual way. Then, the proof of preservation for full > reduction follows immediately by wrapping the base-reduction > preservation lemma with calls to Decomposition and Composition (again, > just a few lines of Coq). > > My Semantics course notes just show this on pen and paper, but my > students have also mechanized it in Coq, and we will be using that in > the newest version of my course this fall. It is quite > straightforward. The Coq source for the course is still in > development at the moment, but I can share it with you if you're > interested. I would be interested to know if for some reason this > proof structure is harder to mechanize in Agda. > > Best wishes, > Derek > > >> On Sat, Oct 9, 2021 at 8:55 PM Philip Wadler wrote: >> >> [ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] >> >> Most mechanised formulations of reduction systems, such as those found in >> Software Foundations or in Programming Language Foundations in Agda, use >> one congruence rule for each evaluation context: >> >> ?-?? : ? {L L? M} >> ? L ?? L? >> ----------------- >> ? L ? M ?? L? ? M >> >> ?-?? : ? {V M M?} >> ? Value V >> ? M ?? M? >> ----------------- >> ? V ? M ?? V ? M? >> >> One might instead define frames that specify evaluation contexts and have a >> single congruence rule. >> >> data Frame : Set where >> ?? : Term ? Frame >> ?? : (V : Term) ? Value V ? Frame >> >> _[_] : Frame ? Term ? Term >> (?? M) [ L ] = L ? M >> (?? V _) [ M ] = V ? M >> >> ? : ? F {M M?} >> ? M ?? M? >> ------------------- >> ? F [ M ] ?? F [ M? ] >> >> However, one rapidly gets into problems. For instance, consider the proof >> that types are preserved by reduction. >> >> preserve : ? {M N A} >> ? ? ? M ? A >> ? M ?? N >> ---------- >> ? ? ? N ? A >> ... >> preserve (?L ? ?M) (? (?? _) L??L?) = (preserve ?L L??L?) ? ?M >> preserve (?L ? ?M) (? (?? _ _) M??M?) = ?L ? (preserve ?M M??M?) >> ... >> >> The first of these two lines gives an error message: >> >> I'm not sure if there should be a case for the constructor ?, >> because I get stuck when trying to solve the following unification >> problems (inferred index ? expected index): >> F [ M ] ? L ? M? >> F [ M? ] ? N >> when checking that the pattern ? (?? _) L??L? has type L ? M ?? N >> >> And the second provokes a similar error. >> >> This explains why so many formulations use one congruence rule for each >> evaluation context. But is there a way to make the approach with a single >> congruence rule work? Any citations to such approaches in the literature? >> >> Thank you for your help. Go well, -- P >> >> >> >> . \ Philip Wadler, Professor of Theoretical Computer Science, >> . /\ School of Informatics, University of Edinburgh >> . / \ and Senior Research Fellow, IOHK >> . https://urldefense.com/v3/__http://homepages.inf.ed.ac.uk/wadler/__;!!IBzWLUs!EIYnAk7pSQVJFwJaONabTO_JqymiXUpQnVqKBbbpFSiJ_flduU6cOIjOgNtqMC_UDbn50dUukp4$ >> The University of Edinburgh is a charitable body, registered in >> Scotland, with registration number SC005336. From wadler at inf.ed.ac.uk Sun Oct 10 15:15:27 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Sun, 10 Oct 2021 14:15:27 +0100 Subject: [Agda] [TYPES] Congruence rules vs frames In-Reply-To: References: Message-ID: Thanks, Derek, and everyone else. I am asking for a friend. (Literally!) The friend's situation is adapting theory to a more realistic language with more constructs. As the number of constructs grows, the disadvantage of one congruence rule for each construct grows, and the advantages of contexts or frames become more pronounced. In our informal developments the advantage of contexts or frames is that they capture commonality in the rules, resulting in less ink on the page. However, if I read Derek's advice correctly, using contexts or frames doesn't save much ink. The ink that would have been required from writing down the congruence rules and the corresponding cases in the proofs now goes into writing down the corresponding cases in the composition and decomposition lemmas. Jules points out a neat trick that saves effort for a proof of preservation, but that won't help elsewhere. For instance, I first ran into the problem when trying to prove something simpler than preservation: that if a term is a value then no reduction applies. Apparently, identifying a commonality in the statement of the rules doesn't mean the properties of the rules get proved uniformly, they still require the same work as if the congruence rules were given separately. Alas, there is no free lunch. I managed to carry out a proof along the lines described by Derek and Jules, but it used more ink (and more think!) than my original proof using a congruence rule for each constructor. In this, as in much else, I find myself agreeing with Bob. Have I got that right? Or is there a magic bullet that I'm missing? Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ On Sat, 9 Oct 2021 at 22:12, Derek Dreyer wrote: > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > > Hi, Phil. > > Yes, there is a way to make the single congruence rule work. See for > example the way I set things up in my Semantics course notes (see > Section 1.2): > https://courses.ps.uni-saarland.de/sem_ws1920/dl/21/lecture_notes_2nd_half.pdf > > (Note: the general approach described below is not original, but my > version may be easier to mechanize than others. Earlier work, such as > Wright-Felleisen 94 and Harper-Stone 97, presents variations on this > -- they use the term Replacement Lemma -- that I think are a bit > clunkier and/or more annoying to mechanize. Wright-Felleisen cites > Hindley-Seldin for this Replacement Lemma. In my version, the > Replacement Lemma is broken into two lemmas -- Decomposition and > Composition -- by defining a typing judgment for evaluation contexts.) > > Under this approach, you: > > 1. Divide the definition of reduction into two relations: let's call > them "base reduction" and "full reduction". The base one has all the > interesting basic reduction rules that actually do something (e.g. > beta). The full one has just one rule, which handles all the "search" > cases via eval ctxts: it says that K[e] reduces to K[e'] iff e > base-reduces to e'. I believe it isn't strictly necessary to separate > into two relations, but I've tried it without separating, and it makes > the proof significantly cleaner to separate. > > 2. Define a notion of evaluation context typing K : A => B (signifying > that K takes a hole of type A and returns a term of type B). This is > the key part that many other accounts skip, but it makes things > cleaner. > > With eval ctxt typing in hand, we can now prove the following two very > easy lemmas (each requires like only 1 or 2 lines of Coq): > > 3. Decomposition Lemma: If K[e] : B, then there exists A such that K : > A => B and e : A. > > 4. Composition Lemma, If K : A => B and e : A, then K[e] : B. > > (Without eval ctxt typing, you have to state and prove these lemmas as > one joint Replacement lemma.) > > Then, to prove preservation, you first prove preservation for base > reduction in the usual way. Then, the proof of preservation for full > reduction follows immediately by wrapping the base-reduction > preservation lemma with calls to Decomposition and Composition (again, > just a few lines of Coq). > > My Semantics course notes just show this on pen and paper, but my > students have also mechanized it in Coq, and we will be using that in > the newest version of my course this fall. It is quite > straightforward. The Coq source for the course is still in > development at the moment, but I can share it with you if you're > interested. I would be interested to know if for some reason this > proof structure is harder to mechanize in Agda. > > Best wishes, > Derek > > > On Sat, Oct 9, 2021 at 8:55 PM Philip Wadler wrote: > > > > [ The Types Forum, > http://lists.seas.upenn.edu/mailman/listinfo/types-list ] > > > > Most mechanised formulations of reduction systems, such as those found in > > Software Foundations or in Programming Language Foundations in Agda, use > > one congruence rule for each evaluation context: > > > > ?-?? : ? {L L? M} > > ? L ?? L? > > ----------------- > > ? L ? M ?? L? ? M > > > > ?-?? : ? {V M M?} > > ? Value V > > ? M ?? M? > > ----------------- > > ? V ? M ?? V ? M? > > > > One might instead define frames that specify evaluation contexts and > have a > > single congruence rule. > > > > data Frame : Set where > > ?? : Term ? Frame > > ?? : (V : Term) ? Value V ? Frame > > > > _[_] : Frame ? Term ? Term > > (?? M) [ L ] = L ? M > > (?? V _) [ M ] = V ? M > > > > ? : ? F {M M?} > > ? M ?? M? > > ------------------- > > ? F [ M ] ?? F [ M? ] > > > > However, one rapidly gets into problems. For instance, consider the proof > > that types are preserved by reduction. > > > > preserve : ? {M N A} > > ? ? ? M ? A > > ? M ?? N > > ---------- > > ? ? ? N ? A > > ... > > preserve (?L ? ?M) (? (?? _) L??L?) = (preserve ?L L??L?) ? ?M > > preserve (?L ? ?M) (? (?? _ _) M??M?) = ?L ? (preserve ?M M??M?) > > ... > > > > The first of these two lines gives an error message: > > > > I'm not sure if there should be a case for the constructor ?, > > because I get stuck when trying to solve the following unification > > problems (inferred index ? expected index): > > F [ M ] ? L ? M? > > F [ M? ] ? N > > when checking that the pattern ? (?? _) L??L? has type L ? M ?? N > > > > And the second provokes a similar error. > > > > This explains why so many formulations use one congruence rule for each > > evaluation context. But is there a way to make the approach with a single > > congruence rule work? Any citations to such approaches in the literature? > > > > Thank you for your help. Go well, -- P > > > > > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > . /\ School of Informatics, University of Edinburgh > > . / \ and Senior Research Fellow, IOHK > > . > https://urldefense.com/v3/__http://homepages.inf.ed.ac.uk/wadler/__;!!IBzWLUs!EIYnAk7pSQVJFwJaONabTO_JqymiXUpQnVqKBbbpFSiJ_flduU6cOIjOgNtqMC_UDbn50dUukp4$ > > The University of Edinburgh is a charitable body, registered in > > Scotland, with registration number SC005336. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From 33dbqnxpy7if at gmail.com Mon Oct 11 22:42:37 2021 From: 33dbqnxpy7if at gmail.com (Serge Leblanc) Date: Mon, 11 Oct 2021 22:42:37 +0200 Subject: [Agda] Random number generator. Message-ID: <30fc1992-a398-59db-4397-020b804a1814@gmail.com> Hi, Can someone send me an example of reading the urandom file char by char. Please. Thanks. -- Serge Leblanc ------------------------------------------------------------------------ GnuPG Fingerprint = 123E 9312 453A 8F8E 7FDB ABD7 D2B8 A282 5F8D ABB7 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0xD2B8A2825F8DABB7.asc Type: application/pgp-keys Size: 654 bytes Desc: OpenPGP public key URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 236 bytes Desc: OpenPGP digital signature URL: From 33dbqnxpy7if at gmail.com Mon Oct 11 22:43:09 2021 From: 33dbqnxpy7if at gmail.com (Serge Leblanc) Date: Mon, 11 Oct 2021 22:43:09 +0200 Subject: [Agda] Random number generator. Message-ID: <477425c0-331b-2689-f332-be79a112f8b9@gmail.com> Hi, Can someone send me an example of reading the urandom file char by char. Please. Thanks. -- Serge Leblanc ------------------------------------------------------------------------ GnuPG Fingerprint = 123E 9312 453A 8F8E 7FDB ABD7 D2B8 A282 5F8D ABB7 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0xD2B8A2825F8DABB7.asc Type: application/pgp-keys Size: 654 bytes Desc: OpenPGP public key URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 236 bytes Desc: OpenPGP digital signature URL: From lukas.stoll at math.uni-augsburg.de Tue Oct 12 16:43:05 2021 From: lukas.stoll at math.uni-augsburg.de (Lukas Stoll) Date: Tue, 12 Oct 2021 16:43:05 +0200 Subject: [Agda] Definition of Modal Operators Message-ID: <5f586d05-9b42-9975-2b8c-d2d6aedab72c@math.uni-augsburg.de> Dear all, a modal operator, as defined in [1], is a map defined on all universes. I was suprised to learn that the following definition works in agda: record ModalOperator : Set? where field ? : {? : Level} ? Type ? ? Type ? ? : A ? ? A Do you think this is a good definition for a modal operator? Best Regards, Lukas [1]: Rijke, Shulman, Spitters. "Modalities in homotopy type theory". https://arxiv.org/abs/1706.07526 From 33dbqnxpy7if at gmail.com Sat Oct 16 13:13:02 2021 From: 33dbqnxpy7if at gmail.com (Serge Leblanc) Date: Sat, 16 Oct 2021 13:13:02 +0200 Subject: [Agda] Using Haskell randomRIO functions from Agda Message-ID: Hi, could someone explain to me how to adapt the aguments in my primRandomRIO function? {-# OPTIONS --guardedness #-} module Random2 where ? import IO.Primitive as Prim ? open import IO ? open import Agda.Builtin.Char ? randomRIO : Char ? Char ? IO Char ? randomRIO lo hi = lift (primRandomRIO lo hi) where ??? postulate ????? primRandomRIO : Char ? Char ? Prim.IO Char ??? {-# FOREIGN GHC import qualified System.Random as Random #-} ??? {-# COMPILE GHC primRandomRIO = \ _ l h -> Random.randomRIO (l , h) #-} ? open import Agda.Builtin.String using (primShowChar) ? open import Function ? main : Main ? main = run $ randomRIO 'a' 'z' >>=? putStrLn ? primShowChar Thanks. Compiling Random2 in /home/serge/agda/Random2.agdai to /home/serge/agda/MAlonzo/Code/Random2.hs Calling: ghc -O -o /home/serge/agda/Random2 -Werror -i/home/serge/agda -main-is MAlonzo.Code.Random2 /home/serge/agda/MAlonzo/Code/Random2.hs --make -fwarn-incomplete-patterns -fno-warn-overlapping-patterns [13 of 13] Compiling MAlonzo.Code.Random2 ( /home/serge/agda/MAlonzo/Code/Random2.hs, /home/serge/agda/MAlonzo/Code/Random2.o ) Compilation error: /home/serge/agda/MAlonzo/Code/Random2.hs:32:18: error: ??? ? Couldn't match type ?Char? ???????????????????? with ?IO MAlonzo.Code.Agda.Builtin.Char.T6? ????? Expected type: MAlonzo.Code.Agda.Builtin.Char.T6 ???????????????????? -> MAlonzo.Code.Agda.Builtin.IO.T8 ????????????????????????? () MAlonzo.Code.Agda.Builtin.Char.T6 ??????? Actual type: MAlonzo.Code.Agda.Builtin.Char.T6 ???????????????????? -> MAlonzo.Code.Agda.Builtin.Char.T6 ??? ? In the expression: Random.randomRIO (l, h) ????? In the expression: \ _ l h -> Random.randomRIO (l, h) ????? In an equation for ?d12?: d12 = \ _ l h -> Random.randomRIO (l, h) ?? | 32 | d12 = \ _ l h -> Random.randomRIO (l , h) ?? |????????????????? ^^^^^^^^^^^^^^^^^^^^^^^^ -- Serge Leblanc ------------------------------------------------------------------------ GnuPG Fingerprint = 123E 9312 453A 8F8E 7FDB ABD7 D2B8 A282 5F8D ABB7 -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- {-# OPTIONS --guardedness #-} module Random2 where import IO.Primitive as Prim open import IO open import Agda.Builtin.Char randomRIO : Char ? Char ? IO Char randomRIO lo hi = lift (primRandomRIO lo hi) where postulate primRandomRIO : Char ? Char ? Prim.IO Char {-# FOREIGN GHC import qualified System.Random as Random #-} {-# COMPILE GHC primRandomRIO = \ _ l h -> Random.randomRIO (l , h) #-} open import Agda.Builtin.String using (primShowChar) open import Function main : Main main = run $ randomRIO 'a' 'z' >>= putStrLn ? primShowChar -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0xD2B8A2825F8DABB7.asc Type: application/pgp-keys Size: 654 bytes Desc: OpenPGP public key URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 236 bytes Desc: OpenPGP digital signature URL: From andreeac at comp.nus.edu.sg Mon Oct 18 09:05:54 2021 From: andreeac at comp.nus.edu.sg (Andreea Costea) Date: Mon, 18 Oct 2021 15:05:54 +0800 Subject: [Agda] Looking for ESOP'22 AEC members Message-ID: For the first time since its foundation, ESOP will carry out an Artifact Evaluation process. The goal is to share with the community the research artefacts of papers accepted to its research track, acknowledging those works which have been rigorously implemented, tested and documented. To this purpose, we are looking for motivated students and postdocs to be members of the ESOP 2022 Artifact Evaluation Committee (AEC). The primary responsibility of an AEC member is to run the associated tools and confirm the results reported in the papers. If you know someone suitable for this role, please nominate them in the following form (or share the form with them for self-nomination): https://t.co/Jqa7edDqTg?amp=1 Come join us in this effort! Kind Regards, Andreea Costea and KC Sivaramakrishnan, AEC Co-Chairs of ESOP 2022 From nad at cse.gu.se Mon Oct 18 13:07:06 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 18 Oct 2021 13:07:06 +0200 Subject: [Agda] Using Haskell randomRIO functions from Agda In-Reply-To: References: Message-ID: <37196898-95f3-3365-2f73-f547f09cb823@cse.gu.se> On 2021-10-16 13:13, Serge Leblanc wrote: > randomRIO : Char ? Char ? IO Char > randomRIO lo hi = lift (primRandomRIO lo hi) where > > postulate > primRandomRIO : Char ? Char ? Prim.IO Char This postulate takes four arguments, lo, hi and the two unnamed characters. Here is one way to fix your code: randomRIO : Char ? Char ? IO Char randomRIO lo hi = lift primRandomRIO where postulate primRandomRIO : Prim.IO Char {-# FOREIGN GHC import qualified System.Random as Random #-} {-# COMPILE GHC primRandomRIO = \l h -> Random.randomRIO (l , h) #-} -- /NAD From h.basold at liacs.leidenuniv.nl Tue Oct 19 21:00:49 2021 From: h.basold at liacs.leidenuniv.nl (Henning Basold) Date: Tue, 19 Oct 2021 21:00:49 +0200 Subject: [Agda] TYPES 2021 post-proceedings: Open call for papers Message-ID: Open call for papers for the Post-proceedings of the 27th International Conference on Types for Proofs and Programs TYPES 2021 TYPES is a major forum for the presentation of research on all aspects of type theory and its applications. TYPES 2021 was held 14-18 June 2021 virtually hosted by University Leiden, Netherlands. The post-proceedings volume will be published in LIPIcs, Leibniz International Proceedings in Informatics, an open-access series of conference proceedings (http://www.dagstuhl.de/en/publications/lipics). Submission to this post-proceedings volume is open to everyone, also to those who did not participate in the conference. We welcome high-quality descriptions of original work, as well as position papers, overview papers, and system descriptions. Submissions should be written in English, not overlapping with published or simultaneously submitted work to a journal or a conference with archival proceedings. The scope of the post-proceedings is the same as the scope of the conference: the theory and practice of type theory. In particular, we welcome submissions on the following topics: * Foundations of type theory and constructive mathematics; * Applications of type theory (e.g., linguistics or concurrency); * Dependently typed programming; * Industrial uses of type theory technology; * Meta-theoretic studies of type systems; * Proof assistants and proof technology; * Automation in computer-assisted reasoning; * Links between type theory and functional programming; * Formalising mathematics using type theory; * Homotopy type theory and univalent mathematics. IMPORTANT DATES * Abstract submission: 19 November 2021 (AoE) * Paper submission: 26 November 2021 (AoE) * Author notification: 25 March 2022 DETAILS * Papers have to be formatted with the current LIPIcs style and adhere to the style requirements of LIPIcs: http://www.dagstuhl.de/en/publications/lipics/instructions-for-authors/ * The upper limit for the length of submissions is 20 pages, excluding title page and bibliography but including appendices. * The processing charge will kindly be sponsored by LIACS (Leiden Institute for Advanced Computer Science) for up to 20 publications, given that these publications do not exceed the page limit. See here for details about the processing charge: https://submission.dagstuhl.de/documentation/faq/11 * Papers have to be submitted as PDF through EasyChair: https://easychair.org/conferences/?conf=posttypes2021 * Authors have the option to attach to their submission a zip or tgz file containing code (formalised proofs or programs), but reviewers are not obliged to take the attachments into account and they will not be published. * In case of questions, e.g. on the page limit, contact one editors either directly or through . EDITORS - Henning Basold (https://liacs.leidenuniv.nl/~basoldh/), Leiden University, NL - Jesper Cockx (https://jesper.sikanda.be/), Technical University Delft, NL - Silvia Ghilezan (http://imft.ftn.uns.ac.rs/~silvia/), University of Novi Sad, RS -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 665 bytes Desc: OpenPGP digital signature URL: From abela at chalmers.se Thu Oct 21 21:42:53 2021 From: abela at chalmers.se (Andreas Abel) Date: Thu, 21 Oct 2021 21:42:53 +0200 Subject: [Agda] PhD position in Type Theory at Chalmers/Gothenburg University (deadline 8 Nov) Message-ID: <49ccc162-55a8-e805-f0a1-3b37f3fc06e6@chalmers.se> We are opening a PhD position in the Logic & Types unit of the Department of Computer Science and Engineering joint at Chalmers and Gothenburg University. Ad : Doctoral student in Logic and Types: Theory and implementation of dependent types URL: https://bit.ly/3m0lmP6 Apply until: 8 November 2021 This position is a great opportunity for you as a PhD student to develop your scientific and technical skills as part of a team of leading researchers in the area of dependent type theory and implementors of the Agda proof assistant. Logic & Types members: https://www.chalmers.se/en/departments/cse/organisation/LT/Pages/Staff.aspx The project aims to advance type theory both theoretically and practically, in particular in the direction of modalities. You will be working on type theory from a mathematical perspective (type systems and their models), an algorithmic perspective (unification and type-checking), and a programming perspective (efficient implementation as part of the Agda proof assistant). The position is for 5 years and comes with full benefits (pension benefits, health insurance etc). (Sweden is a good country for PhD students!) For the full description, eligibility, documents required for the application, see https://bit.ly/3m0lmP6 Further questions can be directed to me, Andreas Abel P.S.: Colleagues, please advertise this position to suitable candidates (e.g., your best students). -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ From mechvel at scico.botik.ru Thu Oct 21 22:05:35 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Thu, 21 Oct 2021 23:05:35 +0300 Subject: [Agda] -rtsopts Message-ID: People, I need to run Foo with the memory restriction: > agda -c $agdaLibOpt Foo.agda > ./Foo +RTS -M7G -RTS It reports Foo: Most RTS options are disabled. Link with -rtsopts to enable them. Then I command > agda -c $agdaLibOpt -rtsopts Foo.agda It reports Error: Unrecognized options: -r (did you mean --js ?) ... Can you, please, explain of how to use this -rtsopts (in Agda 2.6.2) ? Thanks, ------ Sergei From nad at cse.gu.se Fri Oct 22 20:12:15 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Fri, 22 Oct 2021 20:12:15 +0200 Subject: [Agda] -rtsopts In-Reply-To: References: Message-ID: On 2021-10-21 22:05, mechvel at scico.botik.ru wrote: > Can you, please, explain of how to use this -rtsopts (in Agda 2.6.2) ? I guess you could use "--ghc-flag=-rtsopts". -- /NAD From mechvel at scico.botik.ru Fri Oct 22 20:40:47 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Fri, 22 Oct 2021 21:40:47 +0300 Subject: [Agda] -rtsopts In-Reply-To: References: Message-ID: <45e0774380a013c73f968a3ea28bd48d@scico.botik.ru> On 2021-10-22 21:12, Nils Anders Danielsson wrote: > On 2021-10-21 22:05, mechvel at scico.botik.ru wrote: >> Can you, please, explain of how to use this -rtsopts (in Agda 2.6.2) ? > > I guess you could use "--ghc-flag=-rtsopts". Thank you. I see now. (I do not know, may be this needed to be somewhat a question to Agda cafe (Zulip ?) ) -- SM From mail at robbertkrebbers.nl Thu Oct 28 11:38:07 2021 From: mail at robbertkrebbers.nl (Robbert Krebbers) Date: Thu, 28 Oct 2021 11:38:07 +0200 Subject: [Agda] PLMW@POPL 2022: 2nd Call for Application Message-ID: <36ba33dd-8c49-71a9-6dfc-7ff4609e9577@robbertkrebbers.nl> [Please forward to interested graduate students and senior undergraduate students who might not be on this list] SECOND CALL FOR APPLICATIONS (**DEADLINE: November 1 AoE**) ACM SIGPLAN Programming Languages Mentoring Workshop, Philadelphia, Pennsylvania Tuesday, January 18, 2022 PLMW is co-located with POPL 2022, which takes place ?in person? in Philadelphia. PLMW will feature lightweight options for ?remote participation? (details below). Web page: https://popl22.sigplan.org/home/PLMW-2022 After the success of the first ten Programming Languages Mentoring Workshops at POPL 2012-2021, we are announcing the 11th SIGPLAN Programming Languages Mentoring Workshop (PLMW), co-located with the virtual POPL 2022 and organized by Stephanie Balzer, Paul Downen, Robbert Krebbers, and Christine Rizkallah. The purpose of this mentoring workshop is to encourage graduate students and senior undergraduate students to pursue careers in programming language research. This workshop will bring together world leaders in programming languages research and teaching from academia and industry to provide (a) technical sessions on cutting-edge PL research and (b) mentoring sessions on how to prepare for a research career. The workshop will help students imagine how they might contribute to our research community. We especially encourage women and underrepresented minority students, and people with disabilities to attend PLMW. This workshop is part of the activities surrounding POPL, the Symposium on Principles of Programming Languages, and takes place the day before the main conference. One goal of the workshop is to make the POPL conference more accessible to newcomers. We hope that participants will stay through the entire conference. Because physical travel to the workshop location this year may be more difficult for some, there is also an option to attend PLMW remotely. Remote participants of PLMW will be able to view online videos of the workshop talks, access the PLMW Slack channel, and sign up for virtual mentoring sessions with experienced researchers. A number of sponsors (listed below) have generously donated scholarship funds for qualified students to attend PLMW. These scholarships can cover expenses (airfare, hotel, and registration fees) for attendance at both the workshop and the POPL conference. Students attending this year will get one year free student membership of SIGPLAN, unless they prefer to opt out during their application. The workshop registration is open to all. Students with alternative sources of funding are welcome as well. # APPLICATION for PLMW The application can be accessed at the following URL: https://forms.gle/tsQhsUyB2W4c6ps36 The deadline for full consideration of funding is Monday, November 1. Please note on the application form whether you intend to attend PLMW in-person, or remotely. # Confirmed speakers (so far):= - Alexandra Silva (Cornell University) - Ilya Sergey (National University of Singapore) - Niko Matsakis (Amazon Web Services) - Liam O?Connor (University of Edinburgh) - Talia Ringer (University of Illinois at Urbana-Champaign) # Confirmed sponsors (so far) - NSF - ACM SIGPLAN - Jane Street - Certora - Correct Computation From Graham.Hutton at nottingham.ac.uk Mon Nov 1 13:18:54 2021 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Mon, 1 Nov 2021 12:18:54 +0000 Subject: [Agda] Journal of Functional Programming - Call For PhD Abstracts Message-ID: Dear all, If you or one of your students recently completed a PhD in the area of functional programming, please submit the dissertation abstract for publication in JFP: simple process, no refereeing, open access, 200 published to date, deadline 30th November 2021. Please share! Best wishes, Graham Hutton ============================================================ CALL FOR PHD ABSTRACTS Journal of Functional Programming Deadline: 30th November 2021 http://tinyurl.com/jfp-phd-abstracts ============================================================ PREAMBLE: Many students complete PhDs in functional programming each year. As a service to the community, twice per year the Journal of Functional Programming publishes the abstracts from PhD dissertations completed during the previous year. The abstracts are made freely available on the JFP website, i.e. not behind any paywall. They do not require any transfer of copyright, merely a license from the author. A dissertation is eligible for inclusion if parts of it have or could have appeared in JFP, that is, if it is in the general area of functional programming. The abstracts are not reviewed. Please submit dissertation abstracts according to the instructions below. We welcome submissions from both the PhD student and PhD advisor/supervisor although we encourage them to coordinate. ============================================================ SUBMISSION: Please submit the following information to Graham Hutton by 30th November 2021. o Dissertation title: (including any subtitle) o Student: (full name) o Awarding institution: (full name and country) o Date of PhD award: (month and year; depending on the institution, this may be the date of the viva, corrections being approved, graduation ceremony, or otherwise) o Advisor/supervisor: (full names) o Dissertation URL: (please provide a permanently accessible link to the dissertation if you have one, such as to an institutional repository or other public archive; links to personal web pages should be considered a last resort) o Dissertation abstract: (plain text, maximum 350 words; you may use \emph{...} for emphasis, but we prefer no other markup or formatting; if your original abstract exceeds the word limit, please submit an abridged version within the limit) Please do not submit a copy of the dissertation itself, as this is not required. JFP reserves the right to decline to publish abstracts that are not deemed appropriate. ============================================================ PHD ABSTRACT EDITOR: Graham Hutton School of Computer Science University of Nottingham Nottingham NG8 1BB United Kingdom ============================================================ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From fdhzs2010 at hotmail.com Tue Nov 9 20:47:43 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Tue, 9 Nov 2021 19:47:43 +0000 Subject: [Agda] Terminating checking for functions on induction-recursion Message-ID: Hi all, I am hitting a case where termination checker is unhappy with two mutual functions on my induction-recursion definitions. I am still trying to nail down a smaller reproduction but at least I would like to have an understanding of how things work. Essentially I have a PER model for dependently typed languages, where I define a PER U and another PER on U: U A B : means A and B are two values related by U. That is A and B are two types. Given (AB : U A B), El AB a b: means a and b are two values related by El AB, where El AB computes the PER generated by the type A (or equivalently B). Now I shall move on to prove symmetry. I have ?mutual U-sym : U A B -> U B A U-sym AB = ... El-sym : (AB : U A B) (BA : U B A) -> El AB a b -> El BA b a El-sym AB BA = ... Now, U-sym proceeds by pattern matching on AB and El-sym proceeds by pattern matching on AB and BA. In U-sym, I can call U-sym and El-sym on smaller structure. However, for some reason, in El-sym, I can only El-sym on smaller structure. Any call of U-sym on smaller structure in El-sym will (almost) cause a termination checking error*. I cannot possibly figure out why calling U-sym in El-sym is forbidden. How exactly termination checking with induction-recursion definitions work in Agda? Could anyone give some insights about what could go wrong if U-sym can be called in El-sym, if Agda is doing the right thing? * almost means I have counterexample but I cannot summarize the pattern Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Thu Nov 11 18:06:29 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Thu, 11 Nov 2021 17:06:29 +0000 Subject: [Agda] Terminating checking for functions on induction-recursion In-Reply-To: References: Message-ID: I now have a concrete program illustrating the issue: https://github.com/agda/agda/issues/5646 [https://opengraph.githubassets.com/c20a4be1cb39340e55f4c7a4df0e371714690cf798325b6b8c494b381deaa1d9/agda/agda/issues/5646] Termination checker rejects mutual functions on induction-recursion definition ? Issue #5646 ? agda/agda I am running agda 2.6.2 and here is an example: {-# OPTIONS --without-K --safe #-} open import Data.Nat data Exp : Set where mutual Env : Set Env = ? ? D data D : Set where ? : D ? (t : Exp) ? (? :... github.com Any help with me understanding the termination checking strategy will be appreciated. {-# OPTIONS --without-K --safe #-} open import Data.Nat data Exp : Set where mutual Env : Set Env = ? ? D data D : Set where ? : D ? (t : Exp) ? (? : Env) ? D variable T T? : Exp A A? : D B B? : D a a? : D b b? : D ? ?? : Env _?_ : Env ? D ? Env (? ? d) zero = d (? ? d) (suc x) = ? x data ?_?_?_ : Exp ? Env ? D ? Set where data _?_?_ : D ? D ? D ? Set where record ?RT T ? T? ?? (R : D ? D ? Set) : Set where field ?T? : D ?T?? : D ??T? : ? T ? ? ? ?T? ??T?? : ? T? ? ?? ? ?T?? T?T? : R ?T? ?T?? record ?? (f a f? a? : D) (R : D ? D ? Set) : Set where field fa : D fa? : D ?fa : f ? a ? fa ?fa? : f? ? a? ? fa? fa?fa? : R fa fa? mutual data ? : D ? D ? Set where ? : (A?A? : ? A A?) ? (? {a a?} ? El A?A? a a? ? ?RT T (? ? a) T? (?? ? a?) ?) ? ------------------------- ? (? A T ?) (? A? T? ??) El : ? A B ? D ? D ? Set El (? A?A? RT) = ? f f? ? ? {a b} (inp : El A?A? a b) ? ?? f a f? b (El (?RT.T?T? (RT inp))) mutual ?-sym : ? A B ? ? B A ?-sym (? {_} {_} {T} {?} {T?} {??} A?A? RT) = ? (?-sym A?A?) helper where helper : El (?-sym A?A?) a a? ? ?RT T? (?? ? a) T (? ? a?) ? helper a?a? = record { ?T? = ?T?? ; ?T?? = ?T? ; ??T? = ??T?? ; ??T?? = ??T? ; T?T? = ?-sym T?T? } where open ?RT (RT (El-sym (?-sym A?A?) A?A? a?a?)) El-sym : ? (A?B : ? A B) (B?A : ? B A) ? El A?B a b ? El B?A b a El-sym (? A?B RT) (? B?A RT?) f?f? a?a? with ?-sym A?B ... | x = {!!} Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Jason Hu Sent: November 9, 2021 2:47 PM To: agda at lists.chalmers.se Subject: Terminating checking for functions on induction-recursion Hi all, I am hitting a case where termination checker is unhappy with two mutual functions on my induction-recursion definitions. I am still trying to nail down a smaller reproduction but at least I would like to have an understanding of how things work. Essentially I have a PER model for dependently typed languages, where I define a PER U and another PER on U: U A B : means A and B are two values related by U. That is A and B are two types. Given (AB : U A B), El AB a b: means a and b are two values related by El AB, where El AB computes the PER generated by the type A (or equivalently B). Now I shall move on to prove symmetry. I have ?mutual U-sym : U A B -> U B A U-sym AB = ... El-sym : (AB : U A B) (BA : U B A) -> El AB a b -> El BA b a El-sym AB BA = ... Now, U-sym proceeds by pattern matching on AB and El-sym proceeds by pattern matching on AB and BA. In U-sym, I can call U-sym and El-sym on smaller structure. However, for some reason, in El-sym, I can only El-sym on smaller structure. Any call of U-sym on smaller structure in El-sym will (almost) cause a termination checking error*. I cannot possibly figure out why calling U-sym in El-sym is forbidden. How exactly termination checking with induction-recursion definitions work in Agda? Could anyone give some insights about what could go wrong if U-sym can be called in El-sym, if Agda is doing the right thing? * almost means I have counterexample but I cannot summarize the pattern Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Fri Nov 12 15:48:52 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Fri, 12 Nov 2021 14:48:52 +0000 Subject: [Agda] taking limit of a cumulative predicate Message-ID: Hi all, I bumped into a difference between type theory and set theory that I am somewhat struggling with in Agda. Consider a type D and its predicate indexed by natural number: P : ? ? D ? Set where for x : D, P i x means x is in the subset of D described by P i. Now imagine P is cumulative, namely cumu : ? {i a} ? P i a ? P (suc i) a then sometimes, in set theory, we would conveniently take this index i to be \infty or omega and claim that such a subset is well-defined. As you might have already noticed, this notion of taking a limit is difficult to formalize in a type theory. I can think of two tentative solutions: 1. using Sigma type 2. 3. P? x = ? ? i ? P i x 4. 5. This seems plausible, especially when we see this notion captures the fact that the set theoretic counterpart does implies for every P? x some index i exists. However, a problem arises when we encounter two instances of P? x. Then to use them, we must unpack them, and now we have two distinct indices with no explicit relation. Meanwhile in set theory, we actually disregard the difference of indices, because we are talking about infinity. 1. another tentative solution is to redefine P such that it takes Maybe ? and the nothing case represents infinity. But this solution has a big problem. There could be an x : D such that only (P nothing x) holds. In other words, P becomes larger than the limit of its set theoretic counterpart. Is there any solution to this problem which encodes the set theoretic notion more faithfully? Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From carette at mcmaster.ca Fri Nov 12 19:03:30 2021 From: carette at mcmaster.ca (Carette, Jacques) Date: Fri, 12 Nov 2021 18:03:30 +0000 Subject: [Agda] taking limit of a cumulative predicate In-Reply-To: References: Message-ID: ? is well-ordered, so you may as well take the smallest i, not just ?some? i. If you further make your P i?s contractible (so as to be proof-irrelevant), then you?re closer to the classical case. In general, you might want to read everything under Relation.Binary.Indexed in the standard library. I much prefer the Homogeneous case, the Heterogeneous version is weird in MLTT. [It?s not weird in other type theories.] Jacques From: Agda On Behalf Of Jason Hu Sent: November 12, 2021 9:49 AM To: agda at lists.chalmers.se Subject: [Agda] taking limit of a cumulative predicate Hi all, I bumped into a difference between type theory and set theory that I am somewhat struggling with in Agda. Consider a type D and its predicate indexed by natural number: P : ? ? D ? Set where for x : D, P i x means x is in the subset of D described by P i. Now imagine P is cumulative, namely cumu : ? {i a} ? P i a ? P (suc i) a then sometimes, in set theory, we would conveniently take this index i to be \infty or omega and claim that such a subset is well-defined. As you might have already noticed, this notion of taking a limit is difficult to formalize in a type theory. I can think of two tentative solutions: 1. using Sigma type 2. 3. P? x = ? ? i ? P i x 4. 5. This seems plausible, especially when we see this notion captures the fact that the set theoretic counterpart does implies for every P? x some index i exists. However, a problem arises when we encounter two instances of P? x. Then to use them, we must unpack them, and now we have two distinct indices with no explicit relation. Meanwhile in set theory, we actually disregard the difference of indices, because we are talking about infinity. 1. another tentative solution is to redefine P such that it takes Maybe ? and the nothing case represents infinity. But this solution has a big problem. There could be an x : D such that only (P nothing x) holds. In other words, P becomes larger than the limit of its set theoretic counterpart. Is there any solution to this problem which encodes the set theoretic notion more faithfully? Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Sun Nov 14 05:58:44 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Sun, 14 Nov 2021 04:58:44 +0000 Subject: [Agda] taking limit of a cumulative predicate In-Reply-To: References: Message-ID: Hmmmm, if P is irrelevant, then in fact the Sigma type solution would seem to workout. Now in my code P is irrelevant up to my usage, so I am experimenting and see if Sigma suffices. you also seem to suggest P? x = ? ? i ? P i x ? ? {j} ? P j x ? i ? j That is, the hidden I is the smallest one. This is quite plausible actually. But I can imagine there will be problems proving subsumption of limit: subsum : ? {i x} ? P i x ? P? x I suppose this exposes another difference between type theory and set theory. In set theory, we somewhat get this for free: we morally have an oracle (possibly with the power of Choice) which gives you the smallest j such that P j x holds and this j is hidden in an existential quantifier. However, in type theory, we must explicitly solve this j, but might not always be possible. Thanks, Jason Hu From: Carette, Jacques Sent: Friday, November 12, 2021 1:03 PM To: Jason Hu; agda at lists.chalmers.se Subject: RE: taking limit of a cumulative predicate ? is well-ordered, so you may as well take the smallest i, not just ?some? i. If you further make your P i?s contractible (so as to be proof-irrelevant), then you?re closer to the classical case. In general, you might want to read everything under Relation.Binary.Indexed in the standard library. I much prefer the Homogeneous case, the Heterogeneous version is weird in MLTT. [It?s not weird in other type theories.] Jacques From: Agda On Behalf Of Jason Hu Sent: November 12, 2021 9:49 AM To: agda at lists.chalmers.se Subject: [Agda] taking limit of a cumulative predicate Hi all, I bumped into a difference between type theory and set theory that I am somewhat struggling with in Agda. Consider a type D and its predicate indexed by natural number: P : ? ? D ? Set where for x : D, P i x means x is in the subset of D described by P i. Now imagine P is cumulative, namely cumu : ? {i a} ? P i a ? P (suc i) a then sometimes, in set theory, we would conveniently take this index i to be \infty or omega and claim that such a subset is well-defined. As you might have already noticed, this notion of taking a limit is difficult to formalize in a type theory. I can think of two tentative solutions: 1. using Sigma type 2. 3. P? x = ? ? i ? P i x 4. 5. This seems plausible, especially when we see this notion captures the fact that the set theoretic counterpart does implies for every P? x some index i exists. However, a problem arises when we encounter two instances of P? x. Then to use them, we must unpack them, and now we have two distinct indices with no explicit relation. Meanwhile in set theory, we actually disregard the difference of indices, because we are talking about infinity. 1. another tentative solution is to redefine P such that it takes Maybe ? and the nothing case represents infinity. But this solution has a big problem. There could be an x : D such that only (P nothing x) holds. In other words, P becomes larger than the limit of its set theoretic counterpart. Is there any solution to this problem which encodes the set theoretic notion more faithfully? Thanks, Jason Hu https://hustmphrrr.github.io/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.g.setzer at swansea.ac.uk Fri Nov 19 14:03:04 2021 From: a.g.setzer at swansea.ac.uk (Anton Setzer) Date: Fri, 19 Nov 2021 13:03:04 +0000 Subject: [Agda] agda under windows WSL Message-ID: Dear all, My university provided me with a windows only laptop and I have installed agda under windows WSL2. But it is incredibly slow, it takes about 10x longer than under a normal linux mschine with similar spec to type check. Does anybody have any hints how to speed it up? Thanks, Anton -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Fri Nov 19 14:04:35 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Fri, 19 Nov 2021 13:04:35 +0000 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: It depends on your setup and CPU. I have a laptop which does exactly WSL2 + agda and it runs very fast, probably at native speed. Thanks, Jason Hu From: Anton Setzer Sent: Friday, November 19, 2021 8:03 AM To: agda at lists.chalmers.se Subject: [Agda] agda under windows WSL Dear all, My university provided me with a windows only laptop and I have installed agda under windows WSL2. But it is incredibly slow, it takes about 10x longer than under a normal linux mschine with similar spec to type check. Does anybody have any hints how to speed it up? Thanks, Anton -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Fri Nov 19 14:06:00 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Fri, 19 Nov 2021 16:06:00 +0300 Subject: [Agda] Noetherian vs WellFounded Message-ID: On 2021-10-05 18:18, Martin Escardo wrote: > You may wish to look here: > > https://mathoverflow.net/questions/239560/noetherian-rings-in-constructive-mathematics > I wrote about the example where the Noetherian property (the descending chain property) for _<_ can be proved in Agda, but it is problematic to prove WellFounded _<_: Carrier = PP = ? ? ? _<_ : Rel PP _, _+'_ : PP ? PP ? PP -- defined as the pointwise addition. Axioms of _admissible ordering_ on PP: (A1) _<_ is of DecTotalOrder, (A2) ? e ? Nonzero e ? (0 , 0) < e, (A3) ? (e e' d) ? e < e' ? e +' d < e' +' d Prove WellFounded _<_. But now I see that WellFounded _<_ can be proved directly in Agda for this example. Still I believe that there are many examples when the descending chain property is easy to prove (so that termination of the related function should be derived from this), but proving WellFounded is difficult or problematic. May be Standard library needs to include a proof for a theorem of kind "If _<_ has the descending chain property and Condition-II, then WellFounded _<_ " ? Condition-II could be, say, IsStrictTotalOrder, or something reasonable and usable that allows to derive WellFounded. By the descending chain property I mean (f : Nat -> A) -> exists (\i -> not (f i) > (f (suc i))) -- SM From a.g.setzer at swansea.ac.uk Fri Nov 19 15:37:26 2021 From: a.g.setzer at swansea.ac.uk (Anton Setzer) Date: Fri, 19 Nov 2021 14:37:26 +0000 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: I found the culprit why agda under wsl was so slow on my machine. It is that Agda seems to be doing a lot of file access esp when using the standard library, and under wsl one should not put such files under /mnt/ The problem was that one needs to put the agda code and the standard library so that they are not under /mnt/. Unfortunately the linux home directory is under /mnt/ I just put them as an experiment into /tmp/ and got a speedup from 8 min 20 sec down to 24 sec. What is important is to put the standard library so that it is not in /mnt/ if one just does it for the normal agda files I saw only a small speedup from 8 min 20 to 6 min 10 sec So it seems that Agda is making an incredible amount of file access in the standard library and is not cashing the data in memory (actually memory usage was quite low and the maximum load for a processor I could see was 60% so it seems most of the time been busy with file access. I assume if one did more cashing Agda could become faster (or do I need to compile it in a different way so that this is automatically done?) Anton From: Jason Hu Sent: 19 November 2021 13:05 To: Anton Setzer ; agda at lists.chalmers.se Subject: RE: agda under windows WSL It depends on your setup and CPU. I have a laptop which does exactly WSL2 + agda and it runs very fast, probably at native speed. Thanks, Jason Hu From: Anton Setzer Sent: Friday, November 19, 2021 8:03 AM To: agda at lists.chalmers.se Subject: [Agda] agda under windows WSL Dear all, My university provided me with a windows only laptop and I have installed agda under windows WSL2. But it is incredibly slow, it takes about 10x longer than under a normal linux mschine with similar spec to type check. Does anybody have any hints how to speed it up? Thanks, Anton -------------- next part -------------- An HTML attachment was scrubbed... URL: From fdhzs2010 at hotmail.com Fri Nov 19 15:44:38 2021 From: fdhzs2010 at hotmail.com (Jason Hu) Date: Fri, 19 Nov 2021 14:44:38 +0000 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: Hi Anton, If you look up the internet, you will find that WSL2 uses some network file system to mount your windows drives, and for that reason, this performance issue has been known for ages. As fundamental as it is, I don't see it can be fixed in any near future. Of course, WSL has no such issue. However, based on your description, I am further convinced that there is a problem with your setup. Essentially, WSL2 is a shallow wrapper of hyper-v VM. The file associated with your linux subsystem should be a hyper-v disk. On my machine, my Ubuntu WSL2 uses this hyper-v disk for home folder as well as all Agda related stuff, and thus IO is performed in native speed. The home folder is not supposed to be mounted. I suggest you to try a clean setup and see if this problem goes away. If you are attempting a workflow where you put files in your windows drives and switch to WSL2 for work, this won't work well. Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Anton Setzer Sent: November 19, 2021 9:37 AM To: Jason Hu ; agda at lists.chalmers.se Subject: RE: agda under windows WSL I found the culprit why agda under wsl was so slow on my machine. It is that Agda seems to be doing a lot of file access esp when using the standard library, and under wsl one should not put such files under /mnt/ The problem was that one needs to put the agda code and the standard library so that they are not under /mnt/. Unfortunately the linux home directory is under /mnt/ I just put them as an experiment into /tmp/ and got a speedup from 8 min 20 sec down to 24 sec. What is important is to put the standard library so that it is not in /mnt/ if one just does it for the normal agda files I saw only a small speedup from 8 min 20 to 6 min 10 sec So it seems that Agda is making an incredible amount of file access in the standard library and is not cashing the data in memory (actually memory usage was quite low and the maximum load for a processor I could see was 60% so it seems most of the time been busy with file access. I assume if one did more cashing Agda could become faster (or do I need to compile it in a different way so that this is automatically done?) Anton From: Jason Hu Sent: 19 November 2021 13:05 To: Anton Setzer ; agda at lists.chalmers.se Subject: RE: agda under windows WSL It depends on your setup and CPU. I have a laptop which does exactly WSL2 + agda and it runs very fast, probably at native speed. Thanks, Jason Hu From: Anton Setzer Sent: Friday, November 19, 2021 8:03 AM To: agda at lists.chalmers.se Subject: [Agda] agda under windows WSL Dear all, My university provided me with a windows only laptop and I have installed agda under windows WSL2. But it is incredibly slow, it takes about 10x longer than under a normal linux mschine with similar spec to type check. Does anybody have any hints how to speed it up? Thanks, Anton -------------- next part -------------- An HTML attachment was scrubbed... URL: From mh at informatik.uni-kiel.de Fri Nov 19 17:47:50 2021 From: mh at informatik.uni-kiel.de (Michael Hanus) Date: Fri, 19 Nov 2021 17:47:50 +0100 Subject: [Agda] 2nd Call for Papers: FLOPS 2022 Message-ID: * The deadline has been extended to December. * Best papers will be invited to an SCP special issue. ============================================================================ Call For Papers FLOPS 2022: 16th International Symposium on Functional and Logic Programming ============================================================================ In-Cooperation with ACM SIGPLAN May 10-12, 2022, Kyoto, Japan https://conf.researchr.org/home/flops-2022 Writing down detailed computational steps is not the only way of programming. The alternative, being used increasingly in practice, is to start by writing down the desired properties of the result. The computational steps are then (semi-)automatically derived from these higher-level specifications. Examples of this declarative style include functional and logic programming, program transformation and re-writing, and extracting programs from proofs of their correctness. FLOPS aims to bring together practitioners, researchers and implementors of the declarative programming, to discuss mutually interesting results and common problems: theoretical advances, their implementations in language systems and tools, and applications of these systems in practice. The scope includes all aspects of the design, semantics, theory, applications, implementations, and teaching of declarative programming. FLOPS specifically aims to promote cross-fertilization between theory and practice and among different styles of declarative programming. *** Scope *** FLOPS solicits original papers in all areas of declarative programming: * functional, logic, functional-logic programming, rewriting systems, formal methods and model checking, program transformations and program refinements, developing programs with the help of theorem provers or SAT/SMT solvers, verifying properties of programs using declarative programming techniques; * foundations, language design, implementation issues (compilation techniques, memory management, run-time systems, etc.), applications and case studies. FLOPS promotes cross-fertilization among different styles of declarative programming. Therefore, research papers must be written to be understandable by the wide audience of declarative programmers and researchers. In particular, each submission should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant for its area, and comparing it with previous work. Submission of system descriptions and declarative pearls are especially encouraged. *** Submission *** Submissions should fall into one of the following categories: * Regular research papers: they should describe new results and will be judged on originality, correctness, and significance. * System descriptions: they should describe a working system and will be judged on originality, usefulness, and design. * Declarative pearls: new and excellent declarative programs or theories with illustrative applications. System descriptions and declarative pearls must be explicitly marked as such in the title. Submissions must be unpublished and not submitted for publication elsewhere. Work that already appeared in unpublished or informally published workshops proceedings may be submitted. See also ACM SIGPLAN Republication Policy, as explained at http://www.sigplan.org/Resources/Policies/Republication. Submissions must be written in English and can be up to 15 pages excluding references, though system descriptions and pearls are typically shorter. The formatting has to conform to Springer's guidelines. Regular research papers should be supported by proofs and/or experimental results. In case of lack of space, this supporting information should be made accessible otherwise (e.g., a link to an anonymized web page or an appendix, which does not count towards the page limit). However, it is the responsibility of the authors to guarantee that their paper can be understood and appreciated without referring to this supporting information; reviewers may simply choose not to look at it when writing their review. FLOPS 2022 will employ a double-blind reviewing process. To facilitate this, submitted papers must adhere to two rules: 1. author names and institutions must be omitted, and 2. references to authors' own related work should be in the third person (e.g., not "We build on our previous work..." but rather "We build on the work of..."). The purpose of this process is to help the reviewers come to a judgement about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing the paper more difficult (e.g., important background references should not be omitted or anonymized). In addition, authors should feel free to disseminate their ideas or draft versions of their paper as they normally would. For instance, authors may post drafts of their papers on the web or give talks on their research ideas. Papers should be submitted electronically at https://easychair.org/conferences/?conf=flops2022 Springer Guidelines https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines *** Proceedings *** The proceedings will be published by Springer International Publishing in the Lecture Notes in Computer Science (LNCS) series (www.springer.com/lncs). Post-proceedings: The authors of 4-7 best papers will be invited to submit an extended version of their FLOPS paper to a special issue which will appear in the journal Science of Computer Programming (SCP). *** Important Dates *** Abstract submission: December 8, 2021 (AoE) Paper submission: December 12, 2021 (AoE) Notification: January 28, 2022 Camera ready due: February 20, 2022 Symposium: May 10-12, 2022 *** Program Comittee *** Andreas Abel Gothenburg University, Sweden Elvira Albert Universidad Complutense de Madrid Nada Amin Harvard Universuty, USA Davide Ancona Univ. Genova, Italy William Byrd University of Alabama, USA Matteo Cimini UMass Lowell, USA Youyou Cong Tokyo Institute of Technology, Japan Robert Gl??ck University of Copenhagen, Denmark Makoto Hamana Gunma University, Japan Michael Hanus Kiel University (co-chair) Zhenjiang Hu Peking University, China Atsushi Igarashi Kyoto University, Japan (co-chair) Ekaterina Komendantskaya Heriot-Watt University, UK Shin-Cheng Mu Academia Sinica, Taiwan Koko Muroya Kyoto University, Japan Klaus Ostermann University of Tuebingen, Germany Ricardo Rocha University of Porto, Portugal Tom Schrijvers KU Leuven, Belgium Harald Sondergaard University of Melbourne, Australia Hiroshi Unno University of Tsukuba, Japan Niki Vazou IMDEA, Spain Janis Voigtlaender University of Duisburg-Essen, Germany Nicolas Wu Imperial College, UK Ningning Xie University of Hong Kong, China Jeremy Yallop University of Cambridge, UK Neng-Fa Zhou City University of New York, USA *** Organizers *** Michael Hanus Kiel University, Germany (PC Co-Chair) Atsushi Igarashi Kyoto University, Japan (PC Co-Chair, General Chair) Keigo Imai Gifu University, Japan (Local Co-Chair) Taro Sekiyama National Institute of Informatics, Japan (Local Co-Chair) *** Contact Address *** flops2022 _AT_ easychair.org ------------------------------------------------------------------------------- From h.basold at liacs.leidenuniv.nl Fri Nov 19 23:02:10 2021 From: h.basold at liacs.leidenuniv.nl (Henning Basold) Date: Fri, 19 Nov 2021 23:02:10 +0100 Subject: [Agda] TYPES 2021 post-proceedings: Second call for papers (Deadline extension) Message-ID: <2267f82e-2261-905a-6219-552dd8606f76@liacs.leidenuniv.nl> Open call for papers for the Post-proceedings of the 27th International Conference on Types for Proofs and Programs TYPES 2021 TYPES is a major forum for the presentation of research on all aspects of type theory and its applications. TYPES 2021 was held 14-18 June 2021 virtually hosted by University Leiden, Netherlands. The post-proceedings volume will be published in LIPIcs, Leibniz International Proceedings in Informatics, an open-access series of conference proceedings (http://www.dagstuhl.de/en/publications/lipics). Submission to this post-proceedings volume is open to everyone, also to those who did not participate in the conference. We welcome high-quality descriptions of original work, as well as position papers, overview papers, and system descriptions. Submissions should be written in English, not overlapping with published or simultaneously submitted work to a journal or a conference with archival proceedings. The scope of the post-proceedings is the same as the scope of the conference: the theory and practice of type theory. In particular, we welcome submissions on the following topics: * Foundations of type theory and constructive mathematics; * Applications of type theory (e.g., linguistics or concurrency); * Dependently typed programming; * Industrial uses of type theory technology; * Meta-theoretic studies of type systems; * Proof assistants and proof technology; * Automation in computer-assisted reasoning; * Links between type theory and functional programming; * Formalising mathematics using type theory; * Homotopy type theory and univalent mathematics. IMPORTANT DATES (Updated!) * Abstract submission: 22 November 2021 (AoE) * Paper submission: 10 December 2021 (AoE) * Author notification: 25 March 2022 DETAILS * Papers have to be formatted with the current LIPIcs style and adhere to the style requirements of LIPIcs: https://submission.dagstuhl.de/series/details/5#author * The upper limit for the length of submissions is 20 pages, excluding title page and bibliography but including appendices. * The processing charge will kindly be sponsored by LIACS (Leiden Institute for Advanced Computer Science) for up to 20 publications, given that these publications do not exceed the page limit. See here for details about the processing charge: https://submission.dagstuhl.de/documentation/faq/11 * Papers have to be submitted as PDF through EasyChair: https://easychair.org/conferences/?conf=posttypes2021 * Authors have the option to attach to their submission a zip or tgz file containing code (formalised proofs or programs), but reviewers are not obliged to take the attachments into account and they will not be published. * In case of questions, e.g. on the page limit, contact one editors either directly or through . EDITORS - Henning Basold (https://liacs.leidenuniv.nl/~basoldh/), Leiden University, NL - Jesper Cockx (https://jesper.sikanda.be/), Technical University Delft, NL - Silvia Ghilezan (http://imft.ftn.uns.ac.rs/~silvia/), University of Novi Sad, RS -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 665 bytes Desc: OpenPGP digital signature URL: From xuanrui at nagoya-u.jp Mon Nov 22 07:56:48 2021 From: xuanrui at nagoya-u.jp (Xuanrui Qi) Date: Mon, 22 Nov 2021 15:56:48 +0900 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: <7c290a47b29d953b1617d0f9a25d0c28ed599d20.camel@nagoya-u.jp> Dear Anton, Yes, yes, that's the problem. WSL2 is a VM, so I don't think there's an easy fix for the file access problem, since you're breaking a abstraction barrier here. If you store your files under WSL /home, then everything runs just fine. If you need to store your files on the Windows side, then maybe you should use WSL 1. AFAIK, WSL 1 runs Agda just fine. Here I don't think caching is a problem; even if it fixes the problem for this particular use case, I'm not sure it's the right way to go as using Agda on WSL2 with Windows files is such a rare use case... Xuanrui On Fri, 2021-11-19 at 14:37 +0000, Anton Setzer wrote: > I found the culprit why agda under wsl was so slow on my machine. It > is that Agda seems to be doing a lot of file access esp when using > the standard library, and under wsl one should not put such files > under /mnt/ > ? > The problem was that one needs to put the agda code and the standard > library so that they are not under /mnt/. ?Unfortunately the linux > home directory is under /mnt/?? I just put them as an experiment > ?into /tmp/ and got a speedup from 8 min 20 sec down to 24 sec. What > is important is to put the standard library so that it is not in > /mnt/? if one just does it for the normal agda files I saw only a > small speedup from 8 min 20 to 6 min? 10 sec > ? > So it seems that Agda is making an incredible amount of file access > in the standard library and is not cashing the data in memory > (actually memory usage was quite low and the maximum load for a > processor I could see was 60% so it seems most of the time been busy > with file access. I assume if one did more cashing Agda could become > faster (or do I need to compile it in a different way so that this is > automatically done?) > ? > Anton > ? > From: Jason Hu > Sent: 19 November 2021 13:05 > To: Anton Setzer ; agda at lists.chalmers.se > Subject: RE: agda under windows WSL > ? > It depends on your setup and CPU. I have a laptop which does exactly > WSL2 + agda and it runs very fast, probably at native speed. > ? > Thanks, > Jason Hu > ? > From: Anton Setzer > Sent: Friday, November 19, 2021 8:03 AM > To: agda at lists.chalmers.se > Subject: [Agda] agda under windows WSL > ? > Dear all, > ? > My university provided me with a windows only laptop and I have > installed agda under windows WSL2. But it is incredibly slow, it > takes about 10x longer than under a normal linux mschine with similar > spec to type check. Does anybody have any hints how to speed it up? > ? > Thanks, > Anton > ? > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From xuanrui at nagoya-u.jp Mon Nov 22 07:57:59 2021 From: xuanrui at nagoya-u.jp (Xuanrui Qi) Date: Mon, 22 Nov 2021 15:57:59 +0900 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: <0530902286bb985b4c34ca2342e875e33da89631.camel@nagoya-u.jp> Dear Anton, Yes, yes, that's the problem. WSL2 is a VM, so I don't think there's an easy fix for the file access problem, since you're breaking a abstraction barrier here. If you store your files under WSL /home, then everything runs just fine. If you need to store your files on the Windows side, then maybe you should use WSL 1. AFAIK, WSL 1 runs Agda just fine. Here I don't think caching is a problem; even if it fixes the problem for this particular use case, I'm not sure it's the right way to go as using Agda on WSL2 with Windows files is such a rare use case... Xuanrui On Fri, 2021-11-19 at 14:37 +0000, Anton Setzer wrote: > I found the culprit why agda under wsl was so slow on my machine. It > is that Agda seems to be doing a lot of file access esp when using > the standard library, and under wsl one should not put such files > under /mnt/ > ? > The problem was that one needs to put the agda code and the standard > library so that they are not under /mnt/. ?Unfortunately the linux > home directory is under /mnt/?? I just put them as an experiment > ?into /tmp/ and got a speedup from 8 min 20 sec down to 24 sec. What > is important is to put the standard library so that it is not in > /mnt/? if one just does it for the normal agda files I saw only a > small speedup from 8 min 20 to 6 min? 10 sec > ? > So it seems that Agda is making an incredible amount of file access > in the standard library and is not cashing the data in memory > (actually memory usage was quite low and the maximum load for a > processor I could see was 60% so it seems most of the time been busy > with file access. I assume if one did more cashing Agda could become > faster (or do I need to compile it in a different way so that this is > automatically done?) > ? > Anton > ? > From: Jason Hu > Sent: 19 November 2021 13:05 > To: Anton Setzer ; agda at lists.chalmers.se > Subject: RE: agda under windows WSL > ? > It depends on your setup and CPU. I have a laptop which does exactly > WSL2 + agda and it runs very fast, probably at native speed. > ? > Thanks, > Jason Hu > ? > From: Anton Setzer > Sent: Friday, November 19, 2021 8:03 AM > To: agda at lists.chalmers.se > Subject: [Agda] agda under windows WSL > ? > Dear all, > ? > My university provided me with a windows only laptop and I have > installed agda under windows WSL2. But it is incredibly slow, it > takes about 10x longer than under a normal linux mschine with similar > spec to type check. Does anybody have any hints how to speed it up? > ? > Thanks, > Anton > ? > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From maxsnew at gmail.com Mon Nov 22 21:27:01 2021 From: maxsnew at gmail.com (Max New) Date: Mon, 22 Nov 2021 15:27:01 -0500 Subject: [Agda] MSFP 2022 - First Call for Papers Message-ID: Ninth Workshop on MATHEMATICALLY STRUCTURED FUNCTIONAL PROGRAMMING Saturday 2nd April 2022, Munich, Germany A satellite workshop of ETAPS 2022 https://msfp-workshop.github.io/msfp2022/ ** Deadline: 16 December (abstract), 23 December (paper) ** The ninth workshop on Mathematically Structured Functional Programming is devoted to the derivation of functionality from structure. It is a celebration of the direct impact of Theoretical Computer Science on programs as we write them today. Modern programming languages, and in particular functional languages, support the direct expression of mathematical structures, equipping programmers with tools of remarkable power and abstraction. Where would Haskell be without monads? Functional reactive programming without temporal logic? Call-by-push-value without adjunctions? The list goes on. This workshop is a forum for researchers who seek to reflect mathematical phenomena in data and control. The first MSFP workshop was held in Kuressaare, Estonia, in July 2006, affiliated with MPC 2006 and AMAST 2006. The second MSFP workshop was held in Reykjavik, Iceland as part of ICALP 2008. The third MSFP workshop was held in Baltimore, USA, as part of ICFP 2010. The fourth workshop was held in Tallinn, Estonia, as part of ETAPS 2012. The fifth workshop was held in Grenoble, France, as part of ETAPS 2014. The sixth MSFP Workshop was held in April 2016, in Eindhoven, Netherlands, as part of ETAPS 2016. The seventh MSFP Workshop was held in July 2018, in Oxford, UK, as part of FLoC 2018. The eigth MSFP Workshop was held virtually in August 2020, originally planned as part of ETAPS 2020. Important Dates: ================ Abstract deadline: 16 December (Thursday) Paper deadline: 23 December (Thursday) Notification: 27 January (Thursday) Final version: 24 February (Thursday) Workshop: 2 April(Saturday ) Invited Speakers: ================= Valeria de Paiva - Topos Institute, USA Programme Committee: ==================== Nuria Brede - University of Potsdam, Germany Jacques Carette - McMaster University, Canada Youyou Cong - Tokyo Institute of Technology, Japan Philippa Cowderoy Jan de Muijnck-Hughes - University of Glasgow, UK Harley Eades III - Augusta University, USA Jeremy Gibbons - University of Oxford, UK (co-chair) Jules Hedges - University of Stratchclyde, UK Shin-Ya Katsumata - National Institute of Informatics, Japan Max New - University of Michigan, USA (co-chair) Maciej Pir?g - University of Wroc?aw, Poland Artjoms Sinkarovs - Heriot-Watt University, UK Submission: =========== Submissions are welcomed on, but by no means restricted to, topics such as: structured effectful computation structured recursion structured corecursion structured tree and graph operations structured syntax with variable binding structured datatype-genericity structured search structured representations of functions structured quantum computation structure directed optimizations structured types structure derived from programs and data Please contact the programme chairs Jeremy Gibbons (jeremy.gibbons at cs.ox.ac.uk) and Max New (maxsnew at umich.edu) if you have any questions about the scope of the workshop. We accept two categories of submission: full papers of no more than 15 pages that will appear in the proceedings, and extended abstracts of no more than 2 pages that we will post on the website, but which do not constitute formal publications and will not appear in the proceedings. References and appendices are not included in page limits. Appendices may not be read by reviewers. Submissions must report previously unpublished work and not be submitted concurrently to another conference with refereed proceedings. Accepted papers must be presented at the workshop by one of the authors. The proceedings will be published under the auspices of EPTCS with a Creative Commons license. A short abstract should be submitted a week in advance of the paper deadline (for both full paper and extended abstract submissions). We are using EasyChair to manage submissions. To submit a paper, use this link: https://easychair.org/conferences/?conf=msfp2022 -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.g.setzer at swansea.ac.uk Tue Nov 23 19:37:40 2021 From: a.g.setzer at swansea.ac.uk (Anton Setzer) Date: Tue, 23 Nov 2021 18:37:40 +0000 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: I have the feeling we will see more on WSL and Agda in the future, since this might be a good way to get Agda installed on windows machines. It seems that the standard setting which is provided by windows sets the home directory under WSL so that it is mounted under windows, and the reason is that this way it is well integrated into the windows file system, at the cost that fileaccess is slow. If one moves files to the root directory of the linux file system then one doesn't have this problem anymore. However one needs to make sure that the standard library is in the linux root directory as well, since it requires a lot of file access. It could even be that the main culprit is the standard library and one could keep the normal files in the home directory (it's not an issue for me since it is all on git). What is highlighted by this is the fact that Agda seems to make a lot of file access in the standard library - I would usually expect that once it has been loaded it is kept in memory. But maybe all what happens is that it continously checks whether files have changed and that slows it down. Anton ________________________________ From: Jason Hu Sent: 19 November 2021 14:44 To: Anton Setzer ; agda at lists.chalmers.se Subject: Re: agda under windows WSL Hi Anton, If you look up the internet, you will find that WSL2 uses some network file system to mount your windows drives, and for that reason, this performance issue has been known for ages. As fundamental as it is, I don't see it can be fixed in any near future. Of course, WSL has no such issue. However, based on your description, I am further convinced that there is a problem with your setup. Essentially, WSL2 is a shallow wrapper of hyper-v VM. The file associated with your linux subsystem should be a hyper-v disk. On my machine, my Ubuntu WSL2 uses this hyper-v disk for home folder as well as all Agda related stuff, and thus IO is performed in native speed. The home folder is not supposed to be mounted. I suggest you to try a clean setup and see if this problem goes away. If you are attempting a workflow where you put files in your windows drives and switch to WSL2 for work, this won't work well. Thanks, Jason Hu https://hustmphrrr.github.io/ ________________________________ From: Anton Setzer Sent: November 19, 2021 9:37 AM To: Jason Hu ; agda at lists.chalmers.se Subject: RE: agda under windows WSL I found the culprit why agda under wsl was so slow on my machine. It is that Agda seems to be doing a lot of file access esp when using the standard library, and under wsl one should not put such files under /mnt/ The problem was that one needs to put the agda code and the standard library so that they are not under /mnt/. Unfortunately the linux home directory is under /mnt/ I just put them as an experiment into /tmp/ and got a speedup from 8 min 20 sec down to 24 sec. What is important is to put the standard library so that it is not in /mnt/ if one just does it for the normal agda files I saw only a small speedup from 8 min 20 to 6 min 10 sec So it seems that Agda is making an incredible amount of file access in the standard library and is not cashing the data in memory (actually memory usage was quite low and the maximum load for a processor I could see was 60% so it seems most of the time been busy with file access. I assume if one did more cashing Agda could become faster (or do I need to compile it in a different way so that this is automatically done?) Anton From: Jason Hu Sent: 19 November 2021 13:05 To: Anton Setzer ; agda at lists.chalmers.se Subject: RE: agda under windows WSL It depends on your setup and CPU. I have a laptop which does exactly WSL2 + agda and it runs very fast, probably at native speed. Thanks, Jason Hu From: Anton Setzer Sent: Friday, November 19, 2021 8:03 AM To: agda at lists.chalmers.se Subject: [Agda] agda under windows WSL Dear all, My university provided me with a windows only laptop and I have installed agda under windows WSL2. But it is incredibly slow, it takes about 10x longer than under a normal linux mschine with similar spec to type check. Does anybody have any hints how to speed it up? Thanks, Anton -------------- next part -------------- An HTML attachment was scrubbed... URL: From nad at cse.gu.se Wed Nov 24 15:35:30 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 24 Nov 2021 15:35:30 +0100 Subject: [Agda] agda under windows WSL In-Reply-To: References: Message-ID: <7c9b1d8f-dc54-4243-d838-bff04b6345d0@cse.gu.se> On 2021-11-23 19:37, Anton Setzer wrote: > What is highlighted by this is the fact that Agda seems to make a lot > of file access in the standard library I don't know if this is the cause of the slowdown that you are seeing, but Agda seems to make too many calls to stat64/lstat64: https://github.com/agda/agda/issues/5673 -- /NAD From abela at chalmers.se Mon Nov 29 22:43:38 2021 From: abela at chalmers.se (Andreas Abel) Date: Mon, 29 Nov 2021 22:43:38 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate Message-ID: The Agda Team is pleased to announce a release candidate for Agda 2.6.2.1: https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate 2.6.2.1 will be mostly a bugfix release, and will build in the latest Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, hashtables-1.3). For detailed comparison with 2.6.2, consult the changelog published with the candidate above. Instructions how to test the candidate are available at: https://github.com/agda/agda/pull/5678 Please report any regressions over 2.6.2 at the Agda issue tracker. We plan to release Agda 2.6.2.1 next week, should not release-stopping regressions be reported. Happy Agda hacking! Andreas -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ From andreas.abel at ifi.lmu.de Tue Nov 30 08:23:01 2021 From: andreas.abel at ifi.lmu.de (Andreas Abel) Date: Tue, 30 Nov 2021 08:23:01 +0100 Subject: [Agda] Which Agda with which GHC [Re: [ANNOUNCE] Agda 2.6.2 release candidate 2] In-Reply-To: <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> Message-ID: The Agda download page https://wiki.portal.chalmers.se/agda/Main/Download now contains information which major GHC version to use with which Agda version. Sources: - https://matrix.hackage.haskell.org/#/package/Agda - release notes On 2021-06-06 21:22, mechvel at scico.botik.ru wrote: > Also I am looking at > ???? https://wiki.portal.chalmers.se/agda/Main/Download > > and do not find: which Agda version can be installed on which ghc versions. From mechvel at scico.botik.ru Tue Nov 30 23:16:04 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 01 Dec 2021 01:16:04 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: On 2021-11-30 00:43, Andreas Abel wrote: > The Agda Team is pleased to announce a release candidate for Agda > 2.6.2.1: > > https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate > > 2.6.2.1 will be mostly a bugfix release, and will build in the latest > Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, > hashtables-1.3). > For detailed comparison with 2.6.2, consult the changelog published > with the candidate above. > > Instructions how to test the candidate are available at: > > https://github.com/agda/agda/pull/5678 > [..] The page https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate also provides Agda-2.6.2.0.20211129.tar.gz I have downloaded it. Now https://github.com/agda/agda/pull/5678 has an instruction for testing that starts with getting Agda from a certain place ... (?). I could try to install it from the above Agda-2.6.2.0.20211129.tar.gz. But will this action contradict the above instruction? -- SM From Graham.Hutton at nottingham.ac.uk Thu Dec 2 09:47:12 2021 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Thu, 2 Dec 2021 08:47:12 +0000 Subject: [Agda] 10 PhD studentships in Nottingham Message-ID: <1E5CC6E0-9CD8-451D-AA81-C6401EED18C1@nottingham.ac.uk> Dear all, The School of Computer Science at the University of Nottingham in the UK is seeking applications for 10 fully-funded PhD studentships: https://tinyurl.com/ten-phd-2021 Applicants in the area of the Functional Programming Lab (tinyurl.com/fp-notts) are strongly encouraged! If you are interested in applying, please contact a potential supervisor as soon as possible; the application deadline is 13th Feb: Thorsten Altenkirch - constructive logic, proof assistants, homotopy type theory, category theory, lambda calculus. Graham Hutton - functional programming, haskell, category theory, program verification, program calculation. Nicolai Kraus - homotopy type theory, higher category theory, constructive mathematics, and related topics. The studentships are open to applicants of any nationality. Best wishes, Graham Hutton +-----------------------------------------------------------+ 10 Fully-Funded PhD Studentships School of Computer Science University of Nottingham, UK tinyurl.com/ten-phd-2021 Applications are invited from international and home students for 10 fully-funded PhD studentships offered by the School of Computer Science, starting on 1st October 2022. The topics for the studentships are open, but should relate to interests of one of the School's research groups: Computational Optimisation and Learning; Computer Vision; Cyber Security; Functional Programming; Intelligent Modelling and Analysis; Mixed Reality; Uncertainty in Data and Decision Making. The studentships are fully-funded for 3.5 years and include a stipend of ?15,009 per year and tuition fees. Applicants are normally expected to have a first class bachelors or masters degree in Computer Science or another relevant area, and must obtain the support of a potential supervisor in the School prior to submitting their application. If you are interested in applying, please contact a potential supervisor as soon as possible, and at least two weeks prior to the closing date. If the supervisor wishes to support your application, they will direct you to make an official application through the MyNottingham system. Closing date for applications: Sunday 13th February 2022. +-----------------------------------------------------------+ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From andreas.abel at ifi.lmu.de Thu Dec 2 21:30:31 2021 From: andreas.abel at ifi.lmu.de (Andreas Abel) Date: Thu, 2 Dec 2021 21:30:31 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: > But will this action contradict the above instruction? No, this will be perfectly fine! Best, Andreas On 2021-11-30 23:16, mechvel at scico.botik.ru wrote: > On 2021-11-30 00:43, Andreas Abel wrote: >> The Agda Team is pleased to announce a release candidate for Agda >> 2.6.2.1: >> >> ??? https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate >> >> 2.6.2.1 will be mostly a bugfix release, and will build in the latest >> Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, >> hashtables-1.3). >> For detailed comparison with 2.6.2, consult the changelog published >> with the candidate above. >> >> Instructions how to test the candidate are available at: >> >> ??? https://github.com/agda/agda/pull/5678 >> [..] > > > The page > ? https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate > > also provides? Agda-2.6.2.0.20211129.tar.gz > > I have downloaded it. > Now? https://github.com/agda/agda/pull/5678 > > has an instruction for testing that starts with getting Agda from a > certain place ... (?). > I could try to install it from the above? Agda-2.6.2.0.20211129.tar.gz. > But will this action contradict the above instruction? > > -- > SM > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From bove at chalmers.se Fri Dec 3 16:00:22 2021 From: bove at chalmers.se (Ana Bove) Date: Fri, 3 Dec 2021 16:00:22 +0100 Subject: [Agda] 1+2 Assistant positions at Chalmers on ICT and Basic Science Message-ID: Dear All, Chalmers has now opened 11 tenured Assistant professor positions among them * *one* in *ICT* area: https://www.chalmers.se/en/about-chalmers/Working-at-Chalmers/Vacancies/Pages/default.aspx?rmpage=job&rmjob=9987 * *two* in *Basic science*: https://www.chalmers.se/en/about-chalmers/Working-at-Chalmers/Vacancies/Pages/default.aspx?rmpage=job&rmjob=9989 The positions comes with a starting package, you can read more about this and other conditions in the links above. We encourage all strong candidates to apply, in particular women and other minorities. Please distribute this information to those you think could fit the profile. Thanks -- -- Ana Bove, Docent email: bove(at)chalmers.se Phone: (46)(31)7721020 http://www.cse.chalmers.se/~bove Department of Computer Science and Engineering Chalmers Univ. of Technology and Univ. of Gothenburg -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Sat Dec 4 19:00:31 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sat, 04 Dec 2021 21:00:31 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: <2543d0914c5934e0bb3baf06e4c5dbd9@scico.botik.ru> On 2021-12-02 23:30, Andreas Abel wrote: >> But will this action contradict the above instruction? > > No, this will be perfectly fine! I have Ubuntu Linix 18.04, ghc-9.2.1, $ cabal --v reports cabal-install version 3.4.0.0 compiled using version 3.4.0.0 of the Cabal library Then, I unzip Agda-2.6.2.0.20211129.tar.gz and run there $ cabal update $ cabal install It reports ------------------------------------------- cabal: Could not resolve dependencies: [__0] trying: Agda-2.6.2.0.20211129 (user goal) [__1] next goal: Agda:setup.Cabal (dependency of Agda) [__1] rejecting: Agda:setup.Cabal-3.6.0.0/installed-3.6.0.0, Agda:setup.Cabal-3.6.2.0, Agda:setup.Cabal-3.6.1.0, Agda:setup.Cabal-3.6.0.0 (constraint from maximum version of Cabal used by Setup.hs requires <3.6) [__1] trying: Agda:setup.Cabal-3.4.1.0 [__2] next goal: Agda:setup.base (dependency of Agda) [__2] rejecting: Agda:setup.base-4.16.0.0/installed-4.16.0.0 (conflict: Agda:setup.Cabal => Agda:setup.base>=4.6 && <4.16) [__2] skipping: Agda:setup.base-4.16.0.0 (has the same characteristics that caused the previous version to fail: excluded by constraint '>=4.6 && <4.16' from 'Agda:setup.Cabal') [__2] rejecting: Agda:setup.base-4.15.0.0, Agda:setup.base-4.14.3.0, Agda:setup.base-4.14.2.0, Agda:setup.base-4.14.1.0, Agda:setup.base-4.14.0.0, Agda:setup.base-4.13.0.0, Agda:setup.base-4.12.0.0, Agda:setup.base-4.11.1.0, Agda:setup.base-4.11.0.0, Agda:setup.base-4.10.1.0, Agda:setup.base-4.10.0.0, Agda:setup.base-4.9.1.0, Agda:setup.base-4.9.0.0, Agda:setup.base-4.8.2.0, Agda:setup.base-4.8.1.0, Agda:setup.base-4.8.0.0, Agda:setup.base-4.7.0.2, Agda:setup.base-4.7.0.1, Agda:setup.base-4.7.0.0, Agda:setup.base-4.6.0.1, Agda:setup.base-4.6.0.0, Agda:setup.base-4.5.1.0, Agda:setup.base-4.5.0.0, Agda:setup.base-4.4.1.0, Agda:setup.base-4.4.0.0, Agda:setup.base-4.3.1.0, Agda:setup.base-4.3.0.0, Agda:setup.base-4.2.0.2, Agda:setup.base-4.2.0.1, Agda:setup.base-4.2.0.0, Agda:setup.base-4.1.0.0, Agda:setup.base-4.0.0.0, Agda:setup.base-3.0.3.2, Agda:setup.base-3.0.3.1 (constraint from non-upgradeable package requires installed instance) [__2] fail (backjumping, conflict set: Agda, Agda:setup.Cabal, Agda:setup.base) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: Agda:setup.Cabal, Agda:setup.base, Agda ------------------------------------------ Needs it a higher Cabal version? -- SM > On 2021-11-30 23:16, mechvel at scico.botik.ru wrote: >> On 2021-11-30 00:43, Andreas Abel wrote: >>> The Agda Team is pleased to announce a release candidate for Agda >>> 2.6.2.1: >>> >>> ??? >>> https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate >>> >>> 2.6.2.1 will be mostly a bugfix release, and will build in the latest >>> Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, >>> hashtables-1.3). >>> For detailed comparison with 2.6.2, consult the changelog published >>> with the candidate above. >>> >>> Instructions how to test the candidate are available at: >>> >>> ??? https://github.com/agda/agda/pull/5678 >>> [..] >> >> >> The page >> ? https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate >> >> also provides? Agda-2.6.2.0.20211129.tar.gz >> >> I have downloaded it. >> Now? https://github.com/agda/agda/pull/5678 >> >> has an instruction for testing that starts with getting Agda from a >> certain place ... (?). >> I could try to install it from the above? >> Agda-2.6.2.0.20211129.tar.gz. >> But will this action contradict the above instruction? >> >> -- SM >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From mechvel at scico.botik.ru Sat Dec 4 23:13:49 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Sun, 05 Dec 2021 01:13:49 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <2543d0914c5934e0bb3baf06e4c5dbd9@scico.botik.ru> References: <2543d0914c5934e0bb3baf06e4c5dbd9@scico.botik.ru> Message-ID: <03830481a25ce1e8d9dd864922da23bc@scico.botik.ru> Please, withdraw my last question. After cabal-3.6.2.0 is installed, this Agda-2.6.2.0.20211129 seems as going to be built. I am going to test Agda-2.6.2.0.20211129 within 1-2 days. -- SM On 2021-12-04 21:00, mechvel at scico.botik.ru wrote: > On 2021-12-02 23:30, Andreas Abel wrote: >>> But will this action contradict the above instruction? >> >> No, this will be perfectly fine! > > > I have Ubuntu Linix 18.04, ghc-9.2.1, > $ cabal --v > reports > cabal-install version 3.4.0.0 > compiled using version 3.4.0.0 of the Cabal library > > Then, I unzip Agda-2.6.2.0.20211129.tar.gz > and run there > $ cabal update > $ cabal install > > It reports > ------------------------------------------- > cabal: Could not resolve dependencies: > [__0] trying: Agda-2.6.2.0.20211129 (user goal) > [__1] next goal: Agda:setup.Cabal (dependency of Agda) > [__1] rejecting: Agda:setup.Cabal-3.6.0.0/installed-3.6.0.0, > [..] From mechvel at scico.botik.ru Sun Dec 5 22:48:00 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 06 Dec 2021 00:48:00 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: <1d6e86edfcc23601ebdaf704452f342c@scico.botik.ru> On 2021-11-30 00:43, Andreas Abel wrote: > The Agda Team is pleased to announce a release candidate for Agda > 2.6.2.1: > > https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate > > 2.6.2.1 will be mostly a bugfix release, and will build in the latest > Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, > hashtables-1.3). > For detailed comparison with 2.6.2, consult the changelog published > with the candidate above. > > Instructions how to test the candidate are available at: > > https://github.com/agda/agda/pull/5678 > > Please report any regressions over 2.6.2 at the Agda issue tracker. > We plan to release Agda 2.6.2.1 next week, should not release-stopping > regressions be reported. > Can you, please, explain how to restrict the memory for compilation? For the type checking, it works $ agda $agdaLibOpt $agdaFlags Foo.agda +RTS -M7G -RTS Then I try compilation (MAlonzo ...): $ agda -c $agdaLibOpt $agdaFlags Foo.agda +RTS -M7G -RTS --ghc-flag="-rtsopts" It reports things like [215 of 218] Compiling MAlonzo.Code.GenAlgebraZ45ZIV ( MAlonzo/Code/GenAlgebraZ45ZIV.hs, MAlonzo/Code/GenAlgebraZ45ZIV.o ), and the `top' command shows the current memory usage of about 16 Gb instead of 7. And the process that takes it is identified as ghc. My aim is to find out whether the project can be compiled on a 8 Gb machine. I tried to append there --ghc-flag="+RTS" --ghc-flag="-M7G" but this is not accepted. Thanks, ------ Sergei This is Agda-2.6.2.0.20211129/candidate, Ubuntu Linux 18.04, ghc-9.2.1, MAlonzo. From mechvel at scico.botik.ru Mon Dec 6 12:24:52 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 06 Dec 2021 14:24:52 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: On 2021-11-30 00:43, Andreas Abel wrote: > The Agda Team is pleased to announce a release candidate for Agda > 2.6.2.1: > > https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate > > 2.6.2.1 will be mostly a bugfix release, and will build in the latest > Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, > hashtables-1.3). > For detailed comparison with 2.6.2, consult the changelog published > with the candidate above. > > Instructions how to test the candidate are available at: > > https://github.com/agda/agda/pull/5678 > > Please report any regressions over 2.6.2 at the Agda issue tracker. > We plan to release Agda 2.6.2.1 next week, should not release-stopping > regressions be reported. > I have tested it on my library for computer algebra (large enough). Mainly, it looks all right. There are the following points. 1) The question of how to restrict memory for compilation (reported a day ago). 2) The regression effect remains for ghc-8.8.3 --> ghc-9.*. The second was reported about an year ago: Agda-2.6.2 with ghc-9.* produces 25% slower code than Agda-2.6.2 with ghc-8.8.3. I mean the performance of the executable produced by agda -c $agdaLibOpt $agdaFlags Foo.agda +RTS -M7G -RTS --ghc-flag="-rtsopts", $agdaFlags = --auto-inline --guardedness Similarly Agda-2.6.2.0.20211129 with ghc-9.* is 25% slower than Agda-2.6.2 with ghc-8.8.3. Regards, ------ Sergei From nad at cse.gu.se Mon Dec 6 13:48:33 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 6 Dec 2021 13:48:33 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: On 2021-12-06 12:24, mechvel at scico.botik.ru wrote: > The second was reported about an year ago: > Agda-2.6.2 with ghc-9.* produces 25% slower code than Agda-2.6.2 with ghc-8.8.3. > > I mean the performance of the executable produced by > agda -c $agdaLibOpt $agdaFlags Foo.agda +RTS -M7G -RTS --ghc-flag="-rtsopts", > > $agdaFlags = --auto-inline --guardedness > > Similarly > Agda-2.6.2.0.20211129 with ghc-9.* is 25% slower than Agda-2.6.2 with ghc-8.8.3. Did you use "--with-compiler=" to ensure that Agda used a specific version of GHC to compile your code? -- /NAD From nad at cse.gu.se Mon Dec 6 13:52:09 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Mon, 6 Dec 2021 13:52:09 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <1d6e86edfcc23601ebdaf704452f342c@scico.botik.ru> References: <1d6e86edfcc23601ebdaf704452f342c@scico.botik.ru> Message-ID: On 2021-12-05 22:48, mechvel at scico.botik.ru wrote: > My aim is to find out whether the project can be compiled on a 8 Gb machine. > I tried to append there > --ghc-flag="+RTS" --ghc-flag="-M7G" > > but this is not accepted. Try the following: --ghc-flag=+RTS --ghc-flag=-M7G --ghc-flag=-RTS -- /NAD From mechvel at scico.botik.ru Mon Dec 6 19:46:38 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 06 Dec 2021 21:46:38 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: <1d6e86edfcc23601ebdaf704452f342c@scico.botik.ru> Message-ID: <53a3254decaaaec282b300bd43f8e0e4@scico.botik.ru> On 2021-12-06 15:52, Nils Anders Danielsson wrote: > On 2021-12-05 22:48, mechvel at scico.botik.ru wrote: >> My aim is to find out whether the project can be compiled on a 8 Gb >> machine. >> I tried to append there >> --ghc-flag="+RTS" --ghc-flag="-M7G" >> >> but this is not accepted. > > Try the following: > > --ghc-flag=+RTS --ghc-flag=-M7G --ghc-flag=-RTS This helps. Thank you. -- SM From mechvel at scico.botik.ru Mon Dec 6 20:52:40 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Mon, 06 Dec 2021 22:52:40 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: <356c9f687ffd3c6b1557aa1579e8a8b3@scico.botik.ru> On 2021-11-30 00:43, Andreas Abel wrote: > The Agda Team is pleased to announce a release candidate for Agda > 2.6.2.1: > > https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate > > 2.6.2.1 will be mostly a bugfix release, and will build in the latest > Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, > hashtables-1.3). > For detailed comparison with 2.6.2, consult the changelog published > with the candidate above. > > Instructions how to test the candidate are available at: > > https://github.com/agda/agda/pull/5678 > > Please report any regressions over 2.6.2 at the Agda issue tracker. > We plan to release Agda 2.6.2.1 next week, should not release-stopping > regressions be reported. > I recall somebody wrote that $ cabal install -foptimise-heavily Agda produces a more efficient type checker (compiler?). I do now $ cd 2.6.2.0.20211129 (where Agda.cabal resides) and run $ cabal install -foptimise-heavily Agda It reports -------------------------------------- Wrote tarball sdist to /home/mechvel/agda/2.6.2.0.20211129/dist-newstyle/sdist/Agda-2.6.2.0.20211129.tar.gz Resolving dependencies... Build profile: -w ghc-9.2.1 -O1 In order, the following will be built (use -v for more details): - Agda-2.6.2.0.20211129 (exe:agda, exe:agda-mode) (requires build) Starting Agda-2.6.2.0.20211129 (all, legacy fallback) Building Agda-2.6.2.0.20211129 (all, legacy fallback) --------------------------------------- and hangs silently for 30 minutes already, ghc is detected as working. Is this all right? ------ Sergei From abela at chalmers.se Mon Dec 6 20:53:44 2021 From: abela at chalmers.se (Andreas Abel) Date: Mon, 6 Dec 2021 20:53:44 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <356c9f687ffd3c6b1557aa1579e8a8b3@scico.botik.ru> References: <356c9f687ffd3c6b1557aa1579e8a8b3@scico.botik.ru> Message-ID: Compilation with -foptimize-heavily is slow and requires quite a bit of RAM... On 2021-12-06 20:52, mechvel at scico.botik.ru wrote: > On 2021-11-30 00:43, Andreas Abel wrote: >> The Agda Team is pleased to announce a release candidate for Agda >> 2.6.2.1: >> >> ??? https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate >> >> 2.6.2.1 will be mostly a bugfix release, and will build in the latest >> Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, >> hashtables-1.3). >> For detailed comparison with 2.6.2, consult the changelog published >> with the candidate above. >> >> Instructions how to test the candidate are available at: >> >> ??? https://github.com/agda/agda/pull/5678 >> >> Please report any regressions over 2.6.2 at the Agda issue tracker. >> We plan to release Agda 2.6.2.1 next week, should not release-stopping >> regressions be reported. >> > > > I recall somebody wrote that > ? $ cabal install -foptimise-heavily Agda > > produces a more efficient type checker (compiler?). > > I do now > > ?$ cd 2.6.2.0.20211129 > (where Agda.cabal resides) and run > > ?$ cabal install -foptimise-heavily Agda > > It reports > > -------------------------------------- > Wrote tarball sdist to > /home/mechvel/agda/2.6.2.0.20211129/dist-newstyle/sdist/Agda-2.6.2.0.20211129.tar.gz > > Resolving dependencies... > Build profile: -w ghc-9.2.1 -O1 > In order, the following will be built (use -v for more details): > ?- Agda-2.6.2.0.20211129 (exe:agda, exe:agda-mode) (requires build) > Starting???? Agda-2.6.2.0.20211129 (all, legacy fallback) > Building???? Agda-2.6.2.0.20211129 (all, legacy fallback) > --------------------------------------- > > and hangs silently for 30 minutes already,? ghc? is detected as working. > Is this all right? > > ------ > Sergei > > -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ From abela at chalmers.se Mon Dec 6 20:55:38 2021 From: abela at chalmers.se (Andreas Abel) Date: Mon, 6 Dec 2021 20:55:38 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: <356c9f687ffd3c6b1557aa1579e8a8b3@scico.botik.ru> Message-ID: You could try to limit to one CPU, to see the progress of compilation: $ cabal install -foptimise-heavily -j1 On 2021-12-06 20:53, Andreas Abel wrote: > Compilation with -foptimize-heavily is slow and requires quite a bit of > RAM... > > On 2021-12-06 20:52, mechvel at scico.botik.ru wrote: >> On 2021-11-30 00:43, Andreas Abel wrote: >>> The Agda Team is pleased to announce a release candidate for Agda >>> 2.6.2.1: >>> >>> ??? https://hackage.haskell.org/package/Agda-2.6.2.0.20211129/candidate >>> >>> 2.6.2.1 will be mostly a bugfix release, and will build in the latest >>> Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4, >>> hashtables-1.3). >>> For detailed comparison with 2.6.2, consult the changelog published >>> with the candidate above. >>> >>> Instructions how to test the candidate are available at: >>> >>> ??? https://github.com/agda/agda/pull/5678 >>> >>> Please report any regressions over 2.6.2 at the Agda issue tracker. >>> We plan to release Agda 2.6.2.1 next week, should not release-stopping >>> regressions be reported. >>> >> >> >> I recall somebody wrote that >> ?? $ cabal install -foptimise-heavily Agda >> >> produces a more efficient type checker (compiler?). >> >> I do now >> >> ??$ cd 2.6.2.0.20211129 >> (where Agda.cabal resides) and run >> >> ??$ cabal install -foptimise-heavily Agda >> >> It reports >> >> -------------------------------------- >> Wrote tarball sdist to >> /home/mechvel/agda/2.6.2.0.20211129/dist-newstyle/sdist/Agda-2.6.2.0.20211129.tar.gz >> >> Resolving dependencies... >> Build profile: -w ghc-9.2.1 -O1 >> In order, the following will be built (use -v for more details): >> ??- Agda-2.6.2.0.20211129 (exe:agda, exe:agda-mode) (requires build) >> Starting???? Agda-2.6.2.0.20211129 (all, legacy fallback) >> Building???? Agda-2.6.2.0.20211129 (all, legacy fallback) >> --------------------------------------- >> >> and hangs silently for 30 minutes already,? ghc? is detected as working. >> Is this all right? >> >> ------ >> Sergei >> >> > -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ From mechvel at scico.botik.ru Mon Dec 6 22:01:04 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 07 Dec 2021 00:01:04 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: References: Message-ID: <2ecb7088b91889454f4b316e34c61c3a@scico.botik.ru> On 2021-12-06 15:48, Nils Anders Danielsson wrote: > On 2021-12-06 12:24, mechvel at scico.botik.ru wrote: >> The second was reported about an year ago: >> Agda-2.6.2 with ghc-9.* produces 25% slower code than Agda-2.6.2 >> with ghc-8.8.3. >> >> I mean the performance of the executable produced by >> agda -c $agdaLibOpt $agdaFlags Foo.agda +RTS -M7G -RTS >> --ghc-flag="-rtsopts", >> >> $agdaFlags = --auto-inline --guardedness >> >> Similarly >> Agda-2.6.2.0.20211129 with ghc-9.* is 25% slower than Agda-2.6.2 >> with ghc-8.8.3. > > Did you use "--with-compiler=" to ensure that Agda used a specific > version of GHC to compile your code? Before installing Agda, I always command (in Linux) $ ghc -V $ which ghc to see the GHC version and to see where does it reside. I do the same before running `agda' to type-check, and then to compile my library. Is it possible for another GHC version to intrude? -- SM From nad at cse.gu.se Tue Dec 7 12:10:33 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Tue, 7 Dec 2021 12:10:33 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <2ecb7088b91889454f4b316e34c61c3a@scico.botik.ru> References: <2ecb7088b91889454f4b316e34c61c3a@scico.botik.ru> Message-ID: <0b89a240-c5ed-d698-8ce1-2966bddc78a1@cse.gu.se> On 2021-12-06 22:01, mechvel at scico.botik.ru wrote: > Before installing Agda, I always command (in Linux) > > $ ghc -V > $ which ghc > > to see the GHC version and to see where does it reside. > I do the same before running `agda' to type-check, and then to compile my library. > Is it possible for another GHC version to intrude? If you do not use --with-compiler, then I would assume that Agda just calls "ghc". -- /NAD From mechvel at scico.botik.ru Tue Dec 7 12:49:14 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 07 Dec 2021 14:49:14 +0300 Subject: [Agda] installing 2.6.2 Message-ID: Please, help to install Agda-2.6.2. It is on Ubuntu Linux 18.04, ghc-8.8.3, cabal-3.6.2.0. I un-archivate the source and command $ cd 2.6.2 $ cabal update Downloading the latest package list from hackage.haskell.org Package list of hackage.haskell.org is up to date at index-state 2021-12-07T09:32:17Z $ cabal install Agda cabal: sdist of Agda-2.6.2: filepath wildcard 'doc/user-manual.pdf' does not match any files. ? ------ Sergei From melkon.or at gmail.com Tue Dec 7 13:11:51 2021 From: melkon.or at gmail.com (Orestis Melkonian) Date: Tue, 7 Dec 2021 12:11:51 +0000 Subject: [Agda] installing 2.6.2 In-Reply-To: References: Message-ID: <9eb9e620-d4f2-f718-23dc-cfc380b66000@gmail.com> Do `touch doc/user-manual.pdf` before installing, or try to make the manual with `make user-manual-pdf`. --OM On 07/12/2021 11:49, mechvel at scico.botik.ru wrote: > Please, > help to install Agda-2.6.2. > > It is on Ubuntu Linux 18.04, ghc-8.8.3, cabal-3.6.2.0. > > I un-archivate the source and command > > ?$ cd 2.6.2 > ?$ cabal update > > ?Downloading the latest package list from hackage.haskell.org > ?Package list of hackage.haskell.org is up to date at index-state > 2021-12-07T09:32:17Z > > ?$ cabal install Agda > > ?cabal: sdist of Agda-2.6.2: filepath wildcard 'doc/user-manual.pdf' > does not > ?match any files. > > ? > > ------ > Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From Jesper at sikanda.be Tue Dec 7 13:21:11 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Tue, 7 Dec 2021 13:21:11 +0100 Subject: [Agda] installing 2.6.2 In-Reply-To: References: Message-ID: Hi Sergei, If you have already downloaded the code you should not run `cabal install Agda` since that will download the Agda source again from the Cabal servers. Instead, you should simply run `cabal install` in the source directory. -- Jesper On Tue, Dec 7, 2021 at 12:50 PM wrote: > Please, > help to install Agda-2.6.2. > > It is on Ubuntu Linux 18.04, ghc-8.8.3, cabal-3.6.2.0. > > I un-archivate the source and command > > $ cd 2.6.2 > $ cabal update > > Downloading the latest package list from hackage.haskell.org > Package list of hackage.haskell.org is up to date at index-state > 2021-12-07T09:32:17Z > > $ cabal install Agda > > cabal: sdist of Agda-2.6.2: filepath wildcard 'doc/user-manual.pdf' > does not > match any files. > > ? > > ------ > Sergei > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mechvel at scico.botik.ru Tue Dec 7 16:16:03 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 07 Dec 2021 18:16:03 +0300 Subject: [Agda] installing 2.6.2 In-Reply-To: <9eb9e620-d4f2-f718-23dc-cfc380b66000@gmail.com> References: <9eb9e620-d4f2-f718-23dc-cfc380b66000@gmail.com> Message-ID: On 2021-12-07 15:11, Orestis Melkonian wrote: > Do `touch doc/user-manual.pdf` before installing, or try to make the > manual with `make user-manual-pdf`. > It works. Thank you. -- SM > > On 07/12/2021 11:49, mechvel at scico.botik.ru wrote: >> Please, >> help to install Agda-2.6.2. >> >> It is on Ubuntu Linux 18.04, ghc-8.8.3, cabal-3.6.2.0. >> >> I un-archivate the source and command >> >> ?$ cd 2.6.2 >> ?$ cabal update >> >> ?Downloading the latest package list from hackage.haskell.org >> ?Package list of hackage.haskell.org is up to date at index-state >> 2021-12-07T09:32:17Z >> >> ?$ cabal install Agda >> >> ?cabal: sdist of Agda-2.6.2: filepath wildcard 'doc/user-manual.pdf' >> does not >> ?match any files. >> >> ? >> >> ------ >> Sergei >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda From mechvel at scico.botik.ru Tue Dec 7 16:20:15 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 07 Dec 2021 18:20:15 +0300 Subject: [Agda] installing 2.6.2 In-Reply-To: References: Message-ID: <6c2d6b756e549dcc90f3253ff82257a5@scico.botik.ru> On 2021-12-07 15:21, Jesper Cockx wrote: > Hi Sergei, > > If you have already downloaded the code you should not run `cabal > install Agda` since that will download the Agda source again from the > Cabal servers. Instead, you should simply run `cabal install` in the > source directory. > Thank you. It looks like Cabal can cleverly do unexpected things! -- SM From mechvel at scico.botik.ru Tue Dec 7 19:37:50 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Tue, 07 Dec 2021 21:37:50 +0300 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <0b89a240-c5ed-d698-8ce1-2966bddc78a1@cse.gu.se> References: <2ecb7088b91889454f4b316e34c61c3a@scico.botik.ru> <0b89a240-c5ed-d698-8ce1-2966bddc78a1@cse.gu.se> Message-ID: <7aa8ad9baa48738fa72f80a93080a3ac@scico.botik.ru> On 2021-12-07 14:10, Nils Anders Danielsson wrote: > On 2021-12-06 22:01, mechvel at scico.botik.ru wrote: >> Before installing Agda, I always command (in Linux) >> >> $ ghc -V >> $ which ghc >> >> to see the GHC version and to see where does it reside. >> I do the same before running `agda' to type-check, and then to compile >> my library. >> Is it possible for another GHC version to intrude? > > If you do not use --with-compiler, then I would assume that Agda just > calls "ghc". Today, I moved from Agda-2.6.2.0.20211129 + ghc-9.2.1 to Agda-2.6.2 + ghc-8.8.3. The same application is built under the same options. And the latter executable runs 25% faster. If you are interested, I could send the source to your e-mail (a preliminary program, not for further distribution). But this will be about 300K byte, after I reduce it a bit. It just multiplies f * f where f is a certain large degree univariate polynomial (deg = 2000, 4000 ...), the coefficient domain is an instance of certain abstract constructions. -- SM From abela at chalmers.se Wed Dec 8 09:17:12 2021 From: abela at chalmers.se (Andreas Abel) Date: Wed, 8 Dec 2021 09:17:12 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2 In-Reply-To: References: Message-ID: <300354f8-df09-c280-44b3-8fcd7f805db7@chalmers.se> Dear all, The Agda Team is very pleased to announce the release of Agda 2.6.2.1. # Changes https://hackage.haskell.org/package/Agda-2.6.2.1/changelog Highlights: - Agda 2.6.2.1 catches up to changes in the Haskell ecosystem (GHC 9.2.1, aeson-2.0, hashable-1.4.). - It fixes some regressions introduced in 2.6.1. - It fixes some regressions introduced in 2.6.2. - It improves on the compiler backends. Agda 2.6.2.1 has been tested with GHC 9.2.1, 9.0.1, 8.10.5, 8.8.4, 8.6.5, 8.4.4, 8.2.2 and 8.0.2 on Linux, macOS and Windows. # Installation You can install Agda 2.6.2.1 with Cabal or stack. See: https://agda.readthedocs.io/en/v2.6.2.1/getting-started/installation.html # Standard library Use standard library version 1.7.1 (or keep using 1.7 if you do not care about GHC 9.2.1). https://wiki.portal.chalmers.se/agda/Libraries/StandardLibrary Enjoy Agda 2.6.2.1! -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel at gu.se http://www.cse.chalmers.se/~abela/ -------------- next part -------------- _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda From nad at cse.gu.se Wed Dec 8 12:07:11 2021 From: nad at cse.gu.se (Nils Anders Danielsson) Date: Wed, 8 Dec 2021 12:07:11 +0100 Subject: [Agda] [ANNOUNCE] Agda 2.6.2.1 release candidate In-Reply-To: <7aa8ad9baa48738fa72f80a93080a3ac@scico.botik.ru> References: <2ecb7088b91889454f4b316e34c61c3a@scico.botik.ru> <0b89a240-c5ed-d698-8ce1-2966bddc78a1@cse.gu.se> <7aa8ad9baa48738fa72f80a93080a3ac@scico.botik.ru> Message-ID: <58f0d920-7300-1718-a170-f79c2567eda7@cse.gu.se> On 2021-12-07 19:37, mechvel at scico.botik.ru wrote: > Today, I moved from Agda-2.6.2.0.20211129 + ghc-9.2.1 > to Agda-2.6.2 + ghc-8.8.3. > > The same application is built under the same options. > And the latter executable runs 25% faster. > > If you are interested, I could send the source to your e-mail > (a preliminary program, not for further distribution). I suggest that you report the problem on the bug tracker, preferably together with a small test case. -- /NAD From mechvel at scico.botik.ru Wed Dec 8 16:40:27 2021 From: mechvel at scico.botik.ru (mechvel at scico.botik.ru) Date: Wed, 08 Dec 2021 18:40:27 +0300 Subject: [Agda] Which Agda with which GHC [Re: [ANNOUNCE] Agda 2.6.2 release candidate 2] In-Reply-To: References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> Message-ID: <25de158b237dfff532f008d21880e60c@scico.botik.ru> On 2021-11-30 10:23, Andreas Abel wrote: > The Agda download page > > https://wiki.portal.chalmers.se/agda/Main/Download > > now contains information which major GHC version to use with which Agda > version. > > Sources: > - https://matrix.hackage.haskell.org/#/package/Agda > - release notes 1) One can observe https://matrix.hackage.haskell.org/#/package/Agda when reading this letter, but one cannot find this place when inspecting https://wiki.portal.chalmers.se/agda/Main/Download - ? 2) Now I look into https://matrix.hackage.haskell.org/#/package/Agda It shows a certain table. I do not find there a) the ghc versions for Agda-2.6.2.1, b) any ghc-9.* version for Agda-2.6.2, (cannot it work under ghc-9.*) ? ------ Sergei From icfp.publicity at googlemail.com Wed Dec 8 21:00:19 2021 From: icfp.publicity at googlemail.com (Ilya Sergey) Date: Thu, 09 Dec 2021 04:00:19 +0800 Subject: [Agda] Call for Workshop Proposals: ICFP 2022 Message-ID: <61b10ed337b14_15adc3fdd9842ffd055529@ilya-work-macbook.mail> CALL FOR WORKSHOP AND CO-LOCATED EVENT PROPOSALS ICFP 2022 27th ACM SIGPLAN International Conference on Functional Programming September 11 - 16, 2022 Ljubljana, Slovenia https://icfp22.sigplan.org/ The 27th ACM SIGPLAN International Conference on Functional Programming will be held in Ljubljana, Slovenia on September 11 - 16, 2022, with the option of virtual participation. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for workshops (and other co-located events, such as symposiums) to be affiliated with ICFP 2022 and sponsored by SIGPLAN. These events should be less formal and more focused than ICFP itself, include sessions that enable interaction among the attendees, and foster the exchange of new ideas. The preference is for one-day events, but other schedules can also be considered. The workshops are scheduled to occur on September 11th (the day before ICFP) and September 15-16th (the two days after ICFP). ---------------------------------------------------------------------- Submission details Deadline for submission: December 24, 2021 Notification of acceptance: January 10, 2022 Prospective organizers of workshops or other co-located events are invited to submit a completed workshop proposal form in plain text format to the ICFP 2022 workshop co-chairs (Arthur Azevedo de Amorim and Zoe Paraskevopoulou) via email to icfp-workshops-2022 at googlegroups.com by December 24, 2021. (For proposals of co-located events other than workshops, please fill in the workshop proposal form and just leave blank any sections that do not apply.) Please note that this is a firm deadline. Organizers will be notified if their event proposal is accepted by January 10, 2022, and if successful, depending on the event, they will be asked to produce a final report after the event has taken place that is suitable for publication in SIGPLAN Notices. The proposal form is available at: http://www.icfpconference.org/icfp2022-files/icfp22-workshops-form.txt Further information about SIGPLAN sponsorship is available at: http://www.sigplan.org/Resources/Proposals/Sponsored/ ---------------------------------------------------------------------- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2022 organizing committee, together with the members of the SIGPLAN executive committee. Workshop Co-Chair: Arthur Azevedo de Amorim (Boston University) Workshop Co-Chair: Zoe Paraskevopoulou (Northeastern University) General Chair: Andrej Bauer (University of Ljubljana) Program Chair: Zena Ariola (University of Oregon) ---------------------------------------------------------------------- Further information Any queries should be addressed to the workshop co-chairs (Arthur Azevedo de Amorim and Zoe Paraskevopoulou), via email to icfp-workshops-2022 at googlegroups.com. From andrei.h.popescu at gmail.com Thu Dec 9 01:06:51 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Thu, 9 Dec 2021 00:06:51 +0000 Subject: [Agda] Certified Programs and Proofs (CPP) 2022: Call for Participation Message-ID: *** Call for Participation *** *** Certified Programs and Proofs (CPP) 2022 *** - Early registration deadline: 3 January 2022 - Getting a visa: https://popl22.sigplan.org/attending/visa-information - Registration: https://popl22.sigplan.org/attending/registration - Further reduced student participation fee: see below - Accommodation: https://popl22.sigplan.org/venue/POPL-2022-venue Certified Programs and Proofs (CPP) is an international conference on practical and theoretical topics in all areas that consider formal verification and certification as an essential paradigm for their work. CPP spans areas of computer science, mathematics, logic, and education. CPP 2022 (https://popl22.sigplan.org/home/CPP-2022) will be held on 17-18 January 2022 and will be co-located with POPL 2022. CPP 2022 is sponsored by ACM SIGPLAN, in cooperation with ACM SIGLOG, and supported by a diverse set of industrial sponsors. Similarly to other events collocated with POPL 2022, CPP will take place as an in-person event at the Westin Philadelphia (99 South 17th Street at Liberty Place, 19103 Philadelphia), and will require attendees to provide proof of vaccination (details will be available soon). Authors who are unable to attend CPP in person will be able to present remotely. All talks will be recorded, and all recordings will be available either as a livestream or soon afterwards. For more information about this edition and the CPP series, please visit https://popl22.sigplan.org/home/CPP-2022 ### Invited talks * June Andronick (UNSW Sydney). The seL4 verification: the art and craft of proof and the reality of commercial support * Andrew W. Appel (Princeton). Coq?s vibrant ecosystem for verification engineering * Cesar Munoz (Currently at AWS, Formerly at NASA, USA). Structural Embeddings Revisited ### Accepted papers The list of accepted papers is available at https://popl22.sigplan.org/home/CPP-2022#event-overview ### Subsidized student registration To facilitate in-person participation of undergraduate and graduate students who require financial assistance, CPP 2022 offers the opportunity to register at a special reduced rate, determined on a case-by-case basis, and implemented using a special-purpose registration code on POPL's registration website. Students wishing to apply for such support may do so by sending an email to the CPP conference co-chairs (Beringer and Krebbers, see below for their email) preferably by December 24, 2021, with a brief description of their situation. Notifications will be sent out at most one week later; hence, students who cannot be supported will still have the opportunity to register at the publicly available reduced rate, which is available until January 3rd. Applications arriving after December 24th will be considered only in exceptional cases. Students who already receive registration support for PLMW or are supported by SIGPLAN PAC are not eligible. CPP's student support is made possible by our generous industrial supporters: https://popl22.sigplan.org/home/CPP-2022 ### Contact For any questions please contact the chairs: Andrei Popescu (PC co-chair) Steve Zdancewic (PC co-chair) Lennart Beringer (conference co-chair) Robbert Krebbers (conference co-chair) From bove at chalmers.se Thu Dec 9 12:59:24 2021 From: bove at chalmers.se (Ana Bove) Date: Thu, 9 Dec 2021 12:59:24 +0100 Subject: [Agda] Postdoctor in Modal operations for homotopy type theory Message-ID: <6d81e573-68d6-b87a-2eb5-c7bec36311f1@chalmers.se> Hey! We have a 2-year postdoc position on Modal operations for homotopy type theory to work with Prof. Thierry Coquand at the University of Gothenburg. The candidate needs to be knowledgable on topos theory, geometric logic, and internal language of sheaf models, and have experience with proof assistants (if possible Agda). More information on the position and on how to apply can be found at https://web103.reachmee.com/ext/I005/1035/job?site=7&lang=UK&validator=9b89bead79bb7258ad55c8d75228e5b7&job_id=23096 Best -- -- Ana Bove, Docent email: bove(at)chalmers.se Phone: (46)(31)7721020 http://www.cse.chalmers.se/~bove Department of Computer Science and Engineering Chalmers Univ. of Technology and Univ. of Gothenburg From andreas.abel at ifi.lmu.de Thu Dec 9 22:14:15 2021 From: andreas.abel at ifi.lmu.de (Andreas Abel) Date: Thu, 9 Dec 2021 22:14:15 +0100 Subject: [Agda] Which Agda with which GHC [Re: [ANNOUNCE] Agda 2.6.2 release candidate 2] In-Reply-To: <25de158b237dfff532f008d21880e60c@scico.botik.ru> References: <99756d881ba07d30100f71010c03dc2e@scico.botik.ru> <378c7e16-3b85-8ab4-3e2a-2bf9643a9769@cse.gu.se> <351893e1dd05388f6c87a9ca3eb235e6@scico.botik.ru> <25de158b237dfff532f008d21880e60c@scico.botik.ru> Message-ID: Unfortunately, matrix.hackage.haskell.org has not been updated beyond GHC 8.10.1; it does not build packages on GHC 9. So, if nothing is shown for GHC 9.0 and 9.2, this does not mean anything. On 2021-12-08 16:40, mechvel at scico.botik.ru wrote: > On 2021-11-30 10:23, Andreas Abel wrote: >> The Agda download page >> >> ? https://wiki.portal.chalmers.se/agda/Main/Download >> >> now contains information which major GHC version to use with which >> Agda version. >> >> Sources: >> ? - https://matrix.hackage.haskell.org/#/package/Agda >> ? - release notes > > > 1) One can observe? https://matrix.hackage.haskell.org/#/package/Agda > ?? when reading this letter, > ?? but one cannot find this place when inspecting > ?? https://wiki.portal.chalmers.se/agda/Main/Download > - ? > > 2) Now I look into https://matrix.hackage.haskell.org/#/package/Agda > ?? It shows a certain table. > I do not find there > a) the ghc versions for Agda-2.6.2.1, > b) any ghc-9.* version for Agda-2.6.2, > ?? (cannot it work under ghc-9.*) ? > > ------ > Sergei From maxsnew at gmail.com Wed Dec 15 15:23:04 2021 From: maxsnew at gmail.com (Max New) Date: Wed, 15 Dec 2021 09:23:04 -0500 Subject: [Agda] MSFP 2022 - Call for Papers Message-ID: Reminder, the abstract deadline is tomorrow. Ninth Workshop on MATHEMATICALLY STRUCTURED FUNCTIONAL PROGRAMMING Saturday 2nd April 2022, Munich, Germany A satellite workshop of ETAPS 2022 https://msfp-workshop.github.io/msfp2022/ ** Deadline: 16 December (abstract), 23 December (paper) ** The ninth workshop on Mathematically Structured Functional Programming is devoted to the derivation of functionality from structure. It is a celebration of the direct impact of Theoretical Computer Science on programs as we write them today. Modern programming languages, and in particular functional languages, support the direct expression of mathematical structures, equipping programmers with tools of remarkable power and abstraction. Where would Haskell be without monads? Functional reactive programming without temporal logic? Call-by-push-value without adjunctions? The list goes on. This workshop is a forum for researchers who seek to reflect mathematical phenomena in data and control. The first MSFP workshop was held in Kuressaare, Estonia, in July 2006, affiliated with MPC 2006 and AMAST 2006. The second MSFP workshop was held in Reykjavik, Iceland as part of ICALP 2008. The third MSFP workshop was held in Baltimore, USA, as part of ICFP 2010. The fourth workshop was held in Tallinn, Estonia, as part of ETAPS 2012. The fifth workshop was held in Grenoble, France, as part of ETAPS 2014. The sixth MSFP Workshop was held in April 2016, in Eindhoven, Netherlands, as part of ETAPS 2016. The seventh MSFP Workshop was held in July 2018, in Oxford, UK, as part of FLoC 2018. The eigth MSFP Workshop was held virtually in August 2020, originally planned as part of ETAPS 2020. Important Dates: ================ Abstract deadline: 16 December (Thursday) Paper deadline: 23 December (Thursday) Notification: 27 January (Thursday) Final version: 24 February (Thursday) Workshop: 2 April(Saturday ) Invited Speakers: ================= Valeria de Paiva - Topos Institute, USA Programme Committee: ==================== Nuria Brede - University of Potsdam, Germany Jacques Carette - McMaster University, Canada Youyou Cong - Tokyo Institute of Technology, Japan Philippa Cowderoy Jan de Muijnck-Hughes - University of Glasgow, UK Harley Eades III - Augusta University, USA Jeremy Gibbons - University of Oxford, UK (co-chair) Jules Hedges - University of Stratchclyde, UK Shin-Ya Katsumata - National Institute of Informatics, Japan Max New - University of Michigan, USA (co-chair) Maciej Pir?g - University of Wroc?aw, Poland Artjoms Sinkarovs - Heriot-Watt University, UK Submission: =========== Submissions are welcomed on, but by no means restricted to, topics such as: structured effectful computation structured recursion structured corecursion structured tree and graph operations structured syntax with variable binding structured datatype-genericity structured search structured representations of functions structured quantum computation structure directed optimizations structured types structure derived from programs and data Please contact the programme chairs Jeremy Gibbons (jeremy.gibbons at cs.ox.ac.uk) and Max New (maxsnew at umich.edu) if you have any questions about the scope of the workshop. We accept two categories of submission: full papers of no more than 15 pages that will appear in the proceedings, and extended abstracts of no more than 2 pages that we will post on the website, but which do not constitute formal publications and will not appear in the proceedings. References and appendices are not included in page limits. Appendices may not be read by reviewers. Submissions must report previously unpublished work and not be submitted concurrently to another conference with refereed proceedings. Accepted papers must be presented at the workshop by one of the authors. The proceedings will be published under the auspices of EPTCS with a Creative Commons license. A short abstract should be submitted a week in advance of the paper deadline (for both full paper and extended abstract submissions). We are using EasyChair to manage submissions. To submit a paper, use this link: https://easychair.org/conferences/?conf=msfp2022 -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrei.h.popescu at gmail.com Fri Dec 17 12:32:43 2021 From: andrei.h.popescu at gmail.com (Andrei Popescu) Date: Fri, 17 Dec 2021 11:32:43 +0000 Subject: [Agda] IJCAR 2022 - Call for Papers Message-ID: IJCAR 2022 - Call for Papers https://easychair.org/smart-program/IJCAR2022/. ***Important Dates*** Submission deadline February 11, 2022 Start of authors response period April 16, 2022 End of authors response period April 18, 2022 Authors notification April 25, 2022 ************ ****Overview***** IJCAR is the premier international joint conference on all aspects of automated reasoning. IJCAR 2022 is the 11th edition of IJCAR. It will be held in Haifa (Israel), during August 7-12, 2022, as part of FLoC 2022. IJCAR 2022 is the merger conference of the following leading events in automated reasoning: CADE (Conference on Automated Deduction) FroCoS (Symposium on Frontiers of Combining Systems) TABLEAUX (Conference on Analytic Tableaux and Related Methods) ****Submission Guidelines**** IJCAR 2022 invites submissions related to all aspects of automated or interactive reasoning, including foundations, implementations, and applications. All papers must be original and not simultaneously submitted to another journal or conference. The following paper categories are welcome: - Regular papers describing solid new research results. They can be up to 16 pages long, including figures but excluding references and appendices. Where applicable, regular papers are supported by experimental validation. Submissions reporting on case studies in an industrial context are strongly invited as regular papers, and should describe details, weaknesses and strength in sufficient depth. - System description papers describing implementations of systems, reporting on novel features and experiments with implemented systems. System description papers can be up to 7 pages long, including figures but excluding references and appendices. System description papers should also be supported by a link to the artifact/experimental evaluation available to the reviewers. Each of these papers should mention the phrase ``(system description)" beneath the title. Papers describing tools that have already been presented in other conferences before will be accepted only if significant and clear enhancements to the tool are reported and implemented. Both types of papers must be formatted using the Springer LNCS styles and submitted in PDF via EasyChair: https://easychair.org/conferences/?conf=ijcar2022 Authors of accepted papers are required to ensure that at least one of them will present the paper at the conference. ****List of Topics**** IJCAR 2022 topics include the following ones: * Logics of interest include: propositional, first-order, classical, equational, higher-order, non-classical, constructive, modal, temporal, many-valued, substructural, description, type theory. * Methods of interest include: tableaux, sequent calculi, resolution, model- elimination, inverse method, paramodulation, term rewriting, induction, unification, constraint solving, decision procedures,model generation, model checking, semantic guidance, interactive theorem proving, logical frameworks, AI-related methods for deductive systems, proof presentation, automated theorem proving, combination of decision or proof procedures, SAT and SMT solving, integration of proof assistants with automated provers and other symbolic tools, etc. * Applications of interest include: verification, formal methods, program analysis and synthesis, computer mathematics, declarative programming, deductive databases, knowledge representation, education, formalization of mathematics etc. ****Publication**** IJCAR 2022 proceedings will be published in the Springer LNCS series. Springer encourages authors to include their ORCIDs in their papers. ****Conference Chair**** Arnon Avron (Tel-Aviv University) ****Program Committee Chairs**** Jasmin Blanchette (Vrije Universiteit Amsterdam) - chair Laura Kovacs (Vienna University of Technology) - chair Dirk Pattinson (The Australian National University) - chair ****Workshop Chairs**** Simon Robillard (Universit? de Montpellier) Sophie Tourret (Max Planck Institute for Informatics)) ****Tutorials and Competition Chair**** Yoni Zohar (Stanford University) ****Publicity Chair**** Geoff Sutcliffe (University of Miami) ****Program Commitee**** Erika Abraham (RWTH Aachen University) Carlos Areces (FaMAF - Universidad Nacional de C?rdoba) Bernhard Beckert (Karlsruhe Institute of Technology) Alexander Bentkamp (Vrije Universiteit Amsterdam) Armin Biere (Albert-Ludwigs-Universit?t Freiburg) Nikolaj Bj?rner (Microsoft) Jasmin Blanchette (Vrije Universiteit Amsterdam) Fr?d?ric Blanqui (INRIA) Maria Paola Bonacina (Universit? degli Studi di Verona) Kaustuv Chaudhuri (INRIA) Agata Ciabattoni (Vienna University of Technology) St?phane Demri (CNRS, LMF, ENS Paris-Saclay) Clare Dixon (University of Manchester) Huimin Dong (Sun Yat-Sen University) Katalin Fazekas (TU Wien) Mathias Fleury (University of Freiburg) Pascal Fontaine (Universit? de Li?ge, Belgium) Nathan Fulton (IBM Corporation) Silvio Ghilardi (Dipartimento di Matematica, Universit? degli Studi di Milano) J?rgen Giesl (RWTH Aachen University) Rajeev Gore (The Australian National University) Marijn Heule (Carnegie Mellon University) Radu Iosif (Verimag, CNRS, University of Grenoble Alpes) Mikolas Janota (Czech Technical University in Prague) Moa Johansson (Chalmers University of Technology) Cezary Kaliszyk (University of Innsbruck) Laura Kovacs (Vienna University of Technology) Orna Kupferman (Hebrew University) Cl?udia Nalon (University of Bras?lia) Vivek Nigam (Huawei ERC) Tobias Nipkow (Technical University of Munich) Jens Otten (University of Oslo) Dirk Pattinson (The Australian National University) Nicolas Peltier (CNRS - LIG) Brigitte Pientka (McGill University) Elaine Pimentel (UFRN) Andr? Platzer (Carnegie Mellon University) Giles Reger (Amazon Web Services and The University of Manchester) Andrew Reynolds (University of Iowa) Simon Robillard (Universit? de Montpellier) Albert Rubio (Universidad Complutense de Madrid) Philipp Ruemmer (Uppsala University) Renate A. Schmidt (The University of Manchester) Stephan Schulz (DHBW Stuttgart) Roberto Sebastiani (University of Trento) Martina Seidl (Johannes Kepler University Linz) Viorica Sofronie-Stokkermans (University Koblenz-Landau) Lutz Stra?burger (INRIA Saclay --- Ile-de-France) Martin Suda (Czech Technical University in Prague) Tanel Tammet (Tallinn University of Technology) Sophie Tourret (Max Planck Institute for Informatics) Uwe Waldmann (MPI for Informatics) Christoph Weidenbach (Max Planck Institute for Informatics) Sarah Winkler (Free University of Bozen-Bolzano) Yoni Zohar (Stanford University) From P.Achten at cs.ru.nl Mon Dec 20 16:32:26 2021 From: P.Achten at cs.ru.nl (Peter Achten) Date: Mon, 20 Dec 2021 16:32:26 +0100 Subject: [Agda] 3 Fully funded PhD positions in Software Technology at Radboud University, Netherlands Message-ID: <5aa1aa15-8529-c99f-f8c1-c33cecd47da2@cs.ru.nl> -------------------------------------------------------------------------------------- 3 Fully funded PhD positions in Software Technology at Radboud University, Netherlands -------------------------------------------------------------------------------------- In the Software Technology group at Radboud University in Nijmegen, Netherlands, we are looking for enthusiastic and outstanding Computer Science or Mathematics students with a strong background in at least one of the following areas: ?* programming languages ?* compiler technology ?* code generation ?* runtime systems ?* High-Performance-Computing ?* Parallel Computing to strengthen our group. Our key driving force is the desire to combine programming language research with compiler technology and code generation techniques for creating practically applicable software tools. Our credo lies in HP3 technology: combining High-Productivity, High-Portability, and High-Performance. Long-term projects driven by our group include the Clean project (clean.cs.ru.nl), the SaC project (www.sac-home.org), and the iTask system (clean.cs.ru.nl/ITasks). Our current focal points are: *Gradual Programming*, *Swarm Computing*, *Heterogeneous High- Performance Computing*, *Sustainable and Energy-Efficient Computing*. With *Gradual Programming*, we aim to combine the flexibility of rapid prototyping with the type safety of strongly typed programming languages. We look into a radically new approach towards typing programming languages for increased productivity, correctness and sustainability. Please contact Peter Achten (P.Achten at cs.ru.nl) for details. *Swarm Computing* refers to the idea of being able to, from a single source, perform programming, controlling, and computation on a dynamic and hybrid collection of computational units varying from CPUs, GPUs, FPGAs, TPUs, to IoT devices. Currently, we are particularly interested in Swarm Computing for sustainable IoT utilisation. Please contact Pieter Koopman (pieter at cs.ru.nl) for details. In *Heterogeneous High-Performance Computing*, we are interested in the generation of code for swarm computing systems aiming for unprecedented levels of efficiency in terms of both, runtime and energy efficiency. This includes mainstream accelerators such as GPUs and FPGAs as well as novel architectures such as Cerebras? new architecture (www.cerebras.net). This work will contribute to the new TEN-X initiative (mission10-x.org). Please contact Sven-Bodo Scholz (SvenBodo.Scholz at ru.nl) for details. We offer: ?* a gross monthly salary starting from ?2,434 in the first year, step-wise increasing to ?? ?3,111 in the fourth year. ?* a 4 year full-time contract, subject to a successful performance evaluation after 18 months. ?* a stimulating work environment with excellent Dual Career and Family Care Services. = How to apply = Applications should consist of a single pdf-file containing your CV, a cover letter explaining your motivation, and a letter of reference. We will consider applications as they arrive until the positions are filled. The deadline for applications is January 31 2022. Please send your application to: SvenBodo.Scholz at ru.nl. From mail at robbertkrebbers.nl Wed Dec 22 08:12:47 2021 From: mail at robbertkrebbers.nl (Robbert Krebbers) Date: Wed, 22 Dec 2021 08:12:47 +0100 Subject: [Agda] Assistant Professor of Software Technology (tenure track) at Radboud University Message-ID: <73a5619f-802c-62c2-d84f-32b7c29ce2b2@robbertkrebbers.nl> Assistant Professor of Software Technology (tenure track) Employment: 0.8 - 1.0 FTE Faculty of Science, Radboud University, Nijmegen, The Netherlands Application deadline: 20 January 2022 To strengthen and expand the research of the Software Science (SWS https://www.sws.cs.ru.nl/) group, we seek a Tenure-track Assistant Professor of Software Technology who will focus on applications and transfer of academic results to industry/society. You will have the opportunity to develop your own research line in the context of the SWS group's future activities. You will be expected to supervise a number of PhD candidates and to teach Bachelor's degree courses in Computer Science (e.g. Software Engineering and New Devices Lab) and Master's degree courses in Software Science. You will also actively contribute to the supervision of Bachelor's and Master's projects and will be involved in organisational tasks within the institute. All teaching is in English. The position is available in the Software Science (SWS https://www.sws.cs.ru.nl/) group of the Institute for Computing and Information Sciences (iCIS https://www.ru.nl/icis/) at Radboud University. The mission of the SWS group is to conduct world-leading research on the use of models for design and analysis of software. The group is well-known for work on model-based software engineering, model learning, model-based testing, model checking, combining formal verification and machine learning, functional programming and HPC/array computing, proof assistants, and mathematical foundations. We find it important (and inspiring!) to cover the full spectrum from theory to applications in a single research group. Through collaboration with stakeholders from industry and society, we obtain a better understanding of when and how software science can help to solve real-world problems. Thus we have joint projects with, for instance, Canon Production Printing, ASML, Alfa Laval, Philips Healthcare, Google, Intel, the Netherlands Defence Academy (NLDA), and our spin-off TOP Software Technology. For questions about the position, please contact Prof. Frits Vaandrager, F.Vaandrager at cs.ru.nl. Head of Department of Software Science Practical information and applications: https://www.ru.nl/werken-bij/vacature/details-vacature/?recid=1180004 From wadler at inf.ed.ac.uk Fri Dec 24 18:03:05 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Fri, 24 Dec 2021 17:03:05 +0000 Subject: [Agda] Need help completing a proof Message-ID: I'm having trouble completing a proof, and would be grateful for help. The problem arises because I need to show two values are equal, but the equality of the values follows from a complex equation. In fact, it is not hard to show that the equality follows from the equation, but when I attempt to use the desired equality for rewriting Agda complains and I can't work out what it is complaining about (or how to fix it). A complete example is attached. The original is more complex, I've tried to boil it down to its simplest form. My apologies that the simplest form is not so simple! Thank you for your help. Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Example.lagda.md Type: text/markdown Size: 4567 bytes Desc: not available URL: -------------- next part -------------- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. From mietek at bak.io Fri Dec 24 19:23:07 2021 From: mietek at bak.io (=?UTF-8?Q?Mi=C3=ABtek_Bak?=) Date: Fri, 24 Dec 2021 19:23:07 +0100 Subject: [Agda] Need help completing a proof In-Reply-To: References: Message-ID: <0d338a8e-ac3d-4f25-86ae-856edcba20b0@www.fastmail.com> In this case, the simplest solution seems to be using with-abstraction to pattern match on the result of `equation`, in order to let Agda take the desired equality `G ? H` into account. https://agda.readthedocs.io/en/latest/language/with-abstraction.html ```diff --- Example-before.lagda.md +++ Example-after.lagda.md @@ -147 +147,2 @@ -example g h p q s t M e = {!!} +example g h p q s t M e with equation g h p q s t e +... | refl = ? (M ? p) ? q , collapse g h ? ``` -- MB On Fri, Dec 24, 2021, at 18:03, Philip Wadler wrote: > I'm having trouble completing a proof, and would be grateful for help. > The problem arises because I need to show two values are equal, but the > equality of the values follows from a complex equation. In fact, it is > not hard to show that the equality follows from the equation, but when > I attempt to use the desired equality for rewriting Agda complains and > I can't work out what it is complaining about (or how to fix it). > > A complete example is attached. The original is more complex, I've > tried to boil it down to its simplest form. My apologies that the > simplest form is not so simple! > > Thank you for your help. Go well, -- P > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > . /\ School of Informatics, University of Edinburgh > . / \ and Senior Research Fellow, IOHK > . http://homepages.inf.ed.ac.uk/wadler/ > > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336. > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > > Attachments: > * Example.lagda.md From conal at conal.net Fri Dec 24 20:45:24 2021 From: conal at conal.net (Conal Elliott) Date: Fri, 24 Dec 2021 11:45:24 -0800 Subject: [Agda] Need help completing a proof In-Reply-To: <0d338a8e-ac3d-4f25-86ae-856edcba20b0@www.fastmail.com> References: <0d338a8e-ac3d-4f25-86ae-856edcba20b0@www.fastmail.com> Message-ID: Or a little more neatly via ?irrefutable with?: example g h p q s t M e with refl ? equation g h p q s t e = ? (M ? p) ? q , collapse g h ? On Fri, Dec 24, 2021 at 10:23 AM Mi?tek Bak wrote: > In this case, the simplest solution seems to be using with-abstraction to > pattern match on the result of `equation`, in order to let Agda take the > desired equality `G ? H` into account. > https://agda.readthedocs.io/en/latest/language/with-abstraction.html > > ```diff > --- Example-before.lagda.md > +++ Example-after.lagda.md > @@ -147 +147,2 @@ > -example g h p q s t M e = {!!} > +example g h p q s t M e with equation g h p q s t e > +... | refl = ? (M ? p) ? q , collapse g h ? > ``` > > -- > MB > > > On Fri, Dec 24, 2021, at 18:03, Philip Wadler wrote: > > I'm having trouble completing a proof, and would be grateful for help. > > The problem arises because I need to show two values are equal, but the > > equality of the values follows from a complex equation. In fact, it is > > not hard to show that the equality follows from the equation, but when > > I attempt to use the desired equality for rewriting Agda complains and > > I can't work out what it is complaining about (or how to fix it). > > > > A complete example is attached. The original is more complex, I've > > tried to boil it down to its simplest form. My apologies that the > > simplest form is not so simple! > > > > Thank you for your help. Go well, -- P > > > > > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > . /\ School of Informatics, University of Edinburgh > > . / \ and Senior Research Fellow, IOHK > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > The University of Edinburgh is a charitable body, registered in > > Scotland, with registration number SC005336. > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > Attachments: > > * Example.lagda.md > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From wadler at inf.ed.ac.uk Fri Dec 24 21:39:20 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Fri, 24 Dec 2021 20:39:20 +0000 Subject: [Agda] Need help completing a proof In-Reply-To: <0d338a8e-ac3d-4f25-86ae-856edcba20b0@www.fastmail.com> References: <0d338a8e-ac3d-4f25-86ae-856edcba20b0@www.fastmail.com> Message-ID: Fantastic! Trust this group to find the answer quickly. Thank you very much! But I thought rewrite was an abbreviation for using a with to match refl, and rewrite did not work. What is the difference? Go well, -- P . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ On Fri, 24 Dec 2021 at 18:23, Mi?tek Bak wrote: > This email was sent to you by someone outside the University. > You should only click on links or attachments if you are certain that the > email is genuine and the content is safe. > > In this case, the simplest solution seems to be using with-abstraction to > pattern match on the result of `equation`, in order to let Agda take the > desired equality `G ? H` into account. > https://agda.readthedocs.io/en/latest/language/with-abstraction.html > > ```diff > --- Example-before.lagda.md > +++ Example-after.lagda.md > @@ -147 +147,2 @@ > -example g h p q s t M e = {!!} > +example g h p q s t M e with equation g h p q s t e > +... | refl = ? (M ? p) ? q , collapse g h ? > ``` > > -- > MB > > > On Fri, Dec 24, 2021, at 18:03, Philip Wadler wrote: > > I'm having trouble completing a proof, and would be grateful for help. > > The problem arises because I need to show two values are equal, but the > > equality of the values follows from a complex equation. In fact, it is > > not hard to show that the equality follows from the equation, but when > > I attempt to use the desired equality for rewriting Agda complains and > > I can't work out what it is complaining about (or how to fix it). > > > > A complete example is attached. The original is more complex, I've > > tried to boil it down to its simplest form. My apologies that the > > simplest form is not so simple! > > > > Thank you for your help. Go well, -- P > > > > > > > > . \ Philip Wadler, Professor of Theoretical Computer Science, > > . /\ School of Informatics, University of Edinburgh > > . / \ and Senior Research Fellow, IOHK > > . http://homepages.inf.ed.ac.uk/wadler/ > > > > The University of Edinburgh is a charitable body, registered in > > Scotland, with registration number SC005336. > > > > _______________________________________________ > > Agda mailing list > > Agda at lists.chalmers.se > > https://lists.chalmers.se/mailman/listinfo/agda > > > > Attachments: > > * Example.lagda.md > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From wadler at inf.ed.ac.uk Mon Dec 27 17:54:27 2021 From: wadler at inf.ed.ac.uk (Philip Wadler) Date: Mon, 27 Dec 2021 16:54:27 +0000 Subject: [Agda] Postdoctoral Research Assistant position at University of Edinburgh Message-ID: The School of Informatics, University of Edinburgh invites applications for a postdoctoral research assistant on the SAGE project (Scoped and Gradual Effects), funded by Huawei. The post will be for eighteen months. We seek applicants at an international level of excellence. The School of Informatics at Edinburgh is among the strongest in the world, and Edinburgh is known as a cultural centre providing a high quality of life. If interested, please contact Prof. Philip Wadler . Full details are here . Applications close at 5pm on 14 January 2021. The Opportunity: In the early 2000s, Plotkin and Power introduced an approach to computational effects in programming languages known as *algebraic effects*. This approach has attracted a great deal of interest and further development, including the introduction by Plotkin and Pretnar of *effect handlers*. Several research languages, such as Eff, Frank, Koka, and Links, support the use of algebraic effects. A few languages, including Multicore O'Caml and WebAssembly, support specific algebraic effects, and we may see general algebraic effects make their way into mainstream languages in the future. The proposed research has two focusses: (a) a simpler version of static scoping for algebraic effect handlers, and (b) gradual types for algebraic effect systems. The former is a question of how to match an effect with its corresponding handler. This issue arises when two effects have the same name, and you expect the handler for one but invoke the handler for the other. Some current solutions, like tunnelling and instance variables, are based on lexical scoping. However, despite this insight, tunnelling and instance variables are more complex than lexical binding of a variable to a value. In particular, the type system needs to track that an effect does not escape the scope of its surrounding handler (reminiscent of the funarg problem with dynamic variable binding). Can we do better? The latter is a question of how to integrate legacy code that lacks typed effects with new code that supports typed effects. Usually, integration of dynamically and statically typed languages is best explored in the context of gradual types, which support running legacy code and new code in tandem. To date there is only a tiny amount of work in the area of gradual types for effects, and important aspects of algebraic effects, such as effect handlers, have yet to be addressed. Overall, work to date on effect handlers is often complex, and attention is required to where ideas can be simplified, which is the ultimate objective of this project. Your skills and attributes for success: Essential ? PhD (or close to completion) in programming languages or a related discipline. ? Expertise and experience in relevant areas, including lambda calculus, type systems, and compilation. ? Ability to implement prototype language processors in O?Caml, Haskell, or a related language. ? Excellence in written and oral communication, analytical, and time management skills. ? Ability to collaborate with a team. Desirable ? Published research in programming languages or a related field, preferably in top-tier conferences. ? Experience in presenting at conferences or seminars. ? Knowledge of effect systems or gradual type systems. ? Experience with a proof assistant, such as Agda or Coq. ? Strong programming and software engineering skills. . \ Philip Wadler, Professor of Theoretical Computer Science, . /\ School of Informatics, University of Edinburgh . / \ and Senior Research Fellow, IOHK . http://homepages.inf.ed.ac.uk/wadler/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. From eduardoochs at gmail.com Mon Dec 27 23:20:09 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Mon, 27 Dec 2021 19:20:09 -0300 Subject: [Agda] A question on why "postulate" works but "variable" fails Message-ID: Hi! Help! Beginner question! Let me start with instructions to reproduce the problem. Put this in the file /tmp/test/P.agda, --snip--snip-- postulate B? : Set postulate B? : (y? : B?) ? Set postulate A? : (y? : B?) ? (y? : B? y?) ? Set postulate A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set postulate y? : B? postulate y? : B? y? postulate x? : A? y? y? postulate x? : A? y? y? x? --snip--snip-- and this in the file /tmp/test/V.agda: --snip--snip-- variable B? : Set variable B? : (y? : B?) ? Set variable A? : (y? : B?) ? (y? : B? y?) ? Set variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set variable y? : B? variable y? : B? y? variable x? : A? y? y? variable x? : A? y? y? x? --snip--snip-- When I use the key sequence `C-c C-l' from agda2-mode to load the two files in the file P.agda everything works, but in V.agda I get an error whose main message is "Failed to solve the following constraints"... and in another case in which I was working using "postulate" worked, but when I used "variable" I got an error that started with something like "Generalizable variables not allowed here". I just spent some hours trying to understand the section 3.14 - "Generalization of Declared Variables", link: https://readthedocs.org/projects/agda/downloads/pdf/latest/#page=83 - of the user manual, but it's too terse for me and it has too many prerequisites, and I am stuck. So, QUESTION: can you recommend me other places to learn the distinctions between "postulate" and "variable"? Thanks in advance! Eduardo Ochs http://angg.twu.net/math-b.html P.S.: I am using Agda 2.6.1.3. P.P.S.: To be honest I was trying to understand this, https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening and to specialize its example to n:=2 and m:=2 and to check if the "(r : R ?)" really works, but I have the impression that I need to understand variables first... -------------- next part -------------- An HTML attachment was scrubbed... URL: From eduardoochs at gmail.com Tue Dec 28 00:21:51 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Mon, 27 Dec 2021 20:21:51 -0300 Subject: [Agda] A question about the innards of C-c C-d Message-ID: Hi list, if we define the function eek in Elisp as: (defun eek (str) "Execute STR as a keyboard macro. See `edmacro-mode' for the exact format.\n An example: (eek \"C-x 4 C-h\")" (interactive "sKeys: ") (execute-kbd-macro (read-kbd-macro str))) and we create a file /tmp/test/T.agda containing this, --snip--snip-- open import Level MySet1 : Set? MySet1 = Set (Level.suc Level.zero) postulate B? : Set postulate B? : (y? : B?) ? Set postulate A? : (y? : B?) ? (y? : B? y?) ? Set postulate A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set record R (y? : B?) (y? : B? y?) : MySet1 where field x? : A? y? y? x? : A? y? y? x? postulate ay? : B? postulate ay? : B? ay? postulate ax? : A? ay? ay? postulate ax? : A? ay? ay? ax? postulate ar : R ay? ay? -- (eek "C-a C-c C-d R RET") -- (eek "C-a C-c C-d R.x? RET") -- (eek "C-a C-c C-d R.x? RET") -- (eek "C-a C-c C-d ar RET") -- (eek "C-a C-c C-d R.x? SPC ar RET") --snip--snip-- then the sexps with "eek" work as buttons that can be executed with C-e C-x C-e, and whose effects are to display the types of the expressions "R", "R.x?", "R.x?", "ar", and "R.x? ar" in the second window... note that the "R.x? SPC ar" in the last sexp was sort of translated to "R.x? ar". I am looking for a better way to do that, but I am having trouble to understand the innards of the function bound to C-c C-d - agda2-infer-type-maybe-toplevel - because it uses at least two levels of macros... So: suppose that I define foo as: (defun foo () "Running M-x foo in agda2-mode should be equivalent to typing C-c C-d R.x? ar RET" (interactive) (bar "R.x? ar")) what is the right way to define bar in a low-level way? Let's suppose for simplicity that we just want to make this work in situations in which agda2-infer-type-maybe-toplevel would run agda2-infer-type-toplevel, and we don't care for the cases in which it would run agda2-infer-type... Thanks in advance! Eduardo Ochs http://angg.twu.net/#eev http://angg.twu.net/eev-intros/find-eev-quick-intro.html#3 -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Tue Dec 28 12:36:54 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Tue, 28 Dec 2021 12:36:54 +0100 Subject: [Agda] A question on why "postulate" works but "variable" fails In-Reply-To: References: Message-ID: Hi Eduardo, There is quite a big difference between how `postulate` and `variable` work (both in their purpose and their implementations) so it is not surprising that you can find some examples where `postulate` works but `variable` doesn't. The purpose of `variable` is essentially to allow you to omit writing universal quantifications of the form `{x : A} ? ...` over and over again in each type signature. So if you write `variable B? : Set` then that means any use of `B?` will implicitly insert a `{B? : Set} ? ...` in front of the type signature where it occurs. Things admittedly become more complicated when the type of a `variable` contains itself a generalizable variable. In this case Agda will recursively add quantifications for all the variables that occur in the type, variables that occur in their types, etc. So a `variable B? : (y? : B?) ? Set` means that any use of `B?` will implicitly insert `{B? : Set} {B? : (y? : B?) ? Set} ? ...` in front of the type. Actually this is not the full story of what happens, since Agda will always first try to solve constraints before deciding on the set of variables to generalize over. Variables that are solved during this process are not part of the quantification. For example, suppose we have some type `P : (Bool ? Set) ? Set` and we declare `f : P B?`, then Agda's constraint solver will figure out that the `B?` in the type of `B?` must be equal to `Bool` and hence it will insert `{B? : (y? : Bool) ? Set} ? ...` instead of ` {B? : Set} {B? : (y? : B?) ? Set} ? ...`. However, it is important to understand that Agda's constraint solver is not perfect (actually the problem is undecidable so it cannot be) so it is possible that there are unsolved constraints remaining and hence Agda does not know which variables it should quantify over. Here's a small example: ```agda postulate P : Nat ? Set variable f : Nat ? Nat variable q : P (f 0) postulate test : (R : P 2 ? Set) ? R q ``` When trying to figure out what variables to quantify over, Agda gets the constraint that `f 0 = 2`, but there are many different ways to solve this constraint. Instead of making an arbitrary choice, Agda refuses to solve this and reports the unsolved constraint instead. So far so good. Now the final piece of the puzzle is what happens when one variable appears in the types of two or more other variables. For example, in your code the type `B?` occurs in the type of `B?`, in the type `A?`, and in the type of `y?`. In this situation (and this might be a bit unintuitive at first) each variable will get its own copy of the name `B?`, indicated by `B?.B?`, `A?.B?, and `y?.B?` respectively. So when you use these variables together, such as in the type of `x?`, Agda will not automatically assume that these different copies of `B?` are equal [Here lies the real difference with using `postulate`]. Instead it will run the constraint solver to figure out the relationship between them, which (as noted above) might or might not succeed depending on the complexity of the problem. Now we can understand the error message you are getting from Agda. For example, for `x?` you get the following unsolved constraint ``` _y?.B?_33 _y?.y?_34 =< _A?.B?_32 y? ``` >From this we can infer that Agda figured out that in order for the type `A? y? y?` to be well-formed, it needs to know that `y?.B?` (the copy of `B?` used in the type of `y?`) applied to `y?.y?` (the copy of `y?` used in the type of `y?`) is equal to `A?.B?` (the copy of `B?` used in the type of `A?`) applied to `y?` (the "local" copy of `y?` from the definition of `x?` itself. If Agda knew that `y?.B? = A?.B?` then it could figure out that `y?.y? = y?`, and vice versa if `y?.y? = y?` then it could figure out that `y?.B? = A?.B?`. However since it knows neither of those the constraint remains unsolved and you get the error you are observing. I hope this explanation made things clearer! -- Jesper ps: The page on opening record types that you are linking does not make use of `variable`s (in fact I think it was written before those were even added to Agda) so you shouldn't need to understand `variable` to read that page. However, it is possibly out-of-date since we have moved all documentation from the wiki to agda.readthedocs.io. On Mon, Dec 27, 2021 at 11:21 PM Eduardo Ochs wrote: > Hi! Help! Beginner question! > > Let me start with instructions to reproduce the problem. > Put this in the file /tmp/test/P.agda, > > --snip--snip-- > postulate B? : Set > postulate B? : (y? : B?) ? Set > postulate A? : (y? : B?) ? (y? : B? y?) ? Set > postulate A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set > postulate y? : B? > postulate y? : B? y? > postulate x? : A? y? y? > postulate x? : A? y? y? x? > --snip--snip-- > > and this in the file /tmp/test/V.agda: > > --snip--snip-- > variable B? : Set > variable B? : (y? : B?) ? Set > variable A? : (y? : B?) ? (y? : B? y?) ? Set > variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set > variable y? : B? > variable y? : B? y? > variable x? : A? y? y? > variable x? : A? y? y? x? > --snip--snip-- > > When I use the key sequence `C-c C-l' from agda2-mode to load the two > files in the file P.agda everything works, but in V.agda I get an > error whose main message is "Failed to solve the following > constraints"... and in another case in which I was working using > "postulate" worked, but when I used "variable" I got an error that > started with something like "Generalizable variables not allowed > here". > > I just spent some hours trying to understand the section 3.14 - > "Generalization of Declared Variables", link: > > https://readthedocs.org/projects/agda/downloads/pdf/latest/#page=83 > > - of the user manual, but it's too terse for me and it has too many > prerequisites, and I am stuck. > > So, QUESTION: can you recommend me other places to learn the > distinctions between "postulate" and "variable"? > > Thanks in advance! > Eduardo Ochs > http://angg.twu.net/math-b.html > > > > > P.S.: I am using Agda 2.6.1.3. > > P.P.S.: To be honest I was trying to understand this, > > https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening > and to specialize its example to n:=2 and m:=2 and to check if the > "(r : R ?)" really works, but I have the impression that I need to > understand variables first... > > _______________________________________________ > Agda mailing list > Agda at lists.chalmers.se > https://lists.chalmers.se/mailman/listinfo/agda > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ascottiii at gmail.com Tue Dec 28 15:39:21 2021 From: ascottiii at gmail.com (Art Scott) Date: Tue, 28 Dec 2021 06:39:21 -0800 Subject: [Agda] Vikraman Choudhury, Jacek Karwowski, Amr Sabry --- results to reversible circuits...formalisation ... HoTT-Agda library (around 7, 500 lines of code) ... accompanying Agda code Message-ID: Aloha Agda FYI Work using Agda Mahalo Agda Art Scott https://arxiv.org/abs/2110.05404 ? In Section 7, we show applications of our results to reversible circuits, using our formalisation. Our results are stated using HoTT [Univalent Foundations Program 2013], and formalised using the HoTT-Agda library (around 7,500 lines of code). Using the formalisation, we are able to extract procedures for: (1) the synthesis of a reversible circuit from a permutation on a finite set, (2) the verification that a reversible circuit realises a given permutation on finite sets, (3) a normalisation-by-evaluation (NbE) procedure that reduces reversible circuits to canonical normal forms, (4) a sound and complete calculus for reasoning about reversible circuits and their equivalences, and (5) the transfer of theorems about permutations and reversible circuits from one representation to the other. The proofs of some of our lemmas and propositions and theorems, as well as additional material, are given in the supplementary appendices, and we refer to them in the text. Our accompanying Agda code contains the formalisation of the full syntax, and most of our proofs. -- Replace * HOT * computation with * COOL * information Harvest FREE sun. Free wind. Free storage. Free *Clean *Electrons of Freedom. Peace, Love and Happiness Only One Earth Island Planet Aloha spirit -------------- next part -------------- An HTML attachment was scrubbed... URL: From robby at eecs.northwestern.edu Tue Dec 28 18:32:13 2021 From: robby at eecs.northwestern.edu (Robby Findler) Date: Tue, 28 Dec 2021 11:32:13 -0600 Subject: [Agda] termination checking & with Message-ID: Hi all: I've noticed that termination checking has trouble "seeing" through `with` and I'm wondering if there might be some improvements coming down the pike that might help. As a simple example, compare these two definitions of `merge` from merge sort; the first one is okay and the second one isn't. merge : ? ? -> ? ? -> ? ? merge [] l = l merge (x :: l) [] = x :: l merge (x? :: l1) (x? :: l2) = if (x? < x?) then x? :: merge l1 (x? :: l2) else x? :: merge (x? :: l1) l2 merge : ? ? -> ? ? -> ? ? merge [] m = m merge (x :: l) [] = x :: l merge (x :: l) (y :: m) with x < y ... | tt = merge l (y :: m) ... | ff = merge (x :: l) m This also comes up in proofs where the inductive hypothesis has to be bound to a variable before doing a case split (with a `with`). Robby ;; -------- The code above is using the IAL; here's a complete agda file without any dependencies in case that's helpful. module _ where data ? : Set where tt : ? ff : ? infix 4 if_then_else_ if_then_else_ : ? {?} {A : Set ?} ? ? ? A ? A ? A if tt then y else z = y if ff then y else z = z data ? {?} (A : Set ?) : Set ? where [] : ? A _::_ : (x : A) (xs : ? A) ? ? A data ? : Set where zero : ? suc : ? ? ? _<_ : ? ? ? ? ? zero < zero = ff zero < (suc y) = tt (suc x) < (suc y) = x < y (suc x) < zero = ff merge : ? ? -> ? ? -> ? ? merge [] l = l merge (x :: l) [] = x :: l merge (x? :: l1) (x? :: l2) = if (x? < x?) then x? :: merge l1 (x? :: l2) else x? :: merge (x? :: l1) l2 merge' : ? ? -> ? ? -> ? ? merge' [] m = m merge' (x :: l) [] = x :: l merge' (x :: l) (y :: m) with x < y ... | tt = merge' l (y :: m) ... | ff = merge' (x :: l) m -------------- next part -------------- An HTML attachment was scrubbed... URL: From tarmo at cs.ioc.ee Tue Dec 28 20:27:43 2021 From: tarmo at cs.ioc.ee (Tarmo Uustalu) Date: Tue, 28 Dec 2021 21:27:43 +0200 Subject: [Agda] ETAPS Test of Time Award 2022, call for nominations Message-ID: <20211228212743.75770594@cs.ioc.ee> The ETAPS Test of Time Award recognizes outstanding papers published more than 10 years in the past in one of the constituent conferences of ETAPS. The Award recognises the impact of excellent research results that have been published at ETAPS. See https://etaps.org/about/test-of-time-award . Nominations Nominations for the 2022 ETAPS Test of Time Award are solicited from the ETAPS community. A nomination should include the title and publication details of the nominated paper, explain the influence it has had since publication, and why it merits the award. The nomination should phrase it in terms that are understandable by the members of the award committee and suitable for use in the award citation and should be endorsed by at least 2 people other than the person submitting the nomination. Self-nominations are not allowed. Nominations should be sent by Monday 14 February 2022 to the chair of the award committee, Don Sannella . Award committee The 2022 award committee consists of Rance Cleaveland, Ugo Dal Lago, Marieke Huisman, Jan K?et?nsk?, Don Sannella (chair), Gabriele Taentzer and Peter Thiemann. From eduardoochs at gmail.com Wed Dec 29 06:53:27 2021 From: eduardoochs at gmail.com (Eduardo Ochs) Date: Wed, 29 Dec 2021 02:53:27 -0300 Subject: [Agda] A question on why "postulate" works but "variable" fails In-Reply-To: References: Message-ID: Hi Jesper! Three things: 1) Thanks and REALLY WOW! That was super clear! =) 2) How do I inspect what Agda knows about a variable? Suppose that we have this in the file /tmp/test/V.agda... --snip--snip-- variable B? : Set variable B? : (y? : B?) ? Set variable A? : (y? : B?) ? (y? : B? y?) ? Set variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set variable y? : B? variable y? : B? y? -- variable x? : A? y? y? -- variable x? : A? y? y? x? --snip--snip-- My newbiesh instincts suggested a) to try `C-c C-d B? RET' at the end of that file, and, if that failed, b) to insert this at the end of the file, --snip--snip-- foo : ? foo = B? --snip--snip-- and then type `C-c C-l'. Both things gave this error: Generalizable variable Variable1.B? is not supported here when scope checking B? 3) You're right, this old tutorial https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening doesn't use variables or postulates, but I had to use postulates to produce a version of some of its examples that Agda could parse and load... It is here: http://angg.twu.net/AGDA/Postulate1.agda.html http://angg.twu.net/AGDA/Postulate1.agda Cheers! =) Eduardo Ochs http://angg.twu.net/#eev http://angg.twu.net/math-b.html On Tue, 28 Dec 2021 at 08:37, Jesper Cockx wrote: > Hi Eduardo, > > There is quite a big difference between how `postulate` and `variable` > work (both in their purpose and their implementations) so it is not > surprising that you can find some examples where `postulate` works but > `variable` doesn't. > > The purpose of `variable` is essentially to allow you to omit writing > universal quantifications of the form `{x : A} ? ...` over and over again > in each type signature. So if you write `variable B? : Set` then that means > any use of `B?` will implicitly insert a `{B? : Set} ? ...` in front of the > type signature where it occurs. > > Things admittedly become more complicated when the type of a `variable` > contains itself a generalizable variable. In this case Agda will > recursively add quantifications for all the variables that occur in the > type, variables that occur in their types, etc. So a `variable B? : (y? : > B?) ? Set` means that any use of `B?` will implicitly insert `{B? : Set} > {B? : (y? : B?) ? Set} ? ...` in front of the type. > > Actually this is not the full story of what happens, since Agda will > always first try to solve constraints before deciding on the set of > variables to generalize over. Variables that are solved during this process > are not part of the quantification. For example, suppose we have some type > `P : (Bool ? Set) ? Set` and we declare `f : P B?`, then Agda's constraint > solver will figure out that the `B?` in the type of `B?` must be equal to > `Bool` and hence it will insert `{B? : (y? : Bool) ? Set} ? ...` instead of > ` {B? : Set} {B? : (y? : B?) ? Set} ? ...`. > > However, it is important to understand that Agda's constraint solver is > not perfect (actually the problem is undecidable so it cannot be) so it is > possible that there are unsolved constraints remaining and hence Agda does > not know which variables it should quantify over. Here's a small example: > ```agda > postulate P : Nat ? Set > > variable f : Nat ? Nat > variable q : P (f 0) > > postulate test : (R : P 2 ? Set) ? R q > ``` > When trying to figure out what variables to quantify over, Agda gets the > constraint that `f 0 = 2`, but there are many different ways to solve this > constraint. Instead of making an arbitrary choice, Agda refuses to solve > this and reports the unsolved constraint instead. > > So far so good. Now the final piece of the puzzle is what happens when one > variable appears in the types of two or more other variables. For example, > in your code the type `B?` occurs in the type of `B?`, in the type `A?`, > and in the type of `y?`. In this situation (and this might be a bit > unintuitive at first) each variable will get its own copy of the name `B?`, > indicated by `B?.B?`, `A?.B?, and `y?.B?` respectively. So when you use > these variables together, such as in the type of `x?`, Agda will not > automatically assume that these different copies of `B?` are equal [Here > lies the real difference with using `postulate`]. Instead it will run the > constraint solver to figure out the relationship between them, which (as > noted above) might or might not succeed depending on the complexity of the > problem. > > Now we can understand the error message you are getting from Agda. For > example, for `x?` you get the following unsolved constraint > ``` > _y?.B?_33 _y?.y?_34 =< _A?.B?_32 y? > ``` > From this we can infer that Agda figured out that in order for the type > `A? y? y?` to be well-formed, it needs to know that `y?.B?` (the copy of > `B?` used in the type of `y?`) applied to `y?.y?` (the copy of `y?` used in > the type of `y?`) is equal to `A?.B?` (the copy of `B?` used in the type of > `A?`) applied to `y?` (the "local" copy of `y?` from the definition of `x?` > itself. If Agda knew that `y?.B? = A?.B?` then it could figure out that > `y?.y? = y?`, and vice versa if `y?.y? = y?` then it could figure out that > `y?.B? = A?.B?`. However since it knows neither of those the constraint > remains unsolved and you get the error you are observing. > > I hope this explanation made things clearer! > > -- Jesper > > > ps: The page on opening record types that you are linking does not make > use of `variable`s (in fact I think it was written before those were even > added to Agda) so you shouldn't need to understand `variable` to read that > page. However, it is possibly out-of-date since we have moved all > documentation from the wiki to agda.readthedocs.io. > > On Mon, Dec 27, 2021 at 11:21 PM Eduardo Ochs > wrote: > >> Hi! Help! Beginner question! >> >> Let me start with instructions to reproduce the problem. >> Put this in the file /tmp/test/P.agda, >> >> --snip--snip-- >> postulate B? : Set >> postulate B? : (y? : B?) ? Set >> postulate A? : (y? : B?) ? (y? : B? y?) ? Set >> postulate A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set >> postulate y? : B? >> postulate y? : B? y? >> postulate x? : A? y? y? >> postulate x? : A? y? y? x? >> --snip--snip-- >> >> and this in the file /tmp/test/V.agda: >> >> --snip--snip-- >> variable B? : Set >> variable B? : (y? : B?) ? Set >> variable A? : (y? : B?) ? (y? : B? y?) ? Set >> variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set >> variable y? : B? >> variable y? : B? y? >> variable x? : A? y? y? >> variable x? : A? y? y? x? >> --snip--snip-- >> >> When I use the key sequence `C-c C-l' from agda2-mode to load the two >> files in the file P.agda everything works, but in V.agda I get an >> error whose main message is "Failed to solve the following >> constraints"... and in another case in which I was working using >> "postulate" worked, but when I used "variable" I got an error that >> started with something like "Generalizable variables not allowed >> here". >> >> I just spent some hours trying to understand the section 3.14 - >> "Generalization of Declared Variables", link: >> >> https://readthedocs.org/projects/agda/downloads/pdf/latest/#page=83 >> >> - of the user manual, but it's too terse for me and it has too many >> prerequisites, and I am stuck. >> >> So, QUESTION: can you recommend me other places to learn the >> distinctions between "postulate" and "variable"? >> >> Thanks in advance! >> Eduardo Ochs >> http://angg.twu.net/math-b.html >> >> >> >> >> P.S.: I am using Agda 2.6.1.3. >> >> P.P.S.: To be honest I was trying to understand this, >> >> https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening >> and to specialize its example to n:=2 and m:=2 and to check if the >> "(r : R ?)" really works, but I have the impression that I need to >> understand variables first... >> >> _______________________________________________ >> Agda mailing list >> Agda at lists.chalmers.se >> https://lists.chalmers.se/mailman/listinfo/agda >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Jesper at sikanda.be Wed Dec 29 12:27:50 2021 From: Jesper at sikanda.be (Jesper Cockx) Date: Wed, 29 Dec 2021 12:27:50 +0100 Subject: [Agda] A question on why "postulate" works but "variable" fails In-Reply-To: References: Message-ID: Hi Eduardo, Regarding 2, I actually think it is currently not possible to ask the full type of a generalizable variable because of the error you describe. What you'd need is a way to ask for the type of a particular *symbol* as opposed to the type of an *expression*, but there is currently no command for that. I've created an issue on Github to discuss the possibility of adding such a command: https://github.com/agda/agda/issues/5714 -- Jesper On Wed, Dec 29, 2021 at 6:54 AM Eduardo Ochs wrote: > Hi Jesper! > > Three things: > > 1) Thanks and REALLY WOW! That was super clear! =) > > 2) How do I inspect what Agda knows about a variable? Suppose that we > have this in the file /tmp/test/V.agda... > > --snip--snip-- > variable B? : Set > variable B? : (y? : B?) ? Set > variable A? : (y? : B?) ? (y? : B? y?) ? Set > variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set > variable y? : B? > variable y? : B? y? > -- variable x? : A? y? y? > -- variable x? : A? y? y? x? > --snip--snip-- > > My newbiesh instincts suggested a) to try `C-c C-d B? RET' at the > end of that file, and, if that failed, b) to insert this at the > end of the file, > > --snip--snip-- > foo : ? > foo = B? > --snip--snip-- > > and then type `C-c C-l'. Both things gave this error: > > Generalizable variable Variable1.B? is not supported here > when scope checking B? > > 3) You're right, this old tutorial > > > https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening > > doesn't use variables or postulates, but I had to use postulates to > produce a version of some of its examples that Agda could parse and > load... It is here: > > http://angg.twu.net/AGDA/Postulate1.agda.html > http://angg.twu.net/AGDA/Postulate1.agda > > Cheers! =) > Eduardo Ochs > http://angg.twu.net/#eev > http://angg.twu.net/math-b.html > > > On Tue, 28 Dec 2021 at 08:37, Jesper Cockx wrote: > >> Hi Eduardo, >> >> There is quite a big difference between how `postulate` and `variable` >> work (both in their purpose and their implementations) so it is not >> surprising that you can find some examples where `postulate` works but >> `variable` doesn't. >> >> The purpose of `variable` is essentially to allow you to omit writing >> universal quantifications of the form `{x : A} ? ...` over and over again >> in each type signature. So if you write `variable B? : Set` then that means >> any use of `B?` will implicitly insert a `{B? : Set} ? ...` in front of the >> type signature where it occurs. >> >> Things admittedly become more complicated when the type of a `variable` >> contains itself a generalizable variable. In this case Agda will >> recursively add quantifications for all the variables that occur in the >> type, variables that occur in their types, etc. So a `variable B? : (y? : >> B?) ? Set` means that any use of `B?` will implicitly insert `{B? : Set} >> {B? : (y? : B?) ? Set} ? ...` in front of the type. >> >> Actually this is not the full story of what happens, since Agda will >> always first try to solve constraints before deciding on the set of >> variables to generalize over. Variables that are solved during this process >> are not part of the quantification. For example, suppose we have some type >> `P : (Bool ? Set) ? Set` and we declare `f : P B?`, then Agda's constraint >> solver will figure out that the `B?` in the type of `B?` must be equal to >> `Bool` and hence it will insert `{B? : (y? : Bool) ? Set} ? ...` instead of >> ` {B? : Set} {B? : (y? : B?) ? Set} ? ...`. >> >> However, it is important to understand that Agda's constraint solver is >> not perfect (actually the problem is undecidable so it cannot be) so it is >> possible that there are unsolved constraints remaining and hence Agda does >> not know which variables it should quantify over. Here's a small example: >> ```agda >> postulate P : Nat ? Set >> >> variable f : Nat ? Nat >> variable q : P (f 0) >> >> postulate test : (R : P 2 ? Set) ? R q >> ``` >> When trying to figure out what variables to quantify over, Agda gets the >> constraint that `f 0 = 2`, but there are many different ways to solve this >> constraint. Instead of making an arbitrary choice, Agda refuses to solve >> this and reports the unsolved constraint instead. >> >> So far so good. Now the final piece of the puzzle is what happens when >> one variable appears in the types of two or more other variables. For >> example, in your code the type `B?` occurs in the type of `B?`, in the type >> `A?`, and in the type of `y?`. In this situation (and this might be a bit >> unintuitive at first) each variable will get its own copy of the name `B?`, >> indicated by `B?.B?`, `A?.B?, and `y?.B?` respectively. So when you use >> these variables together, such as in the type of `x?`, Agda will not >> automatically assume that these different copies of `B?` are equal [Here >> lies the real difference with using `postulate`]. Instead it will run the >> constraint solver to figure out the relationship between them, which (as >> noted above) might or might not succeed depending on the complexity of the >> problem. >> >> Now we can understand the error message you are getting from Agda. For >> example, for `x?` you get the following unsolved constraint >> ``` >> _y?.B?_33 _y?.y?_34 =< _A?.B?_32 y? >> ``` >> From this we can infer that Agda figured out that in order for the type >> `A? y? y?` to be well-formed, it needs to know that `y?.B?` (the copy of >> `B?` used in the type of `y?`) applied to `y?.y?` (the copy of `y?` used in >> the type of `y?`) is equal to `A?.B?` (the copy of `B?` used in the type of >> `A?`) applied to `y?` (the "local" copy of `y?` from the definition of `x?` >> itself. If Agda knew that `y?.B? = A?.B?` then it could figure out that >> `y?.y? = y?`, and vice versa if `y?.y? = y?` then it could figure out that >> `y?.B? = A?.B?`. However since it knows neither of those the constraint >> remains unsolved and you get the error you are observing. >> >> I hope this explanation made things clearer! >> >> -- Jesper >> >> >> ps: The page on opening record types that you are linking does not make >> use of `variable`s (in fact I think it was written before those were even >> added to Agda) so you shouldn't need to understand `variable` to read that >> page. However, it is possibly out-of-date since we have moved all >> documentation from the wiki to agda.readthedocs.io. >> >> On Mon, Dec 27, 2021 at 11:21 PM Eduardo Ochs >> wrote: >> >>> Hi! Help! Beginner question! >>> >>> Let me start with instructions to reproduce the problem. >>> Put this in the file /tmp/test/P.agda, >>> >>> --snip--snip-- >>> postulate B? : Set >>> postulate B? : (y? : B?) ? Set >>> postulate A? : (y? : B?) ? (y? : B? y?) ? Set >>> postulate A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set >>> postulate y? : B? >>> postulate y? : B? y? >>> postulate x? : A? y? y? >>> postulate x? : A? y? y? x? >>> --snip--snip-- >>> >>> and this in the file /tmp/test/V.agda: >>> >>> --snip--snip-- >>> variable B? : Set >>> variable B? : (y? : B?) ? Set >>> variable A? : (y? : B?) ? (y? : B? y?) ? Set >>> variable A? : (y? : B?) ? (y? : B? y?) ? (x? : A? y? y?) ? Set >>> variable y? : B? >>> variable y? : B? y? >>> variable x? : A? y? y? >>> variable x? : A? y? y? x? >>> --snip--snip-- >>> >>> When I use the key sequence `C-c C-l' from agda2-mode to load the two >>> files in the file P.agda everything works, but in V.agda I get an >>> error whose main message is "Failed to solve the following >>> constraints"... and in another case in which I was working using >>> "postulate" worked, but when I used "variable" I got an error that >>> started with something like "Generalizable variables not allowed >>> here". >>> >>> I just spent some hours trying to understand the section 3.14 - >>> "Generalization of Declared Variables", link: >>> >>> https://readthedocs.org/projects/agda/downloads/pdf/latest/#page=83 >>> >>> - of the user manual, but it's too terse for me and it has too many >>> prerequisites, and I am stuck. >>> >>> So, QUESTION: can you recommend me other places to learn the >>> distinctions between "postulate" and "variable"? >>> >>> Thanks in advance! >>> Eduardo Ochs >>> http://angg.twu.net/math-b.html >>> >>> >>> >>> >>> P.S.: I am using Agda 2.6.1.3. >>> >>> P.P.S.: To be honest I was trying to understand this, >>> >>> https://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.RecordsTutorial#opening >>> and to specialize its example to n:=2 and m:=2 and to check if the >>> "(r : R ?)" really works, but I have the impression that I need to >>> understand variables first... >>> >>> _______________________________________________ >>> Agda mailing list >>> Agda at lists.chalmers.se >>> https://lists.chalmers.se/mailman/listinfo/agda >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: