-
Notifications
You must be signed in to change notification settings - Fork 2
/
parmenides.ps
4066 lines (4066 loc) · 88.3 KB
/
parmenides.ps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%!PS-Adobe-2.0
%%Title: parmenides.mss
%%DocumentFonts: (atend)
%%Creator: Peter Shell and Scribe 7(1700)
%%CreationDate: 22 April 1991 16:00
%%Pages: (atend)
%%EndComments
% PostScript Prelude for Scribe.
/BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def
/ES {showpage SV restore} bind def
/SC {setrgbcolor} bind def
/FMTX matrix def
/RDF {WFT SLT 0.0 eq
{SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore}
{SSZ 0.0 SLT neg sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore}
ifelse makefont setfont} bind def
/SLT 0.0 def
/SI { /SLT exch cvr def RDF} bind def
/WFT /Courier findfont def
/SF { /WFT exch findfont def RDF} bind def
/SSZ 1000.0 def
/SS { /SSZ exch 100.0 mul def RDF} bind def
/AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def
/MT /moveto load def
/XM {currentpoint exch pop moveto} bind def
/UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto
setlinewidth 0.0 rlineto stroke grestore} bind def
/LH {gsave newpath moveto setlinewidth
0.0 rlineto
gsave stroke grestore} bind def
/LV {gsave newpath moveto setlinewidth
0.0 exch rlineto
gsave stroke grestore} bind def
/BX {gsave newpath moveto setlinewidth
exch
dup 0.0 rlineto
exch 0.0 exch neg rlineto
neg 0.0 rlineto
closepath
gsave stroke grestore} bind def
/BX1 {grestore} bind def
/BX2 {setlinewidth 1 setgray stroke grestore} bind def
/PB {/PV save def newpath translate
100.0 -100.0 scale pop /showpage {} def} bind def
/PE {PV restore} bind def
/GB {/PV save def newpath translate rotate
div dup scale 100.0 -100.0 scale /showpage {} def} bind def
/GE {PV restore} bind def
/FB {dict dup /FontMapDict exch def begin} bind def
/FM {cvn exch cvn exch def} bind def
/FE {end /original-findfont /findfont load def /findfont
{dup FontMapDict exch known{FontMapDict exch get} if
original-findfont} def} bind def
/BC {gsave moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath clip} bind def
/EC /grestore load def
/SH /show load def
/MX {exch show 0.0 rmoveto} bind def
/W {0 32 4 -1 roll widthshow} bind def
/WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def
/RC {100.0 -100.0 scale
612.0 0.0 translate
-90.0 rotate
.01 -.01 scale} bind def
/URC {100.0 -100.0 scale
90.0 rotate
-612.0 0.0 translate
.01 -.01 scale} bind def
/RCC {100.0 -100.0 scale
0.0 -792.0 translate 90.0 rotate
.01 -.01 scale} bind def
/URCC {100.0 -100.0 scale
-90.0 rotate 0.0 792.0 translate
.01 -.01 scale} bind def
%%EndProlog
%%Page: 0 1
BS
0 SI
15 /Helvetica-Bold AF
14551 14054 MT
(PARMENIDES: A Class-Based Frame System)SH
13 SS
27132 39828 MT
(Version 1.5)SH
10 /Helvetica AF
27654 42361 MT
(22 April 1991)SH
/Helvetica-Bold SF
28015 51012 MT
(Peter Shell)SH
26737 52249 MT
(Jaime Carbonell)SH
/Helvetica SF
20424 58400 MT
(Copyright)SH
/Symbol SF
24981 XM
(\343)SH
/Helvetica SF
26049 XM
(1991 Carnegie)
278 W( Mellon University)SH
ES
%%Page: 1 2
BS
0 SI
8 /Helvetica-Bold AF
7200 4183 MT
(PARMENIDES MANUAL)SH
51065 XM
(PAGE 1)SH
12 SS
7200 8075 MT
(1. Introduction)SH
10 SS
8312 9312 MT
(PARMENIDES)SH
/Helvetica SF
15419 XM
(\050PropagAting, Rulekit-Motivated ENgine)
162 W( for Instance DEScriptions\051 is a frame-based)161 W
7200 10549 MT
(knowledge representation system. It is influenced by)SH
/Helvetica-Bold SF
30933 XM
(SRL)SH
/Helvetica SF
(,)SH
/Helvetica-Bold SF
33489 XM
(Framekit)SH
/Helvetica SF
(,)SH
/Helvetica-Bold SF
38214 XM
(CommonLoops)SH
/Helvetica SF
(, and the Spice lisp)1 W
7200 11786 MT
(structure implementation. The slot and facet access functions have comparable)
93 W( speed to the Slisp slot)92 W
7200 13023 MT
(access functions. It has some of the Framekit and SRL)
215 W( functionality, such as facets, demons, and)216 W
7200 14260 MT
(user-defined relations. However, like Loops, it makes a distinction between)
45 W( classes and instances. This)44 W
7200 15497 MT
(means that instances can only be)
24 W( an instance of one class, while classes may be subclasses of \050have an)25 W
/Helvetica-Oblique SF
7200 16734 MT
(is-a)SH
/Helvetica SF
9167 XM
(relation with\051 more than one)
78 W( class. Instances may not have any slots that their classes don't have.)77 W
7200 17971 MT
(Classes describe a way to make)
81 W( instances, and instances only participate in the frame network through)82 W
7200 19208 MT
(their classes. By storing much of)
47 W( the frame information at the class level, the amount of storage needed)46 W
7200 20445 MT
(for instances is reduced. For now, classes can not also be instances,)
80 W( but this could be implemented in)81 W
7200 21682 MT
(the future.)
100 W( Parmenides)
477 W( is implemented in Common Lisp, so it is assumed that the user is familiar with)99 W
7200 22919 MT
(this dialect of Lisp.)SH
8312 25297 MT
(The name is in recognition of Plato's)127 W
/Helvetica-Oblique SF
25597 XM
(Parmenides)SH
/Helvetica SF
31337 XM
(dialogue, in which he is)
127 W( confronted with the "third)128 W
7200 26534 MT
(person argument". This is)
232 W( the notion that in order to describe and generate instances through the)231 W
7200 27771 MT
(generative powers of classes, the classes in turn need a meta-class to generate them, and so on.)
74 W( This)428 W
7200 29008 MT
(argument is used as an excuse not to implement meta-classes in this frame system.)SH
8312 31386 MT
(Other features of)SH
/Helvetica-Bold SF
16094 XM
(Parmenides)SH
/Helvetica SF
22041 XM
(include:)SH
/Symbol SF
9242 32858 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Propagation)SH
/Helvetica SF
15650 XM
(instead of)SH
/Helvetica-Oblique SF
20264 XM
(inheritance)SH
/Helvetica SF
(. See)
278 W( the section on propagation for more details.)SH
/Symbol SF
9242 34673 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Optional facets)20 W
/Helvetica SF
(. Usually,)
318 W( slots contain facets, which can)
20 W( be thought of as annotated property)19 W
9980 35816 MT
(lists of a slot. For)
5 W( example, one might want to store both a value and degree of certainty with)6 W
9980 36959 MT
(some slots. However, if only one value and no facets)
62 W( need be stored, then the slot may be)61 W
9980 38102 MT
(declared to not have facets, thus making access to and representation)
194 W( of that slot more)195 W
9980 39245 MT
(efficient.)SH
/Symbol SF
9242 41060 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Extendable Frames)20 W
/Helvetica SF
(. Since)
318 W( frames are represented as adjustable arrays, it is possible)
20 W( to add)19 W
9980 42203 MT
(slots and facets dynamically \050i.e., after the class has been defined\051.)SH
/Symbol SF
9242 44018 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Class slots)102 W
/Helvetica SF
(.)SH
/Helvetica-Bold SF
15954 XM
(Parmenides)SH
/Helvetica SF
22003 XM
(supports class slots, which are ways)
102 W( to specify meta-information)103 W
9980 45161 MT
(about the classes, and apply not to any particular instance or slot, but the class itself.)
98 W( For)473 W
9980 46304 MT
(example, the)SH
/Helvetica-Oblique SF
15983 XM
(propagate)SH
/Helvetica SF
20764 XM
(attribute is a class slot.)SH
/Symbol SF
9242 48119 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Pre-access)SH
/Helvetica SF
15272 XM
(and)SH
/Helvetica-Oblique SF
17231 XM
(post-access)SH
/Helvetica SF
22858 XM
(demons.)SH
/Helvetica-Bold SF
27277 XM
(Parmenides)SH
/Helvetica SF
33238 XM
(allows demons to called both before and)14 W
9980 49262 MT
(after access to values. See the section on demons.)SH
/Symbol SF
9242 51077 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(Multiple Language Messages)209 W
/Helvetica SF
(. Parmenides)
696 W( messages)
209 W( may be displayed in a number of)208 W
9980 52220 MT
(languages. The)
380 W( currently supported languages are English and Spanish, although it is easy)51 W
9980 53363 MT
(to add messages in new languages. See section 6 for details.)SH
/Symbol SF
9242 55178 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(User-Defined Relations)28 W
/Helvetica SF
(. The)334 W
/Helvetica-Oblique SF
23263 XM
(instance)SH
/Helvetica SF
27293 XM
(and)SH
/Helvetica-Oblique SF
29267 XM
(is-a)SH
/Helvetica SF
31184 XM
(relations are special hard-wired relations, but)28 W
9980 56321 MT
(the user may define his/her own relations as frames. Inverse relations are also supported.)SH
/Symbol SF
9242 58136 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(User frame files)171 W
/Helvetica SF
(. Files)
620 W( containing)171 W
/Helvetica-Bold SF
26066 XM
(def-frame)SH
/Helvetica SF
31071 XM
(commands may be compiled when a set of)171 W
9980 59279 MT
(frames is known to be stable. After that, the compiled)
174 W( frame file may be loaded without)173 W
9980 60422 MT
(having to load in the source)
19 W( frame file, resulting in considerable loading and executing speed)20 W
9980 61565 MT
(up.)SH
/Symbol SF
9242 63380 MT
(\267)SH
/Helvetica-Oblique SF
9980 XM
(A freelist of frames)8 W
/Helvetica SF
(.)SH
/Helvetica-Bold SF
19190 XM
(Parmenides)SH
/Helvetica SF
25145 XM
(uses a)8 W
/Helvetica-Oblique SF
28385 XM
(freelist)SH
/Helvetica SF
31616 XM
(in order to more efficiently manage memory.)7 W
9980 64523 MT
(Whenever a frame is removed, it is put on the freelist, and when)
83 W( a new frame is needed, if)84 W
9980 65666 MT
(there is one of)
115 W( the appropriate type already on the freelist, then that one is recycled. The)114 W
9980 66809 MT
(function)SH
/Helvetica-Bold SF
13856 XM
(remove-frame)SH
/Helvetica SF
(, described below, releases frames to the freelist, which means)
96 W( that)97 W
9980 67952 MT
(you shouldn't expect to be able to use the frame after calling them.)SH
ES
%%Page: 2 3
BS
0 SI
8 /Helvetica-Bold AF
7200 4183 MT
(PARMENIDES MANUAL)SH
51065 XM
(PAGE 2)SH
12 SS
7200 8075 MT
(2. Propagation and Caching versus Inheritance)SH
10 /Helvetica AF
8312 9312 MT
(Inheritance is a process)
53 W( by which properties of frames are inferred from other related frames, typically)52 W
7200 10549 MT
(through is-a or instance links. Many frame and)
149 W( schema languages perform inheritance at the time of)150 W
7200 11786 MT
(retrieval. This)
284 W( saves space because when values are shared by a whole tree of frames, they only need)
3 W( to)2 W
7200 13023 MT
(be stored)
49 W( in one place. For example, the fact that animals breathe air need only be stored in the animal)50 W
7200 14260 MT
(class frame, and not in any subclasses, such as mammal or dog,)
59 W( since the breathes slot of a dog frame)58 W
7200 15497 MT
(can be inherited)
6 W( from the animal frame. However, retrieving can be very slow if retrieving with inheritance)7 W
7200 16734 MT
(is performed often.)
201 W( Also,)
679 W( if other programs use a frame network as a data base, then if a class is)200 W
7200 17971 MT
(changed, it will not necessarily know the implications of this change unless it tests all of its data again.)SH
8312 20349 MT
(For these reasons, an alternative to)
129 W( inheritance,)130 W
/Helvetica-Oblique SF
30672 XM
(caching)SH
/Helvetica SF
(, of selected slots and values, is allowed in)130 W
/Helvetica-Bold SF
7200 21586 MT
(Parmenides)SH
/Helvetica SF
(. Caching)
326 W( a value simply means storing that value directly)
24 W( in a frame. If a slot is designated)23 W
7200 22823 MT
(a)SH
/Helvetica-Oblique SF
8087 XM
(cached)SH
/Helvetica SF
11642 XM
(slot by a class, then the slot and its values will be stored in all subclasses of that class.)
53 W( Thus,)386 W
7200 24060 MT
(instead of performing inheritance at access time,)11 W
/Helvetica-Bold SF
29064 XM
(Parmenides)SH
/Helvetica SF
35022 XM
(is able)
11 W( to retrieve the data directly from the)10 W
7200 25297 MT
(frame. For)
414 W( example, suppose the)68 W
/Helvetica-Oblique SF
22837 XM
(animal)SH
/Helvetica SF
26128 XM
(class is first defined with a slot)68 W
/Helvetica-Oblique SF
40331 XM
(\050breathes \050value)
68 W( 'air\051\051)69 W
/Helvetica SF
50317 XM
(and that)69 W
7200 26534 MT
(the)SH
/Helvetica-Oblique SF
8996 XM
(breathes)SH
/Helvetica SF
13293 XM
(slot is defined to be)128 W
/Helvetica-Oblique SF
22827 XM
(cached)SH
/Helvetica SF
(. If)
534 W( a)128 W
/Helvetica-Oblique SF
29065 XM
(dog)SH
/Helvetica SF
31139 XM
(frame is defined as)128 W
/Helvetica-Oblique SF
40376 XM
(is-a animal)127 W
/Helvetica SF
(, the slot)127 W
/Helvetica-Oblique SF
49776 XM
(\050breathes)SH
7200 27771 MT
(\050value 'air\051\051)58 W
/Helvetica SF
12594 XM
(is immediately stored)
58 W( in the)59 W
/Helvetica-Oblique SF
25280 XM
(dog)SH
/Helvetica SF
27285 XM
(frame \050unless of course if the dog frame were to provide its)59 W
7200 29008 MT
(own specification of the)115 W
/Helvetica-Oblique SF
18332 XM
(breathes)SH
/Helvetica SF
22616 XM
(slot\051. Whenever)
507 W( an instance of dog is made, that instance also gets)114 W
7200 30245 MT
(that slot as a default cached value.)SH
8312 32623 MT
(Cached slots are designated by)
92 W( the)93 W
/Helvetica-Oblique SF
24819 XM
(cache)SH
/Helvetica SF
27858 XM
(class slot \050see the description of the)93 W
/Helvetica-Bold SF
44683 XM
(def-frame)SH
/Helvetica SF
49610 XM
(command)SH
7200 33860 MT
(for the details of designating cached slots\051.)
103 W( The)
482 W( tradeoff of cached slots is that it takes more space to)102 W
7200 35097 MT
(cache all values. Thus, if)
87 W( a system never need know if Fido the dog breathes, then it shouldn't specify)88 W
7200 36334 MT
(the breathes slot as cached. Standard inheritance is still performed if a cached value can't be found in)
38 W( a)37 W
7200 37571 MT
(frame \050see the Command Summary, below\051.)SH
8312 39949 MT
(Under some circumstances, it may be necessary to change a class definition after it and)
205 W( its sub-)206 W
7200 41186 MT
(classes have already been defined. To ensure that the correct values are always cached, in the event)98 W
7200 42423 MT
(that a class is changed,)
277 W( the change is propagated to the sub-classes and instances. There is a)278 W
7200 43660 MT
(distinction between)50 W
/Helvetica-Oblique SF
16082 XM
(cached)SH
/Helvetica SF
19634 XM
(and)SH
/Helvetica-Oblique SF
21630 XM
(local)SH
/Helvetica SF
(. A)
378 W( cached value is one that is stored directly)
50 W( in a frame, but which)49 W
7200 44897 MT
(could have been inherited from somewhere else. A local value is one which was originally stored in the)65 W
7200 46134 MT
(frame \050i.e., not inherited from somewhere else\051.)28 W
/Helvetica-Bold SF
28987 XM
(Parmenides)SH
/Helvetica SF
34962 XM
(retains the distinction between cached)
28 W( and)27 W
8 SS
45196 47020 MT
(1)SH
10 SS
7200 47371 MT
(local slots by keeping a special)143 W
/Helvetica-Oblique SF
22064 XM
(depth)SH
/Helvetica SF
24988 XM
(facet on slots that participate in propagation)144 W
45641 XM
(. The)
566 W( depth facet)144 W
7200 48608 MT
(indicates from how far up in the frame hierarchy the value was inherited. When)
42 W( the depth is 0, the value)41 W
7200 49845 MT
(is local. If a)
101 W( slot has a depth which is less than the depth of a slot which is trying to propagate a new)102 W
7200 51082 MT
(value to it, then that value won't be propagated to it. The)89 W
/Helvetica-Oblique SF
33817 XM
(local-p)SH
/Helvetica SF
37129 XM
(function tells whether)
89 W( or not a certain)88 W
7200 52319 MT
(slot has a local value.)SH
8312 54697 MT
(Propagation is done according to the global system flag)
186 W( !!inheritance-type, so that when a cached)187 W
7200 55934 MT
(value is)
109 W( retrieved, it will be the same as if the specified inheritance type was performed. !!Inheritance-)108 W
7200 57171 MT
(type must be a keyword, and its value may be either)76 W
/Helvetica-Oblique SF
31380 XM
(:dfs)SH
/Helvetica SF
33346 XM
(\050depth-first\051 or)76 W
/Helvetica-Oblique SF
40056 XM
(:bfs)SH
/Helvetica SF
42023 XM
(\050breadth-first\051. It)
432 W( is initially)77 W
7200 58408 MT
(set to)SH
/Helvetica-Oblique SF
9924 XM
(:dfs)SH
/Helvetica SF
(. \050Note)
278 W( that currently)SH
/Helvetica-Oblique SF
21151 XM
(:bfs)SH
/Helvetica SF
23041 XM
(is not currently implemented\051.)SH
12 /Helvetica-Bold AF
7200 62163 MT
(3. Parmenides Commands)SH
10 SS
8312 63400 MT
(Parmenides)SH
/Helvetica SF
14348 XM
(commands are)
89 W( divided into the following categories: Class definition, instance creation,)88 W
7200 64637 MT
(data retrieval, data storage, predicates, and miscellaneous commands.)SH
10800 50 7200 70292 UL
6 SS
8090 71687 MT
(1)SH
8 SS
8424 72000 MT
(That is, slots which have facets and whose class have the)SH
/Helvetica-Oblique SF
29145 XM
(propagate)SH
/Helvetica SF
32970 XM
(property.)SH
ES
%%Page: 3 4
BS
0 SI
8 /Helvetica-Bold AF
7200 4183 MT
(PARMENIDES MANUAL)SH
51065 XM
(PAGE 3)SH
11 SS
7200 8002 MT
(3.1. Class Definition Commands)SH
10 /Helvetica AF
8312 9239 MT
(It is necessary to define a class before making frame instances, since)
237 W( classes are prototypes of)238 W
7200 10476 MT
(instances.)SH
/Helvetica-BoldOblique SF
10800 12348 MT
(def-frame <name> <cplist>)
299 W( &rest <slot-descriptions>)298 W
/Helvetica SF
37579 XM
(Top level frame definition function.)298 W
9000 13491 MT
(Defines a frame)
158 W( class of name)159 W
/Helvetica-Oblique SF
23735 XM
(<name>)SH
/Helvetica SF
27841 XM
(and makes a default instance of it with the given default)159 W
9000 14634 MT
(values. Default)
332 W( values are evaluated at run time. Defines a)
27 W( make function for that class, defines slot)26 W
9000 15777 MT
(access functions for each slot, and defines facet access functions for the first facet \050typically)23 W
/Helvetica-Oblique SF
50197 XM
(value)SH
/Helvetica SF
(\051 in)24 W
9000 16920 MT
(each slot in)136 W
/Helvetica-Oblique SF
14744 XM
(<slot-descriptions>)SH
/Helvetica SF
(. Optionally)
550 W( defines set and setf methods)
136 W( for slots and facets \050see)135 W
9000 18063 MT
(section 7.2 of)15 W
/Helvetica-Bold SF
15271 XM
(Common Lisp, the Language)15 W
/Helvetica SF
29333 XM
(by Guy Steele for an explanation of)
15 W( setf methods\051. The)16 W
9000 19206 MT
(arguments will now be described.)SH
/Helvetica-Bold SF
7200 22095 MT
(3.1.1. slot-descriptions)SH
/Helvetica-Oblique SF
10800 23238 MT
(<slot-descriptions>)SH
/Helvetica SF
19470 XM
(is a list of slot descriptions, which are of the form:)SH
/Courier-Bold SF
9000 25043 MT
(<slot-description> := <slot-name> <slot-contents>)SH
9000 26174 MT
(<slot-contents> := <constant> | <facet-plist>)SH
9000 27305 MT
(<facet-plist> :=)
1200 W( '\050')
600 W( {<facet-name> <default-value>}+ '\051')SH
9000 28436 MT
(<default-value> := \050any lisp object\051)SH
9000 29567 MT
(<facet-name> :=)
1800 W( <slot-name>)600 W
9000 30698 MT
(<slot-name> :=)
2400 W( :<symbol>)600 W
9000 31829 MT
(<constant> is any atom, including NIL.)SH
9000 32960 MT
(a <constant> in the facet field denotes a facet-less slot.)SH
9000 34091 MT
(Note: constants are not evaluated, but default-values are.)SH
9000 36353 MT
(Example of a faceted slot:)SH
9000 37484 MT
(:height \050:value 'tall :time-inferred 23 :certainty 1.0\051)SH
9000 39746 MT
(Example of a slot without facets:)SH
9000 40877 MT
(:height NIL)SH
/Helvetica SF
9000 42737 MT
(A value facet with default value)
19 W( NIL is automatically inserted into slots that have facets but don't have)18 W
9000 43880 MT
(a value facet.)SH
10800 45506 MT
(Note that slot descriptions may be inherited from other classes, as described in)
255 W( the)256 W
/Helvetica-Oblique SF
51221 XM
(<is-a>)SH
/Helvetica SF
9000 46649 MT
(description, below.)SH
/Helvetica-Bold SF
7200 49538 MT
(3.1.2. cplist)SH
/Helvetica-Oblique SF
10800 50681 MT
(<cplist>)SH
/Helvetica SF
14751 XM
(is a class plist, which is the way to define class slots. It has the same syntax as)226 W
/Helvetica-Oblique SF
9000 51824 MT
(<slot-descriptions>)SH
/Helvetica SF
(, and can also be inherited from super-classes. Certain class variables are)295 W
9000 52967 MT
(recognized by the system. For efficiency, they are all facetless. These are:)SH
/Symbol SF
11042 54439 MT
(\267)SH
/Helvetica-Oblique SF
11780 XM
(:is-a)SH
/Helvetica SF
13966 XM
(Default: NIL. An ordered list of class)
19 W( names which the given class is a sub-class of.)18 W
11780 55582 MT
(Slot and other cplist descriptions are inherited from the superclasses. When)
165 W( there is)166 W
11780 56725 MT
(more than)
83 W( one description of the same slot or cplist in the superclass list, the first such)82 W
11780 57868 MT
(superclass in the)205 W
/Helvetica-Oblique SF
20176 XM
(is-a)SH
/Helvetica SF
('s list is used. Local descriptions take precedence for the)205 W
/Helvetica-Oblique SF
49609 XM
(is-a)SH
/Helvetica SF
11780 59011 MT
(relation. Because)416 W
/Helvetica-Bold SF
20269 XM
(Parmenides)SH
/Helvetica SF
26285 XM
(performs propagation instead)
69 W( of inheritance, it needs to)68 W
11780 60154 MT
(have all the information about the superclasses at class definition)
14 W( time. Thus, frame files)15 W
11780 61297 MT
(should define the highest level frames first, working down.)SH
/Symbol SF
11042 63112 MT
(\267)SH
/Helvetica-Oblique SF
11780 XM
(:cache)SH
/Helvetica SF
15120 XM
(The default is the union of what all the parents cache. A)116 W
/Helvetica-Oblique SF
41809 XM
(cache)SH
/Helvetica SF
44871 XM
(slot in a)
116 W( class)115 W
11780 64255 MT
(means that that)
31 W( slot specification is inherited by any sub-classes of the class. The value)32 W
11780 65398 MT
(of the)113 W
/Helvetica-Oblique SF
14786 XM
(cache)SH
/Helvetica SF
17845 XM
(class slot, if specified, should either be a list of the names of the)
113 W( slots to)112 W
11780 66541 MT
(cache, or the symbol :*ALL*, in which case all slots in the current class will be)
89 W( cached.)90 W
11780 67684 MT
(The list of slots to cache)
81 W( is added to what all the parents cache; thus, cached slots are)80 W
11780 68827 MT
(themselves cached)
53 W( to all the descendants of the class which defined them. To override)54 W
11780 69970 MT
(caching what the parents cache, explicitly specify NIL as the value of this c-slot.)SH
/Symbol SF
11042 71785 MT
(\267)SH
/Helvetica-Oblique SF
11780 XM
(:setable)SH
/Helvetica SF
15618 XM
(Default: The)
394 W( slots which the parent classess explicitly declare to be)
58 W( setable. If)57 W
ES
%%Page: 4 5
BS
0 SI
8 /Helvetica-Bold AF
7200 4183 MT
(PARMENIDES MANUAL)SH
51065 XM
(PAGE 4)SH
10 /Helvetica AF
11780 7929 MT
(the value of this slot is)69 W
/Helvetica-Oblique SF
22310 XM
(T)SH
/Helvetica SF
(, then)
69 W( a)70 W
/Helvetica-Bold SF
26744 XM
(set)SH
/Helvetica SF
28537 XM
(function will be defined for each slot, analogous to)70 W
11780 9072 MT
(the slot access functions. These set functions are named)296 W
/Helvetica-Bold SF
40475 XM
(set-)SH
/Helvetica-Oblique SF
(<frame><slot>)SH
/Helvetica SF
(, e.g.)295 W
/Helvetica-Bold SF
11780 10215 MT
(set-dog-breathes)SH
/Helvetica SF
(. Their)
292 W( first argument is the frame to modify, and the second)
7 W( argument)8 W
11780 11358 MT
(is the new value to put in)
55 W( the slot. A set function will also be defined for the)54 W
/Helvetica-Oblique SF
46330 XM
(value)SH
/Helvetica SF
49052 XM
(facet)SH
11780 12501 MT
(for slots which have facets. If the value is)94 W
/Helvetica-Oblique SF
31451 XM
(:setf)SH
/Helvetica SF
33713 XM
(then, in addition)
94 W( to the set functions, a)95 W
11780 13644 MT
(setf method for each slot will be defined. This allows users the full power of setf methods)2 W
11780 14787 MT
(\050at a slight increase in size of compiled frame files\051, such as being able to push onto)148 W
11780 15930 MT
(slots. Finally,)
564 W( if the)
143 W( value of this slot is a non-nil list, then the first element of the list)142 W
11780 17073 MT
(should be)151 W
/Helvetica-Oblique SF
16696 XM
(T)SH
/Helvetica SF
17736 XM
(or)SH
/Helvetica-Oblique SF
19054 XM
(:setf)SH
/Helvetica SF
(, and the second element should be a list)
151 W( containing the slots for)152 W
11780 18216 MT
(which a)110 W
/Helvetica-Oblique SF
15668 XM
(set)SH
/Helvetica SF
17390 XM
(method is to be defined. If the parents)
110 W( explicitly declare slots as settable,)109 W
11780 19359 MT
(then they are also settable by the children; to override this inheritance, declare the value)34 W
11780 20502 MT
(of)SH