Re: representing patterns and structures

"Peter Clark" <>
Message-id: <>
Subject: Re: representing patterns and structures
To: (Bill Brayman)
Date: Mon, 21 Nov 1994 09:12:16 -0600 (CST)
From: "Peter Clark" <>
In-reply-to: <> from "Bill Brayman" at Nov 18, 94 09:40:28 am
X-Mailer: ELM [version 2.4 PL24alpha3]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 3128      
Precedence: bulk
> Here is a modeling question in the spirit of brainstorming (I wonder
> why there isn't more of this among us).
> Suppose you have a sheet of metal with holes in it, or a table with
> marbles on it, or a row of pickets in a fence, inch marks on a ruler,
> telephone poles on the road, etc.
> What constructs would one use to say that objects are grouped, that
> they are evenly spaced, that they reside in a region of an object, that
> they form a shape such as a gentle curve, or a matrix?
> 	fence pickets are spaced 3 inches apart
> 	the marbles were arranged in a circle
> The dictionary says that a row is a group of objects that are next to
> one another.  How would one model "next to one another?"
> It seems that there should be some way to represent patterns or
> structures without having identify every point to point
> interelationship among elements of the pattern.

Without getting into the issues of ambiguity of what "arranged in a 
square" might mean; it seems to me you've answered the question yourself 
in your text, as

 	"fence pickets are spaced 3 inches apart"

does exactly what you want -- it represents a pattern without 
identifying every point to point interrelationship among elements in
the pattern. More formally, you could define a ROW as having
a MEMBER-TYPE (eg. fence pickets) with a SPACING (3 inches) and
maybe a known REFERENCE-POINT (eg. where a known fence was) and
maybe a SHAPE (eg. circle, itself a RADIUS and CENTRE) they lie
on if you don't want to confine yourself to a straight line.

Given such a data structure, you'd then have to ask what questions
do you want to ask about rows; eg. is there a fence picket at a
certain point? how many fence pickets are between two points? 
Then you'd define the procedures which take as input the row data 
structure and as output answer a question (ie. you axiomitize the
predicates you're interested in). I missing something here?

You could then go further, and then talk about operations on 
sequences, eg. addition, substraction, etc. without having to
explicitly enumerate them to find the answer. Appendix A of "Common LISP" 
(Steele, 2nd Ed) describes LISP predicates for handling series -- like 
sequences, except that the actual values in the sequences aren't explicitly
enumerated (except in the final answer). Thus you can ask (I think)
"what is the series 0 to infinity minus the series 5 to infinity?"
and get (0 1 2 3 4) without Lisp trying to actually enumerate
the two infinite series mentioned in the question. A sort-of 
intensional handling of sequences. This is very nice -- you can do 
sequence addition, substraction etc. without enumeration, by defining 
functions which operate on these "intensional" definitions of sequences.
This sounds similar to what you're trying to get at.

Best wishes,


Peter Clark (	   Department of Computer Science
tel: (512) 471-9574, fax: (512) 471-8885   University of Texas at Austin
URL:      Austin, Texas, 78712, USA.
URL (research group):