[comp.lang.prolog] PROLOG Digest V4 #76

PROLOG-REQUEST@SU-SCORE.ARPA (Chuck Restivo, The Moderator) (11/20/86)

PROLOG Digest           Thursday, 20 Nov 1986      Volume 4 : Issue 76

Today's Topics: 
                  Pragmatics - Specifying circuits,
                  LP Library - Correction & Apology,
             & Declarative Language Bibliography, Part W
----------------------------------------------------------------------

Date: Thu 13 Nov 86 14:44:22-PST
From: Ehud Shapiro <UDI@Score.Stanford.EDU>
Subject: Specifying circuits

John McCarthy pointed out to me a problem in the
circuit definition on page 23 in the "Art of Prolog".
The definition does not enforce the uniqueness of
ports, so that the circuit may contain short-circuits
(in the electrical sense, not the Concurrent Prolog
sense).  After some discussions with  him and with
Vladimir Lifschitz, and following up on an idea of
Vladimir, I came up with the following solution.

/*
Specifying circuits
Extending Program 2.2, Page 23, in the Art of Prolog
*/

% Base relations remain the same

/*
Compound elements:

The basic approach is that every compound elements
be defined as follows:

element(Ports,Internal) :-
        subelement1(Ports1,Internal1),
        subelement2(Ports2,Internal2),
        ....
        subelementn(Portsn,Internaln),
        Ports+Internal=Ports1+Internal1+...+Portsn
+Internaln,
        distinct(Ports+Internal),


Where + is multiset union.

Note: this approach guarantees only internal consistency
of circuits.  If there other other elements connected
to internal ports in the circuit, this fact will not be
detected by the current program, unless the component
verified is the entire circuit.

*/


inverter([Input,Output],[]) :-
        transitor(Input,ground,Output),
        resistor(power,Output),
        distinct([Input,Output]).

nand_gate([Input1,Input2,Output],[X]) :-
        transistor(Input1,X,Output),
        transistor(Input2,ground,X),
        resistor(power,Output),
        distinct([Input1,Input2,Output,X]).

and_gate([Input1,Input2,Output],[X1,X2]) :-
        nand_gate([Input1,Input2,X1],[X2]),
        inverter(X1,Output),
        distinct([Input1,Input2,Output,X1,X2]).

distinct([X|Xs]) :- not member(X,Xs), distinct(Xs).
distinct([]).

/*
Note: In these simple examples the lists were constructed
"manually", but in more complex cases they can be appended,
to construct the list of Internal ports  of the compound
element, and the union of all ports in the element.
*/

------------------------------

Date: Tue, 18 Nov 86 17:52:42 PDT
From: Chuck Restivo <Restivo@SCORE.STANFORD.EDU>
Subject: Prolog prover

I incorrectly referred to David Plaisted as Plaistaid in a recent
issue - my apologies to David and to people who may have been trying
to transfer his files from <Prolog>.

------------------------------

Date: Wed 19 Nov 86 19:35:50-PST
From: Chuck Restivo  <Restivo@Score.Stanford.EDU>
Subject: Lauren Smith's Bibliography, Part W

WADA86a *
ed. Wada E.
Logic Programming '85
Proceedings of the 4th Conference
Tokyo, Japan, July 1985
Lecture Notes in Computer Science, Vol 221
Springer Verlag
1986

WADG85a
Wadge W.W. & Ashcroft E.A.
Lucid, The Dataflow Programming Language
Apic Studies in Data Processing no. 22
Academic Press, 1985

WADL76a
Wadler P.L.
Analysis of an Algorithm for Real Time Garbage Collection
Comm ACM Vol 19 No 9 p491-500 Sept 1976

WADL84a *
Wadler P.
Listlessness is Better Than Laziness: Lazy Evaluation
and Garbage Collection at Compile-Time
Proceedings ACM Symposium on LISP and Functional
Programming, Austin, Texas
August 1984

WADL84b *
Wadler P.
Listlessness is Better Than Laziness
PhD Dissertation, Carnegie-Mellon University
August 1984

WADL85a *
Wadler P.
A Splitting Headache : Strict vs Lazy Semantics for
Pattern Matching in Lazy Languages
Oxford University, Computing Laboratory
January 1985
Addenda November 1985

