<?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcq="http://purl.org/dc/terms/"><records count="1" morepages="false" start="1" end="1"><record rownumber="1"><dc:product_type>Journal Article</dc:product_type><dc:title>A computational interpretation of compact closed categories: reversible programming with negative and fractional types</dc:title><dc:creator>Chen, Chao-Hong; Sabry, Amr</dc:creator><dc:corporate_author/><dc:editor>null</dc:editor><dc:description>Compact closed categories include objects representing higher-order functions and are well-established as models of linear logic, concurrency, and quantum computing. We show that it is possible to construct such compact closed categories for conventional sum and product types by defining a dual to sum types, a negative type, and a dual to product types, a fractional type. Inspired by the categorical semantics, we define a sound operational semantics for negative and fractional types in which a negative type represents a computational effect that ``reverses execution flow'' and a fractional type represents a computational effect that ``garbage collects'' particular values or throws exceptions.            Specifically, we extend a first-order reversible language of type isomorphisms with negative and fractional types, specify an operational semantics for each extension, and prove that each extension forms a compact closed category. We furthermore show that both operational semantics can be merged using the standard combination of backtracking and exceptions resulting in a smooth interoperability of negative and fractional types. We illustrate the expressiveness of this combination by writing a reversible SAT solver that uses backtracking search along freshly allocated and de-allocated locations. The operational semantics, most of its meta-theoretic properties, and all examples are formalized in a supplementary Agda package.</dc:description><dc:publisher/><dc:date>2021-01-04</dc:date><dc:nsf_par_id>10296315</dc:nsf_par_id><dc:journal_name>Proceedings of the ACM on Programming Languages</dc:journal_name><dc:journal_volume>5</dc:journal_volume><dc:journal_issue>POPL</dc:journal_issue><dc:page_range_or_elocation>1 to 29</dc:page_range_or_elocation><dc:issn>2475-1421</dc:issn><dc:isbn/><dc:doi>https://doi.org/10.1145/3434290</dc:doi><dcq:identifierAwardId>1936353</dcq:identifierAwardId><dc:subject/><dc:version_number/><dc:location/><dc:rights/><dc:institution/><dc:sponsoring_org>National Science Foundation</dc:sponsoring_org></record></records></rdf:RDF>