MAKEGRAPHdocumentationD.AustinHenderson,Jr.Lastrevised:March17,1983MAKEGRAPH(and.DCOM)isapackagewhichsitsontopofGrapherandhelpsonecreategraphsdepictingadatastructurebywalkingthroughit.Thecentralideaisthateachpointinthewalk(andnodeinthegraph)ischaracterizedbyadatum/statepairandmotionisdefinedbyagraphspecificationintheformofstatetransitionfunction.Thisfunctionisspecifiedbyacollectionofstatespecifications,eachofwhichindicateshowtodisplay(labelandfont)thedatumwhenoneisinthatstateandhowtofindthedatum/statepairswhicharethesonsofthatnode.Alsothestatespecificationmayspecifyadditionalrootsforthewalk.Thegenerationofabranchofthegraphceaseswheneithertherearenosonsofanode,oranalreadyencounterednodeisrevisited(identicaldatumandidenticalstate).Thepackagecontainsafunctionforcreatingsuchgraphsandanexampleofitsuse:afunctionwhichgraphsthegraphspecificationsthemselves.Commentsarewelcomed.Themainfunctions:MAKE.GRAPH(WINDOWTITLEGRAPH.SPECIFICATIONROOTSCONTEXTLEFTBUTTONFNMIDDLEBUTTONFNTOPJUSTIFYFLGDEPTH)CreatesaMAKEGRAPHwindow.IfWINDOWisNIL,thenanewonewillbecreatedandtheuserwillbepromptedtopositionit.Otherwise,thegraphwillbeshowninWINDOW.ThewindowwillbetitledwithTITLE,willcallLEFTBUTTONFNandMIDDLEBUTTONFNonnodesselected(orNILifselectionismadewherenonodeispositioned),andwillbejustifiedasindicatedbyTOPJUSTIFYFLG(alaGrapher).ThebuttonfunctionsaredefaultedtoMAKE.GRAPH.LEFTBUTTONFN(whichscrollsthewindowsothattheselectednodeisinthemiddleofthewindow,oriftheleftshiftkeyisdepressed,printsoutinformationaboutit)andMAKE.GRAPH.MIDDLEBUTTONFN(whichprovidesamenuoftwochoices:INSPECT-inspectsthedatumofthenodeselected,oriftheleftshiftkeyisdepressed,inspectsthenodeitself;andSUB.GRAPH-whichopensanotherMAKEGRAPHwindowwiththesameparametersasthisone,butwithgraphstartingattheselectednode).TheargumentstoMAKE.GRAPHareaddedaspropertiestothewindowundertheirargumentnames.SelectinginthetitleinvokesthefunctionswhicharethevaluesofthewindowpropertiesTITLE.LEFTBUTTONFNandTITLE.MIDDLEBUTTONFN(notinthecallingsequence;setbytheuserifdesired;calledwithasingleargument-WINDOW;defaultedtoafunctionwhichprovidesamenuofUPDATEandSHOW.GRAPH.SPEC(seefunctionalitybelow)).ThegraphiscreatedaccordingtotheGRAPH.SPECIFICATION(seebelow)todepthDEPTH,startingfromROOTSwhichare(DATUM.STATE)pairs.CONTEXTisanextraargumentwhichisapassedalongtoallaccessingexpressions.AGRAPH.SPECIFICATIONisapropertylistofSTATE.SPECIFICATIONswherethepropertiesarethestatenames.ASTATE.SPECIFICATIONisapropertylistwhosepropertiesandvaluesareasfollows(inthis,EXPRmeansaLISPformwhichwillbeevaluatedinanenvironmentinwhichDATUMisboundtothenode'sdatum,STATEtothenode'sstate,andCONTEXTtocontext):LABEL:anexpressionreturningsomethingwhichwillbeprintedasthelabelofthenode;ifnoLABELpropertyisprovided,thestring"???"willbeused.FONT:anexpressionreturningthefonttobeusedforthisnode;ifnoFONTpropertyisprovided,thedefaultfontforthegrapherwillbeused.SONS:aformindicatingalistof(DATUM.STATE)pairstobeusedingeneratingthesonsofthisnode;theacceptableformsareanyofthefollowing:(data-expressionstate-expression)wheredata-expressionreturnsalistofdatum'sforthesonnodes,andstate-expressionisevaluatedinthecontextofeachoftheseinturntoproducethecorrespondingstateofeach.(LIST(datum-expressionstate-expression)...(datum-expressionstate-expression))atemplateofexpressionswhichareevaluatedindividuallytoproducealistofsonsofthesameform,viz.(DATUM.STATE)pairs.(EVALexpression)theexpressionreturnsalistof(DATUM.STATE)pairsofthesons.(UNIONsons-spec...sons-spec)whereeachsons-specisanyoftheseforms(recursively).(TRACEsons-spec)adeviceforhelpingdebuggraphspecifications;thevalueisthevalueofsons-specs;theuserisgiventhechancetoINSPECTthemaftertheyhavebeengenerated.ROOTS:likeSONS,excepttheresulting(DATUM.STATE)pairsareusedaspossiblyadditionalrootsofthegraph.MAKE.GRAPH.CONSTRUCT(GRAPH.SPECIFICATIONINITIAL.ROOTSCONTEXTDEPTH)ThisisthefunctionalheartofMAKE.GRAPHbrokenoutforthosewhowishtohandletheirowninteractswithgrapherandthewindowpackage.ItproducesalistofgraphnodeswithlabelsandsonsasspecifiedbyGRAPH.SPECIFICATION(seeMAKEGRAPH),startingfromINITIAL.ROOTSwhichare(DATUM.STATE)pairs.CONTEXTisanextraargumentwhichisapassedalongtoallaccessingexpressions.Returnsthelistofgraphnodes.pî êïc/î êïb6qîP î;ïb6ïb6îAïb6î êï`Þî oîP î�îéîïï`Þî êï_†îî¬î¶îî"nï_†ï_†î"tï_†î êï]úî™ï]úï]úîñî óî óï]úrï]úî%Îï]úsï]úî&Ÿî'Ýî(Úî-ëî1Èî3øî5Ðî8î9¡î?îA‰îDøîGuîGuï]úî êï\Vî½îþîÉîÆîœî"'î#õî(ãî-éî/hî2î6gî91î:oî=î@îC~îDþîG/îJEîJ�îJ�ï\Vî êïZÓî ìî/î¯îàîîT î"qî$?î%<î%<ïZÓïZÓ î,¶î%<ïZµþ Ëî/ïZÓïZÓî/_î1èî6sî7±î<€î>Nî?Kî?KïZÓïZÓîC î?KïZµþ îJ]ïZÓïZÓîJµîJµïZÓî êïYPî jî›îÓî^î` îKî!éî$Óî*î+Xî0áî2¯î3¬ î9«î;6î;6ïYPïYPî>8 î;6ïY2þ ÛîFïYPïYPîFÁîIÃîIÃïYPî êïWÍî uîRîÐî¥î%î¦îïWÍïWÍîïW¯þÔî!óïWÍïWÍî"Kî$Ôî$ÔïWÍïWÍî$ÔïW¯þgî';ïWÍïWÍî( î*=î.]î1ãî4`î5žî7î9½î<¿î?HîBîC�îF\îH�îH�ïWÍî êïVJ îdî‘înî”îÅîÅïVJïVJîÅïV,þˆî MïVJïVJî ¥î"0î$Ïî(iî+hî-™î0› î8Hî;î?Š îEÌîEÌïVJïVJîEÌïV,þêîH¶ïVJïVJîIîIïVJî êïTÇî ùî*î—î@ îÑî\îYî"Æî$Qî&‚î*?î.(î1®î5jî8Äî:êî<Âî?¢îA-îB*îEÅîG[îIîIïTÇî êïSDî� î2îuî³î! î&Úî*úî*úïSDtïSDî-ïSDsïSDî-pî2Ìî6žî9Gî>XîC‰îD†îIÍîIÍïSDî êïQ®î ùîÿîîBîËîŽî"Öî$aî& î(Íî)Êî/î2îî7/î9`î= îENîENïQ®î êïP+ îÿî½îãî!&ïP+qïP+î!,ïP+î êïN¦uîîù î êïNˆþîøïN¦qïN¦îþïN¦î êïM&r îàî9î Çî1‘î6óî>7 îJ3îJ3ïM&î êïK¶ î î%0î*¤ïK¶qïK¶î*ªïK¶î êïJsî¤î¡î‚îÓî!(î(î)Tî,�î/‡î0„î3Dî5Áî8<î9ÿî>˜îA!îCRîFîH˜îJ[îJ[ïJî êïH�îîŽîœî îÂî!óî%°î(+î)îî. î/�î6Òî9{î>uî@ðîB³îFîIîIïH�î êïG î¶î1îŒ î ˆî# î1Vî3.î6õî;ðî=ÿî@ãîBîGˆîHÆîHÆïG î êïE‰î{îdî<îî½ î î"�î% î&Îî+èî-iî3)î4÷ î@âîBXîC·îIæîIæïE‰î êïDî “îÓîžîÄî¦î!&î7Yî;¯î?«îAÜîFÖîHlîHlïDî êïBƒî ‰îºîµîøî6î¶îçî!]î"èî%î*kî,î-4î/eî1«î4–î6ýî8; î>¸îBtîDºîDºïBƒî êïA î?îðî‘îî2–î6ìîîBÿîE0îHsîHsï?}î êï=úî�îî¹îŠîgî".î'î0éî5ãî8Îî:ÿî>N îE#îF¤îIîIï=úî êïîCéîGÆîIìîIìï:ôî êï9qî îî¤îÕîÏ î î0‚î3 îEÃîH‚îJîJï9qî êï7îî îNî~îmî;îlî 7î!jî&{î*Aî-,î.)î1äî7Ýî8®î@îE÷îGwîHtîHtï7îî êï6kî1îîkîhîî¥î%Ýî(fî6eî9 î@ÒîE÷îH îH ï6kî êï4èî§îåî~î‹î î<î/î1¼î6î7‘î;Nî@ØîE‘îHÉîHÉï4èî êï3eîî÷îîlîî"kî%ïî-2î.pî03î3wî9pî=Mî>‹î?ˆîC¾îGMîHÍîJŽîJŽï3eî êï1âî  îîï1âqï1âîï1âî êï0Vsî Iî*îhîeî$Îî&Üî(gî(¿î9{î=dî?• îEÙîGÿîJ0îJ0ï0Vî êï.Óî ìîXî·î#ïî%-î&*î+“î-¡î1Ÿ î7ãî:lî>jî@�îBîF›îH”îH”ï.Óî êï-Pî ´îÓîèîåî>îvî!Sî#Îî%‘î+‰î- î.Ì î6§î8'î<îAÚîCîGBîHÂîHÂï-Pî êï+Íî î:î²î‰î î:î"Yî%³î(<î/î0ÿî6<ï+Íqï+Íî6Bï+Íî êï*AsîÖî™ îî"öî)fî-Cî/¾î1�î6$î7¥î9Öî=î>�î@¾îDzîE­îG…îG…ï*Aî êï(¾îáîJîˆîî°î"Vî%¸î(3î)öî-ï(¾qï(¾î-ï(¾î êï'2sîàî£ î)îî 1î"ðî$pî&3î)@î+Oî-Áî1}î2°î4ˆî8àî>Iî?‡îE~îG¯îG¯ï'2î êï%¯îaî î/î`îFîÁî„î"�ï%¯qï%¯î"–ï%¯î êï$#sîàîÝî îBî?îMîØî%'î%Öî+&î.Sî/Óî1–î4£î6# î<ªî>ÛîA»îCFîE¸îItîItï$#î êï" î  î—îSîyîìîwî¨ î%§ï" qï" î%­ï" î êï!sîàîî"ëî,hî0ëî1èî3öî5�î:}î<Œî>½îAîE8îGÁîGÁï!î êï‘î“îÑîÉîIîzî$î%¨î(ªî*5î-�î/î1åî3eî8Œî:½ îC~îF€îH îH ï‘î êïî ëïqïî ñïî êï‚sî cï‚rï‚îœï‚sï‚îôî4î$Vî%³î0óî;Žî<‹îAÿîCŠ îJ”îJ”ï‚î êïÞîÇîíîå îDîÄî$ëî%èî'öî)�î,aî-ìî0î3lî6üî9Vî?¥î@TîE¤îHÐïÞqïÞîHÖïÞî êïRsî cïRrïRîïRsïRîk îjî› î!î#¤î$¡î&¯î(:î.‰î/8î4ˆî7µî9@î;qî>PïRqïRî>VïRî êï®sî cï®rï®î<ï®sï®î”îvîÓ î.î"î%î*ûî,9î.¬î07î3‘î7M î>ðï®qï®î>öï®î êï sî cï rï îï sï îu îÐî(î%î9îHî# î' î*Çî3qî5¢î9î:Zî<‹î@îA�îA�ï ï îA�ïìþîGžï ï îHoîJ îJ ï î êïfî µîóîxî©î î‹î éî$Cî'Pî*1î-Iî0w î6�ïfqïfî6–ïfî êïÚsîÖîQîÁîáî"î'…î-Ôî.ƒî3Óî7î9&î<3î=´îBÎ îIîIïÚî êïWî,î·îèî¤ïWqïWîªïWî êïÿrîî/b î:…îAÉîG=ïÿqïÿîGCïÿî êï[sî ÔîîC î‘îëîv î&®î+/î-uî/„î2óî5Èî8Éî:Iî>ŸîA¶îD‹îIÓîIÓï[î êï Øî Õî»îDîuîoî!×î#!î(Ìî)Éî+×î-b î4Žî7yî;)î=²î@’îBîGœîIjîIjï Øî êï UîËîj î)î-Õî1 î<î?òîBîHgîIîIï Uî êï Òî:î¾îî?îî!Fî'?î+î,Zî-Wî1�î5î6œî8]î> îEtîJ{îJ{ï Òî êïOî î)î´ îßïOqïOîåïO` êq?€[ÇÔMAKE.GRAPH.FIND.ROOTS(GRAPH.SPECIFICATIONINITIAL.ROOTSCONTEXTDEPTH)Findstherealrootsfromasetofinitialroots,usingthesameprocessingasMAKEGRAPHuses.Thisishelpfulwhenyouwanttohanda"correct"setofrootsofastructuretoMAKEGRAPHwithouthavingtoexplorethedependencieswithinthatstructure.AswithMAKEGRAPH,thedatastructureisprocessedaccordingtotheGRAPH.SPECIFICATION(seeMAKEGRAPH),startingfromINITIAL.ROOTSwhichare(DATUM.STATE)pairs.CONTEXTisanextraargumentwhichisapassedalongtoallaccessingexpressions.Returnstherealrootsasalistof(DATUM.STATE)pairs.Supportingfunctions:MAKE.GRAPH.UPDATE.WINDOW(WINDOW)Usesthewindowproperties(whichmayhavebeenchanged)toreinvokeMAKE.GRAPHonthewindow.MAKE.GRAPH.SHOW.LIST(OBJECT)Thisisasimpleexamplefunction.Supposewewantedtolayoutliststructureasagraph.Inthegraph,wewantedalisttobelabeledby"()"anditssonstobetheelementsofthelist.Forexample,thegraphof'(AB(CD))shouldlooksomethinglike:A/()-BC\/()\DMAKE.GRAPH.SHOW.LISTusesMAKE.GRAPHtoproducesuchgraphs.ItpresentsOBJECTasatreewhosenodesareLISTPsandwhoseleavesarenon-LISTPs.Thelayoutspecificationthatituses(savedinthevalueofthevariableMAKE.GRAPH.LIST.SPEC)isincludedhereasanexampleofasimple,1-stategraph.specification.(OBJECT(DOC(ANYLISPOBJECT)-somedocumentationLABEL(COND((LISTPDATUM)"()")(TDATUM))SONS((COND((LISTPDATUM)DATUM)(TNIL))(QUOTEOBJECT))))MAKE.GRAPH.SHOW.SPEC(GRAPH.SPECIFICATION)UsesMAKE.GRAPHtoproducedagraphofaGRAPH.SPECIFICATION.Itusesasthegraph.specificationforthislayoutthevalueofthevariableMAKE.GRAPH.SPEC.SPECwhichpresentsGRAPH.SPECIFICATION(reflectively)asagraph.specification.(GRAPH.SPECIFICATIONcanserveasatemplateforothergraph.specifications.Itisafairlycomplex9-statespecification.)MAKE.GRAPH.EXAMPLE.1()CallsMAKE.GRAPH.SHOW.SPEConMAKE.GRAPH.SPEC.SPEC.ForamorecomplexexampleseeaboveunderMAKE.GRAPH.SHOW.SPEC.)MAKE.GRAPH.EXAMPLE.2()CallsMAKE.GRAPH.SHOW.LISTonMAKE.GRAPH.LIST.SPEC;thatis,producesagraphofthissimplegraph.specificationasalist.NoticethatselectingthetitlecommandUPDATEinthiswindowwillyieldadifferentgraphofthesamestructure,viz.asagraph.specification.Otherusefulfunctions:MAKE.GRAPH.DATUM(NODE)ReturnstheDATUMassociatedwiththegraphnodeNODE.MAKE.GRAPH.STATE(NODE)ReturnstheSTATEassociatedwiththegraphnodeNODE.MAKE.GRAPH.FATHER(NODE)ReturnsthegraphnodewhichisthefatherofthegraphnodeNODE.î êïc8î êïb6rîî/b î:…îAÉîG=ïb6qïb6îGCïb6î êï`’sîšîËîSî•îÍîÊî¹îDî!ýî%—î)î+Bî.‘ î5 î6�î@nîC�îFzîG¸îG¸ï`’î êï_îvîüî„î²î2îŠîÙîÖî$—î&†î(î+Sî,Þî-Ûî3fî4æî>ÇîC îGëîIkîIkï_î êï]Œî¢îÓ îî0î Ï î&±î(”î+ î5¸î7éî:¿î@JîAˆîG–îG–ï]Œî êï\ î÷îwî¨î%‰î(( î2Úî7“î:Ë îEÓîI°îI°ï\ î êïZ†î î_îî^îâî$%î%cî'&î*jî0cî4@î5~î6{î:±î>@î?ÀîA�îG7îG7ïZ†î êïY îKîRîƒî îMî Îî!Ëî#Ùî%dî+³î,bî1²î4ÞïYqïYî4äïYî êïW~u î î êïW`þ.îïW~qïW~îïW~î êïUørî!ìî)gïUøqïUøî)mïUøî êïTTsî î>î8 î|îÒî"¨î%Àî(îî.¥î0%î5— î?ÏîA§îCØîHÑïTTqïTTîH×ïTTî êïRürîMî#×ïRüqïRüî#ÝïRüî êïQXsî ÔîîîCî‹î)î�î$Ôî&Îî+gî,çî0äî2òî8}î9þî:ûî?î?gîA îC:îGOîIIîIIïQXî êïOÕîƒî€îŽîîÑîhî6îàî!iî#î%õî'uî)8î+iî0óî2~î4¯î7î7lî9èî?ˆîA¹îEvîGîI1îJoîJoïOÕî êïNRî ¸î îjîRîÂî^ïNRqïNRîdïNRî êïLúî ðïLúî êïK¢î Áî ˜î oîFî#ïK¢î êïJJî Áî ˜î oîLïJJî êïHòî ˜îôîËî¢îïHòî êïGšî Áî ˜î oîîôîËî¨ïGšî êïFBî Áî ˜î oîFîôîÑïFBî êïDêî Áî ˜î oîFîîôîËî¨ïDêî êïC’î Áî ˜î oîFîîôîËî¢îïC’î êïB:î ðïB:î êï@®sî=î  î*@î+Àî0çî3éî8�î8Ùî:#î?KîDþîFîG|îJîJï@®î êï?+îèî¯îÕî˜î!î î#üî&" î-ûî0¤î4¡ îíî@îBàîFõîHuîJ¦îJ¦ï?+î êï=¨îdîïî î%î)î*Rî/Åî2±î42î5õî;=î<Èî=ÅîBQîF|îF|ï=¨î êï<%îXï<%î êï:¢î ðï:¢î êï9Sqî¢îÕîî;î$óî%Êî&¡î'xî(Oî)&î)ýî*Ôî+«î,‚î-Yî.0î/î0µî4è î?Ùï9Sî êï7ûîàî·îŽîeî<îFîPî$î)éî,nî/Êî/Ðï7ûî êï6£îàîÖî­î„î[î2î îàî·î<î##ï6£î êï5Kîàî·îŽîeî<îoîPî$î)éî.ùï5Kî êï3óîàîÖî­î„î[î2î îàî·î<î!uï3óî êï2›îàî·îŽîeî<îîêîÁî˜îoîFî'î$åï2›î êï1Cî Áî ˜î oîFîîôîËî¢îVï1Cî êï/ëî ðï/ëî êï.“î ðï.“î êï-;rî®î/ï-;qï-;î/ï-;î êï+—sî îEîÅî²î ¯î$lî%÷î&ôî8,î9vî~î?{îC8îDÃîG5îG5ïŠî êïîî‡î‡ïïîîî‡ïéþ4î»ïïîjî#­î&Lî+´î-åî0‚î6±î<éî>iî@ÛîEÕîHPîHPïî êï„î!îî’îOîÚî îZ î%=î'—î'—ï„ï„î)î*î'—ïfþ �î5&ï„ï„î5}ï„qï„î5ƒï„î êïÿuî�î î êïáþ)îïÿqïÿîïÿî êïyrî¡î¾ïyqïyîÄïyî êïÕsîñî"îø î1î!î#Mî' î*Mî.ÜïÕqïÕî.âïÕî êï}rîÒîïï}qï}îõï}î êïÙsîñî"îù î2î î"Nî& î)Nî-ÝïÙqïÙî-ãïÙî êï�rîî "ï�qï�î (ï�î êïÝsîñî"îßî"îÿî=î nî$Aî%Ìî'ýî+ºî.ýî3ŒïÝqïÝî3’ïÝè êq?€[Ç{ TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN ~GACHA ~GACHA û Ÿj/ÿÿœˆ›ÿÿÿÿÿÿ"{PHYLUM}MAKEGRAPH.TED;1 BURTON.PA21-Mar-84 11:29:48