首页 > 最新文献

Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages最新文献

英文 中文
Cantor meets Scott: semantic foundations for probabilistic networks 康托与斯科特:概率网络的语义基础
S. Smolka, Praveen Kumar, Nate Foster, D. Kozen, Alexandra Silva
ProbNetKAT is a probabilistic extension of NetKAT with a denotational semantics based on Markov kernels. The language is expressive enough to generate continuous distributions, which raises the question of how to compute effectively in the language. This paper gives an new characterization of ProbNetKAT’s semantics using domain theory, which provides the foundation needed to build a practical implementation. We show how to use the semantics to approximate the behavior of arbitrary ProbNetKAT programs using distributions with finite support. We develop a prototype implementation and show how to use it to solve a variety of problems including characterizing the expected congestion induced by different routing schemes and reasoning probabilistically about reachability in a network.
ProbNetKAT是NetKAT的概率扩展,具有基于马尔可夫核的指称语义。该语言的表达能力足以生成连续分布,这就提出了如何在该语言中进行有效计算的问题。本文利用领域理论给出了ProbNetKAT语义的新表征,为构建实际实现提供了基础。我们展示了如何使用语义来近似任意ProbNetKAT程序的行为,使用具有有限支持的分布。我们开发了一个原型实现,并展示了如何使用它来解决各种问题,包括描述由不同路由方案引起的预期拥塞和网络可达性的概率推理。
{"title":"Cantor meets Scott: semantic foundations for probabilistic networks","authors":"S. Smolka, Praveen Kumar, Nate Foster, D. Kozen, Alexandra Silva","doi":"10.1145/3009837.3009843","DOIUrl":"https://doi.org/10.1145/3009837.3009843","url":null,"abstract":"ProbNetKAT is a probabilistic extension of NetKAT with a denotational semantics based on Markov kernels. The language is expressive enough to generate continuous distributions, which raises the question of how to compute effectively in the language. This paper gives an new characterization of ProbNetKAT’s semantics using domain theory, which provides the foundation needed to build a practical implementation. We show how to use the semantics to approximate the behavior of arbitrary ProbNetKAT programs using distributions with finite support. We develop a prototype implementation and show how to use it to solve a variety of problems including characterizing the expected congestion induced by different routing schemes and reasoning probabilistically about reachability in a network.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"220 12 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2016-07-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90765730","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}
引用次数: 38
Beginner's luck: a language for property-based generators 初学者的幸运:一种基于属性的生成器语言
Leonidas Lampropoulos, Diane Gallois-Wong, Catalin Hritcu, John Hughes, B. Pierce, Li-yao Xia
Property-based random testing à la QuickCheck requires building efficient generators for well-distributed random data satisfying complex logical predicates, but writing these generators can be difficult and error prone. We propose a domain-specific language in which generators are conveniently expressed by decorating predicates with lightweight annotations to control both the distribution of generated values and the amount of constraint solving that happens before each variable is instantiated. This language, called Luck, makes generators easier to write, read, and maintain. We give Luck a formal semantics and prove several fundamental properties, including the soundness and completeness of random generation with respect to a standard predicate semantics. We evaluate Luck on common examples from the property-based testing literature and on two significant case studies, showing that it can be used in complex domains with comparable bug-finding effectiveness and a significant reduction in testing code size compared to handwritten generators.
基于属性的随机测试需要为满足复杂逻辑谓词的分布良好的随机数据构建高效的生成器,但编写这些生成器可能很困难且容易出错。我们提出了一种特定于领域的语言,在这种语言中,通过使用轻量级注释修饰谓词来方便地表达生成器,以控制生成值的分布和每个变量实例化之前发生的约束求解量。这种称为Luck的语言使生成器更容易编写、阅读和维护。我们给出了Luck的一个形式语义,并证明了它的几个基本性质,包括关于标准谓词语义的随机生成的健全性和完备性。我们在基于属性的测试文献中的常见示例和两个重要的案例研究中对Luck进行了评估,结果表明,与手写生成器相比,它可以在复杂的领域中使用,具有相当的bug发现效率,并且显著减少了测试代码的大小。
{"title":"Beginner's luck: a language for property-based generators","authors":"Leonidas Lampropoulos, Diane Gallois-Wong, Catalin Hritcu, John Hughes, B. Pierce, Li-yao Xia","doi":"10.1145/3009837.3009868","DOIUrl":"https://doi.org/10.1145/3009837.3009868","url":null,"abstract":"Property-based random testing à la QuickCheck requires building efficient generators for well-distributed random data satisfying complex logical predicates, but writing these generators can be difficult and error prone. We propose a domain-specific language in which generators are conveniently expressed by decorating predicates with lightweight annotations to control both the distribution of generated values and the amount of constraint solving that happens before each variable is instantiated. This language, called Luck, makes generators easier to write, read, and maintain. We give Luck a formal semantics and prove several fundamental properties, including the soundness and completeness of random generation with respect to a standard predicate semantics. We evaluate Luck on common examples from the property-based testing literature and on two significant case studies, showing that it can be used in complex domains with comparable bug-finding effectiveness and a significant reduction in testing code size compared to handwritten generators.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"60 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2016-07-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83607943","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}
引用次数: 44
Hazelnut: a bidirectionally typed structure editor calculus 榛子:一个双向类型的结构编辑演算
Cyrus Omar, Ian Voysey, Michael C Hilton, Jonathan Aldrich, Matthew A. Hammer
Structure editors allow programmers to edit the tree structure of a program directly. This can have cognitive benefits, particularly for novice and end-user programmers. It also simplifies matters for tool designers, because they do not need to contend with malformed program text. This paper introduces Hazelnut, a structure editor based on a small bidirectionally typed lambda calculus extended with holes and a cursor. Hazelnut goes one step beyond syntactic well-formedness: its edit actions operate over statically meaningful incomplete terms. Naïvely, this would force the programmer to construct terms in a rigid "outside-in" manner. To avoid this problem, the action semantics automatically places terms assigned a type that is inconsistent with the expected type inside a hole. This meaningfully defers the type consistency check until the term inside the hole is finished. Hazelnut is not intended as an end-user tool itself. Instead, it serves as a foundational account of typed structure editing. To that end, we describe how Hazelnut's rich metatheory, which we have mechanized using the Agda proof assistant, serves as a guide when we extend the calculus to include binary sum types. We also discuss various interpretations of holes, and in so doing reveal connections with gradual typing and contextual modal type theory, the Curry-Howard interpretation of contextual modal logic. Finally, we discuss how Hazelnut's semantics lends itself to implementation as an event-based functional reactive program. Our simple reference implementation is written using js_of_ocaml.
结构编辑器允许程序员直接编辑程序的树状结构。这可以带来认知上的好处,特别是对于新手和最终用户程序员。它还简化了工具设计人员的工作,因为他们不需要处理格式不正确的程序文本。本文介绍了一个基于小型双向型lambda演算的结构编辑器Hazelnut。Hazelnut比语法格式良好更进一步:它的编辑操作在静态有意义的不完整项上操作。Naïvely,这将迫使程序员以严格的“由外而内”的方式构造术语。为了避免这个问题,动作语义会自动将指定了与预期类型不一致的类型的项放在一个洞中。这将有意义地延迟类型一致性检查,直到完成孔内的术语。Hazelnut本身并不打算作为终端用户工具。相反,它是类型化结构编辑的基础说明。为此,我们描述了Hazelnut丰富的元理论,我们已经机械化使用Agda证明助手,当我们扩展微积分包括二进制和类型时,它是如何作为指导的。我们还讨论了对洞的各种解释,并以此揭示了与渐进式类型和上下文模态类型理论的联系,即上下文模态逻辑的Curry-Howard解释。最后,我们将讨论Hazelnut的语义如何使其成为基于事件的功能响应式程序来实现。我们的简单引用实现是使用js_of_ocaml编写的。
{"title":"Hazelnut: a bidirectionally typed structure editor calculus","authors":"Cyrus Omar, Ian Voysey, Michael C Hilton, Jonathan Aldrich, Matthew A. Hammer","doi":"10.1145/3009837.3009900","DOIUrl":"https://doi.org/10.1145/3009837.3009900","url":null,"abstract":"Structure editors allow programmers to edit the tree structure of a program directly. This can have cognitive benefits, particularly for novice and end-user programmers. It also simplifies matters for tool designers, because they do not need to contend with malformed program text. This paper introduces Hazelnut, a structure editor based on a small bidirectionally typed lambda calculus extended with holes and a cursor. Hazelnut goes one step beyond syntactic well-formedness: its edit actions operate over statically meaningful incomplete terms. Naïvely, this would force the programmer to construct terms in a rigid \"outside-in\" manner. To avoid this problem, the action semantics automatically places terms assigned a type that is inconsistent with the expected type inside a hole. This meaningfully defers the type consistency check until the term inside the hole is finished. Hazelnut is not intended as an end-user tool itself. Instead, it serves as a foundational account of typed structure editing. To that end, we describe how Hazelnut's rich metatheory, which we have mechanized using the Agda proof assistant, serves as a guide when we extend the calculus to include binary sum types. We also discuss various interpretations of holes, and in so doing reveal connections with gradual typing and contextual modal type theory, the Curry-Howard interpretation of contextual modal logic. Finally, we discuss how Hazelnut's semantics lends itself to implementation as an event-based functional reactive program. Our simple reference implementation is written using js_of_ocaml.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"4 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2016-07-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83056144","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}
引用次数: 46
Coupling proofs are probabilistic product programs 耦合证明是概率积程序
G. Barthe, B. Grégoire, Justin Hsu, Pierre-Yves Strub
Couplings are a powerful mathematical tool for reasoning about pairs of probabilistic processes. Recent developments in formal verification identify a close connection between couplings and pRHL, a relational program logic motivated by applications to provable security, enabling formal construction of couplings from the probability theory literature. However, existing work using pRHL merely shows existence of a coupling and does not give a way to prove quantitative properties about the coupling, needed to reason about mixing and convergence of probabilistic processes. Furthermore, pRHL is inherently incomplete, and is not able to capture some advanced forms of couplings such as shift couplings. We address both problems as follows. First, we define an extension of pRHL, called x-pRHL, which explicitly constructs the coupling in a pRHL derivation in the form of a probabilistic product program that simulates two correlated runs of the original program. Existing verification tools for probabilistic programs can then be directly applied to the probabilistic product to prove quantitative properties of the coupling. Second, we equip x-pRHL with a new rule for while loops, where reasoning can freely mix synchronized and unsynchronized loop iterations. Our proof rule can capture examples of shift couplings, and the logic is relatively complete for deterministic programs. We show soundness of x-PRHL and use it to analyze two classes of examples. First, we verify rapid mixing using different tools from coupling: standard coupling, shift coupling, and path coupling, a compositional principle for combining local couplings into a global coupling. Second, we verify (approximate) equivalence between a source and an optimized program for several instances of loop optimizations from the literature.
耦合是对概率过程对进行推理的一个强大的数学工具。形式验证的最新发展确定了耦合和pRHL之间的密切联系,pRHL是一种由可证明安全性应用程序驱动的关系程序逻辑,可以从概率论文献中正式构建耦合。然而,现有的使用pRHL的工作仅仅表明了耦合的存在,并没有给出一种方法来证明耦合的定量性质,这需要对概率过程的混合和收敛进行推理。此外,pRHL本质上是不完整的,不能捕获一些高级形式的耦合,如移位耦合。我们以以下方式解决这两个问题。首先,我们定义了pRHL的扩展,称为x-pRHL,它以模拟原始程序的两个相关运行的概率积程序的形式显式地构建了pRHL派生中的耦合。现有的概率程序验证工具可以直接应用于概率乘积,以证明耦合的定量性质。其次,我们为x-pRHL提供了一个新的while循环规则,其中推理可以自由地混合同步和非同步循环迭代。我们的证明规则可以捕获移位耦合的例子,并且对于确定性程序的逻辑是相对完整的。我们证明了x-PRHL的合理性,并用它来分析两类例子。首先,我们使用不同的耦合工具验证快速混合:标准耦合、位移耦合和路径耦合,这是一种将局部耦合组合成全局耦合的组合原则。其次,我们从文献中验证了几个循环优化实例的源和优化程序之间的(近似)等效性。
{"title":"Coupling proofs are probabilistic product programs","authors":"G. Barthe, B. Grégoire, Justin Hsu, Pierre-Yves Strub","doi":"10.1145/3009837.3009896","DOIUrl":"https://doi.org/10.1145/3009837.3009896","url":null,"abstract":"Couplings are a powerful mathematical tool for reasoning about pairs of probabilistic processes. Recent developments in formal verification identify a close connection between couplings and pRHL, a relational program logic motivated by applications to provable security, enabling formal construction of couplings from the probability theory literature. However, existing work using pRHL merely shows existence of a coupling and does not give a way to prove quantitative properties about the coupling, needed to reason about mixing and convergence of probabilistic processes. Furthermore, pRHL is inherently incomplete, and is not able to capture some advanced forms of couplings such as shift couplings. We address both problems as follows. First, we define an extension of pRHL, called x-pRHL, which explicitly constructs the coupling in a pRHL derivation in the form of a probabilistic product program that simulates two correlated runs of the original program. Existing verification tools for probabilistic programs can then be directly applied to the probabilistic product to prove quantitative properties of the coupling. Second, we equip x-pRHL with a new rule for while loops, where reasoning can freely mix synchronized and unsynchronized loop iterations. Our proof rule can capture examples of shift couplings, and the logic is relatively complete for deterministic programs. We show soundness of x-PRHL and use it to analyze two classes of examples. First, we verify rapid mixing using different tools from coupling: standard coupling, shift coupling, and path coupling, a compositional principle for combining local couplings into a global coupling. Second, we verify (approximate) equivalence between a source and an optimized program for several instances of loop optimizations from the literature.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"1 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2016-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89466962","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}
引用次数: 43
Java generics are turing complete Java泛型正在逐渐完善
Radu Grigore
This paper describes a reduction from the halting problem of Turing machines to subtype checking in Java. It follows that subtype checking in Java is undecidable, which answers a question posed by Kennedy and Pierce in 2007. It also follows that Java's type checker can recognize any recursive language, which improves a result of Gill and Levy from 2016. The latter point is illustrated by a parser generator for fluent interfaces.
本文描述了将图灵机的停机问题简化为Java中的子类型检查问题。由此可见,Java中的子类型检查是不可判定的,这回答了Kennedy和Pierce在2007年提出的问题。Java的类型检查器也可以识别任何递归语言,这改进了Gill和Levy在2016年的研究结果。后一点由流畅接口的解析器生成器说明。
{"title":"Java generics are turing complete","authors":"Radu Grigore","doi":"10.1145/3009837.3009871","DOIUrl":"https://doi.org/10.1145/3009837.3009871","url":null,"abstract":"This paper describes a reduction from the halting problem of Turing machines to subtype checking in Java. It follows that subtype checking in Java is undecidable, which answers a question posed by Kennedy and Pierce in 2007. It also follows that Java's type checker can recognize any recursive language, which improves a result of Gill and Levy from 2016. The latter point is illustrated by a parser generator for fluent interfaces.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"3 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2016-05-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78597212","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}
引用次数: 43
The exp-log normal form of types: decomposing extensional equality and representing terms compactly 类型的exp-log范式:分解扩展等式,紧凑地表示项
Danko Ilik
Lambda calculi with algebraic data types lie at the core of functional programming languages and proof assistants, but conceal at least two fundamental theoretical problems already in the presence of the simplest non-trivial data type, the sum type. First, we do not know of an explicit and implemented algorithm for deciding the beta-eta-equality of terms---and this in spite of the first decidability results proven two decades ago. Second, it is not clear how to decide when two types are essentially the same, i.e. isomorphic, in spite of the meta-theoretic results on decidability of the isomorphism. In this paper, we present the exp-log normal form of types---derived from the representation of exponential polynomials via the unary exponential and logarithmic functions---that any type built from arrows, products, and sums, can be isomorphically mapped to. The type normal form can be used as a simple heuristic for deciding type isomorphism, thanks to the fact that it is a systematic application of the high-school identities. We then show that the type normal form allows to reduce the standard beta-eta equational theory of the lambda calculus to a specialized version of itself, while preserving completeness of the equality on terms. We end by describing an alternative representation of normal terms of the lambda calculus with sums, together with a Coq-implemented converter into/from our new term calculus. The difference with the only other previously implemented heuristic for deciding interesting instances of eta-equality by Balat, Di Cosmo, and Fiore, is that we exploits the type information of terms substantially and this often allows us to obtain a canonical representation of terms without performing a sophisticated term analyses.
具有代数数据类型的Lambda演算是函数式编程语言和证明辅助工具的核心,但是在最简单的非平凡数据类型(和类型)存在的情况下,至少隐藏了两个基本的理论问题。首先,我们不知道一种明确的、可实现的算法来决定项的β -相等性——尽管20年前证明了第一个可判定性结果。其次,尽管元理论对同构的可判定性有了一定的结果,但如何确定两个类型本质上是相同的,即同构的,尚不清楚。在本文中,我们提出了类型的exp-log范式——通过一元指数函数和对数函数表示指数多项式——任何由箭头、乘积和和构成的类型都可以同构映射到。类型范式可以作为判定类型同构的一种简单的启发式方法,因为它是对高中恒等式的系统应用。然后,我们证明了类型范式允许将λ演算的标准β -eta方程理论简化为其自身的一个专门版本,同时保留了项上相等的完整性。最后,我们用和描述了λ微积分的正常项的另一种表示,以及一个coq实现的转换到/从我们的新项微积分。与Balat, Di Cosmo和Fiore之前实现的用于确定有趣的eta-等式实例的唯一其他启发式方法的区别在于,我们实质上利用了术语的类型信息,这通常允许我们在不执行复杂的术语分析的情况下获得术语的规范表示。
{"title":"The exp-log normal form of types: decomposing extensional equality and representing terms compactly","authors":"Danko Ilik","doi":"10.1145/3009837.3009841","DOIUrl":"https://doi.org/10.1145/3009837.3009841","url":null,"abstract":"Lambda calculi with algebraic data types lie at the core of functional programming languages and proof assistants, but conceal at least two fundamental theoretical problems already in the presence of the simplest non-trivial data type, the sum type. First, we do not know of an explicit and implemented algorithm for deciding the beta-eta-equality of terms---and this in spite of the first decidability results proven two decades ago. Second, it is not clear how to decide when two types are essentially the same, i.e. isomorphic, in spite of the meta-theoretic results on decidability of the isomorphism. In this paper, we present the exp-log normal form of types---derived from the representation of exponential polynomials via the unary exponential and logarithmic functions---that any type built from arrows, products, and sums, can be isomorphically mapped to. The type normal form can be used as a simple heuristic for deciding type isomorphism, thanks to the fact that it is a systematic application of the high-school identities. We then show that the type normal form allows to reduce the standard beta-eta equational theory of the lambda calculus to a specialized version of itself, while preserving completeness of the equality on terms. We end by describing an alternative representation of normal terms of the lambda calculus with sums, together with a Coq-implemented converter into/from our new term calculus. The difference with the only other previously implemented heuristic for deciding interesting instances of eta-equality by Balat, Di Cosmo, and Fiore, is that we exploits the type information of terms substantially and this often allows us to obtain a canonical representation of terms without performing a sophisticated term analyses.","PeriodicalId":20657,"journal":{"name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","volume":"75 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2015-02-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86166593","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}
引用次数: 4
期刊
Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages
全部 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