File Information

File: 05-lr/acl_arc_1_sum/cleansed_text/xml_by_section/metho/65/c65-1028_metho.xml

Size: 23,269 bytes

Last Modified: 2025-10-06 14:11:05

<?xml version="1.0" standalone="yes"?>
<Paper uid="C65-1028">
  <Title>VANDENBUR.GH MORPHISM: A SYMBOLIC LIST PROCESSING LANGUAGE I</Title>
  <Section position="3" start_page="28" end_page="28" type="metho">
    <SectionTitle>
VANDENBURGH 2.
I. Definitions
</SectionTitle>
    <Paragraph position="0"> I. 1 Words and Symbols Since we are using a computer, composed of: let us define our alphabet to be the Latin capital letters the blank (#) for notational purposes but on printed page a blank. the punctuation marks . and , - the digits excluding: = - $ / + @ ( ) and 0 which is also acceptable to the computer. I. Z Non-connected words Let us put in parallel the Latin phrase: nec adulatoribus latus praebes and its French equivalent: et tune pretes pas le flanc aux flatteurs; The Latin word nec corresponds, in French, to the three non-consecutive words e_t ... n.e ... pa_.~s and the Latin word praebes corresponds to tu ... prates Thus it appears that for the words of a language, on the same level as words, there is a series of words not necessarily consecutive: the non-connected words. For a non-connected word, the components will be separated by the symbol: - . For example:</Paragraph>
    <Paragraph position="2"> are non-connected words. The first has two components and the second has three components.</Paragraph>
    <Paragraph position="3"> 1. 3 Comb-scheme In the formulas, as in algebra, we designate a variable by x (and , eventually intervening variables by Xl, x 2''&amp;quot; ); a non-connected word of N components will be schematized by a comb or comb - scheme VANDENBURGH 3.</Paragraph>
    <Paragraph position="4"> (eventually transformed into a number) of N teeth ordered from left to right (eventually numbered from 1 to N) such that the first tooth represents the first component, the second tooth the second component, etc.</Paragraph>
    <Paragraph position="6"> We will separate the lists of non-connected words by a / .</Paragraph>
    <Paragraph position="7"> example:</Paragraph>
    <Paragraph position="9"> is a list of three non-connected words: the first of one component; the other two, two. We will schematize the list by:</Paragraph>
    <Paragraph position="11"> i. 5 Designation of lists and their types We will designate a list by a symbol (name, a set of letters and digits). We will enclose the symbol by the sign @ . This avoids VANDENB URGH 4.</Paragraph>
    <Paragraph position="12"> confusing the name of a list with elements of the list e. g.</Paragraph>
    <Paragraph position="14"> of our alphabet); but @AB5@ designates a list. The list is:</Paragraph>
  </Section>
  <Section position="4" start_page="28" end_page="28" type="metho">
    <SectionTitle>
A-B /C /D-E-F.
</SectionTitle>
    <Paragraph position="0"> It should be mentioned that a list can be recursive: it may contain a list (i.e. the name of the list enclosed in @ signs which, of course, refers to another list).</Paragraph>
    <Paragraph position="1"> A type of list will be indicated, not by a series of combs which are not part of a keyboard; but by the particular list of the type where all of its components are empty; enclosed by two @ signs.</Paragraph>
    <Paragraph position="2"> For instance, @-//--@ designates a list schernatized by:</Paragraph>
    <Paragraph position="4"> 2. Morphisms, List operators, and comb construction 2. 1 Morphisms or operations on lists  Let @ LIST 1 @, and @ LIST Z @ be two lists. We will define the operation juxtaposition (putting them side by side) which we will designate by the sign / . For example: @ LIST 1 @ / @ LIST Z @.</Paragraph>
    <Paragraph position="5"> In a like manner, we will use the notation - to show the insertion of a word (or list) into another list. For instance the expression: A- /B-C-@X@/@Y@UT VANDENBUP~GH 5.</Paragraph>
    <Paragraph position="6"> if we define:</Paragraph>
    <Paragraph position="8"> A - / B - C - D- E / F / G- H- TUT Z. Z List ordering and comb scheme constructio n Let us consider the following French sentence.</Paragraph>
    <Paragraph position="9"> je ne veux pa_._~s.</Paragraph>
    <Paragraph position="10"> It is written in our alphabet as: JE#NE#VEUX#PAS.</Paragraph>
    <Paragraph position="11"> and this constitutes a word in our alphabet. It perhaps may be constructed with the aid of the following non-connected words:  (i) JE - VEUX (2) NE - PAS (3) # (non-connected word of one component) (4) .</Paragraph>
    <Paragraph position="12"> these words, thus ordered, constitutes a llst schematized by :</Paragraph>
    <Paragraph position="14"> Shuffled according to the following scheme: the non-connected words of the list, each one taken once or many times (the @ is taken three times), is shuffled into the components of one against the other: thus a juxtaposition of the various components in the order where the preceding shuffling places them.</Paragraph>
    <Paragraph position="15">  The first line of the schematic represents the list from which we started. We will call it the source of the morphism.</Paragraph>
    <Paragraph position="16"> The second line represents how we have shuffled the various teeth of the source. We will call it the graph of the morphism.</Paragraph>
    <Paragraph position="17"> The third line represents the non-connected word (here of a single component). We will call it the target of the rnorphism. The three line schematic represents the morphism.</Paragraph>
    <Paragraph position="18"> It should be clear that since the first line of the schematic represents a list, the morphism can operate on any list of this type. Thus, the list:</Paragraph>
  </Section>
  <Section position="5" start_page="28" end_page="28" type="metho">
    <SectionTitle>
