3,663 research outputs found
Theorem proving support in programming language semantics
We describe several views of the semantics of a simple programming language
as formal documents in the calculus of inductive constructions that can be
verified by the Coq proof system. Covered aspects are natural semantics,
denotational semantics, axiomatic semantics, and abstract interpretation.
Descriptions as recursive functions are also provided whenever suitable, thus
yielding a a verification condition generator and a static analyser that can be
run inside the theorem prover for use in reflective proofs. Extraction of an
interpreter from the denotational semantics is also described. All different
aspects are formally proved sound with respect to the natural semantics
specification.Comment: Propos\'e pour publication dans l'ouvrage \`a la m\'emoire de Gilles
Kah
A Compositional Treatment of Polysemous Arguments in Categorial Grammar
We discuss an extension of the standard logical rules (functional application
and abstraction) in Categorial Grammar (CG), in order to deal with some
specific cases of polysemy. We borrow from Generative Lexicon theory which
proposes the mechanism of {\em coercion}, next to a rich nominal lexical
semantic structure called {\em qualia structure}.
In a previous paper we introduced coercion into the framework of {\em
sign-based} Categorial Grammar and investigated its impact on traditional
Fregean compositionality. In this paper we will elaborate on this idea, mostly
working towards the introduction of a new semantic dimension. Where in current
versions of sign-based Categorial Grammar only two representations are derived:
a prosodic one (form) and a logical one (modelling), here we introduce also a
more detaled representation of the lexical semantics. This extra knowledge will
serve to account for linguistic phenomena like {\em metonymy\/}.Comment: LaTeX file, 19 pages, uses pubsmacs, pubsbib, pubsarticle, leqn
Mechanized semantics
The goal of this lecture is to show how modern theorem provers---in this
case, the Coq proof assistant---can be used to mechanize the specification of
programming languages and their semantics, and to reason over individual
programs and over generic program transformations, as typically found in
compilers. The topics covered include: operational semantics (small-step,
big-step, definitional interpreters); a simple form of denotational semantics;
axiomatic semantics and Hoare logic; generation of verification conditions,
with application to program proof; compilation to virtual machine code and its
proof of correctness; an example of an optimizing program transformation (dead
code elimination) and its proof of correctness
Denotational Semantics of the Simplified Lambda-Mu Calculus and a New Deduction System of Classical Type Theory
Classical (or Boolean) type theory is the type theory that allows the type
inference (the type counterpart of
double-negation elimination), where is any type and is
absurdity type. This paper first presents a denotational semantics for a
simplified version of Parigot's lambda-mu calculus, a premier example of
classical type theory. In this semantics the domain of each type is divided
into infinitely many ranks and contains not only the usual members of the type
at rank 0 but also their negative, conjunctive, and disjunctive shadows in the
higher ranks, which form an infinitely nested Boolean structure. Absurdity type
is identified as the type of truth values. The paper then presents a new
deduction system of classical type theory, a sequent calculus called the
classical type system (CTS), which involves the standard logical operators such
as negation, conjunction, and disjunction and thus reflects the discussed
semantic structure in a more straightforward fashion.Comment: In Proceedings CL&C 2016, arXiv:1606.0582
A Denotational Semantics for First-Order Logic
In Apt and Bezem [AB99] (see cs.LO/9811017) we provided a computational
interpretation of first-order formulas over arbitrary interpretations. Here we
complement this work by introducing a denotational semantics for first-order
logic. Additionally, by allowing an assignment of a non-ground term to a
variable we introduce in this framework logical variables.
The semantics combines a number of well-known ideas from the areas of
semantics of imperative programming languages and logic programming. In the
resulting computational view conjunction corresponds to sequential composition,
disjunction to ``don't know'' nondeterminism, existential quantification to
declaration of a local variable, and negation to the ``negation as finite
failure'' rule. The soundness result shows correctness of the semantics with
respect to the notion of truth. The proof resembles in some aspects the proof
of the soundness of the SLDNF-resolution.Comment: 17 pages. Invited talk at the Computational Logic Conference (CL
2000). To appear in Springer-Verlag Lecture Notes in Computer Scienc
- …