Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Norihisa Suzuki

dblp:88/2836 · DBLP profile ↗
← Back
9ranked-venue papers
5as first author
0since 2021 · last 1984
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 4 first-authorTheory of computation · 3Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
8 papers
Program verification · 49% Programming languages and type systems · 30% Compilers and program optimization · 15%
Theoretical computer science
3 papers
Logic in computer science · 58% Automated reasoning and model checking · 37% Algorithms and data structures · 5%

Topics — the 21 heaviest of 23, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization
code generation
0.021984
Creating Efficient Systems for Object-Oriented Languages · POPL 1984
Implementation of an Array Bound Checker · POPL 1977
Programming languages and type systems › object-oriented programming
object-oriented languages
0.011981
Inferring Types in Smalltalk · POPL 1981
Program verification
safety and liveness properties
0.011981
The Total Correctness of Parallel Programs · SIAM J. Comput. 1981
Programming languages and type systems
type inference
0.011981
Inferring Types in Smalltalk · POPL 1981
Automated reasoning and model checking
program verification
0.011981
The Total Correctness of Parallel Programs · SIAM J. Comput. 1981
Automated reasoning and model checking › program verification
total correctness
0.011981
The Total Correctness of Parallel Programs · SIAM J. Comput. 1981
Logic in computer science › program logic
weakest precondition
0.021981
Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs · FOCS 1978
The Total Correctness of Parallel Programs · SIAM J. Comput. 1981
Programming languages and type systems
pointer manipulation
0.011980
Analysis of Pointer Rotation · POPL 1980
Program verification
verification decidability
0.011980
Verification Decidability of Presburger Array Programs · J. ACM 1980
Program verification › deductive verification
axiomatic verification
0.011979
Verification of Array, Record, and Pointer Operations in Pascal · ACM Trans. Program. Lang. Syst. 1979
Program verification
data structure verification
0.011979
Verification of Array, Record, and Pointer Operations in Pascal · ACM Trans. Program. Lang. Syst. 1979
Program verification
pointer program verification
0.011979
Verification of Array, Record, and Pointer Operations in Pascal · ACM Trans. Program. Lang. Syst. 1979
Program verification
parallel program correctness
0.011978
Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs · FOCS 1978
Program verification › correctness proof
total correctness
0.011978
Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs · FOCS 1978
Logic in computer science › logic programming › logic programming semantics
fixpoint semantics
0.011978
Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs · FOCS 1978
Logic in computer science
program logic
0.011978
Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs · FOCS 1978
Program analysis › error detection
array bounds checking
0.011977
Implementation of an Array Bound Checker · POPL 1977
Logic in computer science › domain theory
fixed points
0.011981
The Total Correctness of Parallel Programs · SIAM J. Comput. 1981
Logic in computer science › model theory
decidable theories
0.011980
Verification Decidability of Presburger Array Programs · J. ACM 1980
Logic in computer science › formal arithmetic
presburger arithmetic
0.011980
Verification Decidability of Presburger Array Programs · J. ACM 1980
Algorithms and data structures › sequence algorithms
sorting
0.011980
Verification Decidability of Presburger Array Programs · J. ACM 1980

Methods — techniques the papers use, named apart from their topics

