41
votes
Accepted
Difference Between Small and Big-step Operational Semantics
Small-step semantics defines a method to evaluate expressions one computation step at a time. Formally speaking, a small-step semantics for an expression language $E$ is a relation $\rightarrow : E \...
25
votes
Accepted
What is this fraction-like "discrete mathematics"–style notation used for formal rules?
This is a standard notation for an inference rule. The premises are put above a horizontal line, and the conclusion is put below the line. Thus, it ends up looking like a "fraction", but with one or ...

D.W.♦
- 140k
12
votes
Accepted
What questions can denotational semantics answer that operational semantics can't?
There is no real agreement what characterises denotational semantics (see also this article), except that it must be compositional. That means that if $\newcommand{\SEMB}[1]{\lbrack\!\lbrack #1 \...
12
votes
Accepted
Break keyword outside a loop is syntax error or semantic error?
Both work, so how you do it is up to you. But there are a couple of reasons to consider doing it during a post-parse analysis:
While it is certainly possible to define two different types of ...
10
votes
Accepted
What is pass-by-value-result and its advantage and disadvantage?
Note: parameter passing by xxx is sometimes called "pass by xxx" and
sometimes "call by xxx". I will use both expressions indifferently.
Parameter passing by value-result consists in passing by ...
10
votes
Which fixpoint is Haskell list type?
It's the greatest fixed point, or the final coalgebra, depending on how you set things up. In Haskell it is impossible to define the datatype of finite lists because Haskell does not have inductive ...
10
votes
Accepted
What's the difference between a calculus and a programming language?
The meaning of the words is not fixed, but I can give you my interpretation.
A calculus is something that we calculate with in the sense of juggling equations (think manipulation of Taylor series or ...
9
votes
What are the axioms, inference rules, and (formal) semantics of lambda calculus?
First of all, note that the notion of a formal system is an informal notion and there is no general (or generally accepted), formal definition of what a formal system is. In my opinion, the Wikipedia ...
9
votes
Accepted
Is reference counting GC vs. tracing GC a language property or an implementation property?
Swift guarantees that once the last reference to an object is dropped the object is deinitialized, and the deinit code is immediately run.
Obtaining this kind of ...
9
votes
Why do some authors not include summation in the $\pi$-Calculus?
To answer this question, it's best to reflect on the meaning of sums in process calculi. Essentially sums express a lack of knowledge. The process $P + Q$ means something along the lines of "either $P$...
9
votes
Accepted
What formal representation is commonly used to describe compiler optimizations?
There are many compilers, which compile widely different kinds of languages which serve widely different purposes. For example, a database language will have very different optimizations than an array-...
8
votes
Accepted
Lambda Calculus: How do evaluation contexts "work"
The subtlety lies in where the distinction between language and metalanguage is made. As René Magritte put it:
$(\lambda f. \lambda x. f x) ((\lambda y.y) (\lambda z.z)) (\lambda w.w)$ is a lambda-...
8
votes
Does a logical system have semantics?
Semantics of a logic describe how to compute the truth value of an expression, possibly given some interpretation. For example, one rule would say that an expression $\varphi \land \psi$ is true iff ...
8
votes
What is a predicate transformer?
The predicate transformer is just a formalization of the idea that you can produce a precondition given a program and its postcondition.
For example, given a program ...
8
votes
When would one use equational dynamics?
What you call "equational dynamics" is not actually an operational semantics, it's an equational theory. As you note, equations by themselves do not tell us how to run programs. However, they are ...
8
votes
Accepted
Programming language semantics prototyping tool
Although there are frameworks created specifically for the purpose of prototyping programming languages (including their semantics, type systems, evaluation, as well as checking properties about them),...
8
votes
Accepted
What does it mean to "strengthen the precondition and weaken the postcondition" in Hoare logic?
Condition $A$ is stronger than condition $B$ if $A$ implies $B$. That is, if $B$ holds in all situations in which $A$ holds. Conversely, if $A$ is stronger than $B$, ...
8
votes
Formal model of execution for Java (or general imperative language)
There is an (operational) semantics for Java 1.4 formulated in the $\mathbb{K}$ framework. Associated to this framework is a proof system called Matching Logic. While that page describes a prototype ...
7
votes
Does a logical system have semantics?
The answer to your literal question, "Does a logical system have semantics?" is "Obviously, yes. The definition you quoted says so!" So I figure that isn't what you're actually asking.
I think the ...
7
votes
Accepted
Are syntax and semantic just 2 structures such that one is a model of the other?
I am afraid the phrasing of the question misled me (though I did know
better) in first seeing model theory as applying to any two arbitrary
mathematical structures, and being the study of ...
7
votes
What is this fraction-like "discrete mathematics"–style notation used for formal rules?
Here is a very informal explanation that might help people unfamiliar with formal notations to get a foot in the door. It does not replace a formal definition!
The Ap is the state of your system or ...
7
votes
Accepted
Formal model of execution for Java (or general imperative language)
Featherweight Java is quite highly regarded in the PL community. But if that doesn't suit your needs, here's a general approach to modelling:
Formalize your language's AST into expressions and ...
7
votes
Accepted
What is meant by a full abstract model of a lambda-calculus like language?
In denotational semantics, you want to be able to map each of your language terms to some object in your semantic domain or model. Now, it cannot be any arbitrary domain/model as you like, but, ...
7
votes
Is type-checking "syntactic" or "semantic"?
Although I personally would describe type analysis as semantic, this question seems to start with the assumption that there is a clear, formally-definable dividing line between "syntax" and "semantics"...
6
votes
denotional semantic for while - fixed points
Your proposed alternate definition is no good. It tries to define $[[\text{while b do S}]]$ in terms of $[[\text{while b do S}]]$. That's a circular definition: you can't define something in terms ...

D.W.♦
- 140k
6
votes
Typing dependent pattern matching
In general matching with dependent types can be quite subtle! You'll note that in the Coq documentation that the extended pattern-matching syntax is
...
6
votes
Why injection into sum type apparently leads to ambiguity?
I think the key point here is $\sigma$, $\tau$ and $\phi$ are type variables, and not specific types. So, what the typing rule for $\operatorname{inl}$ says is that $\operatorname{inl} M$ is of type $\...
6
votes
Accepted
How to express modalities in lambda calculus - are some extensions required?
Are extensions required? Not really. You can take an axiomatic description of a modal logic and simply provide a "primitive" lambda term for each. The modal operators would become type constructors. ...
6
votes
Accepted
What's the difference between: operational, denotational and axiomatic semantics?
I think your examples show you do somehow understand the basic points of the several styles of semantics. Still, note that the whole point of having a semantics of a programming language is to have a ...
5
votes
Accepted
Call‑by‑name will succeeds where call‑by‑value may fails: some example cases?
Call-by-value evaluates the arguments to a function exactly once. Call-by-name evaluates the arguments to a function, zero, once, or more times. Call-by-need evaluates the arguments to a function ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
semantics × 174programming-languages × 68
operational-semantics × 26
lambda-calculus × 18
logic × 15
denotational-semantics × 15
compilers × 14
formal-languages × 12
terminology × 12
functional-programming × 12
reference-request × 11
proof-techniques × 9
type-theory × 9
formal-methods × 9
syntax × 9
hoare-logic × 8
small-step-semantics × 7
types-and-programming-languages × 7
concurrency × 6
natural-language-processing × 6
software-verification × 5
formal-grammars × 4
notation × 4
model-checking × 4
term-rewriting × 4