Results 1  10
of
124
Some philosophical problems from the standpoint of artificial intelligence
 AI, IN MACHINE INTELLIGENCE 4, MELTZER AND MICHIE (EDS
, 1969
"... ..."
Definitional interpreters for higherorder programming languages
 Reprinted from the proceedings of the 25th ACM National Conference
, 1972
"... Abstract. Higherorder programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language such as pure LISP). Examples include ..."
Abstract

Cited by 299 (2 self)
 Add to MetaCart
Abstract. Higherorder programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language such as pure LISP). Examples include McCarthy’s definition of LISP, Landin’s SECD machine, the Vienna definition of PL/I, Reynolds ’ definitions of GEDANKEN, and recent unpublished work by L. Morris and C. Wadsworth. Such definitions can be classified according to whether the interpreter contains higherorder functions, and whether the order of application (i.e., call by value versus call by name) in the defined language depends upon the order of application in the defining language. As an example, we consider the definition of a simple applicative programming language by means of an interpreter written in a similar language. Definitions in each of the above classifications are derived from one another by informal but constructive methods. The treatment of imperative features such as jumps and assignment is also discussed.
Application of theorem proving to problem solving
, 1969
"... This paper shows how an extension of the resolution proof procedure can be used to construct problem solutions. The extended proof procedure can solve problems involving state transformations. The paper explores several alternate problem representations and provides a discussion of solutions to samp ..."
Abstract

Cited by 222 (1 self)
 Add to MetaCart
This paper shows how an extension of the resolution proof procedure can be used to construct problem solutions. The extended proof procedure can solve problems involving state transformations. The paper explores several alternate problem representations and provides a discussion of solutions to sample problems including the "Monkey and Bananas " puzzle and the 'Tower of Hanoi " puzzle. The paper exhibits solutions to these problems obtained by QA3, a computer program bused on these theoremproving methods. In addition, the paper shows how QA3 can write simple computer programs and can solve practical problems for a simple robot. Key Words: Theorem proving, resolution, problem solving, automatic programming, program writing, robots, state transformations, question answering. Automatic theorem proving by the resolution proof procedure § represents perhaps the most powerful known method for automatically determining the validity of a statement of firstorder logic. In an earlier paper Green and Raphael" illustrated how an extended resolution procedure can be used as a question answerer—e.g., if the statement (3x)P(x) can be shown to follow from a set of axioms by the resolution proof procedure, then the extended proof procedure will find or construct an x that satisfies P(x). This earlier paper (1) showed how one can axiomatize simple questionanswering subjects, (2) described a questionanswering program called QA2 based on this procedure, and (3) presented examples of simple questionanswering dialogues with QA2. In a more recent paper " the author (1) presents the answer construction method in detail and proves its correctness, (2) describes the latest version of the program, QA3, and (3) introduces statetransformation methods into the constructive proof formalism. In addition to the questionanswering applications illustrated in these earlier papers, QA3 has been used as an SRI robot 4 problem solver and as an automatic
What’s decidable about arrays
 In Proc. VMCAI, LNCS 3855
, 2006
"... Abstract. Motivated by applications to program verification, we study a decision procedure for satisfiability in an expressive fragment of a theory of arrays, which is parameterized by the theories of the array elements. The decision procedure reduces satisfiability of a formula of the fragment to s ..."
Abstract

Cited by 88 (1 self)
 Add to MetaCart
Abstract. Motivated by applications to program verification, we study a decision procedure for satisfiability in an expressive fragment of a theory of arrays, which is parameterized by the theories of the array elements. The decision procedure reduces satisfiability of a formula of the fragment to satisfiability of an equisatisfiable quantifierfree formula in the combined theory of equality with uninterpreted functions (EUF), Presburger arithmetic, and the element theories. This fragment allows a constrained use of universal quantification, so that one quantifier alternation is allowed, with some syntactic restrictions. It allows expressing, for example, that an assertion holds for all elements in a given index range, that two arrays are equal in a given range, or that an array is sorted. We demonstrate its expressiveness through applications to verification of sorting algorithms and parameterized systems. We also prove that satisfiability is undecidable for several natural extensions to the fragment. Finally, we describe our implementation in the πVC verification system. 1
A Decision Procedure for an Extensional Theory of Arrays
 In 16th IEEE Symposium on Logic in Computer Science
, 2001
"... A decision procedure for a theory of arrays is of interest for applications in formal verification, program analysis, and automated theoremproving. This paper presents a decision procedure for an extensional theory of arrays and proves it correct. 1. ..."
Abstract

