46 research outputs found
Nominal Game Semantics.
Tutorial notes presenting nominal game semantic
Game Semantics for Interface Middleweight Java
We consider an object calculus in which open terms interact with the environment through interfaces. The calculus is intended to capture the essence of contextual interactions of Middleweight Java code. Using game semantics, we provide fully abstract models for the induced notions of contextual approximation and equivalence. These are the first denotational models of this kind
DEQ:Equivalence Checker for Deterministic Register Automata
Register automata are one of the most studied automata models over infinite alphabets with applications in learning, systems modelling
and program verification. We present an equivalence checker for deterministic register automata, called DEQ, based on a recent polynomial-time
algorithm that employs group-theoretic techniques to achieve succinct
representations of the search space. We compare the performance of our
tool to other available implementations, notably in the learning library
RALib and nominal frameworks LOIS and NLambda
History-Register Automata
Programs with dynamic allocation are able to create and use an unbounded
number of fresh resources, such as references, objects, files, etc. We propose
History-Register Automata (HRA), a new automata-theoretic formalism for
modelling such programs. HRAs extend the expressiveness of previous approaches
and bring us to the limits of decidability for reachability checks. The
distinctive feature of our machines is their use of unbounded memory sets
(histories) where input symbols can be selectively stored and compared with
symbols to follow. In addition, stored symbols can be consumed or deleted by
reset. We show that the combination of consumption and reset capabilities
renders the automata powerful enough to imitate counter machines, and yields
closure under all regular operations apart from complementation. We moreover
examine weaker notions of HRAs which strike different balances between
expressiveness and effectiveness.Comment: LMCS (improved version of FoSSaCS
Fragments of ML Decidable by Nested Data Class Memory Automata
The call-by-value language RML may be viewed as a canonical restriction of
Standard ML to ground-type references, augmented by a "bad variable" construct
in the sense of Reynolds. We consider the fragment of (finitary) RML terms of
order at most 1 with free variables of order at most 2, and identify two
subfragments of this for which we show observational equivalence to be
decidable. The first subfragment consists of those terms in which the
P-pointers in the game semantic representation are determined by the underlying
sequence of moves. The second subfragment consists of terms in which the
O-pointers of moves corresponding to free variables in the game semantic
representation are determined by the underlying moves. These results are shown
using a reduction to a form of automata over data words in which the data
values have a tree-structure, reflecting the tree-structure of the threads in
the game semantic plays. In addition we show that observational equivalence is
undecidable at every third- or higher-order type, every second-order type which
takes at least two first-order arguments, and every second-order type (of arity
greater than one) that has a first-order argument which is not the final
argument
Program Equivalence with Names
The nu-calculus of Pitts and Stark was introduced as a paradigmatic
functional language with a very basic local-state effect: references of unit
type. These were called names, and the motto of the new language went as
follows:
"Names are created with local scope, can be tested for equality, and are
passed around via function application, but that is all."
Because of this limited framework, the hope was that fully abstract models
and complete proof techniques could be obtained. However, it was soon
realised that the behaviour of nu-calculus programs is quite intricate, and
program equivalence in particular is surprisingly difficult to capture. Here we
shall focus on the following "hard" equivalence.
new x,y in f. (fx=fy) == f. true
We shall examine attempts and proofs of the above, explain the advantages
and disadvantages of the proof methods and discuss why program
equivalence in this simple language remains to date a mystery
Probabilistic Programming Semantics for Name Generation
We make a formal analogy between random sampling and fresh name generation.
We show that quasi-Borel spaces, a model for probabilistic programming, can
soundly interpret Stark's -calculus, a calculus for name generation.
Moreover, we prove that this semantics is fully abstract up to first-order
types. This is surprising for an 'off-the-shelf' model, and requires a novel
analysis of probability distributions on function spaces. Our tools are diverse
and include descriptive set theory and normal forms for the -calculus.Comment: 29 pages, 1 figure; to be published in POPL 202
Fragments of ML decidable by nested data class memory automata
The call-by-value language RML may be viewed as a canonical restriction of Standard ML to ground-type references, augmented by a âbad variableâ construct in the sense of Reynolds. We consider the fragment of (finitary) RML terms of order at most 1 with free variables of order at most 2, and identify two subfragments of this for which we show observational equivalence to be decidable. The first subfragment, RMLPâStr2â˘1, consists of those terms in which the P-pointers in the game semantic representation are determined by the underlying sequence of moves. The second subfragment consists of terms in which the O-pointers of moves corresponding to free variables in the game semantic representation are determined by the underlying moves. These results are shown using a reduction to a form of automata over data words in which the data values have a tree-structure, reflecting the tree-structure of the threads in the game semantic plays. In addition we show that observational equivalence is undecidable at every third- or higher-order type, every second-order type which takes at least two first-order arguments, and every second-order type (of arity greater than one) that has a first-order argument which is not the final argument