lattice theory · 0.0fixed point theory · 0.0inductive assertion method · 0.0proof rules · 0.0type inference · 0.0proof rule · 0.0decision procedures · 0.0decision procedure · 0.0decidability · 0.0abstract data types · 0.0data flow analysis · 0.0assertion language · 0.0
YearPublicationVenuePosition
1984 Creating Efficient Systems for Object-Oriented Languages
abstract
Increasingly computer science research has been done using workstations with high-resolution bitmap display systems. Smalltalk-80↑ is a very attractive programming language for such computation environments, since it has very sophisticated graphical systems and programming environments. Unfortunately there are still very few computer systems on which Smalltalk-80 can run with satisfactory speed, and furthermore they are quite expensive. In order to make Smalltalk-80 accessible to a large group of people at low cost,. we have developed compiler techniques useful to generate efficient code for standard register machines such as MC68000. We have also extended Smalltalk-80 to include type expressions, which allow compilers to generate efficient code
Norihisa Suzuki, Minoru Terada
POPL1
1981 Inferring Types in Smalltalk
abstract
Smalltalk is an object-oriented language designed and implemented by the Learning Research (Group of the Xerox Palo Alto Research Center [2, 5, 14]. Some features of this language are: abstract data classes, information inheritance by a superclass-subclass mechanism, message passing semantics, extremely late binding no type declarations, and automatic storage management. Experience has shown that large complex systems can be written in Smalltalk in quite a short period of time; it is also used to teach programming to children quite effectively. Object-oriented languages like Smalltalk have begun to be accepted as friendly languages for novice programmers on personal computers.
Norihisa Suzuki
POPL1
1981 The Total Correctness of Parallel Programs
abstract
We describe a formal theory of the total correctness of parallel programs, including such heretofore theoretically incomplete properties as safety from deadlock and starvation under fair-scheduling. We present a sound and complete set of proof rules for the total correctness of parallel programs expressed in nondeterministic form. The proof of soundness and completeness is novel in that we show that the weakest pre-conditions for the correctness criteria are actually fixed-points (least or greatest) of continuous functions over the complete lattice of total predicates. We have obtained proof rule schemata which can universally be applied to least or greatest fixed-points of continuous functions. Therefore, a system of proof rules is a priori sound and complete once it is shown that certain weakest pre-conditions are extremum fixed-points. The relationship between true parallelism and nondeterminism is also discussed.
Lawrence Flon, Norihisa Suzuki
SIAM J. Comput.2
1980 Analysis of Pointer Rotation
abstract
Pointer manipulation is one of the trickiest operations in programming and is a major source of programming errors. A great deal of research effort has been dedicated to making programs with pointers more reliable. In this paper we will present pointer operations which reduce conceptual difficulties when writing pointer programs, and increase reliability of programs. We will analyze theoretically as well as empirically why these operations are more convenient. Finally, we will define the safety of rotations, and show that it is decidable to check whether the rotation is safe and also show that it is a good measure of the correctness of programs. (That is, if the rotation is safe it is highly probable that the program is correct, and if it is unsafe it is highly probable that the program is incorrect.)Probably the most successful effort to eliminate difficulties associated with pointer manipulation is the invention of abstract data types and the use of implementation modules. Pointers are often used to implement complex data structures, which in turn represent abstract data types. We can textually localize relevant pointer manipulations using abstract data types. Thus, we can easily check correctness of pointer programs. This approach is successful when the structure of abstract data types is simple, or efficiency is not seriously required. However, programs like garbage collection, list marking and copying, and balanced tree manipulations have not been well specified by abstract types.The approach taken in this paper is complementary to abstract data types, and makes programs like list marking and copying more reliable and easy to write. The idea behind this approach is to introduce higher-level pointer manipulation primitives instead of pointer assignments. Since most pointer assignments do not appear isolated, we can group several assignments together and replace them by one of these new primitives. We also show some theoretical evidence why these operations are nicer.Two primitives are introduced in this paper. One is the n-way pointer rotation, which is defined as being equivalent to the following procedure:Rotate: procedure(var x1, x2, … , xn:T) = begin var w:T; w:=x1; x1:=x2; … ;xn:=w endwhere all the locations of arguments x1, x2, … , xn are distinct. The other operation is n-way pointer slide, which is as powerful as pointer assignment yet keeps the elegance of rotation.Section 2 of this paper reviews previous work related to this subject. We give definitions of pointer operations analyzed in this paper in section 3. Using these operations, Deutsch-Schorr-Waite algorithm is rewritten in section 4. In section 5 we analyze pointer rotations extensively and obtain several properties which are not attainable by ordinary pointer assignments. In section 6 we define the safety of pointer rotation when applied to linear list and trees. Then, we extend this definition to arbitrary pointer data structures and show a decision procedure to check safety. In section 7 we show two examples, list marking and list copying programs written using rotations and slides. We examine how we can directly code the algorithms using these operations and safety checking algorithms are useful.
Norihisa Suzuki
POPL1
1980 Verification Decidability of Presburger Array Programs
abstract
A program annotated with inductive assertions is said to be verification decidable If all of the verification conditions generated from the program and assertions are formulas In a decidable theory A theory is defined, which is called Presburger array theory, containing two logical sorts integer and array of integer Addltmn, subtraction, and comparisons are permztted for integers Array access and assignment functmns are allowed Since the elements of the arrays are integers, array accesses may be nested First, it is observed that the validity of unquantlfied formulas in Presburger array theory is decidable, yet quantified formulas in general are undecldable It is then shown that, with certain restrictions, one can add a new predicate Perm(M, N)--meanlng array M is a permutation of array N--to the assertion language and still have a solvable decision problem for verification conditions generated from unquantified assertions The significance of this result is that almost all known one-array sorting programs are verlticatmn decidable when annotated with inductive assertions for proving that the output is a permutation of the input
Norihisa Suzuki, David Jefferson
J. ACM1
1979 Verification of Array, Record, and Pointer Operations in Pascal
abstract
A practical method is presented for automating in a uniform way the verification of Pascal programs that operate on the standard Pascal data structures Array, Record, and Pointer. New assertion language primitives are introduced for describing computational effects of operations on these data structures. Axioms defining the semantics of the new primitives are given. Proof rules for standard Pascal operations on data structures are then defined using the extended assertion language. An axiomatic rule for the Pascal storage allocation operation, NEW, is also given. These rulers have been implemented in the Stanford Pascal program verifier. Examples illustrating the verification of programs which operate on list structures implemented with pointers and records are discussed. These include programs with side effects.
David C. Luckham, Norihisa Suzuki
ACM Trans. Program. Lang. Syst.2
1978 Consistent and Complete Proof Rules for the Total Correctness of Parallel Programs
abstract
We describe a formal theory of the total correctness of parallel programs, including such heretofore theoretically incomplete properties as safety from deadlock and starvation. We present a consistent and complete set of proof rules for the total correctness of parallel programs expressed in nondeterministic form. The proof of consistency and completeness is novel in that we show that the weakest preconditions for each correctness criterion are actually fixed-points (least or greatest) of continuous functions over the complete lattice of total predicates. We have obtained proof rule schemata which can universally be applied to least or greatest fixed points of continuous functions. Therefore, our proof rules are a priori consistent and complete once it is shown that certain weakest preconditions are extremum fixed-points. The relationship between true parallelism and nondeterminism is also discussed.
Lawrence Flon, Norihisa Suzuki
FOCS2
1977 Implementation of an Array Bound Checker
abstract
This paper describes a system which checks correctness of array accesses automatically without any inductive assertions or human interaction. For each array access in the program a condition that the subscript is greater than or equal to the lower bound and a condition that the subscript is smaller than or equal to the upper bound are checked and the results indicating within the bound, out of bound, or undetermined are produced. It can check ordinary programs at about fifty lines per ten seconds, and it shows linear time complexity behavior.It has been long discussed whether program verification will ever become practical. The main argument against program verification is that it is very hard for a programmer to write assertions about programs. Even if he can supply enough assertions, he must have some knowledge about logic in order to prove the lemmas (or verification conditions) obtained from the verifier.However, there are some assertions about programs which must always be true no matter what the programs do; and yet which cannot be checked for all cases. These assertions include: integer values do not overflow, array subscripts are within range, pointers do not fall off NIL, cells are not reclaimed if they are still pointed to, uninitialized variables are not used.Since these conditions cannot be completely checked, many compilers produce dynamic checking code so that if the condition fails, then the program terminates with proper diagnostics. These dynamic checking code sometimes take up much computation time. It is better to have some checking so that unexpected overwriting of data will not occur, but it is still very awkward that the computation stops because of error. Moreover, these errors can be traced back to some other errors in the program. If we can find out whether these conditions will be met or not before actually running the program, we can benefit both by being able to generate efficient code and by being able to produce more reliable programs by careful examination of errors in the programs. Similar techniques can be used to detect semantically equivalent subexpressions or redundant statements to do more elaborate code movement optimization.The system we have constructed runs fast enough to be used as a preprocessor of a compiler. The system first creates logical assertions immediately before array elements such that these assertions must be true whenever the control passes the assertion in order for the access to be valid. These assertions are proved using similar techniques as inductive assertion methods. If an array element lies inside a loop or after a loop a loop invariant is synthesized. A theorem prover was created which has the decision capabilities for a subset of arithmetic formulas. We can use this prover to prove some valid formulas, but we can also use it to generalize nonvalid formulas so that we can hypothesize more general loop invariants.Theoretical considerations on automatic synthesis of loop invariants have been taken into account and a complete formula for loop invariants was obtained. We reduced the problem of loop invariant synthesis to the computation of this formula. This new approach of the synthesis of loop invariant will probably give more firmer basis for the automatic generation of loop invariants in general purpose verifiers.
Norihisa Suzuki, Kiyoshi Ishihata
POPL1
1977 Proof of Termination within a Weak Logic of Programs
David C. Luckham, Norihisa Suzuki
Acta Informatica2