A-B /C-D/E/F
AECEBEDF
</SectionTitle>
    <Paragraph position="0"> will become The morphism conserves in each non-connected word the order of its components ( JE preceeds VEUX, etc. ). This is a condition we may or may not impose on a morphism. If we impose it, we are saying that it is forbidden to cross the teeth of the combs. Let us note that we could also have constructed the sentence: je ne veux pas .</Paragraph>
    <Paragraph position="1"> by starting with the list:  JE # - VEUX / NE # - # PAS / .</Paragraph>
    <Paragraph position="2"> VANDENBURGH 7.</Paragraph>
    <Paragraph position="3"> which yields the following morphism: I. Z . 3 E ,I i ~ I I  Let us briefly consider the following German sentence: Du ra~nst dieses ein .</Paragraph>
    <Paragraph position="4"> We could define it with the following list: DU - ST / EIN - R.AUlVi / DIESES / # / . from which we obtain the following morphism.</Paragraph>
    <Paragraph position="6"> Here the morphism commutes the teeth of the second comb of the source.</Paragraph>
    <Paragraph position="8"> It is more convenient to use numbers instead of teeth and combs for the input to a computing machine. We have therefore designed the following type of numbering system for our morphisrns.</Paragraph>
    <Paragraph position="9"> We will define a morphism by a symbol (set of letters and digits).</Paragraph>
    <Paragraph position="10"> We shall p1&amp;quot;ecede this symbol by the sign $. For example:</Paragraph>
  </Section>
  <Section position="6" start_page="28" end_page="28" type="metho">
    <SectionTitle>
