Agda实施者会议三十二

第三十二届Agda实施者会议将于2020-05-25年至2020-06-05年期间举行。欢迎所有使用Agda的人参加。

由于目前的疫情,会议将在网上举行。会议将在两周内举行,而不是一周,但每一天的紧张程度可能会低于以前的会议。我们将尽量容纳来自不同时区的参与者。注册时,请注明您在一天中的什么时间有空。

(与编号相关的旁白:目标三十一已推迟。它计划稍后举行,并保持数量不变。因此,AIM XXXII可能会在AIM XXXI之前举行。)

重要日期

2020-05-10
注册的软截止日期
2020-05-11至2020-05-15
人们可以表达对代码冲刺的兴趣
2020-05-25至2020-06-05(仅工作日)
目标三十二

登记处

您通过在下面输入您的姓名来注册会议。注册不是强制性的。请在下面输入对话、讨论和代码冲刺的建议。

链接和技术

很可能会通过Zoom进行会谈和讨论。代码冲刺将在Agda会议Slack上进行协调。

还有一个Discord频道,可以选择用于一些即兴的代码冲刺和讨论,您可以在https://discord.gg/5wNVzVk网址。但是,请将所有基于文本的通信保持在Slack上。

缩放或类似系统的链接可以在下面的程序中找到。

计划

注:联合技术公司用于日期和时间。

会谈和讨论已经安排了一个小时。然而,请注意,进行简短的演讲是可以的,如果大家对讨论感兴趣,讨论可能需要一个多小时。

2020-05-25星期一

第一次会议(缩放):

  • 10-11:简介
  • 11-12:讨论:Matthew Daggitt:为Agda实现重构工具

第二届会议(缩放):

  • 15-16:托尔斯滕·阿滕柯奇:立体主义的对称
  • 16-16:30:总结会议

2020-05-26星期二

第一次会议(缩放):

  • 10-11:谈话:Andrea Vezzosi:立方体Agda中的感应家庭

第二届会议(缩放):

  • 13-14:讨论:Jesper Cockx:修改Agda的模块系统

2020-05-27星期三

第一次会议(缩放):

  • 10-11:讨论:托尔斯滕·阿滕柯奇:立体派的未来
  • 11-11:30:总结会议

第二届会议(缩放):

  • 15-16:对话:杰斯珀·考克斯:无限,超越!关于大于集合ω的排序的必要性

2020-05-28星期四

第一次会议(缩放,抽搐):

2020-05-29周五

第一次会议(缩放,抽搐):

  • 11-12:对话:Arjen Rouvoet:带标签的类型编译,没有问题,使用部分交换单体

第二届会议(缩放,抽搐):

  • 15-16:谈话:Artem Shinkarov
  • 16-16:30:总结会议(报告)
  • 16.30:AIM XXXII酒吧(在zoom休息室,自带饮料)

2020-05-30,星期六

14 - ?: 虚拟游览。人们去附近的风景区。缩放(15) 将图片(带评论)上载到谷歌照片库.

2020-06-01周一

第一次会议(缩放,抽搐):

  • 12-13:谈话/讨论:尼尔斯·安德斯·丹尼尔森:让Agda代码更快的一些技巧(“幻灯片”)
  • 13-13:30:总结会议(报告)

第二届会议(缩放):

2020-06-02星期二

第一次会议(缩放):

第二届会议(Jitsi公司,抽搐):

  • 15-16:对话:乌玛·扎拉坎:π与剩菜:阿格达的机械化

2020-06-03周三

第一次会议(缩放):

  • 12-13:谈话:Joris Ceulemans:在Agda中浅埋类型理论作为预设模型(代码,幻灯片)
  • 13-13:30:总结会议

2020-06-04周四

第一次会议(缩放,抽搐):

  • 10-11:谈话:詹姆斯·伍德:为什么现在的十二月看起来很有趣?

第二届会议(缩放):

  • 15:30-16:30:讨论:时尚数学,有可能吗?数学家对Agda的可访问性(学习曲线、文档和数学领域未涵盖)