WADL85b *
Wadler P.
An Introduction to Orwell (DRAFT)
Oxford University, Computing Laboratory
1 April 1985
revised December 1985

WADL85c
Wadler P.
Listlessness is Better Than Laziness II: Composing
Listless Functions
Workshop on Programs as Data Objects, Copenhagen
October 1985
( To be published as LNCS by Springer-Verlag )

WADL85d *
Wadler P.
Strictness Analysis on Non-Flat Domains (By Abstract
Interpretation Over Finite Domains)
Programming Research Group, Oxford University
10 November 1985

WADL86a *
Plumbers and dustmen: Fixing a space leak with a
garbage collector posted to fp@uea.sp
1986

WADS71a
Wadsworth C.P.
Semantics and Pragmatics of The Lambda Calculus
D.Phil Thesis, Univ. of Oxford
1971

WADS84a *
Wadsworth C.P.
Report on the IOTA Programming System and other Japanese
Advanced Research
Rutherford Appleton Laboratory, RAL-84-090, August 1984

WAND79a *
Wand M.
Final Algebra Semantics and Data Type Extensions
Journal of Computer and System Sciences, 19, pp 27-44
1979

WARR77a
Warren D.H.D. & Pereira L.M. Pereira F.
PROLOG-The Language and its Implementation Compared
to LISP
Proc. Symp. on AI and Programming Languages, 1977
Sigplan 8(12) or Sigart 64 pp 109-115

WARR77b
Warren D.H.D.
Applied Logic - Its Use and Implementation as a
Programming Tool
Phd Dissertation
Dept of AI, Univ of Edinburgh
1977

WARR82a *
Warren D.H.D.
Higher Order Extensions to PROLOG: Are They Needed ?
in Machine Intelligence 10
(eds Hayes J.E. & Michie D. & Pao Y-H )
pp 441-454
Ellis Horwood Ltd
1982

WARR83a *
Warren D.H.D.
An Abstract Prolog Instruction set
Technical Note 309, SRI International
31 August 1983

WARR83b *
Warren D.H.D.
Applied Logic - Its Use And Implementation As A
Programming Tool
Technical Note 290, SRI International
June 1983

WARR84a *
Warren D.S. & Ahamad M. & Debray S.K. & Kale L.V.
Executing Distributed Prolog Programs On A Broadcast
Network
IEEE 1984 International Symposium on Logic Programming
pp 12-21
1984

WARR86a *
Warren D.H.D.
Prolog Implementation and Architecture
notes form tutorial given at 3rd International Logic
Programming Conference, Imperial College
14 July 1986

WATP84
Watson P.
A Functional Language Computer
Conversion Report Univ. of Manchester Sept 1984

WATP85a *
Watson P.
A Reference Count Garbage Collection Scheme For
Distributed Computers
Draft Document, Dept of Computer Science, Univ. of
Manchester, March 1985

WATP85b *
Watson P.
Report on Visit to the U.S.A.
Document, Dept of Computer Science, Univ of manchester,
April 1985

WATP85c *
Watson P.
Higher Order Functions in EFL
Document, Dept of Computer science, Univ. of Manchester,
24 May 1985

WATS79
Watson I. & Gurd J.
A Prototype Data Flow Computer With Token Labeling
Proc. Nat. Comp. Conf., Vol 48, pp 623-628
1979

WATS83a *
Watson I.
Functional Logic Programming
Document, Dept of Computer Science, Univ. of Manchester,
April 1983

WATS84a *
Watson I. (& Ashcroft A.)
A Demand Driven Dataflow Machine/Tagged Data-Driven
Reduction Machine
Document, Dept of Computer Science, Univ. of Manchester,
March 1984

WATS84b *
Watson I.
Another Model (And Machine)
Document, Dept of Computer Science, Univ. of Manchester,
May 1983

WATS84c *
Watson I.
Higher Order Functions
Document, Dept of Computer Science, Univ. of Manchester,
Aug 1984

WATS85a *
Watson I.
A Parallel SKI(BC) Combinators Model
Document, PMP/MU/IW/00005, Dept of Computer Science, Univ.
of Manchester,
March 1985

WATS85b *
Watson Ian & Watson Paul & Woods Viv
Parallel Data-Driven Graph Reduction
Document, Dept. of Computer Science, Univ. of Manchester
IFIP TC-10 Working Conference on Fifth Generation Computer
Architecture,
UMIST, Manchester
July 15-18 1985

