F周例会

想做一个函数式编程相关的演讲吗?与安东·埃克布拉德(Antonekblad,chalmers dot se)交谈,预订一个位置。我们通常每周五10:00有一次谈话。

谷歌日历链接

有计划的会谈

没有


过去的会议

2019-11-29,10:00,编辑8103

扬声器
考恩·克莱森,查尔默斯理工大学
标题
从LTL属性构建和测试合成器
摘要
我正在构建一个“合成器”,它是一个工具,给定一个系统的规格,即线性时序逻辑(LTL)属性,可以自动计算出满足所有这些LTL属性的状态机。本着“更多地谈论正在进行的工作”的精神,我将介绍我已经走了多远,以及我现在面临的问题。
特别是,我需要一种有效的方法来测试我正在构建的工具的某些组件。这些组件中的一个从LTL转换为一个自动机,很难获得高效和正确的,显然需要正确的,而且很难测试!LTL语义处理的是在可执行属性的上下文中很难处理的无限跟踪。
演讲假设听众中没有LTL的实际知识。一切都会解释:)

2019-09-13,10:00,编辑分析

扬声器
亚伯拉罕·沃尔克,哥本哈根大学
标题
面向物理现实的并行计算通用模型
摘要
物理定律和三维欧几里德空间的几何结构限制了(1)信息传输的速度和(2)网络拓扑的可扩展性。主流的并行计算模型要么没有考虑到这些限制,要么将它们归结为模型的自由参数,这些参数可以根据手头的应用程序实例化。虽然后一个选项在分析拟在参数可能接近的/特定/机器上运行的算法时可能会产生有用的见解,但它无法以实际的方式深入了解算法在特定机器之外的可伸缩性。
在这篇演讲中,我将提出开发并行计算模型的想法,在这个模型中,计算被认为是一个在底层并行通用机器上执行的程序,它可以在物理上合理地实现。人们希望通过测量底层通用机器的资源消耗(包括时间和硬件资源),获得执行算法所需的实际资源的实际预测,并了解资源消耗如何以物理现实的方式扩展。

2019-09-6,10:00,编辑分析

扬声器
Moa Johansson,Chalmers公司
标题
学习和自动推理:非正式的想法和新的想法
摘要
这次谈话将是非常非正式的,我的目的是想看看我是否能找到其他人有兴趣讨论和研究一个有趣的问题,即如何在定理证明中结合学习和推理。
在许多领域,包括自然语言处理领域,机器学习(尤其是深度学习)的迅速发展和普及是无人能及的。成功的机器学习系统能够做得很好的,是在某种意义上捕捉到人类直觉的某些方面,尽管并不总是完美的。E、 谷歌翻译通常是可以理解的,但可能并不完美。
当然,自动推理界对机器学习也越来越感兴趣,特别是在发现机器学习是否有助于完成需要人类直觉和交互的任务(例如在交互式定理证明程序中选择下一个策略来推进证明)或现在由启发式方法指导的任务(如在自动证明程序中选择子句、策略等)。
我一直在思考的一个具体问题是如何最好地表示定理证明概念(例如函数、常数、数据类型、猜想、子目标等),以便使其适用于机器学习模型,即需要将数值的向量或矩阵作为输入。在文献中,使用的技术要么是手工制作的特征(基于启发式),要么是来自NLP的技术,将符号视为自然语言中或多或少的单词。然而,定理证明语言(函数、常量、类型等)中的“单词”与NL单词之间有根本的区别。前者有一个正式的语义,应该加以利用!此外,在定理证明者中,用户通常会添加新的“单词”,例如,每当他们定义一个新函数时,这种情况在自然语言中很少出现。这在很大程度上被学习定理证明界所忽视,但却是一个问题。那么,我们如何创建一个廉价的代理,添加新的“单词”?
NLP中流行的方法,如word2vec,它们被训练来学习向量表示,训练起来代价高昂,并且需要大量的数据,因此,如果我们经常需要更新所学习的向量表示,那么这些方法的适用性存在一个问题。有没有现有的方法?

2019-08-30,10:00,编辑分析

扬声器
亨德里克·范安特卫普,代尔夫特大学
标题
Spoofax语言工作台
摘要
元语言的存在是为了改进(特定领域)编程语言的开发。语言工程师通过编写高级的声明性规范来定义语言的各个方面。语言实现是从规范中派生出来的。在这篇演讲中,我将讨论(a)Statix,一种用于名称绑定和键入规则的元语言,以及(b)正在进行的从Statix规范生成随机程序术语的工作。
演讲结束后,立即有一个小型研讨会,讨论Spoofax,这是一个语言工作台,其中包含Statix的一个实现。我们将使用新的语法结构和类型规则扩展STLC的现有语言定义,进行一些交互式语言开发并使用Spoofax的一些元语言。最好安装Spoofax,并事先获得我为本研讨会准备的工作区,这样我们就可以专注于一些黑客攻击了。有关说明,请参阅:https://hendrik.van-antwerpen.net/talks/20190830-chalmers/

2019-08-16,10:00,编辑分析

我们将再次启动我们的函数式编程讲座,本周五我们将从一个爆炸式的开始!我们将有不少于四个外交政策会谈,这是干运行的ICFP演示。我们提出了以下方案:

  • 10: 00-10:30参数不干扰,Maximilian代数
  • 10: 30-11:00 Hailstorm:一种静态类型的系统函数语言,Abhirop Sarkar
  • 11: 00-11:30休息时间
  • 11: 30-12:00 Monadic关系数据库查询的范围,Anton Ekblad
  • 12: 00-12:30待定,Markus Aronsson

演示将在编辑分析中进行。你可以在下面找到一些摘要。欢迎光临!

--

简单不干涉参数,Maximilian代数

在本文中,我们重新讨论了参数性和不干扰性之间的关系。我们的主要贡献是证明了Abadi等在构造演算中依赖核演算的一个多变量变差的不干涉性。证明是模块化的:它利用参数性来计算构造和使用存在类型对数据抽象进行编码。这一观点导致了从参数不干涉的简单和可理解的证明。我们所有的贡献都是在Agda的证明助手中机械化的。

—

Hailstorm:一种静态类型的系统函数语言,Abhirop Sarkar

本文介绍了一个正在进行的函数式语言实现,它主要是为嵌入式系统编程而设计的。

—

范围界定一元关系数据库查询,Anton Ekblad

我们提出了一种新的方法来确保一元嵌入式语言中的关系数据库查询的作用域是良好的,即使在存在任意嵌套的联接和聚合的情况下也是如此。在演示我们的方法时,我们给出了Selda的简化版本,Selda是嵌入在Haskell中的一元关系数据库查询语言,完全支持嵌套的内部查询。据我们所知,Selda是第一种使用一元接口支持完全通用内部查询的关系数据库查询语言。在Haskell社区中,monad实际上是各种库和edsl的标准接口。研究人员和实践者都对它们有很好的理解,并且它们得到了标准库的一流支持。由于很难确保内部查询的范围很好,Haskell中的数据库接口以前要么被迫放弃单元接口的好处,要么不得不放弃内部查询提供的通用性。


2019-05-03,10:00,编辑分析

扬声器
Troles Henriksen,迪库
标题
面向纯函数数组语言的GPU编译器转换
摘要
Futhark是一种小型编程语言,旨在编译成高效的并行代码。它是一种静态类型的、数据并行的纯函数数组语言,并带有一个通过OpenCL和CUDA生成GPU代码的提前优化编译器。Futhark不是为图形编程而设计的,而是使用GPU的计算能力来加速数据并行数组计算(“GPGPU”)。
这篇演讲介绍了Futhark语言的设计,并概述了几个关键的编译器优化,这些优化使得性能可以与手工编写的GPU代码相媲美。通过使用函数源语言,我们获得了强大的不变量,这些不变量简化并支持了传统编译器优化技术的应用。特别是,我将讨论(I)处理高级特性,如模块、多态性和高阶函数,(ii)循环交换和分发,以从嵌套的并行源程序中提取扁平的并行内核,(iii)多版本代码生成,尽可能多地利用并行性,并有效地对其余部分进行排序;(iv)数据布局转换,以确保GPU上的联合内存访问。

2019-04-12,10:00,编辑8103

扬声器
赫伯特·兰格,查尔默斯
标题
限制语法以减少歧义
摘要
形式语法在计算机科学和计算语言学中都是描述语言的有用工具。描述自然语言需要大规模的语法,如语法框架资源语法库。但是随着语法的规模和复杂性的增加,分析中出现的歧义越来越多,这对于特定的应用是不可取的。
在这篇演讲中,我将探讨如何限制一个形式语法,使它准确地描述原始语言的一个特定语言片段,这个片段可以用一组例子的形式给出。生成的语法将被特别优化,以避免歧义分析。演讲的重点将放在自然语言应用上,但我将介绍的方法是通用的,可以引起普遍的兴趣。

2019-01-18,10:00,编辑分析

