首页 > 最新文献

Proceedings of the 18th ACM SIGPLAN international conference on Functional programming最新文献

英文 中文
Matching lenses: alignment and view update 匹配镜头:对准和视图更新
Davi Barbosa, Julien Cretin, Nate Foster, M. Greenberg, B. Pierce
Bidirectional programming languages are a practical approach to the view update problem. Programs in these languages, called lenses, define both a view and an update policy - i.e., every program can be read as a function mapping sources to views as well as one mapping updated views back to updated sources. One thorny issue that has not received sufficient attention in the design of bidirectional languages is alignment. In general, to correctly propagate an update to a view, a lens needs to match up the pieces of the view with the corresponding pieces of the underlying source, even after data has been inserted, deleted, or reordered. However, existing bidirectional languages either support only simple strategies that fail on many examples of practical interest, or else propose specific strategies that are baked deeply into the underlying theory. We propose a general framework of matching lenses that parameterizes lenses over arbitrary heuristics for calculating alignments. We enrich the types of lenses with "chunks" identifying reorderable pieces of the source and view that should be re-aligned after an update, and we formulate behavioral laws that capture essential constraints on the handling of chunks. We develop a core language of matching lenses for strings, together with a set of "alignment combinators" that implement a variety of alignment strategies.
双向编程语言是解决视图更新问题的一种实用方法。这些语言中的程序被称为透镜,它们定义了一个视图和一个更新策略——也就是说,每个程序都可以作为一个函数将源映射到视图,也可以作为一个函数将更新后的视图映射回更新后的源。在双向语言的设计中,一个没有得到足够重视的棘手问题是对齐。通常,为了正确地将更新传播到视图,镜片需要将视图的各个部分与底层源的相应部分相匹配,即使在插入、删除或重新排序数据之后也是如此。然而,现有的双向语言要么只支持简单的策略,而这些策略在许多实际的例子中都失败了,要么就提出了深入基础理论的特定策略。我们提出了一种匹配透镜的一般框架,该框架将透镜参数化,用于计算对齐的任意启发式。我们用“块”来丰富镜头的类型,这些“块”标识了在更新后应该重新排列的源和视图的可重新排序的部分,并且我们制定了行为定律,这些定律捕获了处理块的基本约束。我们开发了一种匹配字符串透镜的核心语言,以及一组实现各种对齐策略的“对齐组合子”。
{"title":"Matching lenses: alignment and view update","authors":"Davi Barbosa, Julien Cretin, Nate Foster, M. Greenberg, B. Pierce","doi":"10.1145/1863543.1863572","DOIUrl":"https://doi.org/10.1145/1863543.1863572","url":null,"abstract":"Bidirectional programming languages are a practical approach to the view update problem. Programs in these languages, called lenses, define both a view and an update policy - i.e., every program can be read as a function mapping sources to views as well as one mapping updated views back to updated sources.\u0000 One thorny issue that has not received sufficient attention in the design of bidirectional languages is alignment. In general, to correctly propagate an update to a view, a lens needs to match up the pieces of the view with the corresponding pieces of the underlying source, even after data has been inserted, deleted, or reordered. However, existing bidirectional languages either support only simple strategies that fail on many examples of practical interest, or else propose specific strategies that are baked deeply into the underlying theory.\u0000 We propose a general framework of matching lenses that parameterizes lenses over arbitrary heuristics for calculating alignments. We enrich the types of lenses with \"chunks\" identifying reorderable pieces of the source and view that should be re-aligned after an update, and we formulate behavioral laws that capture essential constraints on the handling of chunks. We develop a core language of matching lenses for strings, together with a set of \"alignment combinators\" that implement a variety of alignment strategies.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"1025 1","pages":"193-204"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77167324","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 84
A certified framework for compiling and executing garbage-collected languages 一个经过认证的框架,用于编译和执行垃圾收集语言
Andrew McCreight, T. Chevalier, A. Tolmach
We describe the design, implementation, and use of a machine-certified framework for correct compilation and execution of programs in garbage-collected languages. Our framework extends Leroy's Coq-certified Compcert compiler and Cminor intermediate language. We add: (i) a new intermediate language, GCminor, that includes primitives for allocating memory in a garbage-collected heap and for specifying GC roots; (ii) a precise, low-level specification for a Cminor library for garbage collection; and (iii) a proven semantics-preserving translation from GCminor to Cminor plus the GC library. GCminor neatly encapsulates the interface between mutator and collector code, while remaining simple and flexible enough to be used with a wide variety of source languages and collector styles. Front ends targeting GCminor can be implemented using any compiler technology and any desired degree of verification, including full semantics preservation, type preservation, or informal trust. As an example application of our framework, we describe a compiler for Haskell that translates the Glasgow Haskell Compiler's Core intermediate language to GCminor. To support a simple but useful memory safety argument for this compiler, the front end uses a novel combination of type preservation and runtime checks, which is of independent interest.
我们描述了一个机器认证框架的设计、实现和使用,以正确编译和执行垃圾收集语言中的程序。我们的框架扩展了Leroy的coq认证的Compcert编译器和Cminor中间语言。我们增加了:(i)一个新的中间语言,GCminor,它包括在垃圾收集堆中分配内存和指定GC根的原语;(ii)一个用于垃圾收集的Cminor库的精确的低级规范;(iii)从GCminor到Cminor的经过验证的语义保留翻译以及GC库。GCminor巧妙地封装了mutator和收集器代码之间的接口,同时保持了足够的简单和灵活,可以与各种源语言和收集器风格一起使用。针对GCminor的前端可以使用任何编译器技术和任何所需的验证程度来实现,包括完全语义保存、类型保存或非正式信任。作为我们框架的一个示例应用,我们描述了一个用于Haskell的编译器,它将格拉斯哥Haskell编译器的核心中间语言转换为GCminor。为了支持这个编译器简单但有用的内存安全参数,前端使用了类型保存和运行时检查的新颖组合,这是独立的兴趣。
{"title":"A certified framework for compiling and executing garbage-collected languages","authors":"Andrew McCreight, T. Chevalier, A. Tolmach","doi":"10.1145/1863543.1863584","DOIUrl":"https://doi.org/10.1145/1863543.1863584","url":null,"abstract":"We describe the design, implementation, and use of a machine-certified framework for correct compilation and execution of programs in garbage-collected languages. Our framework extends Leroy's Coq-certified Compcert compiler and Cminor intermediate language. We add: (i) a new intermediate language, GCminor, that includes primitives for allocating memory in a garbage-collected heap and for specifying GC roots; (ii) a precise, low-level specification for a Cminor library for garbage collection; and (iii) a proven semantics-preserving translation from GCminor to Cminor plus the GC library. GCminor neatly encapsulates the interface between mutator and collector code, while remaining simple and flexible enough to be used with a wide variety of source languages and collector styles. Front ends targeting GCminor can be implemented using any compiler technology and any desired degree of verification, including full semantics preservation, type preservation, or informal trust.\u0000 As an example application of our framework, we describe a compiler for Haskell that translates the Glasgow Haskell Compiler's Core intermediate language to GCminor. To support a simple but useful memory safety argument for this compiler, the front end uses a novel combination of type preservation and runtime checks, which is of independent interest.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"85 1","pages":"273-284"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87544502","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 47
Higher-order representation of substructural logics 子结构逻辑的高阶表示
Karl Crary
We present a technique for higher-order representation of substructural logics such as linear or modal logic. We show that such logics can be encoded in the (ordinary) Logical Framework, without any linear or modal extensions. Using this encoding, metatheoretic proofs about such logics can easily be developed in the Twelf proof assistant.
我们提出了一种子结构逻辑(如线性或模态逻辑)的高阶表示技术。我们证明了这样的逻辑可以在(普通的)逻辑框架中编码,而不需要任何线性或模态扩展。使用这种编码,可以很容易地在十二证明助手中开发关于这种逻辑的元理论证明。
{"title":"Higher-order representation of substructural logics","authors":"Karl Crary","doi":"10.1145/1863543.1863565","DOIUrl":"https://doi.org/10.1145/1863543.1863565","url":null,"abstract":"We present a technique for higher-order representation of substructural logics such as linear or modal logic. We show that such logics can be encoded in the (ordinary) Logical Framework, without any linear or modal extensions. Using this encoding, metatheoretic proofs about such logics can easily be developed in the Twelf proof assistant.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"27 13","pages":"131-142"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91404604","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 17
Regular, shape-polymorphic, parallel arrays in Haskell Haskell中的规则、形状多态、并行数组
G. Keller, M. Chakravarty, Roman Leshchinskiy, S. Jones, B. Lippmeier
We present a novel approach to regular, multi-dimensional arrays in Haskell. The main highlights of our approach are that it (1) is purely functional, (2) supports reuse through shape polymorphism, (3) avoids unnecessary intermediate structures rather than relying on subsequent loop fusion, and (4) supports transparent parallelisation. We show how to embed two forms of shape polymorphism into Haskell's type system using type classes and type families. In particular, we discuss the generalisation of regular array transformations to arrays of higher rank, and introduce a type-safe specification of array slices. We discuss the runtime performance of our approach for three standard array algorithms. We achieve absolute performance comparable to handwritten C code. At the same time, our implementation scales well up to 8 processor cores.
我们提出了一种在Haskell中处理常规多维数组的新方法。我们的方法的主要亮点是它(1)是纯功能性的,(2)通过形状多态性支持重用,(3)避免不必要的中间结构,而不是依赖于随后的循环融合,以及(4)支持透明并行化。我们将展示如何使用类型类和类型族将两种形式的形状多态性嵌入Haskell的类型系统。特别地,我们讨论了正则数组转换到更高秩数组的推广,并引入了数组切片的类型安全规范。我们讨论了三种标准数组算法的运行时性能。我们实现了与手写C代码相当的绝对性能。同时,我们的实现可以扩展到8个处理器内核。
{"title":"Regular, shape-polymorphic, parallel arrays in Haskell","authors":"G. Keller, M. Chakravarty, Roman Leshchinskiy, S. Jones, B. Lippmeier","doi":"10.1145/1863543.1863582","DOIUrl":"https://doi.org/10.1145/1863543.1863582","url":null,"abstract":"We present a novel approach to regular, multi-dimensional arrays in Haskell. The main highlights of our approach are that it (1) is purely functional, (2) supports reuse through shape polymorphism, (3) avoids unnecessary intermediate structures rather than relying on subsequent loop fusion, and (4) supports transparent parallelisation.\u0000 We show how to embed two forms of shape polymorphism into Haskell's type system using type classes and type families. In particular, we discuss the generalisation of regular array transformations to arrays of higher rank, and introduce a type-safe specification of array slices.\u0000 We discuss the runtime performance of our approach for three standard array algorithms. We achieve absolute performance comparable to handwritten C code. At the same time, our implementation scales well up to 8 processor cores.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"36 1","pages":"261-272"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90540907","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 166
VeriML: typed computation of logical terms inside a language with effects VeriML:在具有效果的语言中对逻辑项进行类型化计算
Antonis Stampoulis, Zhong Shao
Modern proof assistants such as Coq and Isabelle provide high degrees of expressiveness and assurance because they support formal reasoning in higher-order logic and supply explicit machine-checkable proof objects. Unfortunately, large scale proof development in these proof assistants is still an extremely difficult and time-consuming task. One major weakness of these proof assistants is the lack of a single language where users can develop complex tactics and decision procedures using a rich programming model and in a typeful manner. This limits the scalability of the proof development process, as users avoid developing domain-specific tactics and decision procedures. In this paper, we present VeriML - a novel language design that couples a type-safe effectful computational language with first-class support for manipulating logical terms such as propositions and proofs. The main idea behind our design is to integrate a rich logical framework - similar to the one supported by Coq - inside a computational language inspired by ML. The language design is such that the added features are orthogonal to the rest of the computational language, and also do not require significant additions to the logic language, so soundness is guaranteed. We have built a prototype implementation of VeriML including both its type-checker and an interpreter. We demonstrate the effectiveness of our design by showing a number of type-safe tactics and decision procedures written in VeriML.
现代证明助手,如Coq和Isabelle,提供了高度的表达性和保证,因为它们支持高阶逻辑中的形式推理,并提供明确的机器可检查证明对象。不幸的是,在这些证明助手中进行大规模证明开发仍然是一项极其困难和耗时的任务。这些证明助手的一个主要弱点是缺乏一种单一的语言,用户可以使用丰富的编程模型以一种类型的方式开发复杂的策略和决策过程。这限制了证明开发过程的可扩展性,因为用户避免开发特定于领域的策略和决策过程。在本文中,我们提出了VeriML——一种新颖的语言设计,它将类型安全的有效计算语言与操作逻辑术语(如命题和证明)的一流支持结合在一起。我们设计背后的主要思想是在受ML启发的计算语言中集成一个丰富的逻辑框架-类似于Coq所支持的逻辑框架。语言设计是这样的,添加的功能与计算语言的其余部分正交,并且也不需要对逻辑语言进行重大添加,因此保证了可靠性。我们已经构建了一个VeriML的原型实现,包括它的类型检查器和解释器。我们通过展示一些用VeriML编写的类型安全策略和决策过程来证明我们设计的有效性。
{"title":"VeriML: typed computation of logical terms inside a language with effects","authors":"Antonis Stampoulis, Zhong Shao","doi":"10.1145/1863543.1863591","DOIUrl":"https://doi.org/10.1145/1863543.1863591","url":null,"abstract":"Modern proof assistants such as Coq and Isabelle provide high degrees of expressiveness and assurance because they support formal reasoning in higher-order logic and supply explicit machine-checkable proof objects. Unfortunately, large scale proof development in these proof assistants is still an extremely difficult and time-consuming task. One major weakness of these proof assistants is the lack of a single language where users can develop complex tactics and decision procedures using a rich programming model and in a typeful manner. This limits the scalability of the proof development process, as users avoid developing domain-specific tactics and decision procedures.\u0000 In this paper, we present VeriML - a novel language design that couples a type-safe effectful computational language with first-class support for manipulating logical terms such as propositions and proofs. The main idea behind our design is to integrate a rich logical framework - similar to the one supported by Coq - inside a computational language inspired by ML. The language design is such that the added features are orthogonal to the rest of the computational language, and also do not require significant additions to the logic language, so soundness is guaranteed. We have built a prototype implementation of VeriML including both its type-checker and an interpreter. We demonstrate the effectiveness of our design by showing a number of type-safe tactics and decision procedures written in VeriML.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"223 1","pages":"333-344"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76697407","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 45
Total parser combinators 解析器组合子总数
Nils Anders Danielsson
A monadic parser combinator library which guarantees termination of parsing, while still allowing many forms of left recursion, is described. The library's interface is similar to those of many other parser combinator libraries, with two important differences: one is that the interface clearly specifies which parts of the constructed parsers may be infinite, and which parts have to be finite, using dependent types and a combination of induction and coinduction; and the other is that the parser type is unusually informative. The library comes with a formal semantics, using which it is proved that the parser combinators are as expressive as possible. The implementation is supported by a machine-checked correctness proof.
描述了一个一元解析器组合器库,它保证了解析的终止,同时仍然允许多种形式的左递归。该库的接口与许多其他解析器组合器库的接口类似,但有两个重要的区别:一个是接口使用依赖类型和归纳和协归纳的组合,清楚地指定构造的解析器的哪些部分可以是无限的,哪些部分必须是有限的;另一个原因是解析器类型的信息异常丰富。该库附带了一个形式化语义,使用它可以证明解析器组合子尽可能具有表现力。该实现由机器检查的正确性证明支持。
{"title":"Total parser combinators","authors":"Nils Anders Danielsson","doi":"10.1145/1863543.1863585","DOIUrl":"https://doi.org/10.1145/1863543.1863585","url":null,"abstract":"A monadic parser combinator library which guarantees termination of parsing, while still allowing many forms of left recursion, is described. The library's interface is similar to those of many other parser combinator libraries, with two important differences: one is that the interface clearly specifies which parts of the constructed parsers may be infinite, and which parts have to be finite, using dependent types and a combination of induction and coinduction; and the other is that the parser type is unusually informative.\u0000 The library comes with a formal semantics, using which it is proved that the parser combinators are as expressive as possible. The implementation is supported by a machine-checked correctness proof.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"1 1","pages":"285-296"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83707773","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 72
The reduceron reconfigured reducer被重新配置
Matthew Naylor, C. Runciman
The leading implementations of graph reduction all target conventional processors designed for low-level imperative execution. In this paper, we present a processor specially designed to perform graph-reduction. Our processor -- the Reduceron -- is implemented using off-the-shelf reconfigurable hardware. We highlight the low-level parallelism present in sequential graph reduction, and show how parallel memories and dynamic analyses are used in the Reduceron to achieve an average reduction rate of 0.55 function applications per clock-cycle.
图约简的主要实现都是针对底层命令式执行而设计的传统处理器。在本文中,我们提出了一个专门设计来执行图约简的处理器。我们的处理器——Reduceron——是使用现成的可重构硬件实现的。我们强调了顺序图约简中存在的低级并行性,并展示了如何在Reduceron中使用并行存储器和动态分析来实现每个时钟周期0.55个函数应用程序的平均约简率。
{"title":"The reduceron reconfigured","authors":"Matthew Naylor, C. Runciman","doi":"10.1145/1863543.1863556","DOIUrl":"https://doi.org/10.1145/1863543.1863556","url":null,"abstract":"The leading implementations of graph reduction all target conventional processors designed for low-level imperative execution. In this paper, we present a processor specially designed to perform graph-reduction. Our processor -- the Reduceron -- is implemented using off-the-shelf reconfigurable hardware. We highlight the low-level parallelism present in sequential graph reduction, and show how parallel memories and dynamic analyses are used in the Reduceron to achieve an average reduction rate of 0.55 function applications per clock-cycle.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"11 1","pages":"75-86"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82842789","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 20
Specifying and verifying sparse matrix codes 指定和验证稀疏矩阵代码
Gilad Arnold, J. Hölzl, A. Köksal, R. Bodík, Shmuel Sagiv
Sparse matrix formats are typically implemented with low-level imperative programs. The optimized nature of these implementations hides the structural organization of the sparse format and complicates its verification. We define a variable-free functional language (LL) in which even advanced formats can be expressed naturally, as a pipeline-style composition of smaller construction steps. We translate LL programs to Isabelle/HOL and describe a proof system based on parametric predicates for tracking relationship between mathematical vectors and their concrete representations. This proof theory automatically verifies full functional correctness of many formats. We show that it is reusable and extensible to hierarchical sparse formats.
稀疏矩阵格式通常由低级命令式程序实现。这些实现的优化特性隐藏了稀疏格式的结构化组织,并使其验证变得复杂。我们定义了一种无变量的函数式语言(LL),在这种语言中,即使是高级格式也可以自然地表示为由较小的构造步骤组成的管道式组合。我们将LL程序翻译成Isabelle/HOL,并描述了一个基于参数谓词的证明系统,用于跟踪数学向量与其具体表示之间的关系。此证明理论自动验证许多格式的完整功能正确性。我们证明了它是可重用的和可扩展到分层稀疏格式的。
{"title":"Specifying and verifying sparse matrix codes","authors":"Gilad Arnold, J. Hölzl, A. Köksal, R. Bodík, Shmuel Sagiv","doi":"10.1145/1863543.1863581","DOIUrl":"https://doi.org/10.1145/1863543.1863581","url":null,"abstract":"Sparse matrix formats are typically implemented with low-level imperative programs. The optimized nature of these implementations hides the structural organization of the sparse format and complicates its verification. We define a variable-free functional language (LL) in which even advanced formats can be expressed naturally, as a pipeline-style composition of smaller construction steps. We translate LL programs to Isabelle/HOL and describe a proof system based on parametric predicates for tracking relationship between mathematical vectors and their concrete representations. This proof theory automatically verifies full functional correctness of many formats. We show that it is reusable and extensible to hierarchical sparse formats.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"1 1","pages":"249-260"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89317015","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 21
Bidirectionalizing graph transformations 双向图变换
S. Hidaka, Zhenjiang Hu, K. Inaba, H. Kato, Kazutaka Matsuda, Keisuke Nakano
Bidirectional transformations provide a novel mechanism for synchronizing and maintaining the consistency of information between input and output. Despite many promising results on bidirectional transformations, these have been limited to the context of relational or XML (tree-like) databases. We challenge the problem of bidirectional transformations within the context of graphs, by proposing a formal definition of a well-behaved bidirectional semantics for UnCAL, i.e., a graph algebra for the known UnQL graph query language. The key to our successful formalization is full utilization of both the recursive and bulk semantics of structural recursion on graphs. We carefully refine the existing forward evaluation of structural recursion so that it can produce sufficient trace information for later backward evaluation. We use the trace information for backward evaluation to reflect in-place updates and deletions on the view to the source, and adopt the universal resolving algorithm for inverse computation and the narrowing technique to tackle the difficult problem with insertion. We prove our bidirectional evaluation is well-behaved. Our current implementation is available online and confirms the usefulness of our approach with nontrivial applications.
双向转换提供了一种新的机制,用于同步和维护输入和输出之间的信息一致性。尽管在双向转换方面有许多有希望的结果,但这些结果仅限于关系或XML(树状)数据库的上下文中。我们通过为UnQL提出一个行为良好的双向语义的正式定义,即为已知的UnQL图查询语言提出一个图代数,挑战了图上下文中的双向转换问题。我们成功形式化的关键是充分利用图上结构递归的递归语义和块语义。我们仔细地改进了现有的结构递归前向求值,使其能够为以后的后向求值产生足够的跟踪信息。我们使用跟踪信息进行反向求值,以反映视图对源的就地更新和删除,并采用通用解析算法进行逆计算,采用窄化技术解决插入难题。我们证明了我们的双向评价是良好的。我们当前的实现可以在线获得,并且证实了我们的方法对于重要应用程序的有用性。
{"title":"Bidirectionalizing graph transformations","authors":"S. Hidaka, Zhenjiang Hu, K. Inaba, H. Kato, Kazutaka Matsuda, Keisuke Nakano","doi":"10.1145/1863543.1863573","DOIUrl":"https://doi.org/10.1145/1863543.1863573","url":null,"abstract":"Bidirectional transformations provide a novel mechanism for synchronizing and maintaining the consistency of information between input and output. Despite many promising results on bidirectional transformations, these have been limited to the context of relational or XML (tree-like) databases. We challenge the problem of bidirectional transformations within the context of graphs, by proposing a formal definition of a well-behaved bidirectional semantics for UnCAL, i.e., a graph algebra for the known UnQL graph query language. The key to our successful formalization is full utilization of both the recursive and bulk semantics of structural recursion on graphs. We carefully refine the existing forward evaluation of structural recursion so that it can produce sufficient trace information for later backward evaluation. We use the trace information for backward evaluation to reflect in-place updates and deletions on the view to the source, and adopt the universal resolving algorithm for inverse computation and the narrowing technique to tackle the difficult problem with insertion. We prove our bidirectional evaluation is well-behaved. Our current implementation is available online and confirms the usefulness of our approach with nontrivial applications.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"12 1","pages":"205-216"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86087216","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 120
Security-typed programming within dependently typed programming 依赖类型编程中的安全类型编程
Jamie Morgenstern, Daniel R. Licata
Several recent security-typed programming languages, such as Aura, PCML5, and Fine, allow programmers to express and enforce access control and information flow policies. In this paper, we show that security-typed programming can be embedded as a library within a general-purpose dependently typed programming language, Agda. Our library, Aglet, accounts for the major features of existing security-typed programming languages, such as decentralized access control, typed proof-carrying authorization, ephemeral and dynamic policies, authentication, spatial distribution, and information flow. The implementation of Aglet consists of the following ingredients: First, we represent the syntax and proofs of an authorization logic, Garg and Pfenning's BL0, using dependent types. Second, we implement a proof search procedure, based on a focused sequent calculus, to ease the burden of constructing proofs. Third, we represent computations using a monad indexed by pre- and post-conditions drawn from the authorization logic, which permits ephemeral policies that change during execution. We describe the implementation of our library and illustrate its use on a number of the benchmark examples considered in the literature.
一些最近的安全类型编程语言,如Aura、PCML5和Fine,允许程序员表达和执行访问控制和信息流策略。在本文中,我们展示了安全类型编程可以作为一个库嵌入到通用的依赖类型编程语言Agda中。我们的库Aglet涵盖了现有安全类型编程语言的主要特性,如分散访问控制、类型证明授权、短暂和动态策略、身份验证、空间分布和信息流。Aglet的实现由以下组成部分组成:首先,我们使用依赖类型表示授权逻辑Garg和Pfenning的BL0的语法和证明。其次,我们实现了一个基于聚焦序列演算的证明搜索程序,以减轻构造证明的负担。第三,我们使用由授权逻辑中提取的前置和后用条件索引的单子来表示计算,这允许在执行期间更改临时策略。我们描述了我们的库的实现,并在文献中考虑的一些基准示例中说明了它的使用。
{"title":"Security-typed programming within dependently typed programming","authors":"Jamie Morgenstern, Daniel R. Licata","doi":"10.1145/1863543.1863569","DOIUrl":"https://doi.org/10.1145/1863543.1863569","url":null,"abstract":"Several recent security-typed programming languages, such as Aura, PCML5, and Fine, allow programmers to express and enforce access control and information flow policies. In this paper, we show that security-typed programming can be embedded as a library within a general-purpose dependently typed programming language, Agda. Our library, Aglet, accounts for the major features of existing security-typed programming languages, such as decentralized access control, typed proof-carrying authorization, ephemeral and dynamic policies, authentication, spatial distribution, and information flow. The implementation of Aglet consists of the following ingredients: First, we represent the syntax and proofs of an authorization logic, Garg and Pfenning's BL0, using dependent types. Second, we implement a proof search procedure, based on a focused sequent calculus, to ease the burden of constructing proofs. Third, we represent computations using a monad indexed by pre- and post-conditions drawn from the authorization logic, which permits ephemeral policies that change during execution. We describe the implementation of our library and illustrate its use on a number of the benchmark examples considered in the literature.","PeriodicalId":20504,"journal":{"name":"Proceedings of the 18th ACM SIGPLAN international conference on Functional programming","volume":"11 1","pages":"169-180"},"PeriodicalIF":0.0,"publicationDate":"2010-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78111244","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 47
期刊
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1