协作包装垫

2020-06-05周五

第一次会议(缩放):

  • 12-14:最后总结会议

注册参与者

如果你不是在“正常工作时间”工作,你可能想给出一个与你所在地实际时区不同的时区。

姓名时区
尼尔斯·安德斯·丹尼尔森离合器+2
杰斯珀考克斯UTC+2
约翰·利奥UTC-7型
赫敏·佩格尔UTC+2
雅各布·冯·劳默UTC+2
雅克·卡雷特UTC-4型
弗雷德里克·诺德瓦尔·福斯伯格UTC+1
维克托·洛佩斯·胡安UTC+2
安德烈亚斯·阿贝尔UTC+2
特斯拉冰镇UTC+8
詹妮斯·林佩格UTC+2
马修·达吉特UTC+8(可能在~UTC+2提供)
约塔姆·德维尔UTC+3
乌尔夫·诺雷尔UTC+2
Joris Ceulemans公司UTC+2
马丁·埃斯卡多UTC+1
布伦特·约基UTC-5型
陈良亭UTC+8
罗曼·基列夫离合器-2
廷甘露UTC+8
梅尔科奥列斯蒂斯UTC+1
叶夫根尼·波贝里兹金离合器+1
詹姆斯·伍德UTC+1
托马斯·莫尔UTC+2
桑德罗·斯塔基UTC+2
胡志强UTC-4型
安德烈亚·维佐西UTC+2
李泽基UTC+1
帕特里克·詹森UTC+2
陈朝洪UTC-4型
安娜·波夫UTC+2
蒂埃里·科昆UTC+2
托尔斯滕·阿滕柯奇UTC+1
斯蒂芬妮娅·达马托UTC+2
彼得·戴比杰UTC+2
安东·塞泽尔UTC+1
里德·穆兰尼克斯UTC-8型
乌玛·扎拉坎UTC+1
亚当·怀纳离合器+1
斯蒂芬·阿德尔斯伯格UTC+2
阿韦德·弗里德曼UTC+2
尼古拉·克劳斯离合器+1
安德拉斯·科瓦奇UTC+2
卡波西琥珀UTC+2
文科克UTC+1
阿特姆·辛卡罗夫UTC+1
法沃尼亚UTC-5型
沃尔夫拉姆·卡尔UTC-4型
斯科特·沃尔克UTC-4型
马尔科·迪米亚·埃维奇UTC+2
米特克烘烤UTC+2
菲利波·塞斯蒂尼UTC+2
亚历克斯·赖斯UTC+1
艾伯克·托森UTC+2

讨论建议