Cited by 74 (14 self)
 Add to MetaCart
A decision procedure for a theory of arrays is of interest for applications in formal verification, program analysis, and automated theoremproving. This paper presents a decision procedure for an extensional theory of arrays and proves it correct. 1.
Elaboration Tolerance
 In progress
, 1999
"... A formalism is elaboration tolerant to the extent that it is convenient to modify a set of facts expressed in the formalism to take into account new phenomena or changed circumstances. Representations of information in natural language have good elaboration tolerance when used with human backgro ..."
Abstract

Cited by 70 (0 self)
 Add to MetaCart
A formalism is elaboration tolerant to the extent that it is convenient to modify a set of facts expressed in the formalism to take into account new phenomena or changed circumstances. Representations of information in natural language have good elaboration tolerance when used with human background knowledge. Humanlevel AI will require representations with much more elaboration tolerance than those used by present AI programs, because humanlevel AI needs to be able to take new phenomena into account. The simplest kind of elaboration is the addition of new formulas. Next comes changing the values of parameters. Adding new arguments to functions and predicates represents more of a change. However, elaborations not expressible as additions to the object language representation may be treatable as additions at a metalevel expression of the facts. Elaboration tolerance requires nonmonotonic reasoning. The elaborations that are tolerated depend on what aspects of the phenom...
Polymorphism and separation in Hoare type theory
 In icfp
, 2006
"... In previous work we have proposed a Dependent Hoare Type Theory (HTT) as a framework for development and reasoning about higherorder functional programs with effects of state, aliasing and nontermination. The main feature of HTT is the type of Hoare triples {P}x:A{Q} specifying computations with pr ..."
Abstract

Cited by 65 (14 self)
 Add to MetaCart
In previous work we have proposed a Dependent Hoare Type Theory (HTT) as a framework for development and reasoning about higherorder functional programs with effects of state, aliasing and nontermination. The main feature of HTT is the type of Hoare triples {P}x:A{Q} specifying computations with precondition P and postcondition Q, that return a result of type A. Here we extend HTT with predicative type polymorphism. Type quantification is possible in both types and assertions, and we can also quantify over Hoare triples. We show that as a consequence it becomes possible to reason about disjointness of heaps in the assertion logic of HTT. We use this expressiveness to interpret the Hoare triples in the “small footprint ” manner advocated by Separation Logic, whereby a precondition tightly describes the heap fragment required by the computation. We support stateful commands of allocation, lookup, strong update, deallocation, and pointer arithmetic. 1
Structured programming with go to statements
 Computing Surveys
, 1974
"... A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs c ..."
Abstract

Cited by 55 (3 self)
 Add to MetaCart
A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs clearly and efficiently without go to state
The software model checker BLAST: Applications to software engineering
 INTERNATIONAL JOURNAL ON SOFTWARE TOOLS TECHNOLOGY TRANSFER
, 2006
"... BLAST is an automatic verification tool for checking temporal safety properties of C programs. Given a C program and a temporal safety property, BLAST either statically proves that the program satisfies the safety property, or provides an execution path that exhibits a violation of the property (or, ..."
Abstract

Cited by 34 (5 self)
 Add to MetaCart
BLAST is an automatic verification tool for checking temporal safety properties of C programs. Given a C program and a temporal safety property, BLAST either statically proves that the program satisfies the safety property, or provides an execution path that exhibits a violation of the property (or, since the problem is undecidable, does not terminate). BLAST constructs, explores, and refines abstractions of the program state space based on lazy predicate abstraction and interpolationbased predicate discovery. This paper gives an introduction to BLAST and demonstrates, through two case studies, how it can be applied to program verification and testcase generation. In the first case study, we use BLAST to statically prove memory safety for C programs. We use CCURED, a typebased memorysafety analyzer, to annotate a program with runtime assertions that check for safe memory operations. Then, we use BLAST to remove as many of the runtime checks as possible (by proving that these checks never fail), and to generate execution scenarios that violate the assertions for the remaining runtime checks. In our second case study, we use BLAST to automatically generate test suites that guarantee full coverage with respect to a given predicate. Given a C program and a target predicate p, BLAST determines the program locations q for which there exists a program execution that reaches q with p true, and automatically generates a set of test vectors that generate such executions. Our experiments show that BLAST can provide automated, precise, and scalable analysis for C programs.