扬声器
乔尔·斯文森,起来
标题
zynqarm+FPGA上的一种类似Lisp的解释器
摘要
这个演讲,也许更多的是一个示范,是关于一个纯粹为了娱乐的爱好项目,我把它作为一种教育练习。我正在为一种类似lisp语言的解释器工作,我打算在zynqarm+FPGA(在ARM核心上)上运行。除了学习lisp类语言的实现之外,我还希望在我使用开发板时,有一个裸机REPL来帮助我。这是一个正在进行的工作,所以建议和想法是非常感谢。

2018-10-26,10:00,编辑EA

扬声器
爱立信Josef Svenningsson
标题
二郎的渐变型系统
摘要
本文介绍了一种新的基于渐进式输入的Erlang系统。在过去的十年中,逐渐类型化的原则在类型系统研究领域中出现,并为现有语言产生了几种新的类型系统。渐变类型是为混合静态和动态代码而定制的。类型系统提供按量付费的静态检查:程序中的类型注释越多,执行的静态检查就越多。
我们开发的工具使用Erlang当前的规范语法,它可以在现有的代码基础上正常工作。我将介绍在为Erlang开发新的渐进式系统时使用的设计原则。不会假设你事先知道逐步打字。
透析器是目前最流行的Erlang静态检查工具。我们的渐进式系统在某种程度上是对透析器的补充。虽然透析器的目标是没有误报,我们的类型系统总是报告一个错误,每当一个类型规格不匹配的代码。我们将深入比较这两种工具。
这个演讲是今年在码流束大会上所做演讲的扩展版本。

2018-10-05,10:00,编辑分析

扬声器
约翰·休斯,查默斯
标题
测试统计特性
摘要
随机算法(比如QuickCheck本身!)要求在给定的概率下做出选择。这样的算法更难测试,因为测试需要以统计上合理的方式估计概率。在本次演讲中,我将根据Nick Smallbone和我最近所做的工作,在Quviq客户的启发下,探索将统计属性纳入基于属性的测试中的方法。
幻灯片
休斯统计特性.pdf

2018-09-28,10:00,编辑8103

扬声器
马克西米利安·阿尔希德,查尔默斯
标题
依赖核演算透视
摘要
我将在Abadi等人[1]的依赖核心演算(DCC)的终止片段上展示一个简单但同样具有表现力的变体。DCC是一种用于跟踪依赖关系的简洁而优雅的演算。微积分在信息流控制、切片和绑定时间分析等领域有着广泛的应用。然而,在这篇文章中,我们证明了用一种替代的、更简单的配方来代替DCC中的核心技术装置是可能的。微积分与DCC在同一域中有一个指称语义,证明了两个演算是等价的。作为概念证明,我们的演算提供了一个简单的依赖性分析,我们在Haskell中实现了它,与之前的工作相比获得了一个更简单的实现[2]。
这将是我将在与CCS共同办公的PLAS研讨会上所做的一次尝试性演讲。
[1] 依赖性的核心演算-阿巴迪等。[2] 在Haskell-alged和Russo中嵌入DCC

2018-09-21,10:00,编辑分析

扬声器
纳奇亚潘·瓦利亚帕,查尔默斯
标题
用Erlang,Hindley Milner风格键入Wild
摘要
开发一个适合Erlang的静态类型系统是近20年来一直关注的问题。将静态类型系统改造为动态类型语言(如Erlang)的挑战在于,该语言在编程方面失去了灵活性。有鉴于此,许多尝试键入Erlang以保留灵活性的sound类型检查作为交换。在这篇演讲中,我将介绍一个针对Erlang的Hindley-Milner类型系统的实现,它力求保持良好而不受太多限制。与Hindley Milner的当代实现不同,我们的类型检查器非常灵活,可以重载数据构造函数、不同类型的分支等。此外,为了允许Erlang的动态类型行为,我们采用了一种称为部分求值(partial evaluation)的程序专门化技术。部分求值在类型检查之前简化了程序,因此使类型系统能够在某些限制条件下键入此类行为。
注意:这篇演讲是我在即将到来的Erlang研讨会上的一次尝试,基于我在Chalmers的硕士论文工作,由johnhughes指导。
链接到纸张:http://nachivpn.me/ew18.pdf

2018-09-14,11:00,编辑分析

扬声器
阿古斯汀·米斯塔,查尔默斯
标题
快速检查生成器的分支过程
摘要
在QuickCheck(或者更广泛地说,随机测试)中,控制随机数据生成器的分布是一个挑战,特别是当涉及到用户定义的代数数据类型(ADT)时。在这篇文章中,我们改编了一个数学领域分支过程的结果,并展示了它们如何帮助分析性地预测(在编译时)生成的构造函数的预期数量,即使在存在相互递归或复合adt的情况下也是如此。利用我们的概率公式,我们设计了能够自动调整概率的启发式算法,以合成符合用户需求的分布的发电机。我们在一个名为DRaGen的工具中提供了我们的机制的Haskell实现,并对实际应用程序进行了案例研究。在生成随机值时,我们合成的QuickCheck生成器与由最先进的工具自动生成的代码覆盖率相比,显示出了改进。
链接:https://arxiv.org/abs/1808.01520

2018-09-12,13:15,编辑8103

扬声器
Andrey Mokhov,纽卡斯尔大学
标题
代数图
摘要
你厌倦了在处理图形时摆弄顶点和边的集合吗?您想要一个简单的代数数据类型来表示图形并使用熟悉的函数编程抽象来操作它们吗?在这篇演讲中,我们将学习一种思考图形的新方法,以及在像Haskell这样的函数式编程语言中使用图形的新方法。演讲中提出的想法在Alga图书馆得到了实现:https://github.com/snowleopard/alga。我希望讲座结束后,你能在一小时内用你最喜欢的编程语言实现一个新的代数图形库。

2018-09-07,10:00,编辑分析

扬声器
Sólrún Halla Einarsdóttir,查尔默斯
标题
对创造的无限理论探索
摘要
理论探索是一种使用测试和自动证明技术,自动发现数学理论形式化引理的技术。自动理论探索已经成功地应用于发现归纳理论的引理,关于递归数据类型和函数。我们将理论探索扩展到共同归纳理论,允许我们探索核心草书数据类型和函数的双重概念。这就要求开发测试无限值的新方法,并实现证明自动化。我们的工作已经在Hipster系统中实现,Hipster系统是证据助理Isabelle/HOL的理论探索工具。
本次演讲是我即将在2018年AISC上的一次尝试,基于与Moa Johansson和JohannesÅman Pohjola的合作。
链接到纸张:http://www.cse.chalmers.se/~slrn/papers/into_infinite.pdf

2018-06-08,10:00,编辑EA

扬声器
马克西米利安·阿尔希德,查尔默斯
标题
参数性和非干扰性
摘要
我将讨论一些新的不干涉的证明,它利用了相依类型的参数性。与以前的结果不同,我获得了基于参数的不干涉证明,无论是静态的还是动态的。证明使用了Bernardy等人[1]的PTS:s的参数化公式。在他们的理论中,PTS O中的一个项被转换成另一个PTS M,O和M中的一个项,其中M项表示从O中的项的类型和实现导出的定理和证明。我们的证明基本上利用了这两个系统的分离来向程序员隐藏部分安全数据类型。在我们的公式中,M语言构成了元语言和可信计算基础。

[1] 免费证明,J.P.Bernardy,P.Jansson,R.Patterson,JFP 2012


2018-06-01,10:00,编辑3364