在此处列出谈话建议。

  • 杰斯珀·考克斯:走向无限,超越!关于大于集合ω的排序的必要性
    关于https://github.com/agda/agda/pull/4609
  • 约翰·利奥:音乐工具
    关于用阿格达语编写的音乐分析和合成工具的最新进展。与Youyou Cong合作。
  • Joris Ceulemans:将类型理论作为预设模型浅显地嵌入Agda
    介绍了正在进行的工作,即使用预应力将(模态)类型理论浅埋在Agda中。
  • Arjen Rouvoet:带标签的类型编译,没有问题,使用部分交换单体。
    跳转使编译器的类型预留的内部验证变得困难。编译器根据需要发明新的标签,并可能在它们绑定到目标指令之前使用它们。为了确保编译器的类型保留,我们需要证明所使用的所有标签确实绑定到了适当类型的指令。我们给出了标签的无名编码和字节码的联合上下文类型。这使得可以编写一个无状态、类型良好的编译器,其中标签可以作为一级值进行操作。这是通过层次结构实现的关系。三元用于在Agda中使用三元关系进行编程。
  • Artem Shinkarov:阿格达萃取
    我想分享我为浅层DSL创建提取器的经验。提取器是使用反射库用Agda编写的。有趣的是:将模式匹配lambda转换为具有嵌套条件的函数;将类型不变量转换为目标语言的断言;在提取之前使用重写规则“优化”表达式。对于后者,棘手的是在模式匹配lambda的分支下推进归一化,这需要为模式匹配树的所选分支计算有效的类型上下文。
  • 乌玛·扎拉坎:π与剩余物:阿格达的机械化
    我们在一组部分交换幺半群上使用剩余类型来机械化具有共享、分级和线性通道的π演算。
  • 詹姆斯·伍德:为什么12月这些天看起来很有趣吗?
    过去,决策问题的答案是然后是证明或然后是反驳。但是现在,使用最新版本的标准库,当您对类型为的变量进行模式匹配时12月P,你得到1因为证据1这让你对实际结果知之甚少。在本次演讲中,我将解释为什么这是一件好事情(有时也是至关重要的),以及它需要哪些新的最佳实践来处理决策过程。
  • 托尔斯滕·阿滕柯奇:立体派的对称性
    在旧的agda中,我们可以通过模式匹配和结构递归进行归纳证明。我的观察是,在立方agda中,我们可以通过合作模式匹配和保护递归来进行共推证明。我的信息是,立方体比证明单价或执行普通人无法实现的更高维同伦证明更有用。
  • 尼尔斯·安德斯·丹尼尔森:让Agda代码更快的一些技巧
    我计划展示一些技巧,让我的Agda代码类型检查更快。也许这可以变成一场讨论。
  • 菲利波·塞斯蒂尼:攻击Agda中的类刚毛平等
    本次演讲的目的是概述Altenkirch等人最近开发的Setoid类型理论,并展示几种可能的方法,使用重写规则的基础设施将这种系统的平等概念编码到Agda中。
  • 姓名:职务
    摘要

讨论建议