$ PSI
</SectionTitle>
    <Paragraph position="0"> will designate a morphism.</Paragraph>
    <Paragraph position="1"> Let @A @ be a list of the source type of $ PSI; the resultant list of @ A @ transformed by the morphism will have the following notation:</Paragraph>
    <Paragraph position="3"> The morphism itself will be notated by the following type of its source list between two $ written as a series of integer triplets representing the series of teeth of the graph: the combs of the graph being ranked in the order of the encounter of their first teeth going frorn left to right. .%11 of the teeth of the graph will be represented by three integers each one being separated by a comma: i) the rank of the comb of the graph to which it belongs; Z) the rank of the corresponding comb of the graph; 3) the rank in the comb of the source of the tooth, corresponding to the given tooth of the graph.</Paragraph>
    <Paragraph position="4"> The target and the correspondence between the graph will be indicated by the symbols - and / placed between the triplets: two triplets separated by the sign., correspond to a similar tooth of the target; VANDENBUKGH 9.</Paragraph>
    <Paragraph position="5"> two triplets separated by the sign - correspond to two different teeth of the target belonging to a single comb; two triplets separated by the sign / correspond to two different teeth belonging to two different combs; two triplets separated by the sign . will correspond to the same tooth of the target.</Paragraph>
    <Paragraph position="6"> For example, let us describe the rnorphisrn for the previously mentioned German sentence: du ra\[h~nst dieses ein. We shall call it $ PHI and schernatize it as follows:</Paragraph>
    <Paragraph position="8"> In this example, the third tooth of the first comb of the target does not correspond to any tooth of the graph; this is indicated in the series of integer triplets by the empty components having the sign / .</Paragraph>
    <Paragraph position="9"> When we forbid the crossing of the teeth in the comb, the third number of the triplet representing a tooth of the graph is ambiguous for our notational purposes. We may, therefore, reduce our notation from triplets to couplets.</Paragraph>
    <Paragraph position="11"> Z. 4 Operations on the lists by morphisms In a precise manner, we can show that the scheme of a morphism $ 1AO is determined by the input of the lists. The first having the notation: @x@ composed of word-signs differing from each other and such that $ RO can operate on itself; the second, transformed from @X @ by $ RO and having the notation:</Paragraph>
    <Paragraph position="13"> The source and the target of the scheme is none other than the schemes of @X @ and @Y @ respectively. This is due to the graph that is given by the comb-bindings of @ Y@ as each one can be identified, tooth by tooth, from a comb of the source.</Paragraph>
    <Paragraph position="14"> In effect, the comb schemes of @ X @ coincide with the comb-bindings; by series, if two letters of the substance @ Y @ of @ Y @ have the same path. The combs of a graph of $ 1%O are none other than the comb-bindings of @ Y @ in position. Moreover, since all the word signs of @ X @ are distinct between, we have the ability to distinguish the combs from each other. Thus, we know which comb of the source corresponds to which comb of the graph; and in this comb of the source which tooth corresponds VANDENBURGH II.</Paragraph>
    <Paragraph position="15"> to which tooth under consideration; equally, we know, thanks to the and / , the group of teeth of the graph which has joined the above bracketing of the teeth of the target.</Paragraph>
    <Paragraph position="16"> We can, therefore, reconstitute the complete scheme of the morphism $ I%O.</Paragraph>
    <Paragraph position="17"> Here is an example.</Paragraph>
    <Paragraph position="18">  The above is simply to say that there always exists a form of this comb-scheme and list type structure. Our canonical form (going from left to right) for:</Paragraph>
    <Paragraph position="20"> is as follows: $RO(A /@X@/@Y@).</Paragraph>
    <Section position="1" start_page="28" end_page="28" type="sub_section">
      <SectionTitle>
2.5 Operators defined from morphisms
</SectionTitle>
      <Paragraph position="0"> We are going to define from the rnorphisms some operators on sets of lists. We will show later that the operators are themselves morphisms: therefore they are recursive and this then gives us the ability to have an extended logic for our computing language.</Paragraph>
      <Paragraph position="1"> There are three operators for our morphisms: the / product, the // product and the ~ product (or composition).</Paragraph>
      <Paragraph position="2"> I. The / product of two morphisms Let $ RO and $ MU be two morphisms.</Paragraph>
      <Paragraph position="3"> following notation: The / product has the</Paragraph>
      <Paragraph position="5"> (i.e. the list ransformed by $1%O/$MU of @ X @ is the product of the juxtaposition of lists transformed from @ X @ by $ I%O and $MU).</Paragraph>
      <Paragraph position="6"> II. The //product of two morphisms Let $RO and $KHI be two morphisms.</Paragraph>
      <Paragraph position="7"> / notation.</Paragraph>
      <Paragraph position="8"> We shall use the following ($RO//$KHD.</Paragraph>
      <Paragraph position="9"> For any lists @X @ / @ Z @</Paragraph>
      <Paragraph position="11"> It should be mentioned that the // product of two morphisms is defined only when they are from the same source.</Paragraph>
      <Paragraph position="12"> III. The * product (or composition} of two morphisms.</Paragraph>
      <Paragraph position="13"> Let $1%O and SPI be two morphisms such that the source of $RO is identical to the target of $PI. The * product has the following notation:</Paragraph>
      <Paragraph position="15"> It should be mentioned that since the * product of two morphisms is defined only if the source of $RO is identical to the target of SPl, it thus transforms any list of source type of $PI into a list of target type $ao.</Paragraph>
      <Paragraph position="16"> VANDENBURGH 15.</Paragraph>
      <Paragraph position="17"> Z. 6 _Product of morphisrns are themselves morphisms The operators defined in Z. 5 / product, // product, and ':'product of morphisms are morphisms.</Paragraph>
      <Paragraph position="18"> In effect, they can be represented by schemes which are schemes of morphisms.</Paragraph>
      <Paragraph position="19"> \ The scheme ($RO/$MU) is constructed as follows: The first line is the source common to the schemes of $1%O and SMU.</Paragraph>
      <Paragraph position="20"> The second and are those of SILO and $MU placed side by side; those of $MU to the right of those of $1%O.</Paragraph>
      <Paragraph position="21"> For instance, given: $1%O: $MU:</Paragraph>
      <Paragraph position="23"> The schemes of ($RO//$KHI) are constructed as follows: We modify the number of the combs of the scheme of $KHI while adding to each of them the number of combs of the source of $RO; thus, we can place the schemes of $1ZO and $KHI side by side; those of $KHI to the right to those of $RO.</Paragraph>
      <Paragraph position="25"> The scheme of ($RO ~',' $PI) is constructed as follows: The source is that of $PI.</Paragraph>
      <Paragraph position="26"> The graph is that of $RO where we replace each comb (which is also a comb of the target of $PI) by the system of combs to which it corresponds in the graph of $PI.</Paragraph>
      <Paragraph position="27"> The target is that of SRO.</Paragraph>
      <Paragraph position="28"> For instance, given: $R.O: $PI:</Paragraph>
      <Paragraph position="30"> To construct the scheme of the ~ product of $RO and SPI, we can also characterize it by its action on a list @ X @ of source type of $PI: uniquely composed of word-signs different from each other. For that, we will make $PI act on @ X @, then SRO on  from which is defined the scheme for ($RO * $pl).</Paragraph>
      <Paragraph position="31"> The different products /, //, and * defined between the rnorphisms are not associative between themselves. They are associative when there intervenes only the product of a single sort (/, //, or ~ ) which permits in this case the suppression of parenthesis. Thus:</Paragraph>
      <Paragraph position="33"> VANDENBURGH 19.</Paragraph>
      <Paragraph position="34"> 3. Practical application of symbolic list p.roces.sing ' 3. i Introduction  The actual programming of a symbolic list processing system presents many interesting and varied problems and possibilities. The power of this type of list manipulation opens the way to many hitherto unsolvable (computer-wise)problems.</Paragraph>
      <Paragraph position="35"> Now that we have defined our language, it naturally behooves us to ask how, and to what, we can apply it. We are going to illustrate three different types of problems to show that we have a general purpose language. The first will be a simple example of list processing manipulating variables in algebra. The second will be an application of morphisms to generate FOP~TRAN (or any symbolic programming system) in the same general manner of SHADOW but with the added difference that our input is a list instead of a single variable. The third example will be an application to the natural languages.</Paragraph>
      <Paragraph position="36"> 3. 2 Operating on polynominials using symbolic list processing We have written a program for the 1620 computer in FORTRAN which allows us to operate on sets of polymminials of N variables varied to a power p. The only limitation being that of memory size i. e. N p size of memory. If we consider an external memory source such as tapes or discs this does not become much of a limitation.</Paragraph>
      <Paragraph position="37"> The operations we are treating at present are addition, subtraction, multiplication and raising to a power. We are considering the differenciation but that we will leave to a later date. Mathematically expressed, we are doing the following: Let PI(Xl, X Z ..... XN) and Pz(XI, XZ, ..... XN) be polynominials when the variables can be raised to the j power and all combinations. An example will clarify this section. Let:</Paragraph>
      <Paragraph position="39"> 2 We are able to compute Pl ~:= PZ' P1 + P2 ' and any combination of these pclynominials. It turns out that this can be handled ve~.y easily as a function of lists. Our limitations, at Rennes, being simply memory size as we need to set up tables for the coefficients anu the 16Z0 is rather limited in memory capacity and lists are very heavy users of tables. This limitation would be relatively nil, if we had an external memory device such as discs or tapes.</Paragraph>
    </Section>
    <Section position="2" start_page="28" end_page="28" type="sub_section">
      <SectionTitle>
3.3 Generating computes.programs from flow charts.
</SectionTitle>
      <Paragraph position="0"> A practical application of the nnorphisms is the translation of flowcharts into programs. This section is therefore concerned with that problem.</Paragraph>
      <Paragraph position="1"> A typical flowcharting or programming problem. Let us consider that we wish to solve the following general type problem:</Paragraph>
    </Section>
  </Section>
  <Section position="7" start_page="28" end_page="28" type="metho">
    <SectionTitle>
3 Z= ~$'~ Y
</SectionTitle>
    <Paragraph position="0"> x = 0.(. i)z0.0 and Y = -4. O( I. 0)8. 0 I REAm &amp;quot;~I ~o &amp;quot;%/o T' the flowchart would appear to be of the following form(since there are no fixed rules for the logical flow or organization of a computer solvable problem, this flow chart is as good as any).</Paragraph>
    <Paragraph position="2"> Let us number each box from left to right. Now let us draw 9 teeth and number then as follows (we need the nineth as there are two possible flows for the lost tooth).</Paragraph>
    <Paragraph position="4"> It follows that the 9th tooth meets the first, ill L1 Z 3 4 5 6 7 8 9 so let us join them:  Now, for the sake of clarity, and to take advantage of our comb-scheme, we will re-number them as follows: 4 6 4 5 1 Z 3 3</Paragraph>
  </Section>
  <Section position="8" start_page="28" end_page="28" type="metho">
    <SectionTitle>
VANDENB URGH ZZ.
</SectionTitle>
    <Paragraph position="0"> 3. 5 The list of our flowchart For t~e list of our flowchart, it is necessary to write only the imperati-~e instructions. We will generate the IF and the right parantheu!s with the correct flow from our morphism. Therefore, the list is as follows:</Paragraph>
    <Paragraph position="2"> the program will also generate an END statement.</Paragraph>
    <Paragraph position="3"> The type of list is: I/lll--I/--I/ Using the definition of a list as in section two, we have:</Paragraph>
    <Paragraph position="5"> (the notation 0 is to signify the end of a list since a list may be of variable length. For descriptive purposes, we will continue to use the / to delimit an element of a list and a - (dash) to denote an inse~t. In practice, (for this particular problem), we cannot use these symbols as they are used by FORTRAN and we cannot distinguish whether they are for FORTRAN or for our list processing language.</Paragraph>
    <Paragraph position="6">  We can scan the list C until we come to an entry Z. This will cause an IF( to be generated. We follow this by the entry in the list (in our case Y-YMAX). This is followed by a right paranthesis. The FORTRAN statement numbers are respectively the corresponding entry for \]5 taken twice (separated by commas) and the value of i+l. This is true because all orders following an IF must have a path so they must be numbered i.e. carry a statement number.</Paragraph>
    <Paragraph position="7"> 3. 8 Advantages and power of symbolic list processing with morphisms With the example shown here, the real power does not come to light.</Paragraph>
    <Paragraph position="8"> However, there are some things we can do here. We can take advantage of inserts. We can insert elements into our list by adding an element to the end of the list and for putting a dash in the list; or we can even insert VANDENBURGH Z4.</Paragraph>
    <Paragraph position="9"> a list /s within our original list by inserting the name of a new list /s enclosed in two @ signs.</Paragraph>
    <Paragraph position="10"> It should also be mentioned here that it is not necessary to punch redundant coding in the above example. It suffices simply to add the number of the element to the morphisrn list. For instance in our example if we wanted to do another series of calculations over the same range, we need only punch a new entry for Z (or some other variable with another symbolic name) and repeat the tables.</Paragraph>
    <Paragraph position="11"> With a little imagination, it is easy to see that if we can generate an IF statement, we can search to find out if our variable starts with the letters i, j, k, i, m, or n and generate a DO statement.</Paragraph>
    <Paragraph position="12"> Unfortunately, this, despite IBM's claim of FORTRAN's compatibility between machines, creates the problem of being machine oriented e.g. the 704/7090 etc. permit a DO loop to have a maximum value of 3Z, 767 while the decimal machines will easily accept 99,999.</Paragraph>
    <Paragraph position="13"> We could also attack the logical schematic of a flowchart with IF statements but this poses to the problem of ordinary usage and becomes completely computer oriented. For example, we can generate a statement of the following type:  Which pattern shall we select? We can't accept the third one for a binary machine as floating point equality is a rather elusive animal due to binary round off.</Paragraph>
    <Paragraph position="14"> This example was chosen to demonstrate that with list processing we can generate FORTRAN programs.</Paragraph>
    <Paragraph position="15">  $RO is a schuffling which out of two intercepted words makes a third one, according to the following scheme: I : e.g. $RO(A-B-/C-D) = A-CBD $LA is a &amp;quot;junction&amp;quot; of the two components in one: e.g. SLA(A-B) = AB. VANDENB URGH 26.</Paragraph>
    <Paragraph position="16"> Now we can derive a sentence (morpho-phonenaic rules are omitted in our sketch, they happen to be useless for this example...).</Paragraph>
  </Section>
class="xml-element"></Paper>
Download Original XML