扬声器
埃德瓦德·休比内特和弗雷德里克·图恩,查尔默斯
标题
更好的隐式并行(硕士论文演示)
摘要
当对haskell的do符号进行去糖处理时,applicationdo会尽可能删除Monad绑定。它通过查看语句间的依赖关系并在可能的情况下使用应用运算符来实现这一点;这在代码中引入了隐式并行。决定要生成哪种结构是很困难的,因为许多不同的结构通常是可能的。目前,这是通过一个单位成本模型的简单最小成本分析来解决的,假设每个报表的评估时间相同。
在Facebook,Marlow等人开发了[Haxl](https://github.com/facebook/haxl),一个数据获取库,可以使用应用程序表达式实现自由并行。据我们所知,它是唯一对应用程序表达式执行自动并行的库。
通过扩展applicationedo算法内部的成本模型,并通过GHC中可选的程序员pragma实现权重注释,我们可以通过优先处理重语句来实现更智能的代码生成。这导致了使用Haxl时相当好的加速,程序员几乎没有额外的工作。
ApplicativeDo是在应用操作中使用Haskell的do符号去糖化的(Marlow,Peyton Jones,Kmett,&Mokhov,Haskell研讨会2016)Haxl引入时没有叉子(Marlow,Brandy,Coens,&Purdy,ICFP 2014)

2018-05-25,10:00,编辑EA

扬声器
马蒂亚斯Páll Gissurarson,查尔默斯
标题
建议输入孔的有效孔配合(硕士论文答辩)
摘要
大多数程序都是从某种规范中开发出来的,类型系统允许程序员通过类型将这个规范的一部分传递给编译器。然后可以使用这些类型来验证实现是否与此部分规范匹配。但是,除了验证之外,这些类型是否可以用于在开发过程中帮助程序员?在本次演讲中,我将为我的硕士论文“建议类型化孔的有效孔配合”进行辩护,并对GHC的类型化孔进行了一个轻量级的、实用的扩展,它改善了用户体验,促进了一种称为“类型驱动开发”的编程风格。

2018-05-18,10:00,编辑3364

扬声器
苏莱曼萨瓦斯,霍格斯科兰一世哈尔姆斯塔德
标题
从数据流程序设计特定领域的异构体系结构
摘要
在过去的十年里,性能和功耗的需求推动着只使用一个核的计算机体系结构朝着在单个芯片上拥有数百个核的所谓多核系统发展。为了进一步提高性能和能源效率,我们现在看到了具有专用和加速核心的异构体系结构的发展。然而,由于其固有的复杂性,设计这些异构系统是一项具有挑战性的任务。我们提出了一种基于指令扩充的领域专用异构体系结构设计方法,通过将硬件加速器集成到简单的内核中。这些硬件加速器是根据它们在特定域内的应用程序之间的共同使用而确定的。目标是通过集成这些加速核心中的许多并将它们与片上网络连接来生成异构体系结构。所提出的方法旨在通过自动化设计步骤,简化异构多核体系结构的设计,从而探索设计空间。为了评估我们的方法,我们用一个可以从数据流程序生成加速核心的工具来增强我们的软件工具链。这个新的工具链是通过两个用例来评估的:雷达信号处理和移动基带处理。我们可以实现大约4倍的性能改进,同时在增强核心上执行完整的应用程序,对区域使用的影响很小(2.5-13%)。生成的加速器具有竞争力,实现了手写实现的90%以上的性能。
在这篇演讲中,我将对我们的设计方法做一个概述,这种方法通过我们的工具链自动生成的自定义扩展来开发异构体系结构。工具链以数据流应用程序为输入,以函数式编程语言生成自定义硬件,然后将其转换为verilog。
幻灯片
萨瓦斯.pdf

2018-04-20,10:00,编辑3364

扬声器
Troles Henriksen,DIKU,哥本哈根大学
标题
Futhark语言的设计与实现
摘要
Futhark是DIKU正在开发的一种数据并行编程语言。该语言支持(常规)嵌套数据并行,并具有快速开发中的优化编译器。本演示文稿介绍了Futhark及其编译器,重点介绍了高效OpenCL GPU内核的生成以及Futhark编译器为确保融合和高效内存访问而自动采取的步骤。在本演示中,我将讨论代码生成的各种折衷,以及新的版本控制技术如何根据运行时不同并行化策略之间的决策进行调整。

2018-03-09,10:00,编辑3364

扬声器
索尔纳·米里亚兹和伊丽莎白·洛博,查尔默斯
标题
用范畴理论解释Lambda演算(非专家实用编程指南)
摘要
许多特定于领域的语言通常是以一种深嵌入的方式来实现的,以实现优化。EDSL的许多技术很快或以后都会重复宿主编译器的工作——对于这个珍珠来说,这就是GHC。最近,出现了一种称为“分类汇编”的新方法,并有望避免这种重复工作。它依赖于对笛卡尔闭范畴(CCC)范畴模型的理解。这意味着,要使用这一新技术,就必须了解基本范畴理论和CCC。不幸的是,当学习这些主题及其与函数程序的关系时,人们面临着潜入难以理解符号的数学书籍、陷入抽象概念、最终放弃的风险。相反,这个珍珠旨在通过Haskell代码引导Haskell开发人员理解所有这些抽象概念。我们用Haskell给出了两个edsl:一个用于简单类型lambda术语,另一个用于CCC,并展示了如何将程序从一个转换成另一个,这是Lambek在1985年的著名成果。为了实现这一转换,我们的实现依赖于GHC闭式家族。通过研究CCC,可以对lambda术语进行多种解释,但是在本文中,我们只关注传统的按值调用语义。因此,我们也展示了如何通过范畴抽象机(CAM)来执行CCC程序。此外,我们通过基于范畴理论概念的CCC和CAM的适当增强,扩展了简单类型lambda演算的实现,包括原始算子、分支和固定点。整个过程都将以Haskell代码为基础,这样开发人员就可以进行实验,不再像我们那样害怕抽象概念。
这次谈话是基于与亚历杭德罗·鲁索的合作。

2018-03-02,10:00,编辑8103

扬声器
多米尼克•乌节,肯特大学
标题
解释其影响的程序(在Haskell)
摘要
用Haskell编写有效程序的传统方法是使用monad和“do”符号。在演讲中,我将展示两个更丰富的结构来捕捉效果:参数化单体和分级单体。两者都提供了一种在程序类型中捕获程序副作用的更多信息的方法,可以用来检测与效果相关的bug。这些结构可以直接在GHC/Haskell中编程,这是因为扩展允许'do'符号反弹到不同的结构,而不是单子。还将有具体的、真实的例子。
幻灯片
https://github.com/dorchard/effect-explaintations-talk

2017-12-15,10:00,编辑3364

扬声器
马蒂亚斯·帕尔·吉苏拉森
标题
建议类型化孔的有效替换
摘要
在使用大型软件库时,一个常见的问题是如何发现这些库中的函数和常量。类型化空穴是Haskell的一个特性,程序员可以在表达式中指定“空穴”,并让编译器根据上下文推断出这些空穴的相关信息。我们的贡献是对这些洞功能的扩展,其中类型定向搜索用于向程序员建议这些洞的有效替换。GHC已接受此扩展。

2017-12-08,10:00,编辑3364

扬声器
马克西米利安阿尔赫德
标题
会话检查,通信系统的双向测试
摘要
我将介绍一个名为SessionCheck的新工具。这个工具帮助程序员编写正确工作的分布式应用程序。SessionCheck旨在帮助程序员摆脱为多个应用程序组件维护多个规范和测试套件的单调乏味。SessionCheck通过借用会话类型和特定于域的语言的思想来实现这一点,以便为通信协议提供一种简单而富有表现力的组合式规范语言。用SessionCheck规范语言编写的规范可以完全不依赖于语言的方式来测试同一协议的客户端和服务器实现。

2017-12-01,10:00,编辑3364

扬声器
尼古拉·博塔
标题
责任、影响与顺序决策问题
摘要
以一致的方式分配责任——例如对温室气体排放单位——的责任,对于公平分担负担甚至补偿计划都是至关重要的,而且对于有效的决策也是至关重要的:人们希望在真正重要的决策上投入计算或人力资源。但我们如何计算出哪些决定真正重要呢?我们认为,不确定条件下最优决策的依赖型形式化是推导影响/责任度量的良好起点。

2017-11-03,10:00,编辑3364

扬声器
阿恩·兰塔
标题
可解释机器翻译
摘要
可解释人工智能(XAI)是一种试图减轻基于机器学习的人工智能技术的黑箱特性的尝试。这种技术的一个主要例子是神经机器翻译(NMT),它通过端到端的字符串转换工作,其中中间阶段是机器创建的浮点数向量。虽然NMT的平均分数比以前的方法高,但它的问题是最终的翻译有时是完全错误的,而且在不知道源语言和目标语言的情况下,很难区分好的翻译和坏的翻译。
可解释机器翻译(XMT)将XAI的思想应用于翻译领域。它的灵感来自Kurt Mehlhorn’的认证算法的概念:算法不只是产生一个结果,而是一个证书-一个用户可以检查的证据。我们提出的证明是构造型理论中的一个公式,它对可译内容的语义和抽象句法结构进行了编码。这个公式是由解析器获得的,解析器本身可能是一个黑匣子,但它与源文本和目标文本有正式定义的关系。在我们的思想实现中,解析器是一个返回通用依赖树(Universal dependency,UD)树的神经依赖解析器。这些树被解释为类型理论公式,形成翻译中介语。最后,利用语法框架将中间语线性化为目的语。最后一个步骤是由形式规则定义的,因此易于验证,而解析步骤(涉及对不受限制的人类语言的解释)是机器学习方法的自然操场。通过生成一个公式作为这一步骤的结果,我们可以提高整个翻译过程的可靠性。

2017-10-27,10:00,编辑3364

扬声器
埃米尔·阿克塞尔森
标题
Rhino——面向以数据为中心的应用程序的DSL
摘要
在本次演讲中,我将在mPower Business Solutions上介绍我们对Rhino的开发。Rhino是一个功能性的DSL/框架,面向以数据为中心的应用程序,如合规性计算,涉及管理潜在的大量数据,并根据这些数据提供计算报告。目标是一个完全声明性的框架,程序员可以集中精力于应用程序的结构和逻辑,而不是它将如何运行的细节。我们设想了陈述性制度的几个优点:(1)发展迅速;(2) 领域专家易于使用;(3) 包括第三方插件的可移植性(由于没有副作用);等。
犀牛的工作正在进行中。演讲将集中在Rhino中使用的纯函数计算和查询语言。我还将分享从Haskell将Rhino实现为嵌入式DSL的早期尝试中获得的一些经验教训。
Mpowered的核心产品是一个工具包,用于衡量公司对南非多元化立法的遵守情况。Rhino的目标是通过分解业务逻辑来改进现有的实现,以便获得更易于维护的系统,并允许由领域专家编写计算。幸运的是,Rhino甚至可能对同一领域的其他企业有用。

2017-10-06,10:00,编辑3364

扬声器
让·菲利普·伯纳迪
标题
TypedFlow:热部件
摘要
TensorFlow™是一个开源软件库,用于使用数据流图进行数值计算。图中的节点表示数学运算,而图的边表示它们之间通信的多维数据数组(张量)。张量流图可以在gpu上高效地进行计算,是实现深度学习应用的流行选择。
TypedFlow是tensorflow的一个高阶、类型化(HOT)前端,用(格拉斯哥)Haskell编写。
在这次演讲中,我将:
  • 简要解释什么是TensorFlow以及它如何应用于深度学习
  • 回想一下热处理方法的优点
  • 公开一些使用TypedFlow编写的示例程序
  • 演示如何使用GHC扩展将tensorflow函数指定为精确类型
  • 讨论一下这样做的困难

2017-09-15,14:15,编辑EB

扬声器
埃里克·赫兹
标题
一元函数逼近方法及其硬件实现
摘要
在计算机图形学、数字信号处理、通信系统、机器人学、天体物理学、流体物理和许多其他领域的应用已经发展到了计算密集型的程度。算法越来越复杂,对计算精度要求越来越高。此外,在许多情况下,针对这些应用程序的软件解决方案在性能方面是不够的。因此需要硬件实现。算法中经常遇到的瓶颈是一元函数(如三角函数、对数和平方根)以及二元函数(如除法)的逼近性能。因此,我们面临的挑战是开发一种方法来实现硬件中一元函数的近似值,以满足不断增长的需求。该方法要求实现快速的执行时间,低复杂度的基本操作,在硬件上易于实现,并且由于许多应用程序是电池供电的,因此功耗较低。为了确保整个计算(近似是其中一部分)的适当性能,近似误差的特性和分布也是必须能够管理的。
本文提出的新的近似方法旨在通过使用辅助函数来减小查找表的大小。它们是建立在抛物函数的合成上的,通过乘法而不是加法,这是最常见的。
对于某些函数,如根、反根和反根,用近似法直接求解是不可管理的。由于这些函数在许多计算密集型算法中经常出现,因此有必要找到这些函数的高效实现。文中还提出了新的方法。它们都是基于浮点格式工作的,对于根函数,还使用了基数的改变。由于近似算法是在有限范围内的尾数上执行的,因此这些变换不仅使解更简单,而且提高了精度。

2017-09-01,10:00,编辑8103

扬声器
安东·埃克布拉德
标题
分布式Web应用的元EDSL
摘要
我们提出了一种特定于领域的语言,用于构建和配置分布在任意数量的网络化、异构系统上的web应用程序。我们的语言嵌入在Haskell中,为集成用第三方EDSLs编写的组件提供了一个通用的框架,并支持节点之间的类型安全、访问控制的通信,以及应用程序组件之间功能的轻松共享和移动。我们给出了一个实现,并用它实现了分布式web应用程序的几个重要组件,包括RDBMS集成、负载平衡和不可信第三方代码的细粒度沙箱。
这是我在17年Haskell研讨会上的演讲的一次试演,所以请带一些额外的评论和意见。

2017-08-25,10:00,编辑EF

扬声器
马库斯·阿隆松
标题
Haskell的软硬件协同设计
摘要
我将在Haskell展示一个用于编程现场可编程门阵列(FPGA)的库,包括硬件和软件的协同设计。软件代码(C)和硬件代码(VHDL)由单个程序生成。然而,这个库是开放的,因为我们基于类型的嵌入技术允许实现两种以上的嵌入式领域特定语言(EDSL)。代码生成被实现为一系列在更小的、类型化的edsl之间的转换,以防止在非类型化翻译中出现错误。
如果您熟悉Feldspar,可以将其视为支持编译到VHDL和C的重新设计。

2017-06-16,10:00,编辑8103

扬声器
安东·埃克布拉德
标题
一元关系数据库查询的作用域
摘要
在本次演讲中,我将介绍Selda,一个用于嵌入Haskell中的关系数据库查询的单元DSL,使用list monad的语义作为基础。Selda通过在完全通用的内部查询上包含连接和聚合,改进了数据库dsl的当前技术水平。为此,我提出了一个简单而新颖的方法来保证内部查询的作用域是良好的。
在Haskell社区中,monad实际上是各种库和edsl的标准接口。研究人员和实践者都对它们有很好的理解,并且它们得到了标准库的一流支持。由于很难确保内部查询的范围很好,Haskell中的数据库接口要么基于其他不太熟悉的抽象,要么没有内部查询提供的通用性。
这次演讲是TFP'17的一次试演。从幻灯片到演讲结构到内容本身,所有的反馈都比平常更受欢迎!

2017-06-09,10:00,编辑8103

扬声器
琳娜·安德森和安德烈亚斯·瓦尔斯特伦
标题
一种新的递归归纳原理的评价
摘要
结构归纳法是证明递归结构函数性质的有力工具,但在函数不保持输入结构的情况下,结构归纳法是无用的。当今许多尖端的定理证明者使用结构归纳法,这使得他们无法证明非结构递归函数的性质。我们引入了一个新的归纳原理,其中归纳是在函数应用上完成的。这一原理使得证明非结构递归函数的性质成为可能。

2017-06-02,10:00,编辑8103

扬声器
里贾娜·赫比格
标题
用建模技术构建dsl–我们教什么,我们的学生从中得到什么
摘要
我们在软件工程课程和WASP课程中向硕士学生和从业者教授DSL开发。在此过程中,我们将重点放在建模技术上,例如元建模、Xtext、OCL、代码生成和模型转换。在演讲中,我们将对这些技巧进行概述,并讨论学生能够在多大程度上采用和使用它们。为此,我们将展示在课程中创建的dsl示例。

2017-05-19,10:00,编辑EA

扬声器
亚历杭德罗鲁索
标题
保护惰性程序
摘要
信息流控制库作为嵌入式领域专用语言存在于函数式编程语言Haskell中。Haskell的一个显著特点是其懒惰的评估策略。2013年,Buiras和Russo对LIO库进行了攻击,利用惰性评估通过内部定时隐蔽通道泄漏信息。这种隐蔽的通道仅仅通过并发和共享资源的存在来体现。LIO通过这种隐蔽的通道只为公共共享资源删除泄漏,这些资源可以被库调用,例如引用。有了延迟求值,let绑定和函数应用程序(LIO无法控制)引入的变量成为共享资源,强制它们的求值对应于影响线程的计时行为。避免此类泄漏的一种天真的方法是简单地强制计算线程之间可能共享的变量。不幸的是,这个解决方案违背了懒惰求值的核心目的之一:避免计算不需要的表达式!更重要的是,计算表达式的值并不总是可能的,有些表达式可以表示无限结构。相反,这项工作提出了一种新的方法,在编程语言级别显式地控制lazy求值引入的共享。我们设计了一个新的原语lazyDup,它懒洋洋地复制未赋值的表达式以及它们可能依赖的任何子表达式,并以共享和可变引用的并发按需调用演算形式提供了安全MAC库和lazyDup的形式。我们用Agda中的机械化证明来支持我们的正式结果。虽然我们关注的是MAC,但是我们的结果也适用于其他IFC库,比如LIO和HLIO。
这篇演讲是基于与Marco Vassena和Joachim Breitner的合作(将在8月份的IEEE计算机安全研讨会上发表)。

2017-05-12,10:00,编辑8103

扬声器
彼得·塔尼什和杰尔基·努曼马
标题
如何增强数据表达式的类型安全性?
摘要
信息系统(如数据库系统、统计数据包和电子表格程序)允许用户提取聚合数据,这些数据由包含统计函数的表达式指定,通常使用声明性语言,并且类型信息通常只比从基元类型声明中收集到的多。通常,主题专家知道其他相关类型的信息,但是信息系统忽略了这些信息。因此,“类型安全”表达式可以产生无意义的答案,如果类型检查利用了这些额外的类型信息,这是可以避免的。我们已经确定了一小组元数据项以及类型推断规则,它们可以用来提供一个增强的类型安全概念。这允许我们对数据表达式执行静态检查,以便在根据数据计算表达式之前识别潜在的类型安全问题。为了说明我们的方法,我们实现了基于规则的软件,它对包含复杂算术表达式(包括统计聚合函数)的SQL查询执行这种增强的类型检查。
我们还没有做的是开发一个更通用的解决方案,将这种类型推断合并到合适的函数式编程语言中。

2017-05-05,10:00,编辑8103

扬声器
约翰·杰瑞
标题
描述认知技能的可扩展策略语言
摘要
学生学习解决许多领域问题的认知技能。在过去的十年里,我们开发了一种策略语言:一种表达认知技能和解决问题程序的领域专用语言。认知技能的策略可以用来为学生在学习环境、智能辅导系统或严肃游戏中的互动提供反馈、提示和解决方案。我们经常扩展策略语言来捕捉描述策略时出现的新模式。这样的扩展的例子包括偏好组合子,用来表示一个策略比另一个策略更优,以及一个用于描述策略的任何初始部分也被接受的组合子。
在这篇演讲中,我将讨论我们的策略语言的基本需求,并展示如何在保留这些需求的同时扩展策略语言。我们为最小策略语言提供了一个精确的、基于跟踪的语义。利用这个语义,我们研究了策略语言的代数性质。我们描述了几种语言扩展,指定了新的组合子及其代数性质,并讨论了它们的引入对策略语言及其要求的意义。语言扩展通过给出学习环境、智能教学系统和严肃游戏的实际例子来说明。
幻灯片
扩展策略.pdf

2017-04-28,10:00,编辑8103

扬声器
斯文·博多·斯科尔茨,赫里奥特·瓦特大学
标题
超限数组的Lambda演算——走向流与数组的统一
摘要
数组和流似乎在根本上是不一致的:数组要求预先知道它们的大小,流是动态增长的;数组提供对所有元素的直接访问,流只提供对前端元素的直接访问;尽管存在这些差异,许多计算问题在某些时候需要从一种范式转换到另一种范式。这种转变的驱动力是多方面的。通常情况下,这是手头任务需求的转变,或者是出于效率考虑。在这篇演讲中,我们将介绍一个处理数组和流的统一框架的基础。我们介绍了一种应用lambda演算,它的基本数据结构是一种新的数组形式“超限数组”。超限数组保留了有限数组计算的属性,同时也包含了对无限数组的支持。事实证明,甚至可以维护递归规范,因为它们通常是在传统的基于流/列表的设置中找到的。

2017-04-21,10:00,编辑EF

扬声器
马克西米利安阿尔赫德
标题
依赖核心演算的新视角
摘要
依赖核心演算(DCC)是一种用于静态跟踪函数程序中的依赖关系的微积分,它已经存在很多年了。DCC对于研究多程序分析(如调用跟踪、绑定时间分析、切片和信息流控制)非常有用。
在这篇演讲中,我将在Haskell中介绍DCC的一个新实现,重点是应用信息流控制。演讲将介绍三个新的主要贡献,从这个实现,即(i)实现本身,(ii)如何安全地将monad transformer添加到DCC中以模拟效果,以及(iii)一个新的,替代的,DCC的公式,它概括了原始论文中的一些想法。
这次谈话是基于与亚历杭德罗·鲁索正在进行的一项联合工作。

2017-04-07,10:00,编辑8103

扬声器
尤里安·哈格
标题
GHC中的自定义类型错误消息
摘要
在我在Chalmers的休假期间,这篇最后演讲的重点将是展示我们在Glasgow-Haskell编译器定制类型错误的上下文中所取得的成就。在这项工作中,我们使用类型级编程来实现我们的定制,利用编译器中最近添加的一些功能。这种方法的一个显著优点是代码和诊断都在Haskell内部,我们可以使用语言提供的所有抽象方法。这是最近的工作,事实上这篇论文是在我访问查尔默斯时写的。

2017-03-31,10:00,编辑3364

扬声器
亚历杭德罗鲁索
标题
使用基于语言的技术构建安全的嵌入式系统
摘要
低层语言,如C/C++,在工业中被广泛用于开发嵌入式系统。如何对这些系统进行编程涉及计算机的内部细节,例如使用内存指针和手动处理动态内存。软件开发的历史告诉我们,最常见和最难纠正的错误是悬空指针的存在,即指向无效内存位置或不再使用的指针。当嵌入式系统同时并发时,也存在竞争条件问题。编译器可以帮助程序员避免这样的问题,这对程序员是不是有好处?(从而建立一个更安全的系统)。
Rust是Mozilla最近开发的一种语言,用于开发需要高性能和小执行环境(运行时)的系统。Firefox浏览器的一部分已经用这种语言实现了。Rust使用编程语言的原理​​并实现了一个类型系统,该系统能够检测输入无效指针的可能性,并在不使用垃圾收集器的情况下自动处理内存分配。在这篇演讲中,我将讨论Rust背后的原理和哲学,以及如何使用它们来构建安全的系统。

2017-03-17,10:00,编辑3364

扬声器
亚历杭德罗鲁索
标题
选择您自己的冒险:多方面的值语义、安全的多执行和许多其他可能的结尾
摘要
有许多编程语言技术可以证明敏感信息在被不可信代码操纵时不会泄漏。它们的范围从静态强制(如类型系统)到动态实施(作为执行监视器)。尽管在检测到可能的泄漏时,这种技术会引发虚假警报,这是几乎所有执法部门都特有的一个方面。安全多执行(SME)是一种技术,它可以将假警报的数量减少到零!要付出的代价是多次执行程序,每个安全级别一个(例如,公开、机密、最高机密等)。在存在许多安全级别的情况下,SME可能不可用。作为另一种选择,研究人员提出了多方面的值语义(MF)技术,在这种技术中,每一块数据都有与安全级别一样多的“视图”(值)。MF尽可能多地运行一次指令,同时在不同的视图上进行计算。此规则的例外是分支:如果要执行的分支(即,then-or else分支)取决于所考虑的视图,则MF重复执行分支。尽管MF被称为“SME的优化”,但研究人员最近表明,它们提供了不同的安全保障。如果两种方法都要提供相同的安全保证,那么哪种方法更好(在减少误报方面)还是更高的性能(更少的多次执行),仍然没有最终的判断。
受SME和MF比较的启发,我们将介绍一种微积分,它根据其解释方式,在SME、MF或两者的组合下运行程序!重要的是,所有口译员的类型签名都是一样的,这给了我们希望,这两种方法可以统一起来。我们已经在Haskell中实现了我们的想法,在Haskell中,代码(和类型)帮助我们发现两种方法之间的共同根。这篇演讲也将展示一些我们陷入困境的大胆想法——我们希望FP的人群能为我们提供一些关于如何继续前进的启示。
这篇演讲是基于托马斯·施密茨、科马克·弗拉纳根、娜塔莉亚·贝洛娃和塔玛拉·雷兹克正在进行的一项工作。

2017-03-10,10:00,编辑8103

扬声器
尤里安·哈格
标题
Haskell中特定于域的类型错误诊断
摘要
对于适合嵌入领域特定语言的通用语言,类型错误诊断的一个挑战是根据域解释错误,而不是在宿主语言中解释底层编码。在这篇演讲中,我将讨论我们在氦编译器上所做的工作,并讨论Haskell beyond Haskell 98的最新结果。

2017-03-03,10:00,编辑8103

扬声器
圣皮萨尼
标题
Agda中的硬件电路描述与验证
摘要
dsl有一个传统的硬件建模灵感来自函数式编程(Chalmers有相当大的努力)。在我们的工作中,我们建立在这一传统的基础上,使用依赖类型来确保电路具有构造所满足的某种形式良好的条件。DSL的独立类型主机还允许用与电路模型本身相同的语言编写电路行为证明(并由同一编译器检查)。
在本次演讲中,我们将介绍两个用于电路描述的Agda-edsl,一个(Pi-Ware)具有低层次的电路架构视图,另一个(Lambda1)的语法和类型更类似于我们熟悉的λ-演算。我们评论了对这些语言施加了哪些限制,以确保它们只包含“合理直接”映射到硬件的术语,并举例说明了如何对每种语言中的电路进行建模和验证。

2017-02-24,10:00,编辑8103

扬声器
拉尔夫·勒梅尔
标题
软件语言工程和元编程的Haskell之路
摘要
在这次演讲中,我想简要介绍一下我即将出版的软件语言教科书http://www.softlang.org/book戴着Haskell程序员的帽子。总的来说,这本书解决了软件语言工程和元编程的许多问题:内部和外部DSL、对象程序表示、解析、模板处理、漂亮打印、解释、编译、类型检查、软件分析、软件转换、重写、属性语法、部分评估,程序生成,抽象解释,具体的对象语法,等等。Haskell在这本书中扮演着重要角色,因为Haskell用于实现各种语言处理器,即使其他一些编程语言(Python、Java和Prolog)和特定于领域的语言(例如,用于语法定义)也被使用。我希望这次演讲能有互动性,帮助我完成材料,并可能给听众一些关于FP和软件语言相关的教育和知识管理的想法。
幻灯片
http://softlang.uni-koblenz.de/book/slides/HsSleMp.pdf

2017-02-17,10:00,编辑8103

扬声器
卡尔·塞格
标题
从抽象规范到详细实现:如何正确获取基于加速器的代码
摘要
在过去的十年里,计算机单线程性能的快速增长已经大幅放缓。加快单线程应用程序速度的一种方法是使用自定义硬件来实现部分应用程序。不幸的是,完全定制的硬件开发成本极高,很快就会过时,而且非常不灵活。现场可编程门阵列(FPGA)的出现为CPU的通用性和定制硬件的性能提供了一个很好的折衷方案。随着FPGA与CPU的集成越来越紧密,在特定的单线程应用上实现几个数量级的加速已经成为可能,而且这种加速器也开始被广泛应用。对于这些软硬件混合系统来说,一个非常现实的挑战是如何确保解决方案的正确性。复杂的是调试定制硬件(无论是基于FPGA还是基于ASIC)的困难。在这篇演讲中,我将讨论一种方法,这个方法的灵感来自于我在这里访问期间所从事的有效硬件设计的早期工作。更具体地说,我提倡一种集成的设计和验证方法,这样当最终实现时,就可以正式证明其正确性。这个演讲非常描述正在进行的工作,我希望有很多问题!
幻灯片
卡尔赛格20170217.pdf

2017-02-10,10:00,编辑8103

扬声器
尤里安·哈格
标题
氦中的类型错误诊断(第一部分:约束和启发式)
摘要
这是一篇介绍性的演讲,介绍了如何在Helium Haskell编译器中进行类型错误诊断。我们考虑一个基于约束的类型系统公式,以及它如何使我们能够构建类型图和可以在类型图上定义的启发式方法,以查找错误的原因。
幻灯片
hagetedtalk.pdf

2017-02-03,10:00,编辑hörsal EE

扬声器
卡尔·塞格
标题
形式化硬件验证:理论联系实际
摘要
现代微处理器包含数十亿个晶体管,实现非常复杂的算法。确保这些设计是正确的是一项具有挑战性和昂贵的任务。传统的模拟对于这项任务正迅速变得不足以胜任这项任务,甚至耗资数百万美元的仿真硬件也在迅速失去与复杂性的竞争。形式化的硬件验证将离散数学和理论计算机科学概念与有效的启发式相结合,以证明芯片的某些部分完全实现了作为规范提供的功能。在这篇演讲中,我将简要讨论正式硬件验证中使用的主要构建块,讨论该技术的当前工业应用,并重点讨论在工业中应用正式验证所涉及的螺母和螺栓。
幻灯片
FVinPractice.pdf

2017-01-27,10:00,编辑8103

扬声器
托尔斯滕·伯杰
标题
虚拟平台-高度可配置系统的灵活和真正的增量工程
摘要
定制化是大势所趋。硬件的日益多样化和许多新的软件应用场景(如网络物理系统)要求软件系统支持不同的利益相关者需求。创建变体通常使用两种相反的方法:软件克隆和拥有以及软件配置。组织通常从前者开始,前者便宜、灵活、支持快速创新,但会导致冗余和不可扩展。后者通过建立一个集成平台来扩展,该平台在变体之间共享软件资产,但需要大量的前期投资或高风险的迁移过程。那么,我们是否可以有一个健壮的方法来允许一个简单的过渡,甚至结合两种方法的优点呢?
在演讲中,我将讨论虚拟平台,这是一个由虚拟现实资助的项目,旨在构建一个方法和工具套件,支持对各种丰富系统的真正增量开发,利用两种对立方法之间的频谱。我将介绍主要的基本思想、变体丰富系统的重要概念以及项目计划。我还将介绍我以前在可变性建模、模型综合和与项目相关的静态程序分析方面的一些研究。

2017-01-20,11:00,编辑3364

扬声器
马克西米利安阿尔赫德
标题
SpecCheck:一元规范和基于属性的网络协议测试
摘要
我们提出了SpecCheck,一种简单的单元规范语言,用于并发系统的基于属性的测试。我们提出了一种使用会话类型的基本结果来规范化的方法,它允许一个规范用作测试oracle和客户端和服务器代码的模型。我们还展示了如何发现不一致的SpecCheck规范。
幻灯片
最大幻灯片.pdf

2016-12-09,13:00,编辑8103

扬声器
帕特里克·詹森
标题
序列决策问题,相依类型和一般解,
摘要
我们提出了一个计算机检查的解决有限水平序列决策问题的通用实现。这是一类广泛的问题,包括跨时间优化、背包、最优分组、调度等。该实现可以处理时间步长相关的控制和状态空间,以及不确定性的一元表示(如随机、不确定性、模糊或其组合)。这种程度的泛型在具有依赖类型的编程语言中是可以实现的(我们同时使用了Idris和Agda)。依赖类型也是一种方法,它允许我们获得实现的中心部分的形式化和计算机检查的证明:Bellman最优性原则和相关的反向归纳算法。形式化阐明了逆向归纳法的某些方面,并通过明确提出生存性和可达性等概念,可以作为一元动力系统可控性理论的起点,这在气候影响研究等领域中经常遇到。
幻灯片
20161209_.jpg
纸类
http://www.cse.chalmers.se/~patrikj/papers/CompTheoryPolicyAdviceAvoidability_JFP_2016-11_preprint.pdf

2016-12-02,11:00,编辑3364

扬声器
沙岩内志
标题
生长的树木
摘要
我将讨论我最近与Simon Peyton Jones在Haskell中关于可扩展数据类型的工作。我们研究函数数据类型中的可扩展性概念,作为用附加信息装饰抽象语法树问题的一种新方法。我们在Glasgow-Haskell编译器(GHC)中重新设计表示Haskell抽象语法的数据类型时发现了这种可扩展性的需要。具体地说,我们描述了一种利用类型级函数来允许特定形式的扩展性的编程习惯用法。该方法可扩展到支持存在型和广义代数数据类型,并且可以使用模式同义词使其在实践中非常方便。
幻灯片
附:FPDec2016.pdf
纸类
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/trees-that-grow.pdf

2010-06-18,15:15-16:15,编辑室

扬声器
卡琳·凯吉泽
标题
提高长石含量
摘要
Feldspar[1]是一种用于数字信号处理(DSP)的领域专用语言(DSL),最初设计时考虑了基带通信系统。Feldspar是一种强类型的高级函数语言,在编译过程中,它通过中间核心语言翻译成特定于硬件的C代码。因为它是一种高级的函数式语言,与C语言相比,它提高了程序员的抽象层次。
在我的论文中,我致力于为DSP函数开发高级组合器(如有限脉冲响应滤波器),并设计并实现一个矩阵模块,用于在长石中编写变换的代数描述(如离散傅立叶变换)。在这个演示中,我将展示我的结果。
[1]http://feldspar.inf.elte.hu/feldspar/

2010-06-14,14h15-15h15,房间ED

扬声器
彼得A.琼森,卢勒科技大学
标题
超编译和按值调用
摘要
与用命令式语言(如Fortran或C)编写的程序相比,用函数式编程语言编写的简洁明了的程序往往性能较差。超级编译是一种程序转换,它可以通过删除中间结构和执行程序专门化来减轻许多这些问题。
以前的毁林和超级编译算法在应用于按值调用程序时可能会导致意外终止。这会对程序员隐藏循环错误,并根据程序是否优化而改变程序的行为。本文提出了一种适用于高阶值调用语言的超编译算法,证明了该算法既能终止又能保持终止性质。我们还提出了一个更强大的变形相同的超级编译算法,删除更多的中间结构,并给出了我们目前的工作概述。

2010-04-16,15:15-16:15,编辑室

扬声器
克拉西米尔安杰洛夫
标题
GF作为功能逻辑语言
摘要
语法框架(GF)是一种描述自然语言语法的领域专用语言。尽管GF是一种具有非常特定应用领域的语言,但它也是图灵完备的,可以用一种令人惊讶的方式来解决非平凡的任务。该语言的设计与其他函数式和逻辑编程语言有很多共同之处,最显著的是:Agda、Haskell、Curry和Lambda Prolog。Curry是一种有趣的语言,它巧妙地结合了功能和逻辑范式,但从类型论的角度来看,这并不令人满意,因为它没有利用Curry-Howard同构。由于GF与Agda的依赖类型,以及类型系统中的一些特殊性,GF也可以被归类为功能逻辑语言,但GF中的两种范式以预期的方式结合在一起。GF的执行模型与Lambda-Prolog也有很多共同之处,但是为了覆盖GF的全部语义,虚拟机应该在两种模式下工作:收缩和剩余。剩余模式可以在Curry的虚拟机中看到,但在Lambda Prolog中却看不到。
在这个研讨会上,我将讨论我正在进行的关于运行GF应用程序的虚拟机的工作。并不是所有的事情都已经准备好了,但是这些事情已经开始粘在一起了。作为一个演示,我将演示如何在GF中解决经典的n皇后问题。在逻辑编程范式中,我使用回溯,而在函数范式中,我使用高效的确定性计算。从类型理论的角度,我定义了所有n皇后难题的类型。

2010-03-26,15:15-16:00,编辑室

扬声器
安德斯·莫特伯格
标题
用类型推理实现函数式语言
摘要
作为高级函数程序设计课程的一个项目,我实现了一个带有类型推理的小型函数式编程语言。类型系统有单位、乘积和和和类型。该语言还支持通用递归,并使用按值调用作为求值策略。

2010-03-17,15时15分-16时15分,EC室

扬声器
Don Syme,微软剑桥研究院
标题
用F语言实现并行异步编程#
摘要
F是现代应用软件开发环境(.NET)环境下的一种简洁而富有表现力的函数式编程语言,Microsoft将支持F作为Visual Studio 2010中的一级语言。F对并行编程有三个主要贡献,在基于虚拟机的平台(如.NET)的环境中进行异步和反应式编程:
(a) 函数式编程大大减少了程序员在许多编程任务中使用的显式变异量
(b) F包括一个强大的“异步”结构,用于组合反应式和并行计算,包括并行I/O和CPU计算,以及
(c) “异步”允许定义和执行轻量级代理,而无需在虚拟机上调整线程模型。
在本次演讲中,我们将大致了解F,包括一些通用代码,并深入了解这些贡献及其重要性。
Don Syme是微软剑桥研究院的首席研究员,负责F#编程语言的设计。他对.NET平台的设计做出了广泛贡献。NET和C的泛型,具有验证和机器检查证明方面的背景。他的研究集中在编程语言设计和实现的技术方面,这需要使函数式语言更易于使用,与其他语言良好地互操作,并结合面向对象、异步和并行编程的各个方面。他的博士学位来自剑桥大学,1998年。

2010-03-05,15:15-16:15,编辑室

扬声器
让·菲利普·伯纳迪
标题
测试多态性
摘要
(与Koen Claessen和Patrik Jansson合作)
如何测试多态性?问题是,测试只能在特定的单态实例上进行,而参数多态函数对任何类型都有效。
我们提出了一个为多态属性构造单态实例的模式,这样单个实例的正确性意味着所有其他实例的正确性。我们还给出了模式可用于的多态属性类的形式化定义。与测试这些属性的标准方法相比,我们的模式显著减少了必要的测试用例。
这次谈话是让-菲利普在职工持股会上的讲话的预演

2010-02-05,15时15分-16时15分,EC室

扬声器
微软研究公司Satnam Singh
标题
面向异构系统数据并行编程的嵌入式DSL
摘要
本文介绍了一种嵌入式领域专用语言(DSL),它可以针对x64多核处理器上的gpu、SIMD指令和FPGA电路进行数据并行编程。这个系统是作为一个数据并行数组和数据并行操作的库来实现的,它是用C++实现的,对于.NET语言,如C#,VB.NET和F#。我们展示了一组精心选择的约束如何允许我们为非常不同的目标生成有效的代码或电路。最后,我们将基于JIT的方法与其他技术(如CUDA)进行了比较,后者是一种离线的方法,也可以用于模板计算。在适当的抽象层次上编译相同的数据并行描述到不同的计算元素的能力使我们离寻找异构多核系统的计算模型更近了一步。
Satnam Singh是微软研究院的高级研究员。他的工作包括FPGA电路的综合、使用同步语言的硬件设计、异构多核体系结构以及Haskell中的并发和并行编程的研究。

2010-01-29,15时15分-16时15分,EC室

扬声器
Lennart Augustsson,渣打银行
标题
O、 部分评估者,你在哪里?
摘要
部分评价是一个很古老的概念,已经被实施了很多次。部分评价也非常适用;几乎所有计算问题都可以使用它。但广泛使用的部分评估器却不见踪影。为什么?在这篇演讲中,我将给出一些例子,说明我在商业上使用Haskell的15年中使用了部分评估。我会给我的愿望清单,我可以使用一个部分评估器(而不是一次又一次地重写它),并将其与研究社区中所做的进行对比。
Lennart Augustsson是一个将编程语言研究转化为实践的人。他目前在渣打银行(Standard Chartered Bank)的建模与分析小组(modeling and Analytics Group)工作,设计用于定量建模的领域特定编程语言。他是著名的卡宴编程语言的作者,最早的Haskell编译器之一-HBC和一个硬件描述语言Bluespec的合著者。他还是混淆C代码竞赛的三次冠军。

2010-01-22,15:15-16:15,编辑室

扬声器
亚历杭德罗鲁索
标题
通过库实现Python中的污染模式
摘要
web应用程序中的漏洞对在线系统构成威胁。SQL注入和跨站点脚本攻击(XSS)是当今最常见的漏洞之一。web社区使用的流行脚本语言(如Ruby、PHP和Python)提供了一种发现此类漏洞的污染模式方法。污染模式通常使用静态分析或执行监视器来实现。在后一种情况下,Ruby、PHP和Python解释器被修改为包含污染模式。
在本文中,我们将介绍一个Python库,它提供了一个污染模式。通过这种方式,可以避免对Python解释器的任何修改。decorator和重载的概念,以及引用的存在,使我们的解决方案变得轻量级和特别整洁。
这个演讲是基于胡安·何塞·康蒂正在进行的一项工作。

2009-12-11,15:15-16:15,编辑室

扬声器
埃米尔·阿克塞尔森
标题
Feldspar:面向DSP和并行的功能嵌入式语言
摘要
我将介绍Feldspar,它是一种领域专用语言,主要针对数字信号处理应用。长石嵌在Haskell中。深嵌入的核心语言的底层足以实现高效的编译,但又足够灵活,能够支持通过浅组合器实现的更高级的接口。一个这样的接口是一个向量库,它提供的数据类型与Haskell的列表类型非常相似。我还将介绍我们当前基于向量库实现更多领域特定组合的努力。

2009-12-04,15:00-16:00,编辑室

扬声器
让·菲利普·伯纳迪
标题
参数和依赖类型
摘要
(与帕特里克·詹森和罗斯·帕特森共同工作)
在“自由定理”一文中,菲尔·瓦德勒著名地展示了如何将系统F的类型转换为逻辑关系。这种转换有效地使类型可用作定理,可以在更高的逻辑框架中用于推理。
我将展示这个想法是如何推广到依赖类型的。在这种情况下,源语言强大到足以表示逻辑关系,因此它也可以作为目标语言。一个显著的特点是我们不仅可以“免费”得到定理,而且还可以得到它们的证明。

2009-11-27,15:00-16:00,编辑室

扬声器
科恩·克莱森
标题
FUI-一个功能性GUI库
摘要
在这篇演讲中,我将介绍正在进行的关于FUI的工作(好吧,经过几个下午的黑客攻击后的结果),FUI是Haskell的一个新GUI库。在过去的几年中,Haskell已经设计和实现了许多GUI库。有些是功能性/声明性的(比如Fudgets、Gadgets和基于函数式反应式编程(FRP)的解决方案),另一些则提供命令式(IO)接口(如TkGofer/Yahu、Haggis、WxHaskell和Gtk2Hs)。FUI的目的是将Fudgets、Gadgets和FRP(声明性的感觉)的好主意结合起来,并避免更麻烦的特性(循环组合器,混合布局和功能)。FUI的主要动机是因为对这些东西进行黑客攻击非常有趣,但是第二个动机是我试图创建一个GUI库,可以在Haskell的第一年课程中使用。我还将讨论对图书馆的要求,如果它将用于教学,以及我认为它们是否得到满足。

2009-11-20,15:00-16:00,编辑室

扬声器
乔纳斯·杜雷格路
标题
AGATA–快速检查自动生成器(主项目演示)
摘要
在这篇演讲中,我将介绍阿加塔,我的硕士论文的主题。Agata自动化了在Haskell中编写测试数据生成器的过程。阿加塔提出了一个新的尺寸定义。这解决了一些QuickCheck生成器的可伸缩性问题,其中测试用例的绝对大小以指数形式增长到QuickCheck提供的大小限制。Agata还介绍了分销策略。通过对生成器应用分布策略,测试人员可以在不更改生成器代码的情况下向其注入特定的属性。Agata也被实现为BNF转换器工具的扩展,可以为任何上下文无关的语言自动生成语法正确的测试数据。

2009-11-11,13h15-14h30,编辑室(联合FP+ProgLog talk)

扬声器
巴柝声
标题
左Kan扩张的应用函子
摘要
应用函子定义的接口比单体的接口更通用,相应地也更弱。首先在解析器库中使用,现在看到了广泛的应用。左Kan扩展是函数式程序员熟悉的一种存在类型,它是一系列应用函子的来源,而这些函子又不是单子。还有一种涉及箭头的广义形式,出现在Baars、Loh和Swierstra的置换解析器中。

2009-11-06,15:00-16:00,编辑室

扬声器
乔尔·斯文森
标题
Obsidan:使用Haskell的GPU计算
摘要
黑曜石是一种嵌入式领域专用语言,用于GPGPU(图形处理单元上的通用计算)编程。黑曜石的目标是通过提高抽象级别来简化高效GPU内核(GPU上更大算法的构建块)的实现。不过,程序员应该控制一些对性能很重要的低级概念。本演示文稿将概述黑曜石的当前版本,展示我们方法的一些优点和缺点。

2009-10-30,13:00-14:00,5453室

扬声器
穆罕默德·阿西夫
标题
Cryptol案例研究(硕士项目演示)
摘要
如今,数字信号处理已成为许多电子应用的一部分;与此相融合,领域特定语言在许多工程领域的实践者中盛行。密码学是密码学领域专用语言,由伽罗瓦设计,自发明之日起就被国家安全局使用。密码是一种密码技术;然而,这个项目的目标是评估密码作为数字信号处理算法的领域专用语言。它还包括一个扩展密码的建议,使其适用于DSP算法。本文的动机来自DSL对DSP的研究,这是函数编程小组从Ericsson开始的。该项目涉及到在密码技术中实现一套DSP算法,并从这一新领域的经验中分析密码的适用性。这项研究表明,密码对于密码算法来说过于特殊,无法在密码中指定、运行或验证许多DSP算法。然而,有一类特殊的DSP算法用密码比用C或Java编写要容易得多。由于dsl是针对某个问题领域定制的,因此与DSP算法的细微重叠是很自然的。在DSP领域对密码算法进行了评估,结果表明,要使其适用于DSP算法,还需要进行一些改进。

2009-10-23,15:00-16:00,编辑室

计划:在查默斯发现FP活动

这个研讨会的目的是揭露我们部门与计划生育相关的项目。我们还想提出一个HCAR进入。如果你正在做一些与FP相关的事情,在你的项目或教学中使用FP,请大声说出来并加入HCAR草图区域.

2009-10-16,15:00-16:00,5453室

扬声器
亚历杭德罗鲁索
标题
通过哈斯凯尔图书馆的诚信政策
摘要
保护关键数据对于计算系统来说变得越来越重要。多年来,为了实现这一目的,人们开发了基于语言的技术,从而产生了在大多数情况下保证数据机密性的专用语言,即机密不被泄露。这些语言在实践中的影响相当有限。尽管如此,它并没有从头开始产生一种新的语言,但事实证明,通过一个库也可以保证机密性,这使得这项技术更有可能被采用。沿着这条线,本文扩展了一个提供机密性的库,以便考虑安全性的另一个重要方面:数据的完整性。数据完整性旨在防止程序意外或恶意地破坏信息。我们描述了如何实施两种不同类型的完整性策略:访问控制(例如,不应写入某些文件)和类似数据不变的谓词(例如数据的卫生处理),以及关于如何实施信息流完整性策略(例如,用户数据不会损坏或影响关键数据块)的一些想法。以前从未考虑过将机密性和完整性策略结合在一起的库。增加可执行的策略集可以进一步发展库的变化,使其对程序员具有吸引力。为了评估我们的想法,我们建议实施一个案例研究。
这次谈话是基于与阿尔伯特·迪舍尔的一项共同工作。

2009-10-09,15:00-16:00,编辑室

扬声器
伍特·斯威斯特拉
标题
粉笔:一种建筑设计语言
摘要
在我离开瑞典之前,我想最后谈谈我过去几个月在这里所做的工作。Koen、Mary和我一直致力于设计一种语言来对计算机体系结构进行高级描述。使体系结构设计如此困难的一件事是许多不同的设计约束:额外的缓存能在多大程度上加快这种设计?缓存将使用多少能量?建筑师缺乏在设计过程早期探索和评估此类设计决策的语言,这正是我们要解决的问题。在这篇演讲中,我将简要介绍一下我们的想法,讨论我们实施的一些非标准的解释和分析,并通过我们的一些激励人心的例子来告诉大家。

2009-10-02,15:00-16:00,编辑室

计划:关于系内教育计划生育的讨论

我们将讨论函数式程序设计在系学生教育中的作用。非常欢迎学生参加讨论,因为我们希望听取他们的意见。

2009-09-25,15:00-16:00,6128室(后来改为编辑室)

计划:讨论ICFP的一些会谈

参加ICFP的每个人都应该选择2-3个演讲,并且能够快速地总结他们,并且告诉他们他/她对演讲/论文的看法。

2009-06-12,15:00-16:00,编辑室

计划:谈40分钟

扬声器
伍特·斯威斯特拉
标题
数据类型点菜
摘要
在这篇演讲中,我将描述一种用Haskell从独立的独立组件组装数据类型和函数的技术。如果时间允许,我想展示如何使用相同的技术来组合自由单子,从而构造Haskell的单片IO monad。

2009-06-04,10:00-11:00,5453室

计划:谈40分钟

扬声器
让·菲利普·伯纳迪
标题
测试多态函数:初始视图
摘要
许多有用的函数是参数多态的。测试只能应用于多态函数的单态实例。如果我们验证一个实例的正确性,那么我们对其他所有实例的了解是什么?我们提出了一个构造单态实例的模式,这样单个实例的正确性意味着所有其他实例的正确性。
这是科恩·克莱森和帕特里克·詹森的联合工作。

2009-05-29,15:00-16:00,5453室

计划:谈40分钟

扬声器
简·罗谢尔
标题
非常懒惰的评估
摘要
在演讲中,我将介绍我的毕业论文,它介绍了一种非严格的函数式编程语言的新的执行模型。它依赖于一个新的概念,在这个概念中,函数参数的处理比现有的基于图约简的模型慢得多。这就产生了一种新型的抽象机器,它保证了非常高效的程序执行。概念验证实现证明了该方法的适用性。

2009-05-15,15:00-16:00,编辑室

计划:谈40分钟

扬声器
安德烈斯洛赫
标题
互递归数据类型的不动点泛型程序设计
摘要
许多数据类型泛型函数需要访问数据类型结构中的递归位置,因此对数据类型采用固定的观点。示例包括fold的变体,它遍历递归结构之后的数据,或者Zipper数据结构,它可以沿着递归位置导航。然而,Hindley Milner启发的具有代数数据类型的类型系统使得除了常规数据类型之外,很难表示任何东西的不动点。许多实际的例子,例如抽象语法树,实际上是相互递归的数据类型的系统,因此被排除在外。在演讲中,我将描述一种技术,它允许对具有相互递归数据类型的系统使用固定点视图。我还将举一些例子,最突出的是拉链,来证明这种方法是广泛适用的。

2009-05-08,15:00-16:00,编辑室

计划:谈40分钟

扬声器
尼尔·琼斯
标题
非类型lambda演算的终止分析
摘要
提出了一种算法,在给定非类型lambda表达式的情况下,可以证明其按值调用的求值将终止。它的工作原理是早期应用于一阶程序的“大小变化原则”的扩展。该算法是合理的(并且已经被证明是正确的)但并不完整:一些lambda表达式实际上可能在按值调用的计算下终止,但不能被认为是终止的。
大小变化终止的强度相当高:它证明终止所有原始递归程序,以及许多有趣和有用的通用递归算法,包括具有相互递归和参数交换的程序,以及Colson的“最小”算法。此外,该方法允许自由使用Y组合子,因此可以识别为终止PCF的实质子集。
本文基于Neil D.Jones和ninabohr的一篇论文“非类型lambda演算的终止分析”,DIKU,哥本哈根大学和哥本哈根IT大学

2009-04-24,15:00-16:00,5453室

计划:尼克的演讲,40分钟,包括问题

扬声器
尼克·斯莫伯恩
标题
QuickSpec:免费的正式规范
摘要
我将讨论QuickSpec,一个由Koen、John和我开发的工具,它可以从函数程序生成代数规范。QuickSpec不使用定理证明,只使用基于测试的简单技术。

2009-04-03,15:00-16:00,5453室

计划:乌尔夫演讲,40分钟,包括提问

扬声器
乌尔夫·诺瑞尔
标题
依赖类型的数据库绑定
摘要
在系统开发中,与数据库的接口是一项常见的任务,任何有自尊心的编程语言都会附带库来完成这项工作。然而,这些库在大多数情况下是非类型化的——发送到数据库的查询要么是字符串,要么是一些简单的结构化表示,与所查询数据库的实际布局没有关系。一个例外是Haskell库,它支持与数据库的良好类型交互,但需要在编译时运行一个工具来生成与数据库表对应的Haskell类型。
我将展示一个基于Nicolas Oury和Wouter Swierstra(2008)[1]的思想为Agda提供一个简单的依赖类型的数据库库,其中的查询保证与被查询的数据库有关的类型良好,并且不需要在编译时查询数据库。它还支持在程序执行期间更改数据库布局。
[1] 欧瑞和斯威斯特拉,圆周率的力量。2008年ICFP。

2009-03-27,15:00-16:00,5453室

计划:约翰的演讲,40分钟,包括问题;关于网站的讨论

扬声器
约翰休斯
标题
eqc_fsm:QuickCheck中的状态机规范
摘要
我将讨论eqc_fsm,一个为qviq的QuickCheck开发的新模块,作为抗议项目的一部分。它被设计用来表达状态机图,沿着UML状态图的线,作为快速检查规范。与QuickCheck以前的状态机支持相比,eqc_fsm允许更简洁、更不容易出错的规范,并且可以在分析生成的随机测试的分布方面提供帮助,实际上,自动分配适当的权重以实现测试用例的“最佳”分布——无论这意味着什么,这本身就是一个有趣的问题。

2009-03-20,15:00-16:00,5453室

扬声器
米查帕卡
标题
用QuickCheck和PULSE求解Erlang中的竞争条件
摘要
我将介绍一个用户级调度器,它与QuickCheck和trace visualizer相结合,可以用来调试并发Erlang程序,从而在单元测试中很有可能发现并发错误。

2009-03-13,15:00-16:00,编辑室

计划:20分钟两场会谈

谈话1

扬声器
让·菲利普·伯纳迪
标题
纯功能增量解析
摘要
我将总结一下在为Yi编辑器开发的解析库中使用的技术。然后,我建议详细说明如何在组合器库中组合增量解析和延迟解析。

谈话2

扬声器
帕特里克·詹森
标题
C++中的通用库,包含Haskell中高级域描述的概念-用于计算脆弱性评估的领域特定库
摘要
看到了吗计算脆弱性评估

2009-03-06,15:00-16:00,编辑室

计划:60分钟一说

谈谈

扬声器
伍特·斯威斯特拉
标题
霍尔州立大学
摘要
单子帮助构造功能程序。然而,关于一元程序的证明通常是从扩展返回和绑定的定义开始的。这似乎相当浪费。如果我们在编写程序时利用这种结构,为什么在编写证明时要丢弃它?我将展示如何验证驻留在状态monad中的函数程序,其明确目的是利用程序的单体结构来指导验证过程。