# And/Or Programs: A New Approach to Structured Programming

@article{Harel1980AndOrPA, title={And/Or Programs: A New Approach to Structured Programming}, author={David Harel}, journal={ACM Trans. Program. Lang. Syst.}, year={1980}, volume={2}, pages={1-17} }

A simple tree-like programming/specification language is presented. The central idea is the dividing of conventional programming constructs into the two classes of and and or subgoaling, the subgoal tree itself constituting the program. Programs written in the language can, in general, be both nondeterministic and parallel. The syntax and semantics of the language are defined, a method for verifying programs written in it is described, and the practical significance of programming in the… Expand

#### Topics from this paper

#### 42 Citations

Transformations of Logic Programs

- Computer Science
- J. Log. Program.
- 1984

It is shown how every logic program can be transformed to a program computing the same function of which the computation tree has at most one called node and at most two alternations on every branch. Expand

constraint logic programming

- Mathematics
- 1996

We claim that programming within the logic programming paradigm suffers from lack of attention given to iteration and arrays. To convince the reader about their merits we present several examples of… Expand

on And/Or Schemes

- Mathematics, Computer Science
- MFCS
- 1980

A normal form theorem is proved showing that with the addition of “auxiliary variables”, every and/or scheme is strongly equivalent to one with “and/or depth” equal to 1. Expand

Developing Logic Programs: Computing Through Normalizing

- Computer Science
- CSL
- 1987

It is argued that more specific domain-dependent transformations are needed that change not only the logical structure of the program but its control and data flow, as well. Expand

Arrays, Bounded Quantification and Iteration in Logic and Constraing Logic Programming

- Computer Science, Mathematics
- Sci. Comput. Program.
- 1996

It is claimed that programming within the logic programming paradigm suffers from lack of attention given to iteration and arrays, and several examples of logic and constraint logic programs which use iteration and array instead of explicit recursion and lists are presented. Expand

Alternation as a programming paradigm

- Computer Science
- PPDP '09
- 2009

Alter-Java is presented -- an extension of Java by language constructs to express alternation, i.e., a sequence of "there exists" and "for all" statements, which shows that many practical problems have a very natural and succinct description in terms of alternation. Expand

Casting Petri Nets into Programs

- Computer Science
- IEEE Transactions on Software Engineering
- 1983

A programming system has been implemented in which annotated Petri nets are used as machine-processable high-evel design representations. The nets can be used to express the parallelism and the… Expand

PROVING THE CORRECTNESS OF REGULA DETERMINISTIC PROGRAMS : A UNIFYING S USING DYNAMIC LOGIC

- 1980

The simple set WL of deterministic while programs is defined iand a number of known methods for proving the correctness of these programs are surveyed. Emphasis is placed on the tradeoff existing… Expand

A Perspective on Automatic Programming

- Computer Science
- AI Mag.
- 1983

The role played by knowledge of the task domain seems to be at least as important, both for the usability of an automatic programming system and for the feasibility of building one which works on non-trivial problems. Expand

Proving the Correctness of Regular Deterministic Programs: A Unifying Survey Using Dynamic Logic

- Computer Science
- Theor. Comput. Sci.
- 1980

Abstract The simple set WL of deterministic while programs is defined and a number of known methods for proving the correctness of these programs are surveyed. Emphasis is placed on the tradeoff… Expand

#### References

SHOWING 1-10 OF 24 REFERENCES

Structured programming

- Computer Science
- A.P.I.C. Studies in data processing
- 1972

The first monograph has suggested that in analysing a problem and groping towards a solution, a programmer should take advantage of abstract concepts such as sets, sequences, and mappings; and judiciously postpone decisions on representation until he is constructing the more detailed code of the program. Expand

Equivalence between AND/OR graphs and context-free grammars

- Computer Science
- CACM
- 1973

This paper argues that AND/OR graphs of a restricted type are equivalent to context-free grammars and can be set-up formally as a model of problem decomposition. Expand

Assigning meaning to programs

- Computer Science
- 1967

Floyd 3 On page 25, the author states “this fact offers the possibility of automatic verification of programs, the programmer merely tagging entrances and one edge in each innermost loop; the… Expand

Higher Order Software—A Methodology for Defining Software

- Computer Science
- IEEE Transactions on Software Engineering
- 1976

The formal methodology of Higher Order Software (HOS), specifically aimed toward large-scale multiprogrammed/multiprocessor systems, is dedicated to systems reliability. Expand

Revised report on the algorithm language ALGOL 60

- Computer Science
- CACM
- 1963

a survey of the basic coustituents arid fcuturcs of the language is given, and the formal notation, by which the syntactic structure is defined, is esplaincd. The sccnnd chapter lists all the basic… Expand

Systematic Programming: An Introduction

- Mathematics, Computer Science
- 1973

This systematic programming an introduction, it will really give you the good idea to be successful in everything. Expand

On parallelism in turing machines

- Mathematics, Computer Science
- 17th Annual Symposium on Foundations of Computer Science (sfcs 1976)
- 1976

A natural characterization of the polynomial time hierarchy of Stockmeyer and Meyer in terms of parallel machines is given, and a generalization of Saviten's result NONDET-L(n)-SPACE ⊆ L(n)2-SPACE is given. Expand

Revised Report on the Algorithmic Language ALGOL 68

- Computer Science
- SIGP
- 1977

The definition of a protonotion is a process of transferring a value from one mode to another and then back again, using a computer program to do exactly that. Expand

Theory of Games and Economic Behavior

- Economics
- Nature
- 1946

THIS book is based on the theory that the economic man attempts to maximize his share of the world's goods and services in the same way that a participant in a game involving many players attempts to… Expand

Artificial Intelligence

- Computer Science
- IFIP Congress
- 1974

The history, the major landmarks, and some of the controversies in each of these twelve topics are discussed, as well as some predictions about the course of future research. Expand