WATT86a *
Watt D.A.
Executable Semantic Descriptions
Software - Practise and Experience, Vol 16(1), pp 13-43
January 1986

WEIH85a *
Weihrauch K.
Type 2 Recursion Theory
Theoretical Computer Science 38, pp 17-33
May 1985

WHIT80a
White J.L.
Address/Memory Management for a Gigantic LISP Environment
or, GC Considered Harmful
Proc. 1980 LISP Conf. p119-127

WHITE78
Whitelock P.J.
A Conventional Language for Data Flow Computing
MSc Dissertation, Dept of Comp Sci, Univ. of Manchester,
October 1978

WILL80a
Williams J.H.
On The Development Of The Algebra Of Functional Programs
Report No RJ2983, IBM Research Laboratory, San Jose,
California, October 1980

WILL81a
Williams J.H.
Formal Representations For Recursively Defined Functional
Programs
in "Formalization Of Programmming Concepts",
Lecture Notes in Computer Science, no 107, Springer Verlag,
April 1981

WILL82a
Williams J.H.
Notes on The FP Style Of Functional Programming
in DARL82a
1982

WILL86a *
Williams M.H. & Chen G.
Translating Pascal For Execution On A Prolog-Based System
Computer Journal, Vol 29, No 3, pp 246-252
1986

WILN80a
Wilner W.
Recursive Machines
Xerox Parc Internal Report
1980

WILT86a *
Wiltink J.G.
Two Most Nondeterministic Programs
Science of Computer Programming, 6, pp 89-94
1986

WINS84
Winston P. & Horn K.P.
Lisp
Second Edition
Addison Wesley Publishing Company
1984

WINS? *
Winskel G.
Categories of Models for Concurrency
Computer Laboratory, University of Cambridge
Technical Report no 58

WINT80
WinterStein G. & Dausmann M. & Persch G.
Deriving Different Unification Algorithms From a
Specification in Logic
Proc. of Logic Programming workshop, Debrecen, Hungary
(ed S. -A. Tarnlund), pp 274-285
1980

WIRS82a
Wirsing M. & Broy M.
An Analysis of Semantic Models For Algebraic Specifications
in BROY82a, pp 351-412
1982

WISE79a
Wise D.S.
Morris's Garbage Compaction Algorithm Restores Referencr
Counts
ACM Trans. on Programming Languages and Systems, 1, no 1,
pp 115-122
1979

WISE82a
Wise D.S.
Interpreters For Functional Programming
in DARL82a
1982

WISE82b *
Wise M.J.
EPILOG = PROLOG + Data Flow : Arguments for Combining
PROLOG with a Data Driven Mechanism
ACM SIGPLAN Notices, Vol 17, No 12, pp 80-86
December 1982

WISE84a *
Wise M.J.
Concurrent Prolog on a Multiprocessor: A Critique of
Concurrent Prolog and Comparison with EPILOG
DSC Report 8403
Department of Computer Science, University of New South
Wales
January 9 1984
( Submitted to the Journal of Logic Programming )

WISE85a *
Wise M.J.
Experimenting with EPILOG: Some Results and Preliminary
Conclusions
DCS Report Number 8505
Department of Computer Science, University of New South
Wales
September 1985
( Accepted for 13th International Symposium on Computer
Architecture, Tokyo, 1986 )

WOLF83a *
Wolfram D.A. & Maher M.J. & Lassez J-L.
A Unified Treatment of Resolution Strategies For Logic
Programs Technical Report 83/12
Department of Computer Science, University of Melbourne
1983

WONG86a *
Wong W.G.
Arity prolog
Software review in Byte, volume 11, number 3, pp 245-248
March 1986

WONG86b *
Wong E. & Samson W.B.
The Specification Of A Relational Database (PRECI) As An
Abstract Data Type And Its Realisation In HOPE
Computer Journal, Vol 29, No 3, pp 261-268
1986

WORL85a
Worley J. & Arabe J. & Tu K.G.
The Architecture and Design of the Functional Programming
Machine Document, Computer Sci. Dept. , Univ. of California,
Los Angeles

------------------------------

End of PROLOG Digest
********************