zuloohealth.blogg.se

Unfolder things
Unfolder things









unfolder things

These new primitives allow the direct definition of function and propositional extensionality as well as quotient types, all with computational content. This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of HITs. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types (HITs). These principles are typically added axiomatically which disrupts the constructive properties of these systems. However, all of the major implementations lack powerful extensionality principles for reasoning about equality, such as function and propositional extensionality. Proof assistants based on dependent type theory provide expressive languages for both programming and proving within the same system. We give algorithms to determine the modulus of continuity of monadic stream functions and to generate dialogue trees for them (trees whose nodes and branches describe the interaction of the process with the environment). Functions on monadic streams have not only a foundational importance, but have also practical applications in signal processing and reactive programming. Formally this is done by requiring a form of naturality in the monad. We consider functions on them that are uniform, in the sense that they operate in the same way independently of the particular monad that provides the specific side effects.

unfolder things

It applies to monadic streams, potentially unending sequences of values produced by steps triggered by a monadic action, possibly involving side effects. We propose a reformulation of the continuity principle that may be more faithful to the original meaning by Brouwer. Recently Martín Escardó proved that it is also inconsistent in type theory. It is an intuitionistic axiom that is incompatible with classical mathematics. This extends Agda with support for a wide range of extensionality principles, without sacrificing type checking and constructivity.īrouwer's continuity principle states that all functions from infinite sequences of naturals to naturals are continuous, that is, for every sequence the result depends only on a finite initial segment. Additionally, thanks also to copatterns, bisimilarity is equivalent to equality for coinductive types. These new primitives make function and propositional extensionality as well as quotient types directly definable with computational content. This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of higher inductive types. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types. We prove type soundness for our language and sketch how copatterns open new directions for solving problems in the interaction of coinductive and dependent types.

unfolder things

Our language naturally supports both call-by-name and call-by-value interpretations and can be seamlessly integrated into existing languages like Haskell and ML. We present a core language for programming with infinite structures by observations together with its operational semantics based on (co)pattern matching and describe coverage of copatterns. This leads to a symmetric language design where pattern matching on finite and infinite data can be mixed. Dual to pattern matching, a tool for analyzing finite data, we develop the concept of copattern matching, which allows us to synthesize infinite data. Unlike finite data which is defined by constructors we define infinite data by observations. Infinite data inhabits coinductive datatypes which denote greatest fixpoints. In this paper, we develop a dual approach for working with infinite data structures such as streams. Inductive datatypes provide mechanisms to define finite data such as finite lists and trees via constructors and allow programmers to analyze and manipulate finite data via pattern matching.











Unfolder things