56,749 research outputs found
On the Implementation of Dynamic Patterns
The evaluation mechanism of pattern matching with dynamic patterns is
modelled in the Pure Pattern Calculus by one single meta-rule. This
contribution presents a refinement which narrows the gap between the abstract
calculus and its implementation. A calculus is designed to allow reasoning on
matching algorithms. The new calculus is proved to be confluent, and to
simulate the original Pure Pattern Calculus. A family of new, matching-driven,
reduction strategies is proposed.Comment: In Proceedings HOR 2010, arXiv:1102.346
First-class patterns
Pure pattern calculus supports pattern-matching functions in which patterns are first-class citizens that can be passed as parameters, evaluated and returned as results. This new expressive power supports two new forms of polymorphism. Path polymorphism allows recursive functions to traverse arbitrary data structures. Pattern polymorphism allows patterns to be treated as parameters which may be collected from various sources or generated from training data. A general framework for pattern calculi is developed. It supports a proof of confluence that is parameterised by the nature of the matching algorithm, suitable for the pure pattern calculus and all other known pattern calculi. © 2009 Copyright Cambridge University Press
Normalisation for Dynamic Pattern Calculi
The Pure Pattern Calculus (PPC) extends the lambda-calculus, as well as the family of algebraic pattern calculi, with first-class patterns; that is, patterns can be passed as arguments, evaluated and returned as results. The notion of matching failure of the PPC not only provides a mechanism to define functions by pattern matching on cases but also supplies PPC with parallel-or-like, non-sequential behaviour. Therefore, devising normalising strategies for PPC to obtain well-behaved implementations turns out to be challenging.
This paper focuses on normalising reduction strategies for PPC. We define a (multistep) strategy and show that it is normalising. The strategy generalises the leftmost-outermost strategy for lambda-calculus and is strictly finer than parallel-outermost. The normalisation proof is based on the notion of necessary set of redexes, a generalisation of the notion of needed redex encompassing
non-sequential reduction systems
The Rooster and the Syntactic Bracket
We propose an extension of pure type systems with an algebraic presentation
of inductive and co-inductive type families with proper indices. This type
theory supports coercions toward from smaller sorts to bigger sorts via
explicit type construction, as well as impredicative sorts. Type families in
impredicative sorts are constructed with a bracketing operation. The necessary
restrictions of pattern-matching from impredicative sorts to types are confined
to the bracketing construct. This type theory gives an alternative presentation
to the calculus of inductive constructions on which the Coq proof assistant is
an implementation.Comment: To appear in the proceedings of the 19th International Conference on
Types for Proofs and Program
Encoding rewriting strategies in lambda-calculi with patterns
We propose a patch to the pure pattern calculus: we claim that this is strictly more powerful to define the application of the match fail as the pure \lambda-term defining the boolean false instead of the identity function as it is done in the original version of the pure pattern calculus~\cite{JayK09}. We show that using non algebraic patterns we are able to encode in a natural way any rewriting strategies as well as the branching construct | used in functional programming languages. We close the open question (raised in~\cite{Cirstea00,CirsteaK01}) whether rewriting strategies can be directly encoded in lambda-calculi with patterns
New Advancements in Pure and Applied Mathematics via Fractals and Fractional Calculus
This reprint focuses on exploring new developments in both pure and applied mathematics as a result of fractional behaviour. It covers the range of ongoing activities in the context of fractional calculus by offering alternate viewpoints, workable solutions, new derivatives, and methods to solve real-world problems. It is impossible to deny that fractional behaviour exists in nature. Any phenomenon that has a pulse, rhythm, or pattern appears to be a fractal. The 17 papers that were published and are part of this volume provide credence to that claim. A variety of topics illustrate the use of fractional calculus in a range of disciplines and offer sufficient coverage to pique every reader's attention
First Class Call Stacks: Exploring Head Reduction
Weak-head normalization is inconsistent with functional extensionality in the
call-by-name -calculus. We explore this problem from a new angle via
the conflict between extensionality and effects. Leveraging ideas from work on
the -calculus with control, we derive and justify alternative
operational semantics and a sequence of abstract machines for performing head
reduction. Head reduction avoids the problems with weak-head reduction and
extensionality, while our operational semantics and associated abstract
machines show us how to retain weak-head reduction's ease of implementation.Comment: In Proceedings WoC 2015, arXiv:1606.0583
Sequent Calculus and Equational Programming
Proof assistants and programming languages based on type theories usually
come in two flavours: one is based on the standard natural deduction
presentation of type theory and involves eliminators, while the other provides
a syntax in equational style. We show here that the equational approach
corresponds to the use of a focused presentation of a type theory expressed as
a sequent calculus. A typed functional language is presented, based on a
sequent calculus, that we relate to the syntax and internal language of Agda.
In particular, we discuss the use of patterns and case splittings, as well as
rules implementing inductive reasoning and dependent products and sums.Comment: In Proceedings LFMTP 2015, arXiv:1507.0759
A type system for components
In modern distributed systems, dynamic reconfiguration, i.e.,
changing at runtime the communication pattern of a program, is chal-
lenging. Generally, it is difficult to guarantee that such modifications will
not disrupt ongoing computations. In a previous paper, a solution to this
problem was proposed by extending the object-oriented language ABS
with a component model allowing the programmer to: i) perform up-
dates on objects by means of communication ports and their rebinding;
and ii) precisely specify when such updates can safely occur in an object
by means of critical sections. However, improper rebind operations could
still occur and lead to runtime errors. The present paper introduces a
type system for this component model that extends the ABS type system
with the notion of ports and a precise analysis that statically enforces
that no object will attempt illegal rebinding
- …