在此处列出讨论建议。

  • Jesper Cockx:修改Agda的模块系统
    自Agda 2最初发布以来的13年中,Ulf Norell设计的模块系统已证明其功能强大,适用于许多应用程序。然而,当前实现中的两个难点是来自导入模块的名称的打印,以及效率问题(例如。https://github.com/agda/agda/issues/4331)因为需要在应用程序上复制模块。这将是一个很好的时间来重新审视最初的设计,看看我们目前的知识可以改进什么。
  • Matthew Daggitt:为Agda实现重构工具
    现在有一些相对较大的Agda代码库浮动(标准库本身现在超过了80kloc),因此Agda缺乏更智能的编辑环境越来越成为一个问题。有用的工具包括重构支持、自动导入建议和冗余导入分析。如果社区的相关部分能够分享他们以前尝试实现类似工具的经验,以及他们认为最好的前进道路,那将是一件好事。暂定建议可能包括使用附加功能扩展Emacs模式和/或Atom模式,或者实现语言服务器协议并使用现有编辑器(如Eclipse)中的功能。
  • 托尔斯滕·阿滕柯奇:固定立方体
    有一些事情要做,使立方体工作在实践中。我希望我们可以推出Andrea的诱导家庭实现(这需要一些测试)。我们应该把杰斯珀对二级类型理论的实现融入立体理论(例如我应该住在那里)和图书馆。我们需要讨论一下未来的立方体应该是什么样子。这可能会影响到代码冲刺。
  • Stephan Adelsberger和Anton Setzer:优化Agda(幻灯片,微小的Agda碎片)
    1. 可以使用自动定理证明技术进行等式检查,可以在毫秒内检查10^(10^10)=10^
    2. 并行簇的强力猜测证明
    原则上,大多数编写的Agda代码都可以手动进行类型检查,但如果在Agda中进行一种类型检查,则通常需要功能强大的机器。一个原因是等式是通过将项简化为标准形式来检查的。例如,10^(10^10)=10^。
    我们观察到的另一个问题是定义函数f:(a:a)->(b:b a)->(c:c a b)->bottom时,其中a、b a c a b是有限集,并且在所有情况下其中一个是空的。在Agda中,这必须手动完成,即使在手动进行案例区分之后,也需要很长时间。有两个方面:一是大小写区分应该自动完成,二是类型检查不能并行完成。在后一种情况下,每个有限的子数据库可以表示为一个单独的Agda文件,并发送到一个机器集群。然后,每台机器运行Agda,找到空箱的机器会返回报告。
  • Stephan Adelsberger和Anton Setzer:将Agda与外部工具结合(幻灯片,代码冲刺)
    1. 界面,允许向Agda添加外部工具(例如SAT解算器、模型检查器、其他决策程序),集成Karim Kanso的工作。(讨论)
    2. Lambda prolog与Agda的集成
    3. 用Agda why3点燃Ada
    我们讨论了将Agda与外部工具结合的各种方法。一个是重新激活Karim Kanso为旧版本的Agda所做的工作,在那里他可以编写灵活的内置代码。他用它将SAT解算器和模型检查器与Agda集成,以验证真实的铁路联锁系统。(卡里姆论文代码,带有卡里姆Agda分叉的git存储库,卡里姆博士论文,卡里姆和安东关于该项目的出版物).
    另一个需要考虑的工具是将why3系统与Agda接口。why3系统允许从ML风格的程序创建带有Hoare逻辑风格验证条件(前置条件、后置条件、中间检查条件)的验证条件,然后通过各种自动交互式定理证明器(包括Coq)求解这些验证条件。用于编写关键系统的SPARK系统使用why3系统来验证其中编写的代码。使用Agda接口可以验证用SPARK编写的why3程序。我们要考虑的第三个外部工具是lambda prolog。
  • 投标人:职务
    解释。

代码冲刺建议

在此处列出代码sprint建议。

  • 马修·达吉特:标准图书馆中的策略
    标准库最近使用Agda的反射框架添加了第一个策略,目前正在寻找更多策略。这个代码冲刺将首先为任何开发了有用的战术或战术相关实用程序的人提供一个向库贡献它们的机会。其次,那些有开发策略经验的人可能会为那些刚刚起步的人(比如我自己)提供一些建议。
    有兴趣参与代码冲刺的人:马修·达吉特、杰斯珀·考克斯、托马斯·莫尔、里德·穆拉尼克斯、尼尔·安德斯·丹尼尔森。
  • 詹姆斯·伍德:类型模式同义词
    Agda的模式同义词,由图案关键字当前未键入。虽然这是一个简单而轻量级的解决方案,但它会导致几个问题:
    1. 普通构造函数可以根据其类型重载。当同时处理两个结构类似的类型时,这非常有用,例如列表全部。但模式同义词没有类型,因此不能像这样重载。
    2. 当一个模式可以使用模式同义词重写时,Agsy会急切地这样做。这通常是一种巧合,可能是由于构造函数的重载导致的,从而产生了一个令人困惑且类型不正确的结果。
    3. 没有对模式同义词进行健全性检查。模式同义词可能具有格式错误的定义,对此没有任何警告。
    4. 编写模式同义词时没有交互式编辑支持。标准做法是定义所需类型的函数,然后删除类型并添加单词图案.
    5. 模式同义词不是自文档化的,因为我们必须删除类型声明。
    6. 模式同义词无法很好地处理隐式参数。对于类型,像普通构造函数和函数那样解决隐式参数是有意义的。
    我建议我们实现类型化模式同义词来缓解其中的一些问题,并最终有机会缓解所有这些问题。
    相关问题:#2069
    有兴趣参与代码冲刺的人:James Wood。
  • 托尔斯滕·阿滕柯奇:整合在emacs中的Agda REPL
    在用agda教学时,我错过了一个agda顶级水平,在那里我可以交互地评估表达式。C-C-n并不能真正起到作用!因此,我想恢复交互式agda并将其集成到emacs模式中(可能也适用于其他编辑器)。也就是说,我想按一些键,当前缓冲区将加载到交互式agda中,该agda显示在不同的缓冲区中。
    我需要一个懂emacs口齿不清的人,也许对agda模式有一些经验。
  • 托尔斯滕·阿滕科奇:索引记录和共导类型的析构函数
    我希望能够写:
    记录Vec(A:设置):ℕ → 设置位置共性的析构函数
硬盘:{n:ℕ} → Vec A(例如)A类tl:{编号:ℕ} → Vec A(例如)维生素A n
看见第4650期,供解释.
  • 安东·塞泽尔(Anton Setzer):为Agda灵活添加外部工具的机制(讨论)
    在他的博士论文中,Karim Kanso在Agda中创建了一种机制,用于灵活地向Agda添加内置程序。通过使用外部工具覆盖Agda中现有但效率低下的决策程序,将SAT解算器和模型检查器集成到Agda中。这种机制通常允许在类型检查时向Agda添加外部工具。卡里姆用这个来验证阿格达的真实铁路联锁系统。他使用外部工具证明了混凝土联锁系统的特定特性,并在标准Agda中进行了更通用的证明。卡里姆创建了一个从未集成到主Agda中的Agda分叉,这个分叉需要更新。
    我自己是一个有经验的用户,但不是Agda的实现者,因此需要一些帮助。由于我的日程安排,第2周更适合这个项目,但我当然会支持那些希望尽早开始这个项目的人。
    Karim Kanso在联系时写道:“好消息是,它似乎没有偏离太多。所有需要的插入点都保持不变,看起来非常相似,然而,不可避免地,一些函数名、类型和模块发生了变化。这就是需要花费精力的地方。”
    Karim已经有一段时间没有与Agda或Haskell合作了,他也写道,他很乐意参加一个重点会议,例如与提供任何输入的外部工具相关的讨论。
    有一个卡里姆论文代码,一个使用Karim的Agda分支的git存储库,的卡里姆的博士论文可以在这里找到、和在这里你可以找到卡里姆和我关于这个项目的出版物.
    Code Sprint的结果:Wen Kokke实现了对类型检查类型的任意函数的调用,并要求注册外部函数:Git存储库agda-exec-tc.
  • Stephan Adelsberger和Anton Setzer:GUI库的更新
    这个小代码冲刺的目标是将用于在Agda中编写GUI的库更新到当前版本的Agda。今年夏天的一个项目是将这些库统一为一个统一的GUI编写框架。链接:git存储库ooAgda公司,PPDP18(PPDP18),设置18,功能年龄;演示,文件Adelsberger/Setzer.

总结报告

2020-05-29

  • 立方体agda编译器(Andrea,Nisse)
    尼西正在做一个演示:擦除,在立方体特征无法编译的时候,使用擦除证明的一些等价物。不清楚如何编译,因为缩减出现在I变量的绑定下。需要记住来自单价的强制。
  • 修改模块系统(Jesper)
    没有这方面的工作。但Jesper致力于排序和实例搜索。修复了实例排序的错误,但存在更多问题。请参见实例问题
  • std-lib中的策略(Jesper)
    杰斯珀开始了讨论。需要用于替换和应用反射语法的函数。
  • 评估(Ulf)
    从未有过emacs函数来计算弱头范式,现在是三重C-u C-C C-n
  • 漂亮的打印界面(纪尧姆B.)
    漂亮的打印agdai文件,可从漂亮的打印界面分支获得。用法agda--pretty-print-interface=abc.txt abc.agda为什么立方函数是可见的,即使我们不使用立方函数?如果模块是从立方体模块导入的,则需要。安德烈亚斯:受到纪尧姆的启发,在《哈斯克尔》中清理了一些节目代码。秀与美。
  • 立方族(托尔斯滕)
    需要合并SSet和立方体(族);使用和路径;稳定建议的问题是使用相互定义或为Maybe提供实例。谢谢你
  • 类型模式同义词(Fred、James、Guillaume A.(缺失))
    一些句法问题。现在不要检查类型,而是做其他所有事情。可以使用中缀同义词。
  • 序数符号(Fred)
    什么也没发生。
  • 析构函数(Thorsten)
    什么也没发生。
  • 空白库(詹姆斯)
    使用不同版本的堆栈。

2020-06-01

周末只取得了微小进展

  • 模式同义词
错过了细节
  • 空白(Ed)
主agda需要快速标记,在windows崩溃下使用8.10.1
  • 共生族(托尔斯滕)
兔子洞:余导加法的交换性和间隔变量。杰斯珀自愿修复这个问题。没有。关于立方体和尺寸类型的讨论。安德里亚打算把立体派和严格派结合起来。

2020-06-03

  • 删除的构造函数(Nisse)

在被擦除的上下文中,surpjective等价于被擦除的surpjectivity。对此进行了改进。

看看商和擦除。

Andrea正在为带有已擦除构造函数的编译器开发后端。

  • 反射语法(Jesper)

阿特姆的要求,需要望远镜来反射图案。

反射语法望远镜的有效顺序。

未报价尚未确定。

反射语法的相等性大证明几乎完成了。

  • 外部工具(Ulf)

做了一件坏事:您可以在编译时运行任何二进制文件。必须注册应用程序。

一些讨论:如果这不是一个函数呢?

把它放进TC?-只能作为一种策略。

  • 繁忙的海狸挑战赛(安德烈亚斯)

如何使agda变慢。示例:不明确的解析树。

错误跟踪器上的新标签

  • 立方体和圆锥形(托尔斯滕)

关于如何在conats上实现+的交换性的讨论。

T仍然在等待立方体+资产的版本

  • 类型化模式同义词(Ed)

进步,但现在大部分都被打破了。

2020-06-05

到目前为止,通过添加打印语句来完成(可能是因为agda非常必要并且使用IO)

使用haskell的美丽秀工具。可以查看值并折叠、展开。

请参见信息问题

(关于手册使用何种格式的一些讨论:rsd与markdown)。

  • GitHub行动(Ed)

持续集成运行触发的github推送或拉取请求。

我们如何使用CI?人们是在本地检查还是使用CI?

达到GitHub限制(免费在MS服务器上运行)。

(我们正在使用travis和GitHub进行集成测试。)

建议:仅在主要分行运行CI,而不在问题分行运行CI?

进一步讨论拉入请求

  • 缓慢的统一示例(安德里亚)(1625年发行)

标志:“--experimental-lossy-uniformation”。解的松散唯一性。安德烈亚斯建议“实验性一级联合”

(如果使用-no-syntractic-equality-check,则隐式函数空间存在问题无法在标准库上使用)。

(神秘迷因:agda-3)

(关于隐式函数类型的一些讨论:它们应该是一阶函数吗?)

  • 带有路径类型(andrea)

这并不像安德烈亚斯想的那么难。

T: 应边界是类型的一部分。A: 需要做很多改变。

尼西:redTT对边界有更好的支持。

Andreas建议删除边界生成的约束(否则会重复)。担心效率低下。

问:这是在开发版本中合并的。然而,由于内射性尚未得到解决,归纳族尚未合并。

  • 编译擦除构造函数(Nisse)

使用商的例子很有效。编译未擦除的更高构造函数时出现问题。

想法:只能编译从main可以访问的内容。

  • 类型化模式同义词(詹姆斯)

讨论。仍在实施过程中。

左侧尚未处理。应该很快完成。

  • 向反射类添加望远镜(杰斯珀)

J.可能会编写转换指南,因为它会破坏旧代码。

讨论如何处理不向后兼容的更改。

昨天在标准图书馆讨论策略。

  • 虚拟会议反馈

虚拟会议的优点。如何混合?

温家宝将在爱丁堡举行下一次会议。明年春天之前不会。

  • extecTC(文)

灵感来自对卡里姆工作的讨论,也来自对神经网络的渴望。

允许在TC monad中执行任何程序的原语(用于类型检查)

需要将允许程序添加到文件中。

不允许在安全模式下使用。需要“--allow-exec”。

Git存储库agda-exec-tc.

  • 标准库中的策略(Ulf)

实现了类型错误的printf。printf将在标准库中?

  • conat加法交换性(托尔斯滕)

证明这一点的不同方法,关于不同表征的讨论

证据无法通过终止检查。可以通过内联trans修复,并允许hcomp保持大小不变。

页面上次修改时间:2020年10月24日上午09:38
技术支持私人维基