Home
LPdoc Manual
Contents
1. 2 eee eese 127 A pee ees AR Ld Nr Em 132 EE 98 X xdvi 4 EE 132 RAVASAZE e ME 132 170 The Ipdoc Documentation Generator Property Index Property Index B bind E DEE 75 e DEE 87 clique 55 Ae EE ee ae 77 Gleef aii IN RED oe aed Se heed 78 COMPAL 2er bah isan IS RU 72 constraint lee id os 78 COVA iria A AN a aah 78 COVETEd EEN 78 D deprecated lin ws is e e dae TA 73 docstring 1 cde io qv Due lee m 25 56 E equiv 2 EE 75 error free 1 lid vi dee ees 75 evazi ET 75 exception AA aee EE A OEE 78 exceptions 2 2 p vie ees AR es Ph 78 F DE e tectum PS eC iym datis 79 eh EE 75 finite solutions 0 0 0 ccc eee eee 79 H have choicepoints l 0 eee ee eee 79 head p ttern 1 e Eed es whet eee peas 52 I SE Tc etter eh eho Bebe beta es SG 79 indep 2 ste ce ae ee 79 OS EL keen St ie AT epo oA d 72 instance 2 E ee rel A S 86 SE E GE REESEN 79 SR EE EE 73 L WINS AL Lat ne brute LRL as 80 longc ie tet A AO Leas 97 171 M il 2st eier E e EE Ed E heen PARTO 69 MOMO T uc over alveum ER e UAE 75 MShare Ae xx geht Sela pas A et e 80 mu t exclusive 1 ee Ie PY RR 80 N nabody 1 ive teer Ee Vs 54 E EE 74 native 2 E poh AES SS we ee 74 no choicepoints 1 veria pro xb 80 no exception l i esteem 81 no exception 2 wuss ve LR RARE dee AN 81 no rtcheck 1 5553 19 ve eh a ee oa ive 74 no signal EE 81 E E 81 non det i1 ce dE AS ES Sex 81 MONT OUNG diia ds eene hex mi 81
2. Example doc title Dr Strangelove doc subtitle How I Learned to Stop Worrying and Love the Bomb M The following properties should hold upon exit CommentType subtitle 2 SubtitleText is a documentation string docstring 1 Usage 3 doc CommentType SubtitleText Description Provides additional subtitle lines This can be e g an explanation of the application to add to the title the address of the author s of the application etc When generating documentation automatically the text in SubtitleText will be used accordingly Several of these declarations can appear per module which is useful for e g multiple line addresses Example doc subtitle_extra A Reference Manual doc subtitle extra Technical Report 1 1 0 The following properties should hold upon exit CommentType subtitle extra 2 SubtitleText is a documentation string docstring 1 Usage 4 doc CommentType SubtitleText Description The name of the logo image for the manual The following properties should hold upon exit CommentType logo 2 SubtitleText is any term term 1 Usage 5 doc CommentType AuthorText Description Provides the author s of the module or application If present when generating documentation for the module automatically the text in AuthorText will be placed in the corresponding chapter or front page There can be more than one of these declar
3. Description Documentation This assertion provides a text Comment for a given predicate Pred The following properties should hold at call time Pred is a head pattern head pattern 1 Comment is a text comment with admissible documentation commands The usual formatting commands that are applicable in comment strings are defined by stringcommand 1 See the 1pdoc manual for documentation on comments docstring 1 comment 2 DECLARATION Usage comment Pred Comment Description An alias for doc 2 deprecated for compatibility with older versions The following properties should hold at call time Pred is a head pattern head pattern 1 Comment is a text comment with admissible documentation commands The usual formatting commands that are applicable in comment strings are defined by stringcommand 1 See the 1pdoc manual for documentation on comments docstring 1 4 5 Documentation on exports assertions doc check 1 PREDICATE Usage check PropertyConjunction Description This assertion provides information on a clause program point position trust 1 in the body of a clause Calls to a check 1 assertion can appear in the body of a clause in any place where a literal can normally appear The property defined by PropertyConjunction should hold in all the run time stores corresponding to that program point See also Chapter 12 Run time checking of assertions page 103 The following properti
4. Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 29 2 Documentation on exports autodoc_bibrefs resolve bibliography 1 PREDICATE Usage resolve bibliography DocSt Description This predicate resolves bibliographical references The algorithm is as follows e Write all the bibliographical references to a aux file e Invoke BibTeX with a customized bet file that generates a pseudo docstring e Load the docstring and fix its syntax e Parse the docstring as a doctree e Extract Label Ref pairs from bibitem commands Both the docstring and label reference pairs are kept in the DocSt and used later to map symbolic references to textual labels The following properties should hold at call time docstate DocSt docstate 1 158 The Ipdoc Documentation Generator Chapter 30 Auxiliary Definitions 159 30 Auxiliary Definitions Author s Manuel Hermenegildo Jose F Morales 30 1 Usage and interface autodoc aux SI e Library usage use module library autodoc aux e Exports Predicates read_file 2 ascii_blank_lines 2 sh_exec 2 e Other modules used Application modules lpdocsrc src autodoc settings System library modules messages system make system extra lists nterna
5. Uncommenting this would make these not appear in the documentation doc hide bar 1 baz 1 This is a type definition in Prolog syntax declaration and code true regtype bar X var X is an acceptable kind of bar bar night bar day This is another type definition in Prolog syntax with no comment true regtype baz 1 baz a baz b Two type definitions in typedef syntax will be expanded to code as above 4 typedef aorb a b hh typedef listof or aorb X list X aorb Using functional notation regtype aorb 1 aorb a aorb b Should use the other function syntax which uses first argument for return regtype tree of 2 void tree call T tree of T tree of T tree of tree of T 44 tree oft void 44 tree off tree X L R Ah T X hh tree_of T L hh tree_of T R regtype list or aorb 2 list T aorb list_or_aorb T list_or_aorb _T This is a property definition This comment appears only in the place where the property itself is documented doc long 1 This is a property describing a list that is longish The definition is includedef long 1 Chapter 10 An Example Documenting a Library Module 91 hh hh y The comment here will be used to document any predicate which has an assertion which uses the property prop long L var L is rather long long L leng
6. The following properties hold globally struct T is side effect free struct T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally struct T is evaluable at compile time struct T The following properties hold upon exit T is a compound term Usage struct T Description T is a compound term The following properties hold globally This predicate is understood natively by CiaoPP gnd 1 The type of all terms without variables General properties gnd T The following properties hold globally gnd T is side effect free gnd T If the following properties hold at call time T is currently ground it contains no variables then the following properties hold globally gnd T is evaluable at compile time All calls of the form end CT are deterministic gnd T The following properties hold upon exit T is ground The following properties hold globally Indicates the type of test that a predicate performs analyisis Usage gnd T Description T is ground The following properties hold globally This predicate is understood natively by CiaoPP gndstr 1 General properties gndstr T The following properties hold globally gndstr T is side effect free 65 sideff 2 nonvar 1 eval 1 struct 1 native 1 REGTYPE sideff 2 ground 1
7. assrt body 1 REGTYPE This predicate defines the different types of syntax admissible in the bodies of pred 1 decl 1 etc assertions Such a body is of the form Pr DP CP gt AP GP 4 CO where fields between are optional e Pr is a head pattern head pattern 1 which describes the predicate or property and possibly gives some implicit call answer information e DP is a possibly empty complex argument property complex arg property 1 which expresses properties which are compatible with the predicate i e instantiations made by the predicate are compatible with the properties in the sense that applying the property at any point would not make it fail e CP is a possibly empty complex argument property complex arg property 1 which applies to the calls to the predicate 52 The Ipdoc Documentation Generator e AP is a possibly empty complex argument property complex arg property 1 which applies to the answers to the predicate if the predicate succeeds These only apply if the possibly empty properties given for calls in the assertion hold e GP is a possibly empty complex goal property complex goal property 1 which applies to the whole execution of a call to the predicate These only apply if the possibly empty properties given for calls in the assertion hold e CO is a comment string docstring 1 This comment only applies if the possibly empty properties given for calls in t
8. nonvar 1 ground 1 REGTYPE sideff 2 ground 1 ground 1 eval 1 nonvar 1 ground 1 REGTYPE sideff 2 nonvar 1 eval 1 Chapter 7 Basic data types and properties 71 character_code I The following properties hold upon exit I is an integer which is a character code character_code 1 Usage character_code T Description T is an integer which is a character code string 1 REGTYPE A string is a list of character codes The usual syntax for strings string is allowed which is equivalent to 0 s 0 t 0 r 0 i 0 n 0 g or 115 116 114 105 110 103 There is also a special Ciao syntax when the list is not complete st R is equivalent to 0 s 0 t R General properties string T The following properties hold globally string T is side effect free sideff 2 string T If the following properties hold at call time T is currently ground it contains no variables ground 1 then the following properties hold globally string T is evaluable at compile time eval 1 string T The following properties hold upon exit T is a string a list of character codes string 1 Usage string T Description T is a string a list of character codes num code 1 REGTYPE These are the ASCII codes which can appear in decimal representation of floating point and integer numbers including scientific notation and fractionary part predname 1
9. PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE 134 The Ipdoc Documentation Generator LPdoc Backends 135 LPdoc Backends 136 The Ipdoc Documentation Generator Chapter 20 Texinfo Backend 137 20 Texinfo Backend Author s Manuel Hermenegildo Jose F Morales 20 1 Usage and interface autodoc texinfo Va e Library usage use_module library autodoc_texinfo e Exports Predicates infodir_base 2 Multifiles autodoc_escape_string_hook 5 autodoc_rw_command_hook 4 autodoc_finish_ hook 1 autodoc_gen_alternative_hook 2 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc filesystem lpdocsrc src autodoc structure lpdocsrc src autodoc index lpdocsrc src autodoc doctree lpdocsrc src autodoc images lpdocsrc src autodoc settings fastformat lpdocsrc src comments ciaodesrc makedir ConfigValues lpdocsrc src autodoc aux System library modules lists terms format messages system make make_rt file utils make system_ extra Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support y 20 2 Documentation on exports autodoc_texinfo infodir_base 2 PREDICATE No further documentation availab
10. Description This is a special case that is used to control which predicates are in cluded in the documentation Normally only exported predicates are documented A declaration doc doinclude PredName forces documentation for predicate or type property function PredName to be included even if PredName is not ex ported Also if PredName is reexported from another module a declaration doc doinclude PredName will force the documenation for PredName to appear directly in this module Example doc doinclude p 3 The following properties should hold upon exit CommentType doinclude 2 PredName is a Name Arity structure denoting a predicate name predname P A atm P nnegint A predname 1 Usage 20 doc CommentType PredName Description A different usage which allows the second argument of doc doinclude to bea list of predicate names The following properties should hold upon exit CommentType doinclude 2 PredName is a list of prednames list 2 Usage 21 doc CommentType PredName Description This is similar to the previous usage but has the opposite effect it signals that an exported predicate should not be included in the documentation Example doc hide p 3 The following properties should hold upon exit CommentType hide 2 PredName is a Name Arity structure denoting a predicate name predname P A atm P nnegint A
11. The following properties should hold upon exit CommentType filetype 2 FileType describes the intended use of a file filetype 1 Usage 24 doc CommentType FileName Description Do not document anything that comes from a file whose name after taking away the path and the suffix is FileName This is used for example when doc umenting packages to avoid the documenter from including documentation of certain other packages which the package being documented uses Example doc nodoc assertions The following properties should hold upon exit CommentType nodoc 2 FileName is an atom atm 1 version number 1 REGTYPE Version is a structure denoting a complete version number major version minor version and patch number version number Major Minor Patch int Major int Minor int Patch Usage version number Version Description Version is a complete version number Chapter 3 Documentation Mark up Language and Declarations 39 ymd_date 1 REGTYPE A Year Month Day structure denoting a date ymd_date Y M D int Y int M int D Usage ymd_date Date Description Date is a Year Month Day structure denoting a date time_struct 1 REGTYPE A struture containing time information time_struct Hours Minutes Seconds TimeZone int Hours int Minutes int Seconds atm TimeZone Usage time_struct Time Description Time contains time information
12. declarations can now be a list of predicate names A u File option is now supported so that a file including e g path alias definitions can be included this has the same functionality as the u option in ciaoc Now typing just gmake does nothing In order to do something at least one target should be specified This was necessary so that recursive invocations with empty arguments did nothing Chapter 1 Introduction 9 Added a new filetype part This allows splitting large documents into parts each of which groups a series of chapters e Other new functionality A style sheet can now be specified which allows modifying many charac teristics of the html output fonts colors background thanks to Per Cederberg Added limited support for changing page numbering in SETTINGS file The concept indexing commands index cindex and concept now work somewhat differently to make them consistent with other indexing com mands The old usage index is now called more appropriately global index Corre spondingly changed things so that now every definition goes to the global index in addition to its definitional index Imported files from module user are now documented separately Now a warning is issued if characters unsupported by info are used in section names Navigation in html docs was improved The table of contents in printed manuals now contains entries for the indi vidual descriptions of predicat
13. then the following properties hold globally sequence S T is evaluable at compile time sequence E T The following properties hold upon exit E is currently a term which is not a free variable T is currently ground it contains no variables Usage sequence S T Description S is a sequence of Ts sequence or list 2 Meta predicate with arguments sequence or list pred 1 General properties sequence or list S T The following properties hold globally sequence_or_list S T is side effect free sequence_or_list S T If the following properties hold at call time S is currently ground it contains no variables T is currently ground it contains no variables then the following properties hold globally sequence_or_list S T is evaluable at compile time sequence_or_list E T The following properties hold upon exit E is currently a term which is not a free variable T is currently ground it contains no variables Usage sequence_or_list S T Description S is a sequence or list of Ts character_code 1 General properties character_code T The following properties hold globally character_code T is side effect free character_code T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally character_code T is evaluable at compile time sideff 2 ground 1 ground 1 eval 1
14. use module library autodoc html resources e Exports Predicates prepare_web_skel 1 prepare mathjax 0 using mathjax 1 e Other modules used Application modules lpdocsrc src autodoc lpdocsrc src autodoc settings lpdocsrc src autodoc filesystem System library modules messages file utils make system extra distutils dirutils terms Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support GE 22 2 Documentation on exports autodoc html resources prepare web skel 1 PREDICATE No further documentation available for this predicate prepare mathjax 0 PREDICATE No further documentation available for this predicate using mathjax 1 PREDICATE No further documentation available for this predicate 142 The Ipdoc Documentation Generator Chapter 23 Template Support for the HTML Backend 143 23 Template Support for the HTML Backend Author s Jose F Morales 23 1 Usage and interface autodoc html template 3 e Library usage use module library autodoc html template e Exports Predicates img url 2 fmt html template 3 e Other modules used Application modules lpdocsrc src autodoc settings System library modules component registry component registry messages aggr
15. 10 An Example Documenting a Library Module ue erer aues Vaga dre ut is 89 11 Auto Documenter Output for the Example Modules atea alan 95 11 1 Usage and interface example mnodulel 95 11 2 Documentation on exports example module 95 o escrios r purre puede eire Y 95 IER EE 95 aorb 1 regtype EE 95 tree oE 2 regtype EE 96 listor aorb 2 regtype e dee ek rt E E 96 Q4 RE 96 ril pred geed 96 DA VDIB eege Ate ide Seo OH Radeon 97 EE EE 97 DESI AME PERLE 97 lone T prep tues osse Pedo Reste euo er 97 VERLA DEG ote se euro ahi d 98 mytype 1 pred iiie EORR ce dba 98 ENEE 98 SI REN 98 q l EC s vase alere exc ir PN RP OR 99 hist reetyDelrioco ter eq belief eo wl Ha pde e xd 99 11 3 Documentation on multifiles example module 100 E RE 100 11 4 Documentation on internals example module 101 list 2 retype e a ees ces wks eee be REA woe SR MR 101 og 2 modedgb X icut orte pii ue EE An ENS 101 Tova a UE E 102 12 Run time checking of assertions 103 12 1 Usage and interface rtchecks doc 104 13 Unit Testing Library 105 13 1 Additional NOLES uctus o recette oy Pers erate uk d ng d 105 13 2 Usage and interface unittest doc 106 vi The Ipdoc Documentation Generator 14 Installing lpd66 ssw eR RR E REA 107 14 1 Installing the source distribution Ipdoc 107 14 2 Other software packages requi
16. 153 lpdocsrc src autodoc texinfo 112 123 190 112 115 123 137 139 lpdocsrc src comments 145 lpdocsrc src component versions 147 lpdocsrc src distpkg download 139 M machine readable comments 25 32 nain DOY cu Er Pd exp E CR 34 nainfile IS a a 4 nain O cininieker td esegue x SS 3 4 Main ie Sm Loue ih eie teneo buius 3 4 main_absfile_for_subtarget 3 147 149 main_absfile_in_format 2 147 148 main output name 2 sese 147 149 make make rt 112 115 123 129 131 137 143 157 161 make system extra 112 115 123 131 137 141 143 147 157 159 161 Maket ile li niet degere ecce de 18 107 nakeinfoczc ll4ik Aeg RR XVIe V 108 makeinfo l 2 esis tales oes eim Led 131 133 h kertf 1 4 xod EE 131 133 MAN EE 19 20 Manuel Hermenegildo 15 25 41 51 57 61 77 89 107 111 115 123 137 145 155 157 159 Master index Ces ERE dedu TETUR 4 memnber 2 o Sdt de dE e 61 69 74 O EES EE 61 75 messages 112 115 137 141 143 159 161 meta predicate 1 c no RES 19 meta propsS ono A US 3 87 MODS uote s a op ote i bed tat toti 42 52 moded f i iode Ee tvi 42 47 52 nodtype 1 oare rre u a ERR 115 120 module COMO dr EE e H 34 module declaration sse es ess 111 CEET 111 nodule 2 ue noise ic iamdudum aed 111 nshare 1 c Lei deii RIBUS EE 77 80 mut exclusive 1
17. 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 prop assertion eL SEN a EN 45 46 EE 42 45 46 DEP Doi b A aep hr deer ts epe 42 46 87 PLOP abs DEET 88 properties ue Mi Pegs Shoe ee EF E 3 properties of computations 97 properties of execution etateg 97 properties basic icol e dE ee LESE 61 properties native sse eee 77 property new exon ex Sere pened ptite 45 191 property abettaction esses 88 property compatibility oo oo ooo 72 property_conjunction 1 48 49 51 53 property starterm 1 sess 51 53 propfunctor i sc Sh E RM Ad 51 56 providing information to the compiler 46 49 ps2pdfZi ii ae de EE halt AE 131 133 A EE 108 psview is ounce BAM eden 131 132 Q g l 7 Nus ERU AE HR did E TER TRUE 95 99 q 2s o Ludo teo IAS iaa dd ME A d 95 96 R B D EE 95 96 EEN 112 115 123 read file 2 bi slt os E 159 r6 ferencesolr xl c deefe ege wd 29 108 regtype assertiOn eene 60 regtype l asic lk eG ee 59 60 61 74 regtype 2 4 3 eek toes seen der 59 60 87 88 TOSTY PCS 2240 0 Sete bi ote EE 3 57 Teguliar type wins hose ches eae ee 60 regular type definitions 97 regular type expression 005 60 regular types a a aida 57 TOTS ia a 67 77 83 requested file formats 1 131 132 reset output dir db 0 esses
18. Forces local documentation even if hh not exported modedef og A gt gnd A This is a em mode definition the output is ground doc doinclude og 2 modedef og A T TCA gnd A This is a em parametric mode definition pred t A B C D og E list list int int list long B gt gnd O gnd A not fails This predicate uses Gem modes extensively tC A 95 A 2 Some other miscellaneous assertions Chapter 10 An Example Documenting a Library Module 93 Check is default assertion status anyway check pred u 0g check pred u int list mytype int uls d ud hh true status is normally compiler output true pred w list mytype mytype _ w _ doc doinclude is 2 trust pred is Num Expr arithexpression Expr num Num Typical way to describe document an external predicate e g written in C doc doinclude p 5 pred p og int in list int A steps_lb 1 length A pias eter SSS s ES d Version information The ciao el emacs mode allows automatic maintenance 94 The Ipdoc Documentation Generator Chapter 11 Auto Documenter Output for the Example Module 95 11 Auto Documenter Output for the Example Module Author s Anonymous Author 1 Anonymous Author 2 This is where general comments on the file go In this case the file is a library which contains some assertio
19. Quref URL introduces at point a reference to the Universal Resource Locator i e a WWW address URL uref tert URL introduces at point a reference to the Universal Resource Locator URL associated to the text tect email address introduces at point a reference to email address address emailt text address introduces at point a reference to the email address address associated to the text text author tezt tert will be printed in a normal font This command is used to ref erence the name of an author not necessarily establishing the module authorship Date and Version Qtoday prints the current date version prints the version of the current manual Mathematics The following commands are used to format text in mathematical math tert in line typeset the text formula 30 The Ipdoc Documentation Generator begin displaymath marks the beginning of a formula useful for long formulas end displaymath marks the end of the long formula defmathcmd cmd i n def defines the math command cmd taking n arguments which is expanded as def Arguments are denotated as 1 n inside def defmathcmd cmd def defines the math command cmd which is expanded as def with no ar guments Inclusion commands The following commands are used to include code or strings of text as part of doc umentation The latter may reside in external files or in the file being documented The f
20. The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is a comp assertion body g_assrt_body 1 prop 1 DECLARATION This assertion is similar to a pred 1 assertion but it flags that the predicate being docu mented is also a property Properties are standard predicates but which are guaranteed to terminate for any possible instantiation state of their argument s do not perform side effects which may interfere with the program behaviour and do not further instantiate their arguments or add new constraints Provided the above holds properties can thus be safely used as run time checks The program transformation used in ciaopp for run time checking guarantees the third re quirement It also performs some basic checks on properties which in most cases are enough for the second requirement However it is the user s responsibility to guaran tee termination of the properties defined See also Chapter 6 Declaring regular types page 57 for some considerations applicable to writing properties 46 prop 2 entry 1 exit 1 The Ipdoc Documentation Generator The set of properties is thus a strict subset of the set of predicates Note that properties can be used to describe characteristics of arguments in assertions and they can also be executed called as any other predicates Usage prop AssertionBody The following properti
21. W Lin Cost Analysis of Logic Programs ACM Transactions on Programming Languages and Systems 15 5 826 875 November 1993 S K Debray P L pez Garc a and M Hermenegildo Non Failure Analysis for Logic Programs In 1997 International Conference on Logic Programming pages 48 62 Cambridge MA June 1997 MIT Press Cambridge MA S K Debray P L pez Garc a M Hermenegildo and N W Lin Lower Bound Cost Estimation for Logic Programs In 1997 International Logic Programming Symposium pages 291 305 MIT Press Cambridge MA October 1997 M Hermenegildo A Documentation Generator for Logic Programming Systems Technical Report CLIP10 99 0 Facultad de Inform tica UPM September 1999 M Hermenegildo A Documentation Generator for C LP Systems In International Conference on Computational Logic CL2000 number 1861 in LNAI pages 1345 1361 Springer Verlag July 2000 D Jacobs and A Langen Compilation of Logic Programs for Restricted And Parallelism In European Symposium on Programming pages 284 297 1988 J Jaffar and M J Maher Constraint Logic Programming A Survey Journal of Logic Programming 19 20 503 581 1994 D Knuth Literate programming Computer Journal 27 97 111 1984 P L pez Garc a M Hermenegildo and S K Debray A Methodology for Granularity Based Control of Parallelism in Logic Programs Journal of Symbolic Computation Special Issue on Parallel Symbolic Computation
22. dechon ee eo me treo eter vido estet rdg 45 prop 2 decl iicet de rame Eher E VR era 46 entry Kee uo odds eh ats vitre eh et 46 Esa AT EE 46 E EE estela d uda I EA MES RENE SEAE 47 modedef 1 dec cis edm tee ren 4T EE AAA e ee Cooked melde SD aL 47 decida deel EE 47 EE 47 comment 2 NEE EE 48 4 5 Documentation on exports assertions doc 48 cheek pred ores ive RE ee ee uae PEOR De pete 48 trust pred ue no mee te SE d Ae 48 Zement pred shee ed aoe dag eRe oe Ae RENS EE 49 false Pred ege rec ERRAT re teas 49 5 Types and properties related to assertions 51 5 1 Usage and interface assertions props s s 5l 5 2 Documentation on exports assertions props 51 E E RE EE 51 head p ttern 1 prop 2 scene ee re Rt eto 02 complex arg property 1l regtype 52 property_conjunction 1 regtype 53 property starterm 1 regtype oooooooooooo 53 complex goal property 1 Dregtwpe 53 nabody t Prop 51 ee es ter AE a ae Sd s 54 dictionary regtype EE 54 c assrt body 1 regtype 3 e e 54 g assrt body 1 Testy pe scissa eei edet a ae 54 g assrt body 1 PER Pe coser teat tren RS eod 55 assrt stabus T regbype 22570412 oo ED rud 56 assrt_type 1 regtype mese reu E RPSL Eni 56 predfunctor 1 regtype sue o vao soa doen ato 56 propfunctor 1 reglype o 52x werd etd e ac xn 56 docstring 1 prop et ed ER E48 56 6 Declaring
23. imports etc now done solely by calls to c itf library and thus synchronized with ciaoc compiler Manuel Hermenegildo 10 The Ipdoc Documentation Generator Version 1 8 1999 3 24 21 15 33 MET This version completes the port to using the ciao 0 8 modular assertion processing library In addition it includes the following improvements Now if the name of a file being documented ends in doc the doc part is left out when referring to the file in the documentation useful if one would like to place the documentation declarations in different file It is now possible to declare via a comment 2 declaration the intended use of a file which is not a module i e a package user or include file which results in correct documentation of operator definitions new declarations etc The declaration is only needed for user files i e files to be loaded with ensure loaded 1 Separated generation of the manuals from their installation I e gmake install now does not force a gmake all which has to be done by hand This was necessary to ensure correct installation of distributed manuals even if modification dates are changed during installation Previously in some cases generation was triggered unnecessarily New v option allows using quieter by default operation when not debugging New option propmods makes the name of the module in which a property is defined appear in front of the property in the places where the prope
24. io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support y 18 2 Documentation on exports autodoc_structure docstr_node 4 PREDICATE No further documentation available for this predicate The predicate is of type data clean_docstr 0 PREDICATE No further documentation available for this predicate parse_structure 0 PREDICATE No further documentation available for this predicate standalone_docstr 1 PREDICATE No further documentation available for this predicate get_mainmod 1 PREDICATE No further documentation available for this predicate 130 The Ipdoc Documentation Generator get mainmod spec 1 PREDICATE No further documentation available for this predicate all component specs 1 PREDICATE No further documentation available for this predicate Chapter 19 Access to Default Settings 131 19 Access to Default Settings Author s Jose F Morales This module defines the setting values with some default values Note This part needs better documentation JFMC 19 1 Usage and interface autodoc_settings Va e Library usage use_module library autodoc_settings e Exports Predicates e Other modules used System library modules lpdoc_option 1 verify_settings 0 check setting 1 setting value or default 2 setting value or default 3 setting value 2 all setting values 2 get command option 1 requested
25. nent Edison Mera Added option f ConfigFile in lpdoc that uses the file ConfigFile instead the default LPSETTINGS pl Edison Mera Added option ascii that generates documentation in ascii plain format Edison Mera Added help option Is equal to h Edison Mera Added option testsettings to check that the settings file is correctly speci fied Edison Mera Changed generate html pointer 5 by generate html pointer 6 to let it work with any given directory and not only the working directory Edi son Mera The Ipdoc Documentation Generator Version 2 0 1999 8 17 17 28 52 CEST Major change to eliminate need for Makefiles Ipdoc is now a standalone com mand Manuel Hermenegildo Proceeds in parallel with further development of 1 9 Merge pending Previous changes incorporated since 1 8 e New functionality A new parameter PAPERTYPE can be set in the SETTINGS file which controls the format of printed output Manuel Hermenegildo Default pdf viewer is now ghostview sicne recent versions handle pdf well Manuel Hermenegildo Changed default style sheet in order to show lt PRE gt lines with a monospaced font Daniel Cabeza Gras Mode definitions now documented in a separate section The way they are documented has been improved Manuel Hermenegildo References in files now updated only if refs file is not empty Manuel Hermenegildo A copy of the html style sheet is now included in distributions Also Copies
26. sumlist 0 sumlist X R S sumlist R PS S is PS X to describe the type of calls for which the program has been designed i e those in which the first argument of sumlist 2 is indeed a list of integers The property instantiated to intlist 1 might be written as in the following Prolog definition prop instantiated to intlist 1 instantiated to intlist X nonvar X instantiated to intlist aux X instantiated to intlist aux instantiated to intlist aux X T integer X instantiated to intlist T Recall that the Prolog builtin integer 1 itself implements an instantiation check failing if called with a variable as the argument The property compatible with intlist 1 might in turn be written as follows also in Prolog prop compatible with intlist 1 compatible with intlist QO var X compatible with intlist X nonvar X compatible with intlist aux X compatible with intlist aux compatible with intlist aux X T int compat X compatible with intlist T int compat X var X int compat X nonvar X integer X Note that these predicates meet the criteria for being properties and thus the prop 1 decla ration is correct Ensuring that a property meets the criteria for not affecting the computation can sometimes make its coding somewhat tedious In some ways one would like to be able to write simply intlist intlist X R int X intlist R Incidentall
27. 112 resolve bibliograpbu 157 TECHECES iiie e EA vane um i inr ee are 103 rtchecks asrl0C6 ilo s elg ELI e 103 rtchecks callloC l 2 Nur du KN eg ees 104 rtchecks entry Ange SE e e EISE a e 103 rtchecks xlt 24 22 4299 V ID bL pe 103 rtchecks inline lees 103 rtchecks level lesse 103 rtchecks namefmt ooooooooooooo 104 rtchecks oredloc esee essen 103 rtchecks rt pl ue hb RR E tee ted 103 rtchecks tesSt ereer deu se da id o 103 rtchecks tr st i b sew Eu het b e 103 e owe ea eee anes ITE 131 133 run time checks 2 3 no d vals oie eee mE 45 running unit teste 105 192 S S 1 l1 pibe Pe oS 95 98 s assrt body l 44 45 46 47 51 54 SCEIDeO cte E e e RLCMIU AREE 26 S6Ctlonu ci ico Sq A aU USURIS C ie ENS 27 Section EE 123 125 section select prop 3 123 125 SECTIONS 0 3 uc he e pere eee YER 29 secttr diu pd ad 153 154 secttree_resolve B oooooo 153 154 Sequence 2 c teen vene 0p ed 61 69 sequence or Listr eee eee 61 70 setting value ececirigrt ialen iih 131 132 setting value or default 2 131 setting value or default 3 131 132 SETTINGS S ue ord A 5 8 9 29 SETTINGS pl 15 16 18 19 20 21 23 SETTINGS pl generated llus 15 shcexec 2 coss eiua edi IN x ES 159 sharing pieces of tert 30 sharing Set atico Lira herede dais
28. 123 a todoCc errorS iacu wWwELMI cues e ques 155 autodoc escape string hook 5 123 127 137 139 autodoc filesystem esee eses es 147 autodoc finish 1 sees 112 114 autodoc finish hook 1 112 114 137 138 139 145 autodoc gen alternative 2 112 114 autodoc gen alternative hook 2 112 114 137 138 140 145 autodoc gen dockree b 112 113 autodoc html ocio e a EE a A 111 139 autodoc html resources ees 141 autodoc html template sess 143 Global Index autodoc images sse nee 161 autodoc index ssl paw we VER e RE 151 utodoclman ili vA LER A Tv Eu 111 145 autodoc refsdb cc ccc cece eee ee 153 autodoc_rw_command_hook 4 123 127 137 139 145 autodoc Settings EEN ee eee eee e 131 autodoc state c cisci a dE 115 autodoc_structure essu onore nnne eno 129 autodoc texinfo eee eee 111 137 autodoc translate doctree 3 112 113 adtodocformats ere AN eL EP 3 automatic documentation 111 automatic documentation library 3 111 avoiding indentation 005 27 B backend alt formart sss 115 117 backend id 1l 113 115 116 138 139 145 148 backend ignores components 1 115 116 of W af x4 R n aE RSS repo 95 100 basename 1 o ns Vpe EA 113 147 149 ae i cbe LAN ERU esent it 18 basic props 3 25 42 51 61 77 87 95 10
29. 21 4 6 715 734 1996 K Muthukumar and M Hermenegildo Determination of Variable Dependence Information at Compile Time Through Ab stract Interpretation In 1989 North American Conference on Logic Programming pages 166 189 MIT Press October 1989 164 The Ipdoc Documentation Generator PBH97 G Puebla F Bueno and M Hermenegildo An Assertion Language for Debugging of Constraint Logic Programs Technical Report CLIP2 97 1 Facultad de Inform tica UPM July 1997 PBH98 G Puebla F Bueno and M Hermenegildo A Framework for Assertion based Debugging in Constraint Logic Programming In Proceedings of the JICSLP 98 Workshop on Types for CLP pages 3 15 Manch ester UK June 1998 PBHOO G Puebla F Bueno and M Hermenegildo An Assertion Language for Constraint Logic Programs In P Deransart M Hermenegildo and J Maluszynski editors Analysis and Visu alization Tools for Constraint Programming number 1870 in LNCS pages 23 61 Springer Verlag September 2000 Library Module Index Library Module Index A assertions 0B OQ VETERE DS EVE 41 assertions props ee nnne 51 BUT ODOC uu i e eee ee ro ER a STO TE n TA SUR UR 111 autodocs a x cel RI IX ind LPS Gau M E 159 autodoc bibrefs NEEN br eet pev 157 au todoc doctrina eee d bs 123 AULtOd C_erTOTS iii ai a 155 autodoc filesystem sese esse 147 autodoc html ss 26s a a 139 autodoc html resources eee nen 141 autodoc html
30. Arg3 is a list The following properties should hold globally Complies with the ISO Prolog standard All the calls of the form p Arg1 Arg2 Arg3 do not fail Usage 2 p Preds Value Assoc PREDICATE gnd 1 var 1 var 1 undefined property bar 1 baz 1 int 1 int 1 var 1 int 1 int 1 gnd 1 int 1 int 1 var 1 not fails 1 int 1 int 1 var 1 int 1 int 1 list 1 iso 1 not fails 1 Chapter 11 Auto Documenter Output for the Example Module Description This mode is also nice The following properties should hold at call time Preds is a free variable Value is a free variable Assoc is a list The following properties should hold upon exit Preds is an integer Value is an integer Assoc is a list The following properties should hold globally All the calls of the form p Preds Value Assoc do not fail Usage 3 Description Just playing around The following properties should hold upon exit Argl is a list Arg2 is an integer Arg3 is a list The following properties should hold globally All the calls of the form p Arg1 Arg2 Arg3 do not fail All the calls of the form p Arg1 Arg2 Arg3 do not fail 11 4 Documentation on internals example_module list 2 General properties list L T The following properties hold globally list L T is side effect free list L T If the following properties hold a
31. I idx get Lndices orun e e TA 151 152 image e DEE 30 images jLnserting eese 30 images Scaling z4 mice ELSE Sees i 30 lu g urlZ242 yx LLL ARA te CREME ERCRUM 143 include files iad ats hited HEN 22 38 include 1 bens Eee C EELER 22 38 including a predicate definition 30 including an Mage cece neriie 30 including code auc Messe eeu uua 30 including f1168 0 4 DRA E 30 including images ess 30 including or not authors 16 including or not bug Anfo 16 including or not changelog 16 including or not versions patches 16 indentation avoiding 0 27 indep d iid Su pattie tary eee Lae 77 78 79 80 indep 2 atados aid 77 78 79 80 index pages out of order 18 index comment 2 eee 16 112 Infon 5nd gib ier 1 4 19 20 21 24 27 107 info jpathliSt ee ai edu teer 20 infodir base 2 cene 137 Inner nata oko ae ee dh xS 103 insert show toc 3 esee 123 127 Global Index inserting images merei dre tere En 11 1n8t 2 ct Ph a RE t ues ed 61 72 installation eee Moe ZA See de scher GA 3 installation of manuals aa 18 INSTALLATION Updoe wie techs e ei ie 23 instance 2 EE 86 instantiation pGropertileg sss 97 int i Ju dedu 61 62 82 96 97 98 100 101 Interes 53 internalsS 22 25 2 6 B4 pitie e AE e 77 internals manual e cae cue tes es ta 3 22 introduction sit Lees ares eee ek Ea IG 3
32. Modified Makefile and SETTINGS to handle installation of manuals Manuel Hermenegildo Version 0 6 1998 2 10 Added new indices and options as well as more orthogonal handling of files Manuel Hermenegildo Version 0 4 1998 2 24 Added support for nroff m formatting e g for man pages Added support for optional selection of indices to be generated Added support for reexported predi cates Added low level ascii format Added option handling nobugs noauthors noversion nochangelog nopatches modes and headprops literalprops Fixed presentation when there are multiple kinds of assertions Better error checking for includefact includedef Manuel Hermenegildo Version 0 3 1998 2 10 Changed file reader to use Ciao native builtins As a result syntax files and full Ciao syntax now supported Major reorganization of the code to make formatting more orthogonal Now applications and libraries can be components or main files standalone or with components interchangeably includefact new predicate types used libraries now precisely detected docinclude option Manuel Hermenegildo Version 0 2 1997 12 16 Ported to native ciao Version handling selection of indices include Added gen eration of an html brief description for a global index Added unix manual page generation Added support for specifying library paths 1 option for htmlindex and man Installation improved now all files for one application in the same
33. REGTYPE General properties predname P The following properties hold globally predname P is side effect free sideff 2 predname P If the following properties hold at call time P is currently ground it contains no variables ground 1 then the following properties hold globally predname P is evaluable at compile time eval 1 predname P The following properties hold upon exit P is a Name Arity structure denoting a predicate name 72 The Ipdoc Documentation Generator predname P A atm P nnegint A predname 1 Usage predname P Description P is a Name Arity structure denoting a predicate name predname P A atm P nnegint A atm or atm list 1 REGTYPE General properties atm or atm list T The following properties hold globally atm_or_atm_list T is side effect free sideff 2 atm or atm list T If the following properties hold at call time T is currently ground it contains no variables ground 1 then the following properties hold globally atm or atm list T is evaluable at compile time eval 1 atm or atm list T The following properties hold upon exit T is an atom or a list of atoms atm or atm list 1 Usage atm or atm list T Description T is an atom or a list of atoms compat 2 PROPERTY This property captures the notion of type or property compatibility The instantiation or constraint state of the term is compatible with th
34. a string a list of character codes Name is a string a list of character codes Intermediate tree representation for documentation idx get indices 3 No further documentation available for this predicate is index cmd 1 No further documentation available for this predicate codetype 1 No further documentation available for this predicate normalize index cmd 3 No further documentation available for this predicate fmt idx env 7 No further documentation available for this predicate fmt index 3 No further documentation available for this predicate string 1 atom 1 atm 1 string 1 doctree 1 PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE Chapter 27 Database of Documentation References 153 27 Database of Documentation References Author s Jose F Morales This module stores and manages all the documentation references indices sections bibliog raphy etc It includes the generation of the table of contents 27 1 Usage and interface autodoc_refsdb SI e Library usage use module library autodoc refsdb e Exports Predicates compute_refs_and_biblio 1 prepare_current_refs 1 clean_current_refs 1 secttree_resolve 3 Regular Types secttree 1 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc doctree lpdocsrc src autodoc structure lpdocsrc src autodoc_f
35. also allows compiling 1pdoc itself under C LP systems other than the Ciao system under which it is developed 2 7 Accessing on line manuals As mentioned previously it is possible to generate on line manuals automatically from the texic files essentially html info and man files This is done by simply including the corresponding options in the list of docformats in the SETTINGS p1 file and typing lpdoc all We now address the issue of how the different manuals can be read on line 2 7 1 Accessing html manuals Once generated the html files can be viewed using any standard WWW browser e g Firefox a command lpdoc htmlview is available which if there is an instance of a web browser running in the machine will make that instance visit the manual in html format To make these files publicly readable on the WWW they should be copied into a directory visible by browsers running in other machines such as home clip public html lpdoc docs usr home httpd htmldocs lpdoc docs etc As mentioned before this is easily done by set ting the docdir variable in the SETTINGS p1l file to this directory and typing lpdoc install 2 7 2 Accessing info manuals Generated info files are meant to be viewed by the Emacs editor or by the standalone info application both publicly available from the GNU project sites To view the a generated info file from Emacs manually i e before it is installed in a common area type C u M x info This will p
36. ate Ed sens 29 noindent commande 27 Qo command EE 31 Q0 command 3 SEH ht ea ILE Ken 31 Qoe command iz uxor sto RESI pla i nubi 31 ODE command i ic RUBRI TRIPS See dees 31 Bop command ade beie eI eH DEAE 28 0p Command 2e Ar 2458 UII IX UM E 27 pred commande 28 Gref command fics e g eens end a eel abe 29 Oresult Commande Se ed ENN en s 31 Osect Ton command eels a oes Rev be 27 Osp command iia a Saas ee 27 EE EE 31 subsection commande 27 Ob Commande ves ee eh aoe oe Pees be es 31 today commande 29 Ott commands i205 EE 27 u Command 3 4 ecu Soa IIIS 31 Ouref E eem is eet AUR 29 Oy command ated tied hos Ie EPA 31 Ovar Command ed te nem See dla ee dl ee 29 version commande 29 Hf Notes te E E e e 52 EE 52 AA paper c dn Re REFIERE OTT CCS 17 absfile f r aux 3 ij b uibus ix 147 149 absfile for subtarget 4 147 149 absfile to relfile 3 147 149 le EES et venue que iul ei ee aeri s 34 accents rou vg NU eio INI M 30 acceptable modes eee 52 acknowledgements nieres etere a ea lesse 34 EE 29 33 aggregates 112 115 129 131 143 147 151 153 157 all component specs 1 129 130 all indices 2 x boc REL 115 120 all setting values 2 131 132 analyzer output de a ert Pe LR 49 Anonymous Author 1 uote nre ee Is 95 The Ipdoc Documentation Generator Anonymous Author 2 sene 95 aorb 1 e eR WE EU LE UEM 95 A
37. be checked at run time eval 1 PROPERTY Meta predicate with arguments eval goal Usage eval Goal Description Goal is evaluable at compile time equiv 2 PROPERTY Meta predicate with arguments equiv goal goal Usage equiv Goali Goal2 Description Goal is equivalent to Goal2 bind ins 1 PROPERTY Meta predicate with arguments bind ins goal Usage bind_ins Goal Description Goal is binding insensitive error_free 1 PROPERTY Meta predicate with arguments error_free goal Usage error_free Goal Description Goal is error free memo 1 PROPERTY Meta predicate with arguments memo goal Usage memo Goal Description Goal should be memoized not unfolded filter 2 PROPERTY Usage filter Vars Goal Description Vars should be filtered during global control 76 The Ipdoc Documentation Generator flag values 1 REGTYPE Usage flag values X Description Define the valid flag values pe_type 1 PROPERTY Meta predicate with arguments pe_type goal Usage pe_type Goal Description Goal will be filtered in partial evaluation time according to the PE types defined in the assertion Chapter 8 Properties which are native to analyzers 77 8 Properties which are native to analyzers Author s Francisco Bueno Manuel Hermenegildo Pedro L pez Edison Mera This library contains a set of properties which are natively understood by the different pro gra
38. by the expression Y DL93 LGHD96 Meta predicate with arguments steps ub goal Usage steps ub X Y Description Y is a upper bound on the cost of any call of the form X tau 1 PROPERTY tau Types Types contains a list with the type associations for each variable in the form V T1 TN Note that tau is used in object oriented programs only Usage tau TypeInfo Description Types is a list of associations between variables and list of types The following properties hold globally This predicate is understood natively by CiaoPP native 1 86 The Ipdoc Documentation Generator terminates 1 PROPERTY terminates X Calls of the form X always terminate DLGH97 Meta predicate with arguments terminates goal Usage terminates X Description All calls of the form X terminate test type 2 PROPERTY Meta predicate with arguments test type goal Usage test type X T Description Indicates the type of test that a predicate performs Required by the nonfailure analyisis throws 2 PROPERTY Meta predicate with arguments throws goal Usage throws Goal Es Description Calls of the form Goal can throw only the exceptions that unify with the terms listed in Es user output 2 PROPERTY Meta predicate with arguments user output goal Usage user output Goal S Description Calls of the form Goal write S to standard output instance 2 PROPERTY Usage instance Te
39. calls Meta predicate with arguments possibly fails goal Usage possibly fails X Description Non failure is not ensured for calls of the form X Chapter 8 Properties which are native to analyzers 83 possibly nondet 1 PROPERTY possibly nondet X Non determinism is not ensured for all calls of the form X In other words nothing can be ensured about determinacy nor termination of such calls Usage possibly nondet X Description Non determinism is not ensured for calls of the form X relations 2 PROPERTY relations X N The goal X produces N solutions In other words N is the cardinality of the solution set of X Meta predicate with arguments relations goal Usage relations X N Description Goal X produces N solutions sideff hard 1 PROPERTY Meta predicate with arguments sideff hard goal Usage sideff hard X Description X has hard side effects i e those that might affect program execution e g assert retract sideff pure 1 PROPERTY Meta predicate with arguments sideff pure goal Usage sideff pure X Description X is pure i e has no side effects sideff soft 1 PROPERTY Meta predicate with arguments sideff soft goal Usage sideff soft X Description X has soft side effects i e those not affecting program execution e g input output signal 1 PROPERTY Meta predicate with arguments signal goal Usage signal Goal Description
40. dir prepared 2 PREDICATE Usage ensure_output_dir_prepared Backend Opts Description Ensure that the output directories for backend Backend are prepared get_autodoc_opts 3 PREDICATE Usage get autodoc opts Backend Mod Opts Description Get the list of documentation options Opts for the FileBase file The following properties should hold at call time Backend is an atom atm 1 Mod is an atom atm 1 Opts is a list of supported options list 2 autodoc gen doctree 5 PREDICATE Usage autodoc gen doctree Backend FileBase SourceSuffix pts Mod Description FileBase is the module specifier of the source file being documented without extension SourceSuffix is the suffix of the source The output is a file whose contents document the main file based on any assertions present in that file The documentation is produced in the format given by Backend the name of the output file also depends on Backend The formats supported are given by backend id 1 Call and exit should be compatible with Backend is a supported backend backend_id 1 FileBase is the base name of a file without extension basename 1 SourceSuffix is an atom atm 1 Opts is a list of supported_options list 2 Mod is an atom atm 1 fmt infodir entry 3 PREDICATE Usage fmt infodir entry DocSt Version Mod Description Generates a one line description ASCII of the application or library in a file for the
41. directory Manuel Hermenegildo Version 0 1 1997 7 30 First official version major rewrite from several previous prototypes autodocu mented Manuel Hermenegildo Version 0 0 1996 10 10 First prototype PART I LPdoc Reference Manual PART I LPdoc Reference Manual 13 14 The Ipdoc Documentation Generator Chapter 2 Generating Installing and Accessing Manuals 15 2 Generating Installing and Accessing Manuals Author s Manuel Hermenegildo l SES significant parts of this are obsolete They must be updated to describe Ipdoc version This section describes how to generate a manual semi automatically from a set of source files using 1pdoc how to install it in a public area and how to access it on line It also includes some recommendations for improving the layout of manuals usage tips and troubleshooting advice 2 1 Generating a manual from the Ciao Emacs mode If you use the Emacs editor highly recommended in all circumstances then the simplest way to quickly generate a manual is by doing it from the Ciao Emacs mode this mode comes with the Ciao Prolog distribution and is automatically installed with Ciao The Ciao Emacs mode provides menu and keyboard binding driven facilities for generating a stand alone document with the documentation corresponding to the file in the buffer being visited by Emacs This is specially useful while modifying the source of a file in order to check the output
42. eer Ru 22 38 user o tp t 2 oi dee de Sake ER 77 86 using citations cc cece cece eens 16 using_mathjax 1 00008 141 V a UV 53 96 977 98 100 101 variable Dames moi eR APR IB D s 41 Verbatim text hee WR dit ede os 27 verify settings eese sss 131 Versione EE 29 version maintenance mode for packages 37 versi n Ta TEE 36 version date 2 esee 123 127 version descriptor 1 25 32 36 version maintenance type 1l 36 37 39 version number 1 eene 38 version numstr 2 eee 123 127 version patch 2 v RE be ode 123 127 version String sess 123 127 EE 131 132 W WI deen d Abee ab E 95 98 word help Jaate ana epe eV dE 20 word help setup e l cece cece eee eee 20 word hel piel nie rpi iae tee lo A dates 20 ELE egen Un E ached ea CER 115 123 NNN ics tai he d ck hs 1 19 WWW address mel ee eee heey te 29 X EIN e berger erue qus du 17 A E EE E E E 131 132 xdvisize 1 v v dte IRAE 131 132 Y KEE PW ne vum 103 104 YE AA ANE EE 38 194 The Ipdoc Documentation Generator
43. execute the command 1pdoc d getinfo author summary getinfo The filesmyfile_author txt and myfile summary txt will be created If also the option d getinfo format html is used the files will have html extension and content Chapter 1 Introduction 5 1 3 lpdoc usage The following provides the different command line options available when invoking lpdoc This description is intended only for advanced users which might like to use 1pdoc in custom applications Note that the normal way to use 1pdoc is by setting parameters in an SETTINGS file see Section 2 2 Generating a manual page 15 TODO command line options not available here need cooperation with lpmake 1 4 Version Change Log Version 3 0 2011 7 7 16 33 15 CEST e Major redesign of the documentation generator LPdoc redesigned to work internally with a doctree representation a la Pillow Jose Morales A native HTML backend not generated from texi Jose Morales Allow custom website generation from LPdoc documents Jose Morales Two passes for document generation allowing resolution of bibliographical references in all backends including HTML Jose Morales doc structure 1 in SETTINGS allows structure in LPdoc documents sec tions can really be nested inside parts Jose Morales doc _ _ is the recommended syntax for documentation comments now Replacing comment by doc in LPdoc code updated documentation Jose Morales e G
44. exported predicates Ge If you need to write tests for predicates that are spread over several modules but work together then it is best to create a separate module and reexport to the predicates required to build the test This allows performing integration testing using the same syntax of the unit tests 4 The Ciao system includes a good and growing number of unit tests To run all the tests among the other standard tests within the CiaoDE run the following at the top level of the source tree ciaosetup runtests 106 The Ipdoc Documentation Generator 13 2 Usage and interface unittest doc N e Library usage use module library unittest e Other modules used Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support Chapter 14 Installing lpdoc 107 14 Installing Ipdoc Author s Manuel Hermenegildo This documentation is outdated The source distribution contains all the source code and libraries and can be compiled on a supported Prolog system lpdoc is developed using Ciao Prolog The latest publically distributed version of lpdoc is available from http www clip dia fi upm es Software Ciao A newer version in Beta test is often available in http www clip dia fi upm es Software Beta Cia
45. file As mentioned before lpdoc typically generates texinfo files From the texinfo files lpdoc can generate printed and on line manuals in several formats dvi ps ascii html info etc automatically using different publicly available packages Documentation in some other formats e g manl pages can be generated directly by 1pdoc selecting the appropriate options see below lpdoc can also generate directly includes generating parts of a master index of documents which can be placed in an installation directory and which will provide pointers to the individual manuals generated Using this feature lpdoc can maintain global html and or info documentation sites automatically see Section 2 5 Installing a generated manual in a public area page 18 Additionally 1pdoc can provide some data from the main prolog documentation file For this purpose the option getinfo can be used instead of specifying the format This option reads the asked fields from getinfo variable defined in SETTINGS pl or via arguments with d option lpdoc will generate files with main documentation file name as base name followed by one underscore the asked field got from getinfo and the extension The content of each of these files so also the extension is specified by getinfo format that can take the values html ascii texic For example to ask for the summary and the author fields from a prolog file called file pl with 1pdoc documentation we can
46. goal that should succeed after predicate n has been called The idea appears to be simple but note that due to the non determinism of logic programs the test engine needs to test all the solutions that can be tested up to given limits for example a maximum number of solutions or a given time out Properties specifies some global properties that the predicate should meet for example not fails means that the program does not fail exception error a b means that the program should throw the exception error a b and so on But there are some specific properties that only applies to testing specified in the module unittest_props pl for example times N specifies that the given test should be executed N times try sols N specifies that the first N solutions of the predicate predicate n are tested Comment is a string that document the test A convenient way to run these tests is by selecting options in the CiaoDbg menu within the development environment 1 Run tests in current module execute only the tests specified in the current module 2 Run tests in all related modules execute the tests specified in the module and in all the modules being used by this 3 Show untested predicates show the exported predicates that do not have any test asser tion 13 1 Additional notes 1 The test assertions allow performing unit testing i e in Ciao performing tests at the predicate level b The tests currently can only be applied to
47. hold at call time Argl is a free variable var 1 Arg2 is ground gnd 1 Arg2 is an integer int 1 The following properties should hold upon exit Argi is ground gnd 1 Argl is an integer int 1 Arg2 is an integer int 1 Usage 2 Description Non moded types are best used this way Call and exit should be compatible with Argl is an integer int 1 Arg2 is a list 1158 11 r 1 PREDICATE The predicate is of type data Usage r A Description This uses parametric types Chapter 11 Auto Documenter Output for the Example Module 97 The following properties should hold at call time A is a list list 1 The following properties should hold upon exit A is a list of ints list 2 A is ground gnd 1 The following properties should hold globally All the calls of the form r A do not fail not fails 1 p 1 PREDICATE Usage The following properties should hold at call time Argi is a free variable var 1 The following properties should hold upon exit Argl is a list list 1 p 5 PREDICATE Usage p Arg1 Arg2 Arg3 Arg4 A Call and exit should be compatible with Arel is an integer int 1 Arg3 is a list of ints list 2 The following properties should hold at call time Arg2 is currently ground it contains no variables ground 1 Arg4 is a free variable var 1 A is currently a term which is not a free variable nonvar 1 The follow
48. ii o See ees 15 generating from Emace sse ssssss 15 generating manuals s sss elles 15 German Puebla 46x aid Lu t ud A1 get autodoc opte 112 113 get cache dir 2 ege eee RR AS AES Ede 147 148 get command option 1 131 132 get doc 4 4 vut vod EI e Re 115 120 peti doc fietd 3 o erg ee 115 120 get doc field dict 3 115 120 get first loc for pred 3 115 121 getiidxbase Vivi RESRMN 151 Eget idxsub 23i veste eae RS 151 Eget mainmod 1 J c oric ara pede 129 Set mainmod specil oo 129 130 getzmod doc 3 cob ob EVE EIS 115 120 get output EEN 147 148 Eget subbase S icc net eae hehe hes 147 149 a A EE EE E E T 8 BA Ee bus 107 a eter 61 65 96 97 98 99 100 102 ndsti Pen eorr ie Par ait et 61 65 66 The Ipdoc Documentation Generator GNU general public license 1 GNU Make rts hs epe E Ee A 107 ground 1 65 66 68 69 70 71 72 73 77 78 80 97 99 101 BUNZEP EE 107 H hard side ffects cer unes 83 have choicepoints l 77 79 Neadspatvern oe sre hie ses vee He een 51 52 55 head_pattern 1 04 48 51 52 55 hiord rt 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 EM o nea ipea peret LEE ee vs 4 HTML lt lt obit rada EEN 1 html index pages ee ee deel ieee et eee 18 htulview d eg EN EE 131 133
49. index N e Library usage use_module library autodoc_index e Exports Predicates get_idxsub 2 get_idxbase 3 typeindex 5 idx_get_indices 3 is_index_cmd 1 codetype 1 normalize_index_cmd 3 fmt_idx_env 7 fmt_index 3 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc filesystem lpdocsrc src autodoc doctree lpdocsrc src autodoc structure lpdocsrc src autodoc refsdb System library modules dict lists aggregates Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 26 2 Documentation on exports autodoc index get idxsub 2 PREDICATE No further documentation available for this predicate get idxbase 3 PREDICATE No further documentation available for this predicate typeindex 5 PREDICATE Usage typeindex Type Index IType Name Comment Description Index is the info index name in which objects of type Type go Name is the title of the index in the documentation IType is the type of index an empty string means normal codeComment is a comment to include before the index 152 The Ipdoc Documentation Generator The following properties should hold upon exit Type is currently instantiated to an atom Index is an atom IType is
50. is Ies hx onera ward 163 Library Module Index o oo oooooomo oo 165 Predicate Method Index ooo oo ooooo o o 167 Property Index x29 geht 33k Rr AX ee e 169 Regular Type Index soe tes RR E 171 Declaration Index eeoEE S a retine qx dora 173 Concept Index Ev ee EE E or ues 175 Author Index acs Joe eer ist oe RUD ET RUE eR a 177 Global Index da ER RR SCORSA AUS 179 xi Summary 1 Summary lpdoc is an automatic program documentation generator for C LP systems lpdoc generates a reference manual automatically from one or more source files for a logic program including ISO Prolog Ciao many CLP systems It is particularly useful for documenting library modules for which it automatically generates a description of the module interface However 1pdoc can also be used quite successfully to document full applications and to generate nicely formatted plain ascii readme files A fundamental advantage of using 1pdoc to document programs is that it is much easier to maintain a true correspondence between the program and its documentation and to identify precisely to what version of the program a given printed manual corresponds The quality of the documentation generated can be greatly enhanced by including within the program text e assertions types modes etc for the predicates in the program and e machine readable comments in the literate programming style The assertions and com
51. of sectioning documentation comments doc C with C one of title section and subsection Currently the section and subsection comments are still ignored by LP doc Jose Morales e Support for mathematical notation experimental new math and begin displaymath end displaymath enviro ments are supported see the documentation for more details Jose Morales In doc umentation strings single must be escaped e g math lambda Jose Morales Supported in both the texinfo and HTML using MathJax backends Jose Morales Added defmathcmd Cmd N Def and defmathcmd Cmd Def both for texinfo and HTML backends Those LPdoc commands define new mathematical environments equivalent to newcommand Jose Morales Version 2 1 2004 10 28 16 38 17 CEST Last version before moving to subversion 1 9 and 2 0 were merged 1 9 based on makefiles is deprecated e New functionality Use of doc declarations as a shorthand for comment now allowed Manuel Hermenegildo Made xdvi viewer ps viewer and xdvi zoom size be paramenters the latter since new versions of xdvi display sizes differently than old ones Manuel Hermenegildo Processing options can now be set for each file independently Manuel Hermenegildo Proper pdf generation now achieved in most cases thanks to newer versions of dvips Manuel Hermenegildo Added option c Target in Ipdoc that treats Target as a separate compo
52. of the documentation string image epsfile including an image at point contained in file epsfile The image file should be in encapsulated postscript format image epsfile width height same as above but width and height should be integers which provide a size in points to which the image will be scaled Accents and special characters The following commands can be used to insert accents and special characters Chapter 3 Documentation Mark up Language and Declarations 31 o gt 0 0 gt Q io gt o gt Q io gt 0 o 0o gt 0 gt 0 o gt u o gt 0 Qvio gt H o t oo gt 60 c o gt Q d o gt 0 Qb o gt o oe gt 0e CDE gt E Cae gt 8 CAE gt E Qaa CAA gt o gt OU gt 0 el gt L gt LE ss gt D Q gt i Q gt j i gt 1 0j gt Ccopyright iso gt Qbullet gt Oresult gt gt Usage stringcommand CO Description CD is a structure denoting a command that is admissible in strings inside assertions 32 The Ipdoc Documentation Generator version descriptor 1 REGTYPE A structure denoting a complete version description version descriptor version descriptor version Version Date version number Version ymd date Date version descriptor version Version Date Time version number Version ymd date Date time struct Time Usage version_descriptor Descriptor
53. regular types 57 6 1 Defining properties 0 0 eee hn 57 6 2 Usage and interface regtypes doc 59 6 3 Documentation on new declarations regtypes_doc 60 regtype 1 decl ia it er teo eee 60 reetype 2 decl sd Rude eC DE PER SIRE 60 7 Basic data types and properties 61 7 1 Usage and interface basic_prOpS ooo oooooooomooo 61 7 2 Documentation on exports basic_propS 0oooo oooo oo o 61 termi regtype 10 EE 61 Tit LEE arms Tes hcec UE Staa A 62 nnegint 1 r gtype ves A cos 62 Ht 1 reglyDe fessa dee oes OU ee Ce E 63 A a n a o R E Ea 63 EE EE 64 EE DEE E yo iore boe dece mL en aci is 64 E nosse e eR IER VOL NU 65 gridstE LT peli dia 65 constant l regtype i venue mn CE RR ee ee ae 66 eollable l regbype occ Eege d ees Tiu ess 66 operator specifier 1 regtype 0 oooooooo o 67 list Tes A E 67 list 2 reptvpe EE 68 e A aee a E r A e a 68 member 2 EE 69 sequence 2 regtype 00 cece eee cece eee o 69 sequence_or_list 2 regtype oooooooomoooo 70 character code 1 regtype sseesseseeess 70 sung zl eeh ce O eae 71 n m code l regtype ccce S Re 71 predname L regtype c ve get rime a 71 atm or atmlist 1 regtype ceret ied see newer 72 COMPAL PLOP ge ech EE E bore rs 72 St Prop So vd eee er Ox ia Ec e 72 SL PEO ld IES 73 deprecated prop io a DE 73 uot urth
54. source files for a logic program including ISO Prolog DEDC96 Ciao Bue95 many CLP JM94 systems It is particularly useful for documenting library modules for which it automatically generates a description of the module interface However lpdoc can also be used quite successfully to document full applications and to generate nicely formatted plain ASCII readme files A fundamental advantage of using lpdoc to document programs is that it is much easier to maintain a true correspondence between the program and its documentation and to identify precisely to what version of the program a given printed manual corresponds 1 1 Overview of this document This first part of the document provides basic explanations on how to generate a manual from a set of files that already contain assertions and comments Examples are given using the files in the examples directory provided with the 1pdoc distribution These instructions assume that lpdoc at least the executable and the library is installed somewhere in your system Installation instructions can be found in Chapter 14 Installing Ipdoc page 107 Other parts of this document provide e Documentation on the syntax and meaning of the assertions that 1pdoc uses those defined in the Ciao assertions library PBH97 PBH98 Bue98 These include comment assertions containing basically documentation text formal assertions containing properties and combined assertions e Docume
55. template sess 143 autodoc images mido hl nce E So rer DOS 161 autodoc index ost ses eb oe Ib E 151 autodoc MAN BEE 145 autodoc refsdb lesen 153 autodoc settings esee 131 autodoc state d i v A RV LAUDES 115 autodoc_StIUCtUTO orere s o mei Demie nnen ia Ken 129 autodoc texinfo creuse cesed oka E SE pala 137 B basic EE 61 C elei eh EE 25 165 E example module 2 9 v eR d Peewee 95 Generating suec pa E eed diras 15 L lpdoc examples e eee dere 89 lpdoc install errot ree one DR Rs 107 M meta PEPE dai rt eR NIS eS 87 N NATIVO EE 77 EENS enr A Ef eet ses 57 rtchecks et hea Pee ROE EE qe ete 103 U unittest o ome dida 105 166 The Ipdoc Documentation Generator Predicate Method Index Predicate Method Index A absfile for aux 3 eene 149 absfile for seubtarger i 149 absfile to relfile sess 149 all component specs 1 s esses 130 all indices 2 us lo ad bode es 120 all setting values sss slsseese 132 ascii blank lines 2 o clie kv 159 autodoc compute grefs 113 autodoc_escape_string_hook 5 127 137 139 a todoc finisSh 1 ere dS Lid 114 autodoc finish hook 1l 114 138 139 145 autodoc gen alternative 2 114 autodoc gen alternative hook 2 114 138 140 145 autodoc gen dockree b esses 113 autodoc rw command hook 4 127 137 139 145 autodoc translate doctree 3
56. the files in which the citations will be searched for All the references will appear together in a References appendix at the end of the manual If you are not using citations then select the nobiblio option on the main file which will prevent an empty References appendix from appearing in the manual Chapter 2 Generating Installing and Accessing Manuals 17 e startpage default value 1 allows changing the page number of the first page of the manual This can be useful if the manual is to be included in a larger document or set of manuals Typically this should be an odd number e papertype default value afourpaper allows select several paper sizes for the printable outputs dvi ps etc The currently supported outputs most of them inherited from texinfo are afourpaper The default usable for printing on A4 paper Rather busy but saves trees afourwide This one crams even more stuff than afourpaper on an A4 page Useful for generating manuals in the least amount of space It saves more trees afourlatex This one is a little less compressed than afourpaper smallbook Small pages like in a handbook letterpaper For printing on American letter size paper afourthesis A thesis like style De double spaced wide margins etc Useful for inserting lpdoc output as appendices of a thesis or similar document It does not save trees e Type lpdoc all to generate all the formats defined 1pdoc dvi lpdoc html lp
57. the size of argument X size metric 3 PROPERTY Meta predicate with arguments size metric goal Usage size metric Head Var Metric Description Metric is the metric of the variable Var for any approximation Chapter 8 Properties which are native to analyzers 85 size metric 4 PROPERTY Meta predicate with arguments size metric goal 7 7 Usage size metric Head Approx Var Metric Description Metric is the metric of the variable Var for the approximation Approx Currently Metric can be int 1 size 1 length 1 depth 2 and void 1 steps 2 PROPERTY steps X Y The time in resolution steps spent by any call of the form X is given by the expression Y Meta predicate with arguments steps goal Usage steps X Y Description Y is the cost number of resolution steps of any call of the form X steps 1b 2 PROPERTY steps lb X Y The minimum computation time in resolution steps spent by any call of the form X is given by the expression Y DLGHL97 LGHD96 Meta predicate with arguments steps 1b goal Usage steps 1b X Y Description Y is a lower bound on the cost of any call of the form X steps o 2 PROPERTY Meta predicate with arguments steps o goal Usage steps o X Y Description Y is the complexity order of the cost of any call of the form X steps ub 2 PROPERTY steps ub X Y The maximum computation time in resolution steps spent by any call of the form X is given
58. upon exit T is a list Usage list L Description L is a list 99 PREDICATE list 1 list 1 gnd 1 not_fails 1 PREDICATE list 1 list 1 gnd 1 not_fails 1 REGTYPE sideff 2 ground 1 eval 1 is_det 1 list 1 100 The Ipdoc Documentation Generator 11 3 Documentation on multifiles example module p 3 A general comment on the predicate The predicate is multifile The predicate is of type dynamic General properties If the following properties hold at call time Argi is ground Arg2 is a free variable Arg3 is a free variable The following properties should hold at call time foo Arg1 Arg2 is an acceptable kind of bar baz Arg3 If the following properties hold at call time Argi is an integer Arg2 is an integer Arg3 is a free variable then the following properties should hold upon exit Argi is an integer Arg2 is an integer Arg3 is ground If the following properties hold at call time Argi is an integer Arg2 is an integer Arg3 is a free variable then the following properties should hold globally All the calls of the form p Arg1 Arg2 Arg3 do not fail Usage 1 Description This mode is nice The following properties should hold at call time Argi is an integer Arg2 is an integer Arg3 is a free variable The following properties should hold upon exit Argl is an integer Arg2 is an integer
59. which is not a free variable nonvar 1 B is a free variable var 1 B is rather long long 1 The following properties should hold upon exit E is ground gnd 1 C is ground gnd 1 A is ground gnd 1 The following properties should hold globally D is not further instantiated not further inst 2 All the calls of the form t A B C D E do not fail not fails 1 Chapter 11 Auto Documenter Output for the Example Module s 1 Usage s A The following properties should hold at call time A is a list The following properties should hold upon exit Ais a list A is ground The following properties should hold globally AII the calls of the form s A do not fail q 1 Usage 1 q A Description Foo The following properties should hold at call time A is a list The following properties should hold upon exit A is a list A is ground The following properties should hold globally All the calls of the form q A do not fail Usage 2 q A Description Not a bad use at all list 1 General properties List L The following properties hold globally list L is side effect free list L If the following properties hold at call time L is currently ground it contains no variables then the following properties hold globally list L is evaluable at compile time All calls of the form list L are deterministic list T The following properties hold
60. 1 tee de WERE be Zeen assrt status 1 2 2 ed Ga AL ae e assrtcty pes Ieri ere es He RSEN atm DENG atm or atn list 1i Gee aile hale Deeds B CLASSE body EE Callable diario ii at Roce character_code l ooooooooooooo o complex arg property 1 ss eees complex goal propertu l sess constant 1 2 2 8402449 4 hee eee Lal D dictionary locaciones a A UU ENTUM WE RE TM doclink 1 ei RT RE UAR RM ES docstate 1 c uobis ues eU ede NUES doctokens 1 ive be e Rene doctree 1 ccu ees DURER IP VENE ERA F filename 1 4 htt A dida be BEES filetype il c ies kelke dE Re ahaa ees fla p values 1vX lb e ds Be E Ee CEL NAAA SI AN A G gcassrt body i i id dee di EE CEET 173 L Jist iv uus busque E A nds 67 99 list 2 i i udi ue DU LU een US 68 101 list or aorb 2 252 4 pe E eL 96 M mnodtype 1 o a RN gelu 120 N ALISTAS ute edv en End ERE ES 68 nnegint 4i 52 A MES 62 num AA Ces toe ERES RS 63 num Code 1 secu a ER eg 71 operator Specifier l 67 P predf nctor i tk Me cay pied ei ee 56 predname E TEE 71 property conjunction 1 s sess 53 property Starter 53 propf nctor ic ifs aa dee pe recs OH 56 s ssrt body l creep ere PDAs 54 BESETZEN eim wakes 154 Sequence 2 eege ae urs A pe p ape 69 sequence or Lisr eee 70 string ls ees due ET REIR ENS 71 SELUCE 1 cies ane ee ke or RR ex aee 64 s btarget 1 4 mia RR TERT 14
61. 113 B backend alt format 2 eee 117 backend ignores components 1 116 o i us teo Eat hne Ue dC 133 bind dict varnames 1 sees 120 C callm 2 9 Feed ui Re ERN Ub EE 88 check WEE 48 check Settins Litoral ed Rete 131 lean O ota tdo 149 clean_all_temporal 0 000 00s 149 clean current refs 1 ess 153 clean docs no texi 0 eee 149 clean docsttr ees 129 clean fs db O e Ze deg REIS Renee d 148 clean image cache 161 clean intermediate 0 eese 150 clean tex intermediate 0 150 cud type 1o ue RIS p ieee ee ws 123 codetype DEE 152 compute refs and biblio 1 153 convertce ic otov a e V EH aes 133 167 D doc id type 3 l sc A LI Wed wie i ue Sd 32 dociink at 2 repel ben Events 125 doclink is local 1 sees 125 docst backend cese eese 117 docst currmod 2 een 117 docst currmod is main 1 s 118 docSt gdata 3 oot sr d EE D 119 docst gdata clean t esses 119 docst_gdata_query 2 04 119 docst gdata duerg sess 119 docst gdata restoreil 119 docst gvar restore 2 cs eeeess 120 docst gvar Saue sss eene 120 docst has index 2 eee 120 docst inputfile 2 v ra 117 docst_mdata_assertz 2 119 docst mdata clean 1 c cuv NEE LU 119 docst mdata save 1
62. 117 doest backend 2 pred ic erer EA erla rete ehe 117 dotst currmod 2 pred 5 duse Ehe EE ERES 117 docst set currmod 3 pred 4 044 saved tetro 117 docst opts 2 pred ve eus 2 5 eee ete 117 docst set opts 3 pred patada ek rd Evam 117 doecst anp ttile 2 pred aicut d re eth tra 117 docst new no src 4 pre HT docst new with src 6 red 118 docst new sub 3 pred sese 118 docst message 2 pred ooooooooococommmoo 118 docst_message 3 pred 0 0 e cece eee ee 118 doost OpE 2 EE 118 docst_currmod_is_main 1 Drei 118 docst_no components 1 red 118 docst modname 2 pred ug eves erga eens 118 labgeninit 1 pred ara 118 labgen clean 1 pred oievseisqde eec reali eaten 118 labgen get 2 pred sio eier EEN EET 118 docst mvar lookup 3 pored 119 docst mvar replace 4 pred eee 119 vil docst mvar get 3 pred 4 2 erue 119 doest mdata clean 1 pred so 455404 eret 119 docst_mdata_assertz 2 red 119 doest mdat save 1 pred eee eed ents es 119 docst gdata 3 pred scettr A 119 docst gdata query 2 pred bred ee Pret E 119 docst_gdata_query 3 pred ooooocoooommm 119 docst_gdata_restore 1 pred o o oooooooo o 119 docst gdata clean l pred erede 119 docst_gvar_save 2 red 120 docst gvar restore 2 pred eee eee 120 doest has index 2 pred seres 120 allitidices 2 pred Loria oea a a 120 get doc 4 pr va 120 get doc field 3 pr
63. 15 117 docst_new_sub B3 o oooooo o 115 118 Global Index docst new with src 6 sess 115 118 docst no components 1 115 118 do st opt 2 ee ere RR EAR NEEN 115 118 docst opts 2 e o docs aster e dE eg ade 115 117 docst set currmod 3 ees 115 117 docst s t opts 3 ues da 115 117 docstate Argi o suas e arnes 153 154 docstatelArgl iii dida 126 docstate DocSt 113 126 138 139 145 157 161 docstate 1 113 115 117 126 138 139 145 153 154 157 161 docstr node 4 v da s 129 docstring 1 25 32 33 34 35 36 41 48 51 52 54 55 56 d ctokens 1 cioe ub EN bv 123 125 doctree 1 123 124 126 127 138 139 145 152 154 doctree concat 3 eese 123 124 doctree insert before section 3 123 124 doctree insert end 3 123 124 doctree is empty 1 sss 123 124 doctree prepare docst translate and write 3 uds Ute tee PARAS dia Moe au Beaute et eL 123 126 doctree Putears b sse ese 123 125 doctree restore 2 eee 123 125 doctree save 2 eee 123 125 doctree scan and save refs 2 123 126 doctree sinplifv 123 125 doctree to rawtext 3 ss 123 126 doctree translate and write 3 123 126 docum nt Structure ee a ie eee D 16 documentation format 111 documentation strings sess s 32 DOTES Cia ove Rt
64. 2 DECLARATION This assertion is similar to a test 1 assertion but it is explicitely qualified with an assertion status Non qualified test 1 assertions are assumed to have check status In this context check means that the test should be executed when the developer runs the test battery Usage AssertionStatus test AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is a predicate assertion body s_assrt_body 1 comp 1 DECLARATION This assertion is similar to a pred 1 assertion but it only provides information about the global execution properties of a predicate note that such kind of information is also con veyed by pred assertions The described properties might be conditioned to a particular way of calling the predicate For example the following assertion specifies that the computation of append 3 see lists will not fail if it is called as described but does not compel the predicate to be called that way comp append Xs Ys Zs var var var not fail Usage comp AssertionBody The following properties should hold at call time AssertionBody is a comp assertion body g_assrt_body 1 comp 2 DECLARATION This assertion is similar to a comp 1 assertion but it is explicitely qualified Non qualified comp 1 assertions are assumed the qualifier check Usage AssertionStatus comp AssertionBody
65. 4 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 basic props Pl imita a uu VES 103 basic Drops regtrpe i 97 basiccontrol 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 DABA ES aia e dad BACH 100 A EE 95 100 bibliographic citations 29 bibliographic entries 0 005 16 bibliographic entry sese 29 O tee Qt 11 16 29 108 bibtex 1 onic eee REY ap ont pen 131 133 bind dict varnames 1 s s 115 120 bind ins 1 EE Ee 61 63 69 75 blank Les sn ea Re E e AN 27 bold WE 27 185 C c_assrt_body 1l 43 44 46 51 54 EAT A tae EE 9 CALC A EA as 102 Call et EEN ee REN ee ee SE N 54 RER EE EE A a a 87 callable i 1 zo ee Mash den 61 66 82 87 88 Cal Ime esee erster de d Se 87 88 Calls asseftioh ees bea e AR aS 43 44 CAML S Ac wh tate cath ceat tee 42 43 44 46 A nea E EE a a aiaa 42 43 character string ares rarere p ig oo A GS 41 character code 61 70 71 check assertion iix ala b EP ET 48 Check Miri A Rv e dene va 82 check 1 2 253 454 x Rep Lb E Ee 42 48 49 check setting l c es cub 131 Ciao we Scat Sots ee ed 3 15 19 20 89 107 Ciao Emacs mode vic EeRDR E 15 Cl806 Uo Mor REN Ue eV ene y Ears 8 9 ciaodesrc makedir ConfigValues 137 Ee 77 GJpegos A ee ola eet 108 eat E E EE 147 149
66. 4 SUCCESS Lucia a 42 44 46 Success 2 cv uaque b es 42 44 supported documentation formats 113 supported file format 1 147 148 supported option sess 115 116 synopsis section of the man page 16 syntax of formatting commands 26 system 77 112 115 137 139 143 147 159 161 system modules 16 system info 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 T EE S Na NUM Ades IRA TE me 95 98 Ch ty seed setae anh aeu LES Pede IR ga tane 107 A NT 77 85 o bee vaa uu s 33 61 69 113 term basic 25 42 51 59 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 term compare 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 term typing 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 Eerginates t REENEN DRE 77 86 terms 112 115 123 129 137 141 143 147 157 161 terms never dere asse a 61 77 ee VALS EEN ee te dE EE EN eite NL 77 Global Index test dssertion c ome v have day 44 45 105 test i kie A 42 44 45 test 2 cv dil NEU Np ttle anes s 42 44 test type 2 b Ru 62 63 64 65 77 86 EE 24 108 TG T C DE E 9 tex doc uc ea RELIER oh EPA 131 133 texec asse
67. 4 io aux 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 io basic 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 18 255 0 bI RUD ML eU t P 102 is det 1 62 63 64 65 66 67 68 77 79 99 is index cmd 1 sees 151 152 is nonempty doctree 1 123 124 is version 1 9e EE 123 126 is0 1 oe INE E 10 61 73 100 italics facec i1 p AG nk d TEM uM 27 item in an itemized list 26 Itemized TTS GE 26 J Jose F Morales 111 115 123 129 131 137 139 141 143 145 147 151 153 157 159 161 K Keyboard key een pr e ales E 27 known format 1 een 161 L labgen clean ne oni nei Te t 115 118 labgen Set Ae at 115 118 labgen init l a bn dee 115 118 Dalex2 In ise etd deed t T n ep von 26 LaTeX notation is i eg ie 29 letter size pap r ooo yore A Ekana n 17 Tibraryos lai heen a ME NECEM Lass 3 library basicmodes ssssss esses 52 189 library isomodes e spree Teenie e pio 52 linear l EEN 77 80 Linux AE de o EVI 107 108 list 1 61 67 68 69 72 82 96 97 98 99 100 101 list 2 37 38 53 61 68 97 98 101 113 161 list e A ERRAT Rie 95 96 lists 42 45 77 95 112 115 123 137 139 143 145 151 153 157 159 ER Ge ET 104 literate pr
68. 6 doctree to rawtext 3 Ipored 05 126 doctree_translate_ and_write 3 pred 126 escape string 4 pred is leat os eee eee et 126 is_version 1 EE 126 version p tch 2 pred vis ses yes ees RENE cars E dS 127 versi n date 2 EEN 127 version mitnstr 2 pred 1 5 2 ir eds 127 version surmg 2 pred eer weet e rt 127 msert show toc 4 pred Srt dee 127 17 3 Documentation on multifiles autodoc_doctree 127 viii The Ipdoc Documentation Generator autodoc rw command hook 4 pred 127 autodoc escape string hook 5 pred 127 18 Handling the Document Structure 129 18 1 Usage and interface autodoc structure 129 18 2 Documentation on exports autodoc structure 129 docstr node 4 pred i43 Eo Eee eer Ee 129 cleancdocstr Dred cesis pue br d AEN Ee ER 129 parse_structure O pred ee cece ee ee eee 129 standalone docstr l pred 2 vein es 129 get mainmod 1 pred ect cer RE E 129 get mainmod spec 1 pred oooooooomommoo 130 all component specs 1 pre 130 19 Access to Default Settings 131 19 1 Usage and interface autodoc settings 131 19 2 Documentation on exports autodoc_settings 131 lpdoc_option 1 pred EE 131 verify_settings 0 pred gitt du met eR 131 check setting Ch pred e oie cae eek pe REM 131 setting value or default 2 pred sessusrusu
69. 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 exit assertion EE E ee ete UN Yir 46 AT e TEE 42 46 47 o csse seam e re eaa VO es 42 47 exported Dredicates ess 00s eee 111 GE 103 F fails 40d DABIS 77 79 false assertlon e debe wei E dues 49 Pals vene A A Y 42 49 fastformat a aria 137 139 145 file_format_name 2 147 148 file_format_provided_by_backend 3 147 148 file_utils 77 137 139 141 143 157 filename Lita as 147 Filename cio memes 112 115 129 188 fil typ i EE 25 32 38 filter 2 eh tee in Eee tm s o ves 61 75 finite solutions 1 esses 77 79 PUTO OX sie ar aden tie d S Ee alee uu 19 fixed format textual its 27 fixed width font 242 2 os Secs fa acus nes 27 Plage ah EES 61 75 flt Ti its dette ie eben neat m on 61 63 fmt html template 3 9 ee Lb Reus 143 fmt dx env T d natem unir 151 152 fmt index 3 c nem patus 151 152 fmt infodir entry 3 s 112 113 f00s cu cas arene ohn tuis auti b TV as 95 AA Manna a E A 100 footnotes s he EE 27 formatat EE 112 123 137 157 161 formatting commands 3 25 41 framed Dorai ueni lee b pex a dd UMP 27 Francisco Buens usse 41 57 77 87 func 1c soe DUC AVIS EE AE 55 G g assrt body i EE 45 51 55 generate html pointer b 7 generate_html_pointer 6 7 Generating
70. 7 61 77 89 107 111 115 123 137 145 155 157 159 P Pedro Lopes As i oe de ES ME ER 57 77 182 The Ipdoc Documentation Generator Global Index Global Index 183 This is a global index containing pointers to places where concepts predicates modes prop erties types applications etc are referred to in the text of the document ium teer mE ett mated a s mde EE 6 MOY Ds C DPI oie Sea dE eu oes Hs 69 Prop EE 88 E e Re Qo be DER aa edie aes Ee 53 Cautodoc structure e 153 BEER 16 29 EST Cox pie oh ug beste pe LN M I usq 18 e RE 18 EE 42 SY Dot eh ces SAS tn ee ed we AS 32 33 34 35 36 37 38 BOY Uus oy echo ed dE eli ghee tates 42 Q1 command ER 31 Q command EE 31 0 command usu da CR usns 31 Q0 command uere RU MERE Dua Y RE EY e 31 Q command 24 x tt RERBA MAS SOLO 31 07 command lub pee e edu Ya idee drew 31 QS command iu ry seas A 31 07 Commando svo uires sae und de oS og hata 31 Q command urere rre ECL Pr Ure ride ate t 31 Q command usuewensssteuade kie pu Reli 31 aa commando uu ele EET AE Eg 31 GAA command ria EE ie e EN 31 Qae Command iss s eu ec hne eU 31 QAE command 335 ae A oye AE 31 Qapl Commande ek E ER ERR eins 28 author commande 29 Ob Commande EA EEN d ee LU LEE RSS e 31 beginfalert commande 27 begin cartouche commande 27 begin description command 26 begin displaymath command 30 beginfenumerate comm
71. 7 T Berm 1 Lnisciziesg emt yq ale erh aere d Ae 61 time Struct 1 cs EE rl See 39 tree 0f 2 LIN ld aee te RE Ee se 96 version descriptor 1 s eesses 32 version maintenance type 1l 39 version number 1 eene 38 174 The Ipdoc Documentation Generator Declaration Index Declaration Index Calls di ERA IUS MB sus 43 calls 2 EE 43 COMO EE 48 COMP Li vnPHpix b Aran RE EUR er ree Me 45 COMPIZ ee REED RUSO ERR NERA 45 D dec ld EN E S 47 AAA A A be 47 Oe EE ere EE 32 AT E OTI Lt rie du DR IN UN E 46 E EE 46 SEET She et EN cta WS rid 47 M modedet ii Myrer at ce feta oho A 47 175 P predi ases mi abet ees ui dA LpRe ce REA 42 pred 2 s vbsvedp ier UU A eg 43 propietat did de WSO asas Me 45 pEop42 d pei OA 46 regtype i3 t o v agestbeibgU ee Spot bars 60 regtype 2 be EF epee acne P YS 60 success 1 olas oo iuo NOM esie 44 TEE 44 T A loads berre de Yaw te ee ed gu E Exe Yen 44 HA A dE A bed See A A 44 texec d icu athe ns Ades E Meque s 43 texec 2 e ib Leu crest du Rr cer euer fo Eo Mut 43 176 The Ipdoc Documentation Generator Concept Index Concept Index Ql command iii e RE xs 31 Q command 7 ev Ae le e Me E 31 Q command 2c UP HEP EAE IRR 31 EI comriand arar ere ee aa 31 Q command a a d ES EIS qus 31 Q commoaid uilns vp RIP QVIS EYE Se 31 Q command oy me RS Ee ts 31 Q command rRBhipR PRESS 31 O command xo Ee ted Ren RATS 31 Q command o
72. 80 SHOVE shes 65i e ia 104 sideff 2 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 99 101 Sideffohard 1 Lita obs c ee eas 77 83 sideff pure d ee VICEM ER RSS 77 83 sideff soft 1 u40 els eat oe heen ee 77 83 CR EE 77 83 SIA Mii ba ate se EPA 77 83 Slgnals 2 pees bebe vt uM what weet es 77 84 SAIZ EE 77 84 SiO TEE EE 77 84 SOLID DA e dis bd e 77 84 size MOE anan ae Booed Sr et he hes 77 84 Size metric 4 i X a A ds 77 84 gize EE 77 84 Le 77 84 Soft side effects 3 cscs ER ee bene eee 83 Sol tions 2 r iaa Ae AE det 77 82 SORT chives a dar aede iret EISE d 77 space extra Lines 27 spcae horizontal fill 27 special characters EN 30 ER rabia ia 41 standalone_docstr l oooooo oo 129 Steps 2 e A A 77 85 STEPS TD once were aoe aa Ae 77 85 97 The Ipdoc Documentation Generator Steps 0 2 22 57 ehh be a A IMS 77 85 Steps b 2 o ee anges it 77 85 Streams oss erp epp E RA e Ere s 77 streams_basic 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 string 1 61 71 112 116 126 143 152 154 161 stringcommand 1 25 26 48 52 54 55 56 SLIDES A a on 25 EE 27 SEU Mia tts GUN NER UY 61 64 65 s bsection g 0 ee weite x e xs 27 Subtarget list cuir tate iio Seki ee ca pelea 147 Subtitleo s l ath idad CA eee 33 success assertion ee eee eee eee 4
73. Calls of the form Goal throw a signal signal 2 PROPERTY Meta predicate with arguments signal goal Usage signal Goal E Description A call to Goal sends a signal that unifies with E 84 The Ipdoc Documentation Generator signals 2 PROPERTY Meta predicate with arguments signals goal Usage signals Goal Es Description Calls of the form Goal can generate only the signals that unify with the terms listed in Es size 2 PROPERTY Usage size X Y Description Y is the size of argument X for any approximation size 3 PROPERTY Usage size A X Y Description Y is the size of argument X for the approximation A size 1b 2 PROPERTY size lb X Y The minimum size of the terms to which the argument Y is bound is given by the expression Y Various measures can be used to determine the size of an argument e g list length term size term depth integer value etc DL93 LGHD96 Usage size lb X Y Description Y is a lower bound on the size of argument X size 0 2 PROPERTY Usage size o X Y Description The size of argument X is in the order of Y size ub 2 PROPERTY size ub X Y The maximum size of the terms to which the argument Y is bound is given by the expression Y Various measures can be used to determine the size of an argument e g list length term size term depth integer value etc DL93 LGHD96 Usage size ub X Y Description Y is a upper bound on
74. Description Descriptor is a complete version descriptor filetype 1 REGTYPE Intended uses of a file filetype module filetype user filetype include filetype package filetype part Usage filetype Type Description Type describes the intended use of a file doc_id type 3 PREDICATE No further documentation available for this predicate 3 3 Documentation on internals comments doc 2 DECLARATION This declaration provides one of the main means for adding machine readable comments to programs the other one is adding documentation strings to assertions Usage 1 doc CommentType TitleText Description Provides a title for the module library or application When generating documentation automatically the text in TitleText will be used appropriately e g in the cover page as document title or as chapter title if part of a larger document This will also be used as a brief description of the manual in on line indices There should be at most one of these declarations per module Example doc title Documentation riented Assertions The following properties should hold upon exit CommentType title 2 TitleText is a documentation string docstring 1 Usage 2 doc CommentType SubtitleText Chapter 3 Documentation Mark up Language and Declarations 33 Description Provides a subtitle an explanatory or alternate title The subtitle will be displayed under the proper title
75. E HA NEE 81 not fatrls 1 uu A eS 81 not further inst 2 cee eee 73 not mut exclusive 1 eee 82 num solutions 2 eee 82 P pe type Ti ibd iex is HERE UNA 76 possibly fails 1 5 o ve ads 82 possibly nondet 1 esses 83 PEOP eed dp E Le PATERE 8T Propabs 4 ess cys ae ERE SA EE 88 R LOCC YPC E th as ds PURI D 74 re type 2 c ono Ris RE ae le vs 88 relations 2 p Eed DA TENER ee So 83 172 S E TEE 74 sideff hard 1r ca td aa 83 sideft_pure Ladron ida 83 sidef f Softin AA oou Eau iss 83 signal 1 2 tt ahi pe xt uude pde es 83 signal 22 24 cil em RR AE DE oe 83 siguals 2 e hv ees aevi ER UL 84 S126 25 4 a At ee Ab Gok E PEL eei 84 Size 3G coke es qi sisi sevi EE Dd 84 size ID 2 EE 84 Size metric J o 32 0 0h15 m e b ER IM TES 84 Size metric 4 220204164 gne erue ES 84 A nm ld eu Le opui CE 84 size b 2 cu A TX Wen RETI 84 sSolutions 2 i A eS 82 The Ipdoc Documentation Generator Steps 2 xc rub s oh vevterpe t LE NE 85 Steps 1b 2 2 E EVE Ue ore E Ted p 85 Steps 0 2 7 2 he Rn iaie AE 85 Steps UD Boise eer RI AREE RE 85 stringcommand 1 A cup ERE 26 supported option eisiaa Ske per PEE rE na 115 T arreti DEE 85 terminates 1 2 4 2 a GE es 86 test type 2ucueni ss ERG eo IE Y pere EE 86 tlhrows 2 5 t c HL UII We Eis 86 U user outp t 2 c lip De OU RAE Ei 86 Regular Type Index Regular Type Index A AMD Dn p RE RS TN assrt body lc i2nci
76. EE IER 26 di tiesto Sek a 112 115 139 151 157 dictionary tata 51 54 Gir EE 20 107 distutils dirutils 141 143 147 distutils distutilS oooooooo 131 Loy A 19 22 23 25 32 36 38 42 47 48 doc id type 3 vice db E 25 32 docsstructure 1 bees D er NEE 16 doclabel 1 unit Ve Sade a ideas 123 125 dock dicos ia drid IIR 123 125 154 doclink at 2 ii its iaa at 123 125 doclink is local 1 72 oe DeL 123 125 docst backend sees 115 117 docst currmod 2 EN oer v A 115 117 docst currmod is main 1 115 118 docst gdata 3 isses MEER LU 115 119 docst gdata clean 115 119 docst_gdata_query 2 115 119 docst_gdata_query 3 0 115 119 docst gdata restore 1 115 119 docst_gvar_restore 2 115 120 docst gvar Saue rcu ir Wose bAt Eee ni 115 120 docst_has_index 2 o o oo o o 115 120 docst Anputfile esses 115 117 docst_mdata_assertz 2 115 119 docst_mdata_clean l 115 119 docst_mdata_save l 115 119 docst message sels 115 118 docst message i sells 115 118 docst modname 2 eee 115 118 docst modtupe esee 115 121 docst muar get 3 ssss sls 115 119 docst mvar lookup 3 sess 115 119 docst_mvar_replace 4 115 119 docst_new_no_sIC 4 1
77. ERTY call P A A has property P provided that P is a property Equivalent to P A Usage call P A Description A has property P If the following properties hold at call time P is a term which represents a goal i e an atom or a structure callable 1 88 The Ipdoc Documentation Generator prop 2 PROPERTY Usage A prop P Description A has property P If the following properties hold at call time P has property callable prop abs prop 2 regtype 2 PROPERTY Usage A regtype T Description A is of type T If the following properties hold at call time T has property regtype prop_abs prop 2 9 3 Documentation on multifiles meta_props callme 2 PREDICATE User defined A hook predicate you have to define as callme P X P X in the program that uses this library This is done automatically if the package is used instead of the library module but then you should not define callme 2 in your program The predicate is multifile Usage callme A B The following properties should hold at call time A is a term which represents a goal i e an atom or a structure callable 1 9 4 Documentation on internals meta_props prop_abs 1 PROPERTY prop_abs Prop Prop is a property abstraction i e a parametric property or a term formed of property abstractions where the functors used in the term are escaped by One particular case of property abstractions
78. PPeONGiX jee Ad Beien dree D te bI es RAE 34 application bon uw heated Mek ly Weser ec Eu 4 aritbhepression l s seeeeees 102 arithmetic 25 42 43 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 ascii blank lines 2 sees 159 assertion body syntax 51 54 55 assertion status 43 44 45 47 assertions 3 22 23 25 41 42 51 111 assertions assertions props 42 59 112 115 assertions assrt lib 112 115 assertions native props 61 95 assertions props venne 51 assrt_body 1 42 43 46 47 51 60 assrt_status 1 43 44 45 46 47 51 56 60 assrt type 1 edt Aes te ks 51 56 atm 1 oes 38 61 64 113 143 148 149 152 ati or atm listillo Me eee ee 61 72 SE vein wed esd pu I ee Ale 112 126 152 atomic_basic 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 attributes 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 Et OT 33 author ind xing 0c cece cece ees 33 a todoc vllo EE EEN VERD eee 3 16 111 autodocsaux oA ees ett aba es 159 autodoc bibretfs ccc ccc eee eee 157 autodoc_compute_grefs 3 112 113 autodoc doctree llle et eee
79. ROPERTY mshare X X contains all sharing sets JL88 MH89 which specify the possible variable occurrences in the terms to which the variables involved in the clause may be bound Sharing sets are a compact way of representing groundness of variables and dependencies between variables This representation is however generally difficult to read for humans For this reason this information is often translated to ground 1 indep 1 and indep 2 properties which are easier to read Usage mshare X Description The sharing pattern is X The following properties should hold globally This predicate is understood natively by CiaoPP as sharing X native 2 mut exclusive 1 PROPERTY mut exclusive X For any call of the form X at most one clause succeeds i e clauses are pairwise exclusive Meta predicate with arguments mut exclusive goal Usage mut exclusive X Description For any call of the form X at most one clause succeeds no choicepoints 1 PROPERTY Meta predicate with arguments no choicepoints goal Usage no choicepoints X Description A call to X does not create choicepoints Chapter 8 Properties which are native to analyzers 81 no_exception 1 PROPERTY Meta predicate with arguments no_exception goal Usage no_exception Goal Description Calls of the form Goal do not throw any exception no_exception 2 PROPERTY Meta predicate with arguments no_exception goal Usage no_exceptio
80. The lpdoc Documentation Generator An Automatic Documentation Generator for C LP Systems REFERENCE MANUAL The Ciao Documentation Series http www ciaohome org Generated Printed on 15 August 2011 Technical Report CLIP 5 97 1 3 0 Version 3 0 2011 7 7 16 33 15 CEST Edited by Manuel Hermenegildo Jos Francisco Morales Copyright c 1996 2011 Manuel Hermenegildo and Jos Francisco Morales This document may be freely read stored reproduced disseminated translated or quoted by any means and on any medium provided the following conditions are met 1 Every reader or user of this document acknowledges that is aware that no guarantee is given regarding its contents on any account and specifically concerning veracity accuracy and fitness for any purpose No modification is made other than cosmetic change of representation format translation correction of obvious syntactic errors or as permitted by the clauses below Comments and other additions may be inserted provided they clearly appear as such translations or fragments must clearly refer to an original complete version preferably one that is easily accessed whenever possible Translations comments and other additions or modifications must be dated and their au thor s must be identifiable possibly via an alias This licence is preserved and applies to the whole document with modifications and additions except for brief quotes independently of the rep
81. and 26 begin itemize command 26 begin verbatim command 27 Obf command EE 27 Obullet command LII Sa ius 31 OG Command isp cic dee it eel ant wad 31 cindex commande 28 Qcite command EN A wee te 16 29 comment commande 26 concept COMMON o o ooocooocoocoocooco oo 28 copyright commande 31 Od command ENEE EE 31 Odecl command need EE SERS Rae 28 defmathcmd 2 commande 30 defmathcmd 3 commande 30 Geni COmMANG iie LIEU npe e Eds 27 email commande 29 endfalert commande 27 end cartouche commande 27 end description command 27 end displaymath command 30 end enumerate commande 26 end itemize command 40 26 end verbatim command 04 27 Ofile Command 5 eee ak aes Slee eae A 29 footnote commande 27 OH command ik CG shee ee atk Ses ve 31 Ohfill command deet ee hes bod 27 KREE 31 image Commande 30 include commande 30 includedef command lees esses 30 includefact command 30 includeverbatim command 30 index commande 28 Giso Commands vende ds he gee ee ete ano 31 Qitem commande ee hehe NN SN enn 26 27 NEEN 31 Okey command MEET 27 Ol Command A ede es aa ee oe ele Ae edi 31 OL Command cl Sa es eh So ee ee a NL 31 184 QOlib command o cede icy a a 28 Omatlhl command 7 2 5 2
82. aoPP native 1 not mut exclusive 1 PROPERTY not mut exclusive X For calls of the form X more than one clause may succeed Le clauses are not disjoint for some call Meta predicate with arguments not mut exclusive goal Usage not mut exclusive X Description For some calls of the form X more than one clause may succeed num solutions 2 PROPERTY Usage 1 num solutions X N Description All the calls of the form X have N solutions If the following properties should hold at call time X is a term which represents a goal i e an atom or a structure callable 1 N is an integer int 1 Usage 2 num solutions Goal Check Description For a call to Goal Check X succeeds where X is the number of solu tions If the following properties should hold at call time Goal is a term which represents a goal i e an atom or a structure callable 1 Check is a term which represents a goal i e an atom or a structure callable 1 solutions 2 PROPERTY Usage solutions Goal Sols Description Goal Goal produces the solutions listed in Sols If the following properties should hold at call time Goal is a term which represents a goal i e an atom or a structure callable 1 Sols is a list list 1 possibly fails 1 PROPERTY possibly fails X Non failure is not ensured for any call of the form X DLGH97 In other words nothing can be ensured about non failure nor termination of such
83. are parametric regular type abstractions i e a parametric type functor or a escaped term formed of regular type abstractions Such abstractions are a short hand for a corresponding regular type correspondingly property For example the following abstraction list list list denotes terms of the form X Y where list X and list Y hold and also terms T such that list T holds It is equivalent to the regular type abstract type X Y list X list Y abstract type T list T Usage prop abs Prop Description Prop is a property abstraction Chapter 10 An Example Documenting a Library Module 89 10 An Example Documenting a Library Module Author s Manuel Hermenegildo A simple example of the use of 1pdoc is this manual which can be built in the doc directory of the lpdoc distribution Other examples of manuals generated using lpdoc can be found in the Ciao system and preprocessor doc directories i e most of the Ciao manuals are generated using lpdoc Some simpler examples can be found in the examples directory of the 1pdoc distribution In particular the chapter following this one contains the documentation generated automatically for the module defined by file examples example module pl which for simplic ity contains only assertions i e no actual code and which is included in source form below Comparing this code with the output in the following chapter illustrates the use and some of the capabil
84. artS 2 8 6 Documenting reexported predicates 2 8 7 Separating the documentation from the source file 2 8 8 Generating auxiliary files e g READMEs 2 9 Troubleshooting x dida A ee ened AE 3 Documentation Mark up Language and Declarations EE 3 1 Usage and interface comments vespide 3 2 Documentation on exports Leomentsl sees docstring 1 prop S ee vere O stringcommand 1 prop apra version descriptor 1 regtype ooooo o filetypes eege ni EE EP ERG d id type 3 Pre gaere 3 3 Documentation on internals Ieommentsl suus Gemeen etie e aite dora eRe ee version number 1 regtype ooooooooomoooo ymd date 1 Testy EE ii The lpdoc Documentation Generator time struct 1 regtype coccion bee E 39 version maintenance type 1 regtype 39 4 The Ciao assertion package sese 41 Sech Mor O e sott umi uui E a a d 41 4 2 Some attention points 41 4 3 Usage and interface assertions doc 42 4 4 Documentation on new declarations assertions_doc 42 pred ML d cl errar ia Eech 42 EE RE 43 texec P T deel 215 sz oeste RC OR ERO n 43 Lexec a deel Lo sn EE em a oa ws 43 calls l decl ca ds ones bel See pente 43 EE EE 43 success 1 decl eg tdi ved eviter er ted 44 success 2 dec usc Age ke xA SIR PEE 44 EE 44 test 2 deel secre oe ey ey wet eae ese E 44 comp deel NEE ear ei 45 comip dec EE 45 propc
85. ary components are also libraries This can be used for example for generating an internals manual of a library The main file describes the purpose and use of the library while the components describe the internal modules of the library e Main file is an application components are libraries This can be used similarly for gener ating an internals manual of an application The main file describes the purpose and use of the application while the components describe the internal modules which compose the application e Main file is a pseudo application components are libraries A manual of a complex library made up of smaller libraries for example the Prolog library The pseudo application file contains the introductory material title version etc Each chapter describes a particular library e Main file is a pseudo application components are applications This can be used to gen erate a manual of a set of applications e g a set of utilities The pseudo application file contains the introductory material title version etc Each chapter describes a particular component application 2 8 4 Documenting files which are not modules Sometimes it is difficult for 1pdoc to distinguish include files and Ciao packages from normal user files i e normal code files but which are not modules The distinction is important because the former are quite different in their form of use they are loaded via include 1 or use package 1 d
86. at most one of these declarations per module Example doc copyright Copyright 2001 FSF The following properties should hold upon exit CommentType copyright 2 CopyrightText is a documentation string docstring 1 Usage 9 doc CommentType SummaryText Description Provides a brief global explanation of the application or library The text in SummaryText will be used as the abstract for the whole manual There should be at most one of these declarations per module Ezample doc summary This is a bf very important library The following properties should hold upon exit CommentType summary 2 SummaryText is a documentation string docstring 1 Usage 10 doc CommentType CommentText Description Provides the main comment text for the module or application When generating documentation automatically the text in CommentText will be used as the introduction or main body of the corresponding chapter or manual There should be at most one of these declarations per module CommentText may use sections if substructure is needed Example doc module This module is the Clib comments library The following properties should hold upon exit CommentType module 2 CommentText is a documentation string docstring 1 Usage 11 doc CommentType ComnentText Description Provides additional comments text for a module or application When generat
87. ate defines the different types of syntax admissible in the bodies of comp 1 assertions The following are admissible Pr CP GP CO Pr CP GP Pr GP CO Pr GP where e Pr is a head pattern head_pattern 1 which describes the predicate or property and possibly gives some implicit call answer information e CP is a possibly empty complex argument property complex_arg_property 1 which applies to the calls to the predicate e GP contains possibly empty complex goal property complex goal property 1 which applies to the whole execution of a call to the predicate These only apply if the possibly empty properties given for calls in the assertion hold e CO is a comment string docstring 1 This comment only applies if the possibly empty properties given for calls in the assertion hold The usual formatting com mands that are applicable in comment strings can be used see stringcommand 1 The format of the different parts of the assertion body are given by n_assrt_body 5 and its auxiliary types Usage g_assrt_body X Description X is a comp assertion body 56 The Ipdoc Documentation Generator assrt status 1 REGTYPE The types of assertion status They have the same meaning as the program point asser tions and are as follows assrt status true assrt status false assrt status check assrt status checked assrt status trust Usage assrt status X Description X is an acceptable status
88. ations as mentioned in Section 2 2 Generating a manual page 15 The easiest fix is to reduce the number of indices generated Alternatively it may be possible to recompile your local tex texinfo installation with a higher number of indices e Missing links in info files a section which exists in the printed document cannot be accessed in the on line document can be due to the presence of a colon a comma a double dash or other such separators in a section name Due to limitations of info section names cannot contain these symbols e Menu listings in info which do not work i e the menu listings are there but they cannot be followed see if they are indented In that case it is due to an itemize or enumerate which was not closed Chapter 3 Documentation Mark up Language and Declarations 25 3 Documentation Mark up Language and Declarations Author s Manuel Hermenegildo This defines the admissible uses of the doc 2 declaration which is used mainly for adding machine readable comments to programs the formatting commands which can be used in the text strings inside these comments and some related properties and data types These declarations are ignored by the compiler in the same way as classical comments Thus they can be used to document the program source in place of or in combination with the normal comments typically inserted in the code by programmers However because they are more structured and they are
89. ations per module In order for author indexing to work properly please use one author declaration per author If more explanation is needed who did what when etc use an acknowledgements comment Example doc author Alan Robinson The following properties should hold upon exit CommentType author 2 AuthorText is a documentation string docstring 1 Usage 6 doc CommentType Text Description Provides the physical and electronic address or any other contact infor mation for the authors of the module or application Example doc address Syracuse University The following properties should hold upon exit CommentType address 2 Text is a documentation string docstring 1 34 The Ipdoc Documentation Generator Usage 7 doc CommentType AckText Description Provides acknowledgements for the module If present when generating documentation for the module automatically the text in AckText will be placed in the corresponding chapter or section There can be only one of these declarations per module Example doc ack Module was written by Alan but others helped The following properties should hold upon exit CommentType ack 2 AckText is a documentation string docstring 1 Usage 8 doc CommentType CopyrightText Description Provides a copyright text This normally appears somewhere towards the beginning of a printed manual There should be
90. b files using bibtex and produces a References appendix cite can be used in the text strings exactly as ite in LaTeX The set of bib files to be used is given in the SETTINGS file Defining the type of version maintenance that should be performed by the emacs ciao el mode i e whether version numbers are in a given directory or in the file itself is controlled now via a standard commment 2 declaration You should now write a declaration such as comment version_maintenance dir version to state that control info is kept in directory version This has the advantage that it is shorter than the previous solution and that Ipdoc can read this info easily Using this guarantees that the version numbers of the manuals always concide with those of the software Generation of indices of manuals htmlbullet files if several manuals are installed in the same directory an index to them is now generated at the beginning of the html cover page describing the directory Manuel Hermenegildo Version 1 4 1998 8 4 19 10 35 MET DST The set of paths defined in SETTINGS for finding the source files are now also used to find included files As a result full path is not needed any more in e g include command New ref command which can be used to refer to chapeter sections subsections etc Support for recent minor changes in assertion format including as comment separator Used modules are now separa
91. ble then the following properties hold globally callable T is evaluable at compile time All calls of the form callable T are deterministic callable T ground 1 eval 1 is_det 1 gndstr 1 native 1 REGTYPE sideff 2 nonvar 1 eval 1 is_det 1 constant 1 REGTYPE sideff 2 nonvar 1 eval 1 is_det 1 Chapter 7 Basic data types and properties 67 The following properties hold upon exit T is currently a term which is not a free variable nonvar 1 Usage callable T Description T is a term which represents a goal i e an atom or a structure operator specifier 1 REGTYPE The type and associativity of an operator is described by the following mnemonic atoms xfx Infix non associative it is a requirement that both of the two subexpressions which are the arguments of the operator must be of lower precedence than the operator itself xfy Infix right associative only the first left hand subexpression must be of lower precedence the right hand subexpression can be of the same precedence as the main operator yfx Infix left associative same as above but the other way around fx Prefix non associative the subexpression must be of lower precedence than the operator fy Prefix associative the subexpression can be of the same precedence as the operator xf Postfix non associative the subexpression must be of lower precedence than the opera
92. c_finish_hook 1 autodoc_gen_alternative_hook 2 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc settings lpdocsrc src autodoc filesystem lpdocsrc src autodoc structure lpdocsrc src autodoc_doctree lpdocsrc src autodoc_refsdb lpdocsrc src autodoc_parse lpdocsrc src autodoc index lpdocsrc src comments lpdocsrc src autodoc html resources lpdocsrc src autodoc texinfo System library modules format ttyout aggregates read make make_rt dict compiler compiler assertions assrt_lib compiler c_itf assertions assertions_props messages filenames lists terms make system_ extra system Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 15 2 Documentation on exports autodoc index comment 2 PREDICATE Usage index comment Index Text Description Type is a type of index which is supported Text describes the index contents The following properties should hold upon exit Index is currently instantiated to an atom atom 1 Text is a string a list of character codes string 1 reset output dir db 0 PREDICATE No further documentation available for this predicate Chapter 15 Documentation Generation Library 113 ensure output
93. ccess 1 1150 fx success 2 1150 xfx test 1 1150 fx test 2 1150 xfx texec 1 1150 fx texec 2 1150 xfx comp 1 1150 fx comp 2 1150 xfx entry 1 1150 fx exit 1 1150 fx exit 2 1150 xfx e New declarations defined pred 1 pred 2 texec 1 texec 2 calls 1 calls 2 success 1 success 2 test 1 test 2 comp 1 comp 2 prop 1 prop 2 entry 1 exit 1 exit 2 modedef 1 dec1 1 dec1 2 doc 2 comment 2 e Other modules used System library modules assertions assertions props Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 4 4 Documentation on new declarations assertions doc pred 1 DECLARATION This assertion provides information on a predicate The body of the assertion its only argument contains properties or comments in the formats defined by assrt_body 1 More than one of these assertions may appear per predicate in which case each one represents a possible mode of use usage of the predicate The exact scope of the usage is defined by the properties given for calls in the body of each assertion which should thus distinguish the different usages intended All of them together cover all possible modes of usage For example the following assertions describe all the and the only modes of usage o
94. clean all temporal 0O 147 149 clean current refs 1 ess 153 clean docs no texi 0 sess 147 149 clean docstr O sese ee 129 clean fs db O NEEN ANN ek 147 148 clean image cache 161 clean intermediate 0 s 147 150 clean tex intermediate 0 147 150 CLAU vu sonet chi al we aie x TET 77 a ET DEE 77 78 CLP Ae pata EE tle ee ee e Bede 3 CMA type DEE 123 codetype l gek ELVAI 151 152 eh GEET 26 comment assertion 02 eee eee eee eee 48 comment String l4 Ri a ae 52 54 55 COMME Dire rd eee 10 42 48 comments ts a EE 3 23 25 comments machine readable Al CommentType ack esses 34 CommentType address esses 33 CommentType appendix sese 35 CommentType author esee 33 186 CommentType bug lesen 36 CommentType copyright esee 34 CommentType doinclude oo 3T Comment Tepec filetepe sese 38 Comment Tepechide esee eee 37 38 CommentType logo seen 33 CommentType module sese eee eee 34 CommentType nodoc eese 38 CommentType section sees 35 Comment Tvpecpubsection eee 35 Comment Tvpec subtitle sese 33 CommentType subtitle extra 33 CommentType summary see 34 Comment Tvpectitle esses 32 CommentType usage eee 35 CommentType version maintenance 3T COMMENT 2 s x oppor t
95. ctly from the texi file using the texi2html command this again can be changed in the Makefile skel file in the lib directory This command is a perl script and is included with the lpdoc distribution and installed in the library so that it does not overwrite other existing versions It is also typically included in the Texinfo distribution A required intermediate step is to resolve the link references which appear in the texi file the texi file includes all the texic files and has all references resolved This is done using the emacs editor in batch mode calling functions in the emacs library el file included in the lib directory of the 1pdoc distribution Thus a recent version of emacs is required for this purpose Generating info files info files are also generated directly from the texi file using the makeinfo command this again can be changed in the Makefile skel file in the lib directory This command is included in the Texinfo distribution Resolving the link references in the texi file is also required as above If pictures are used in the manual and html output is selected the commands pstogif and cjpeg are also required in order to convert the figures from eps to jpg format PART II LPdoc Internals Manual PART II LPdoc Internals Manual 109 110 The Ipdoc Documentation Generator Chapter 15 Documentation Generation Library 111 15 Documentation Generation Library Author s Manuel Hermenegil
96. d i e once they hold they will keep on holding in every state accessible in forwards execution There are certain predicates which are inherently instantiation checks and should not be used as compatibility properties nor appear in the definition of a property that is to be used with compat Examples of such predicates for Prolog are ground nonvar integer atom gt etc as they require a certain instantiation degree of their arguments in order to succeed In contrast with properties of execution states properties of computations refer to the entire execution of the call s that the assertion relates to One such property is for example not_ fail 1 note that although it has been used as in comp append Xs Ys Zs not_fail it is in fact read as not_fail append Xs Ys Zs see assertions props complex goal property 1 For this property which should be interpreted as execution of the predicate either succeeds at least once or loops we can use the following predicate not fail 1 for run time checking not fail Goal if call Goal true then warning Goal else where the warning 1 library predicate simply prints a warning message In this simple case implementation of the predicate is not very difficult using the non standard if 3 builtin predicate present in many Prolog systems However it is not so easy to code predicates which check other properties of the computation and we may in general need to prog
97. d 2 docst_currmod 2 docst_set_currmod 3 docst_ opts 2 docst_set_opts 3 docst_inputfile 2 docst_new_no_src 4 docst_new_ with_src 6 docst_new_sub 3 docst_message 2 docst_message 3 docst_opt 2 docst_currmod_is_main 1 docst_no_components 1 docst_modname 2 labgen_ init 1 labgen_clean 1 labgen_ get 2 docst_mvar_lookup 3 docst_mvar_replace 4 docst_mvar_get 3 docst_ mdata clean 1 docst mdata assertz 2 docst mdata save 1 docst_gdata 3 docst gdata query 2 docst gdata query 3 docst gdata restore 1 docst gdata clean 1 docst gvar save 2 docst gvar restore 2 docst has index 2 all indices 2 get doc 4 get doc field 3 get doc field dict 3 bind dict varnames 1 get mod doc 3 docst_modtype 2 get first loc for pred 3 Properties supported option 1 Regular Types backend_id 1 docstate 1 modtype 1 e Other modules used Application modules lpdocsrc src autodoc settings lpdocsrc src autodoc filesystem lpdocsrc src autodoc structure lpdocsrc src autodoc doctree lpdocsrc src autodoc refsdb lpdocsrc src autodoc_parse lpdocsrc src autodoc index lpdocsrc src comments System library modules make make rt dict compiler compiler assertions assrt lib compiler c itf assertions assertions props messages filenames lists terms make system_ extra write read system aggregates nternal engine modules term basic arithmetic atomic basic attributes basic props basiccontro
98. d at call time PropertyConjunction is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property The first argument of each such term is a variable which appears as a head argument property conjunction 1 true 1 PREDICATE Usage true PropertyConjunction Description This assertion is identical syntactically to a check 1 assertion However the properties stated have been proved to hold by the analyzer Thus these assertions often represent the analyzer output The following properties should hold at call time PropertyConjunction is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property The first argument of each such term is a variable which appears as a head argument property conjunction 1 false 1 PREDICATE Usage false PropertyConjunction Description This assertion is identical syntactically to a check 1 assertion However the properties stated have been proved not to hold by the analyzer Thus these assertions often represent the analyzer output The following properties should hold at call time PropertyConjunction is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property The first argument of each such term is a variable which appears as a head argument proper
99. dicate requested file formats 1 Usage requested file formats F Description F is a requested file format load vpaths 0 No further documentation available for this predicate viewer 3 No further documentation available for this predicate xdvi 1 No further documentation available for this predicate xdvisize 1 No further documentation available for this predicate pdfview 1 No further documentation available for this predicate PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE Chapter 19 Access to Default Settings psview 1 No further documentation available for this predicate htmlview 1 No further documentation available for this predicate bibtex 1 No further documentation available for this predicate tex 1 No further documentation available for this predicate texindex 1 No further documentation available for this predicate dvips 1 No further documentation available for this predicate ps2pdf 1 No further documentation available for this predicate makeinfo 1 No further documentation available for this predicate makertf 1 No further documentation available for this predicate rtftohlp 1 No further documentation available for this predicate convertc 1 No further documentation available for this predicate 133 PREDICATE PREDICATE PREDICATE PREDICATE
100. directory of emacs info manuals The following properties should hold at call time docstate DocSt docstate 1 Version is any term term 1 Mod is the base name of a file without extension basename 1 autodoc_compute_grefs 3 PREDICATE Usage Description Compute the globally resolved references including bibliography 114 The Ipdoc Documentation Generator autodoc translate doctree 3 PREDICATE Usage Description Translate the doctree using the specific backend autodoc finish 1 PREDICATE No further documentation available for this predicate autodoc_gen_alternative 2 PREDICATE No further documentation available for this predicate 15 3 Documentation on multifiles autodoc autodoc finish hook 1 PREDICATE No further documentation available for this predicate The predicate is multifile autodoc gen alternative hook 2 PREDICATE No further documentation available for this predicate The predicate is multifile Chapter 16 Internal State for Documentation Generation 115 16 Internal State for Documentation Generation Author s Manuel Hermenegildo Jose F Morales This module defines the internal state of the documentation generation for a single module 16 1 Usage and interface autodoc state v S e Library usage use module library autodoc state e Exports Predicates option_comment 2 backend_ignores_components 1 backend_alt_format 2 top_ suffix 2 docst_backen
101. do Jose F Morales This library provides some predicates which generate documentation automatically for a given module or application using the declarations and assertions used in the module itself as input see the assertions library By default only the exported predicates of the module appear in the documentation The predicates will be documented in the order in which they appear in the module 1 or module 2 declaration The idea of this package is on one hand to reuse the information present in the assertions and on the other to help ensure that code and documentation are kept as coherent as possible Hopefully keeping them close together should help in this always difficult task The resulting documentation is somewhat rigidly structured but generally sufficient for a reference manual provided a little effort is put into the assertions and comments The end product understandably depends heavily on how much work is put into adding additional comments to the source Some documentation will be generated in any case but it is recommended that at the minimum a module title and a comment for each of the exported predicates be provided Note This part is obsolete JFMC The output format in which the documentation is generated is defined by the backend modules autodoc_texinfo autodoc html autodoc man etc The main output format supported is texinfo see The GNU Texinfo Documentation System manual for more info from w
102. doc ps or lpdoc info etc will force the generation of a single target format 2 3 Working on a manual In order to speed up processing while developing a manual it is recommended to work by first generating a dvi version only i e by typing lpdoc dvi The resulting output can be easily viewed by tools such as xdvi which can be started by simply typing 1pdoc view Note that once an xdvi window is started it is not necessary to restart it every time the document is reformatted 1pdoc dvi since xdvi automatically updates its view every time the dvi file changes This can also be forced by typing R in the xdvi window The other formats can be generated later once the dvi version has the desired contents 2 4 Cleaning up the documentation directory lpdoc can also take care of tidying up the directory where the documentation is being generated e lpdoc clean deletes all intermediate files but leaves the targets De the ps dvi ascii html etc files as well as all the generated texic files e lpdoc distclean deletes all intermediate files and the generated texic files leaving only the targets De the pe dvi ascii html etc files This is the option normally used when building software distributions in which the manuals come ready made in the distribution itself and will not need to be generated during installation e lpdoc docsclean deletes all intermediate files and the generated targets but leaves the texic f
103. e Chapter 16 Internal State for Documentation Generation backend alt format 2 Usage backend alt format Id Ext 117 PREDICATE Description Ext is an alternative file format that can be generated by the backend Id top_suffix 2 Usage top_suffix FileFormat PrincipalExt PREDICATE Description PrincipalExt is extension of the target file that will generate the file with FileFormat extension docstate 1 A regular type defined as follows docstate docstate Backend Name Opts MVarDic 1 backend_id Backend atom Name list Opts supported_option dictionary MVarDic filename I docst_backend 2 No further documentation available for this predicate docst currmod 2 No further documentation available for this predicate docst set currmod 3 No further documentation available for this predicate docst_opts 2 No further documentation available for this predicate docst_set_opts 3 No further documentation available for this predicate docst_inputfile 2 No further documentation available for this predicate REGTYPE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE 118 The Ipdoc Documentation Generator docst new no src 4 PREDICATE No further documentation available for this predicate docst new with src 6 PREDICATE No further documentation available for this predicate docst new sub 3 PREDICATE No further documentation available f
104. e string 4 is version 1 version patch 2 version date 2 version numstr 2 version string 2 insert show toc 3 Regular Types doctree 1 doclink 1 doclabel 1 doctokens 1 Multifiles autodoc_rw_command_hook 4 autodoc_escape_string_hook 5 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc refsdb lpdocsrc src autodoc index lpdocsrc src autodoc structure lpdocsrc src autodoc filesystem lpdocsrc src autodoc settings lpdocsrc src comments lpdocsrc src autodoc texinfo lpdocsrc src autodoc man lpdocsrc src autodoc htm1 System library modules write operators format lists nake system extra read terms make make rt Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 17 2 Documentation on exports autodoc_doctree cmd type 1 PREDICATE No further documentation available for this predicate 124 The Ipdoc Documentation Generator doctree 1 Usage Description Intermediate tree representation for documentation doctree is empty 1 Usage doctree is empty R Description Emptiness test The following properties should hold at call time Intermediate tree representation for documentation is nonempty doctree 1 Usage is nonempty doc
105. e Type lpmake install This should install it in the BINDIR directory install the 1pdoc library in a separate directory in the LIBDIR directory and install the 1pdoc documentation in the DOCDIR directory e In order for the lpdoc documentation to be available to users automatically certain environment variables have to be set The installation leaves files suitable for inclusion in initialization scripts e g DOTcshrc for csh in the 1pdoc library 14 2 Other software packages required Ipdoc The most basic functionality of 1pdoc generating manuals in texi format short manual entries in manl format generating index files is essentially self contained However using the full capabilities of 1pdoc requires having several other software packages installed in the system Fortunately all of these packages are public domain software and they will normally be already installed in e g a standard Linux distribution It should be relatively easy to get and install the required packages in other Unix like packages or even in Windows under the Cygwin environment e Basic requirements the Makefiles used by lpdoc require GNU Make gmake and for now have only been designed for UN X like operating systems 108 The Ipdoc Documentation Generator Generating dvi files 1pdoc normally generates texi files actually a number of texic files From the texi files dvi files are generated using the standard tex package di rectly The dv
106. e database or the collection whether alone or in relation with other documents Any incompatibility of the above clauses with legal contractual or judiciary decisions or con straints implies a corresponding limitation of reading usage or redistribution rights for this document verbatim or modified Table of Contents SUMMALY eva EE ee ee vod ei e oS LL Introduction EE 1 1 Overview of this document 1 2 lpdoc operation source and target Dies L Ilpdo usage eae RR ee Ur ERE V 1 4 Version C ange LOs ec ee x PART I LPdoc Reference Manual 2 Generating Installing and Accessing Manuals 2 1 Generating a manual from the Ciao Emacs mode 2 2 Generating a manual 2 3 Working on a manual eese 2 4 Cleaning up the documentation directory ssssuueresss 2 5 Installing a generated manual in a public area 2 6 Enhancing the documentation being generated 2 7 Accessing on line manual 2 7 1 Accessing html mamals 2 ee eee 2 7 2 Accessing info manual 2 7 3 Accessing man manual 2 7 4 Putting it all together 2 8 Some usage Ups 2 8 1 Ensuring Compatibility with All Supported Target ere 2 eR teat has T RR Pe wns ES 2 8 Writing comments which document version patch ch npes ENEE EE be RES Sead RER AN 2 8 3 Documenting Libraries and or Applications 2 84 Documenting files which are not modules 2 8 5 Splitting large documents into p
107. e eee EE Ba eed 31 OL command erdre eet Ee ER ies 31 Olib command ie Tee BS ED 28 math commande 29 noindent commande 27 Qo commana Ai ida RAM Ed A 31 DCH command ti see Goa ERREUR RUPEM 31 Qoe command vesc ENN Maw ene rb Y 31 QOE commande 31 Qop command EE 28 Qp commande 27 pred commande 28 Qref command cs NET Me ee ES 29 result commande 31 section commande 27 Dep commande 27 QOss command ib ROAEIEeen DER i E de dds 31 subsection commande 27 E e e DEE 31 today commande 29 Qtt command uou x rM el PEE 27 Qi COMMAN EE 31 Quref commande 29 Qv command EE 31 Qvar Commande 29 version commande 29 178 AA paper cc uoce rimi na d ER utes 17 abstract Mam 34 ee 30 acceptable mode 52 acknowledgements eee 34 address ii ENEE 33 appendix orton E Asa ties bai 34 application way bat e v eps Cd iR qu 4 assertion body syntax 51 54 55 ASS cues ege bue e ele paris 25 author i ss yo mun TRUE Cb Mercer etd 33 automatic documentation 111 automatic documentation library 111 avoiding indentation lisse 27 B bibliographic citations sse 29 bibliographic entries o 16 bibliographic entre 29 bibtex set reple eneH hh 4 EHE Ue 16 29 blank lines eub dd AE 27 bold fate asii oa 27 DUE td AA uiam 36 calls assertion lessen 43 44 check assertion 00 0 eee eee cece eee eee 48 Ciao tase ladies As teed te de SA ES 15 COMME by ii A A ek e 26 comment ass
108. e format provided by backend Ext Backend Subtarget Description Backend is the backend that generates files with format Ext Call and exit should be compatible with Ext is an atom atm 1 Backend is a supported backend backend id 1 Subtarget is an atom atm 1 clean fs db 0 PREDICATE Usage Description Clean the cached information for the filesystem mapping of the docu mentaton generation get output dir 2 PREDICATE Usage get_output_dir Backend Dir Description Obtain the Dir directory where final documentation files will be stored get cache dir 2 PREDICATE Usage get cache dir Backend Dir Description Obtain the Dir directory where final documentation files will be stored ensure output dir 1 PREDICATE No further documentation available for this predicate ensure cache dir 1 PREDICATE No further documentation available for this predicate Chapter 25 Filesystem Abstraction 149 main absfile in format 2 PREDICATE Usage main absfile in format Ext File Description File is the absolute file name for the documentation in Ext format of the main module main absfile for subtarget 3 PREDICATE No further documentation available for this predicate absfile for aux 3 PREDICATE Usage absfile for aux AuxName Backend AbsFile Description Absolute file for an auxiliary output file e g CSS images etc absfile for subtarget 4 PREDICATE No further documentati
109. e given property in the sense that assuming that imposing that property on the term does not render the store inconsistent For example terms X i e a free variable Y Z and Y Z are all compatible with the regular type list 1 whereas the terms f a and 112 are not Meta predicate with arguments compat pred 1 General properties compat Term Prop If the following properties hold at call time Term is currently ground it contains no variables ground 1 Prop is currently ground it contains no variables ground 1 then the following properties hold globally compat Term Prop is evaluable at compile time eval 1 Usage compat Term Prop Description Term is compatible with Prop Chapter 7 Basic data types and properties T3 inst 2 PROPERTY Meta predicate with arguments inst pred 1 General properties inst Term Prop The following properties hold globally inst Term Prop is side effect free sideff 2 inst Term Prop If the following properties hold at call time Term is currently ground it contains no variables ground 1 Prop is currently ground it contains no variables ground 1 then the following properties hold globally inst Term Prop is evaluable at compile time eval 1 Usage inst Term Prop Description Term is instantiated enough to satisfy Prop iso 1 PROPERTY Meta predicate with arguments iso goal General properties iso G The followi
110. e performs analyisis Usage int T Description T is an integer The following properties hold globally This predicate is understood natively by CiaoPP nnegint 1 The type of non negative integers i e natural numbers General properties nnegint T The following properties hold globally nnegint T is side effect free nnegint T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally nnegint T is evaluable at compile time nnegint T The following properties hold upon exit T is a non negative integer sideff 2 nonvar 1 eval 1 is_det 1 int 1 Required by the nonfailure test_type 2 native 1 REGTYPE sideff 2 nonvar 1 eval 1 nnegint 1 Chapter 7 Basic data types and properties The following properties hold globally Indicates the type of test that a predicate performs analyisis Usage nnegint T Description T is a non negative integer The following properties hold globally This predicate is understood natively by CiaoPP flt 1 63 Required by the nonfailure test_type 2 native 1 REGTYPE The type of floating point numbers The range of floats is the one provided by the C double type typically 4 9e 324 1 8e 308 plus or minus There are also three spe cial values Infinity either positive or negative rep
111. e tabs in Tex is now run in nonstopmode which means it will typically not stop if there are minor errors but some errors may go unnoticed The full path of the version maintenance directory is now computed correctly using the directory of the p1 file being documented as base Notices for missing subtitle copyright and summary now only given from main file and not for components Chapter 1 Introduction 11 Version 1 7 Version 1 6 Version 1 5 e Added special handling of regtype and generalized it to handle some props specially if there is a certain comp property present Manuel Hermenegildo 1998 12 2 17 43 50 MET Major port to use the ciao 0 8 modular assertion processing library Manuel Hermenegildo 1998 9 8 12 49 26 MEST Added support for inserting images eps files in text via Cimage command email addresses via Cemail command and url references via uref command Unix man output much improved Also it now includes a usage section The correspoding text must be given in a string contained in the first argument of a fact of the usage message 1 predicate which appears in the program Also formatting of man pages has been greatly improved A new ascii format is now supported a simple minded ascii manual basically an info file without pointers Manuel Hermenegildo 1998 8 23 20 30 32 EST Now supporting a cite command YES It automatically accesses the bib entries in bi
112. e term but with one more argument added at the beginning which is a new variable which in a rewriting of the head pattern appears at the argument position occupied by the term For example the head pattern p Input list int Qutput is valid for mode 1 defined in library isomodes and equivalent in this case to having the head pattern p Input A 0utput and stating that the property list A int holds for the calls of the predicate Di e Any term preceded by a mode In this case only one variable is admitted it has to be the first argument of the mode and it represents the argument po sition Le it plays the role of the new variable mentioned above Thus no rewriting of the head pattern is performed in this case For example the head pattern p Input Parameter list int Output is valid for mode 2 defined in library isomodes and equivalent in this case to having the head pattern p Input Parameter Qutput and stating that the property list Parameter int holds for the calls of the predicate Usage head pattern Pr Description Pr is a head pattern Chapter 5 Types and properties related to assertions 53 complex arg property 1 REGTYPE complex arg property Props Props is a possibly empty complex argument property Such properties can appear in two formats which are defined by property conjunction 1 and property starterm 1 respectively The two formats can be mixed provided they are not in the same f
113. eclarations instead of ensure 1oaded 1 and effect since they are included they export operators declarations etc and should typically be documented differently There is a special doc 2 declaration doc filetype which provides a way of defining the intended use of the file This declaration is normally not needed in modules include files or packages but should be added in user files i e those meant to be loaded using ensure loaded 1 Adding this declaration will for example avoid spurious documentation of the declarations in the assertions package themselves when this package is included in a user file 2 8 5 Splitting large documents into parts As mentioned before in 1pdoc each documented file each component corresponds to a chapter in the generated manual In large documents it is sometimes convenient to build a super structure of parts each of which groups several chapters There is a special value of the Chapter 2 Generating Installing and Accessing Manuals 23 second argument of the doc filetype declaration mentioned above designed for this purpose The special filetype value part can be used to flag that the file in which it appears should be documented as the start of one of the major parts in a large document In order to introduce such a part a pl file with a declaration doc filetype part should be inserted in the sequence of files that make up the components variable of the SETTINGS p1 f
114. ed X For any call of the form X there is at least one clause whose test succeeds i e all the calls of the form X are covered DLGH97 Usage covered X Description All the calls of the form X are covered covered 2 PROPERTY covered X Y All variables occuring in X occur also in Y Usage covered X Y Description X is covered by Y The following properties hold globally This predicate is understood natively by CiaoPP native 1 exception 1 PROPERTY Meta predicate with arguments exception goal Usage exception Goal Description Calls of the form Goal throw an exception Chapter 8 Properties which are native to analyzers 79 exception 2 PROPERTY Meta predicate with arguments exception goal Usage exception Goal E Description Calls of the form Goal throw an exception that unifies with E fails 1 PROPERTY fails X Calls of the form X fail Meta predicate with arguments fails goal Usage fails X Description Calls of the form X fail The following properties hold globally This predicate is understood natively by CiaoPP native 1 finite_solutions 1 PROPERTY finite solutions X Calls of the form X produce a finite number of solutions DLGH97 Meta predicate with arguments finite solutions goal Usage finite solutions X Description All the calls of the form X have a finite number of solutions have choicepoints 1 PROPERTY Meta predicate with argum
115. edio das e e er ie he d 120 get doc field dict 3 pred ooooooooooo o 120 bind dict varnames 1 pred 000005 120 get mod doc 3 e EE 120 modtype 1 regtype 00 cee e eee eee eens 120 docst modtype 2 pred voceros iara 121 get first loc for pred 3 pred 2 121 17 Documentation Abstract Syntax Tree 123 17 1 Usage and interface autodoc doctreel 123 17 2 Documentation on exports autodoc_doctree 123 cmd type 1 EE 123 doctree 1 rest ype ctos e p Mae 124 doctree is empty 1 pred o ooooooooomoooo 124 is nonempty doctree 1 pred 124 empty doctree 1 predi ec cece eee ee eee 124 doctree_insert_end 3 pred ooooooooooo 124 doctree_insert_before_section 3 pred 124 doctree concat 3 pred sais EEN e ede 124 Gelenker Ze dere eh SEENEN 125 doclabel 1 F BbyDe a eere aded ete ra Ep 125 doe link apro i erus eoe PEE Re ETUR Ge 125 doclink islocal 1 pred iusso ven om apes 125 doctokens 1 regtype 0 0 eee cere e eens 125 section prop 2 TEEN 125 section_select_prop 3 pred oooooooooooo 125 doctree save 2 Pred xiiroescec meer eR eon a 125 doctree restore 2 pred 02 1 ree 125 doctree simplify 2 pred 5 4 2s eser tke PETERE 125 doctree putvars 5 red 125 doctree scan and save refs 2 pred 126 doctree prepare docst translate and write 3 pred 12
116. eee 119 docst message 2 eek binge bes bebe 118 docst message i 0 eee eee 118 docst modname 2 eee 118 d cst modtype 2 zT REM 121 docst muar get 3 sese 119 docst muar Lookup eee ee eee 119 docst mvar replace ii esses 119 docst new no SrC A4 enn 117 docst new eub seen 118 docst new with src 6 eese 118 docst no components 1 se esses 118 do st opt 2 nein E EENS d ee 118 docst opts 2 EEN iR A I amet 117 docst set currmod 3 eese 117 d cst set Bi a id ER RA 117 te E te EE 129 doctree c ncat 3 socxiilsu ied tei dps ks 124 doctree insert before section 3 124 doctree insert end 3 sees 124 doctree is emptu l cee eee eee ee 124 doctree_prepare_docst_translate_and_write 3 chat del EP 126 doctree ose nea cw pepe btt 125 doctree restore 2 een 125 doctree save 2 eee ren 125 doctree scan and save refs 2 126 doctree sinplify 2 oii et 125 doctree to rawtext 3 eee eee 126 doctree translate and write 3 126 Ke RE 133 168 E empty doctree 1 dete gui 124 ensure cache dir 1 eee 148 ensure output dir 1 i nora eeng a ees 148 ensure output dir prepared 2 112 So o lbi gg edu visus 155 escape String i eese 126 F false f i socilmt LEN NITORE X ER BEES 49 file format name 2 eee 148 file forma
117. egates system file utils make system extra distutils dirutils lists terms make make rt pillow html Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 23 2 Documentation on exports autodoc html template img url 2 PREDICATE Usage img url Name Url Description Obtain the URL where image Name is or will be found Call and exit should be compatible with Name is an atom atm 1 Url is a string a list of character codes string 1 fmt html template 3 PREDICATE No further documentation available for this predicate 144 The Ipdoc Documentation Generator Chapter 24 Man Pages man Backend 145 24 Man Pages man Backend Author s Jose F Morales Manuel Hermenegildo 24 1 Usage and interface autodoc man D e Library usage use_module library autodoc_man e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc doctree lpdocsrc src autodoc images lpdocsrc src autodoc aux lpdocsrc src comments fastformat System library modules lists Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system in
118. elsel dicta 77 80 a eh gr Im MARGARET 95 98 N n assrt body bi u uo ERE eund 54 55 nabody 15 E 51 54 The Ipdoc Documentation Generator 61 62 63 64 65 66 74 78 79 80 82 native 1 85 86 native 2 ossis 61 74 77 78 79 80 81 native EE 3 77 nativeprops pl E 103 NetsCaper EE 8 new item in description list 27 EE e EE 69 nlist 2 o abvvDUnS ID M ues 61 68 MNS PING Ayo sate Gis LR A EE EHI 61 62 EE its 103 104 no choicepoints l cee eee eee 77 80 NO exCeption EE aks 77 81 no exc ption 2 Ee E Mee 77 81 no rtcheck 1 iio o e ae Se oa ees 61 74 no signal WEE 77 81 NOSSipnal 2i de Gee E Senn 77 81 non EE 77 81 D TEE 77 81 nonvar l 62 63 64 65 66 67 70 97 98 normalize index cmd 2 s 151 152 notcovered 4d EEN 77 81 not A iu eina a a a N d aT 105 not_fails 1 77 81 97 98 99 100 101 not further inst 1 eee 54 not further inst 2 61 73 97 98 not mut exclusive 1 ce eee eee 77 82 nu m 1 i ie ubl Reb ees bee eee 61 63 64 102 num c ode 4 Lic AS cele te Mek 61 71 num solutions 2 eee 77 82 O OB 235 ore eer AA d Ron 101 one sided printing ee cece eae 16 EEN do i derat 19 operator Specifier sss 61 67 Operators voce Pere Pee E t 123 option comment 2 s s 16 115 116 P DE due n s re I M E ENS S pela 95 97 EEN 95 100 p bsnini ede eb
119. eneral improvements and bug fixes Designed a logo for LPdoc Jose Morales LPdoc comments can now be written using style comment syntax Manuel Hermenegildo Now commas etc are allowed in section names so that they can be used in other formats They are eliminated automatically in texi and info This avoids wrong section names and thus dangling pointers in generated texinfo files Manuel Hermenegildo Eliminated superfluous copy of summary in info mode Manuel Hermenegildo Eliminated unsupported chars that broke texi manual cross referencing Manuel Hermenegildo Improved treatment of accents dotless i and dotless j o etc Manuel Hermenegildo Initial size passed to xdvi more appropriate for current xdvis Manuel Hermenegildo Accents in bibliography fixed Manuel Hermenegildo Now repeated sections are disambiguated Manuel Hermenegildo Eliminated unnecessary escaping especially for amp Manuel Hermenegildo Better detection of when version is not available Manuel Hermenegildo Added new doc address _ comment which is the right place to put address contact information in manuals Jose Morales The Ipdoc Documentation Generator Added new version command expands to the version of the software to be documented Jose Morales Shorter SETTINGS p1 files with some rudimentary assertion based check ing of options Jose Morales Bug fix include and includeverbatim a
120. ength 2 predicate if it is called as in the first mode of usage above note that the previous pred assertion already conveys such information however it also compelled the predicate calls while the success assertion does not success length L N list var gt list integer Usage success AssertionBody The following properties should hold at call time AssertionBody is a predicate assertion body s_assrt_body 1 success 2 DECLARATION success assertion This assertion is similar to a success 1 assertion but it is explicitely qualified with an assertion status The status of non qualified success 1 assertions is assumed to be check Usage AssertionStatus success AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is a predicate assertion body s assrt body 1 test 1 DECLARATION This assertion is similar to a success assertion but it specifies a concrete test case to be run in order verify partially that the predicate is working as expected For example the following test will verify that the length predicate works well for the particular list given test length L N L 1 2 552 gt N 4 Usage test AssertionBody The following properties should hold at call time AssertionBody is a predicate assertion body s_assrt_body 1 Chapter 4 The Ciao assertion package 45 test
121. ents have choicepoints goal Usage have choicepoints X Description A call to X creates choicepoints indep 1 PROPERTY Usage indep X Description The variables in pairs in X are pairwise independent The following properties hold globally This predicate is understood natively by CiaoPP as indep X native 2 indep 2 PROPERTY Usage indep X Y Description X and Y do not have variables in common The following properties hold globally This predicate is understood natively by CiaoPP as indep X Y native 2 80 The Ipdoc Documentation Generator is det 1 PROPERTY is det X All calls of the form X are deterministic i e produce at most one solution or do not terminate In other words if X succeeds it can only succeed once It can still leave choice points after its execution but when backtracking into these it can only fail or go into an infinite loop Meta predicate with arguments is det goal Usage is det X Description All calls of the form X are deterministic linear 1 PROPERTY linear X X is bound to a term which is linear i e if it contains any variables such variables appear only once in the term For example 1 2 3 and A B are linear terms while f A A is not Usage linear X Description X is instantiated to a linear term The following properties hold globally This predicate is understood natively by CiaoPP native 1 mshare 1 P
122. eprops pl and basic props pl In this way space is saved but sacrifying performance due to usage of meta calls and external methods in the libraries Default e yes Expand library predicates inline as far as possible In this way the code is faster because its avoids metacalls and usage of external methods but the final executable could be bigger e rtchecks asrloc Controls the usage of locators for the assertions in the error messages The locator says the file and lines that contains the assertion that had failed Valid values are e no Disabled e yes Enabled Default e rtchecks predloc Controls the usage of locators for the predicate that caused the run time check error The locator says the first clause of the predicate that the violated assertion refers to e no Disabled 104 The Ipdoc Documentation Generator e yes Enabled Default e rtchecks callloc e no Do not show the stack of predicates that caused the failure e predicate Show the stack of predicates that caused the failure Instrument it in the predicate Default e literal Show the stack of predicates that caused the failure Instrument it in the literal This mode provides more information because reports also the literal in the body of the predicate e rtchecks namefmt e long Show the name of predicates properties and the values of the variables e short Only show the name of the predicate in a reduced format Default 12 1 Usage and interface
123. equesting it see the documentation for the doc 2 declaration Judicious use of these assertions allows at the same time docu menting the program code documenting the external use of the module and greatly improving the debugging process The latter is possible because the assertions provide the compiler with information on the intended meaning or behaviour of the program i e the specification which can be checked at compile time by a suitable preprocessor static analyzer and or at run time via checks inserted by a preprocessor Machine readable comments are also declarations included in the source program but which contain additional information intended to be read by humans i e this is an instantiation of the literate programming style of Knuth Knu84 Typical comments include title author s bugs changelog etc Judicious use of these comments allows enhancing at the same time the documentation of the program text and the manuals generated from it lpdoc requires these assertions and comments to be written using the Ciao system assertion language A simple compatibility library is available in order to make it possible to compile programs documented using assertions and comments in traditional constraint logic program ming systems which lack native support for them see the compatibility directory in the 1pdoc library Using this library such assertions and comments are simply ignored by the compiler This compatibility library
124. er index to be placed in an installation directory and which provide pointers to the docu ments generated see below If the main file is an application and the man option is selected then 1pdoc looks for a usage message 1 fact which should contain a string as argument and will use that string to document the usage of the application i e it will be used to fill in the synopsis section of the man page output name determines the base file name of the main documents generated by Ipdoc By default it is equal to the main file name or if the main file name ends with doc then it is equal to the name without the doc suffix This is useful when the name of the documentation file to be produced needs to have a name that is not directly related to the main file being documented index determines the list of indices to be included at the end of the document These can include indices for defined predicates modules concepts etc For a complete list of the types of indices available see index comment 2 in autodoc or type lpdoc help for a listing A setting of all generates all the supported indices but beware of limitations in the number of simultaneous indices supported in many texinfo installations bibfile determines a list of bib files one file per path ie files containing bibliographic entries in bibtex format This is only relevant if you are using cita tions in the text using the cite command In that case those will be
125. er st 2 prop horari liada ERE A 73 side 2 POD ere trireme ei es aie tae ae es 74 regtype 1 DEI cds ceu wes riu ze ge Red Aun Ee ZE 74 e A O letti Ure TURA 74 native 2 Prop ia A 74 NOt Checks Prop Lic 74 o EE 75 A E a Up bte wae ow tl t berg 75 bind ams tl erer ageet te xe ER c octo ds 75 grror Areg T EE bevor he err eer Re Rd 75 o O A ation 75 Y A AN 75 Dag vales L regtype oorr etre 75 pe type 1 prop a eet ne Ed 76 iv The Ipdoc Documentation Generator 8 Properties which are native to analyzers 77 8 1 Usage and interface native propsl eee e eee 77 8 2 Documentation on exports native_props 77 clique TEE ee Edge eerie Ea UIN e TT elique l AL Prop ereis EE 78 c nstraint 1 Stop o gesn aia 78 Goyered l E EE 78 covered 2 prop WEE 78 exception prop AE tes 78 E EE 78 Lus LUODIOB asia neto repos dede dace d eee TO edd 79 finite solutions 1 prop ege xg ER deen 79 Have choicepoints 1 pFfOD cLoeer each then es 79 Indep IPOD EE 79 Indep 2 EG 79 det TL EE 79 linear MS A oie we n n ea b oat 80 mshare prop ewe eege qr RR E HERR 80 mut exclusive 1 prop ss mcn e E ER CO EECEY WE De 80 no choicepoints 1 prop 80 no_exception 1 Lee cs win decd ee eR RETO Peet E 81 no exception 2 prop ur oi andere ev ees 81 Ee We ees bier woe AE Ma 81 j signal 2 Ehe y elg qe E d eres 81 non det Prop iD 81 nonground 1 proprio arce 81 not covered Pl prop 2
126. ertion lesse 48 comments machine readable nnnnaaaaanaaa 41 comp assertion na 45 compatibility properties ooooooooocooooo 57 component Des 4 CONTENUS ALES EE AE Pee d ane ea 18 COByElglit 2 2 35b RUNE MR REIR 34 date c a xat Id dete pv el EOD ERN 29 decl assertion msd ia eI Den o vates 47 description listoi nir ema EE armed Oe Meder 26 document structure 16 documentation format 111 documentation sting 32 The Ipdoc Documentation Generator E emacs Ciao mode 36 Emacs accessing info files 19 Emacs generating manuals from 15 Emacs LPdoc mode 15 email Address e eum IRE REPRE 29 email addresses 29 emphlasis face iesus pev eec RS RETE ERR RR 27 encapsulated postscript eee eee 30 entry ASSIM esee De eet ge m Re 46 enumerated Det 26 ESCAPE SEQUENCES s aser nee eee ed ah 26 example of Ipdoc use 89 exit assertion cc ovv EEG UENIRE 46 F false assertion i22 mee Ege qur 49 fixed format test 27 fixed width font 27 TOOT bere oe Sis ote DES e LSU eal ed 27 formatting commands 25 41 framed Dee e sett ee be te ierit 27 G generating from Emacs 0oooooooocccccccccoo 15 generating manuals eec eseri ereid e inadae nnig 15 H hard side effectS o oooooooooomomomomooo 83 html index page 18 I image Tle EE 30 images inserting poe erra KAE eee 30 images scaling scos
127. es autodoc html 139 autodoc escape string hook 5 pred 139 autodoc rw command hook 4 pred 139 autodoc finish hook 1 pred vanos s xe DR nes 139 autodoc gen alternative hook 2 pred 140 Resource Handling for the HTML Backend 141 22 1 Usage and interface autodoc html resources 141 22 2 Documentation on exports autodoc html resources 141 prepare web skel 1 red 141 prepare mathjax pred ii ces oko RR Ehe 141 using mathjax 1 pred c 6e2 ees eee e ees Ptr ee od 141 Template Support for the HTML Backend 143 23 1 Usage and interface autodoc html template 143 23 2 Documentation on exports autodoc html template 143 img url 2 pred o ceases et E Gier 143 fmt html template 3 pred ooooooooooo 143 Man Pages man Backend 145 24 1 Usage and interface autodoc man 145 24 2 Documentation on multifiles autodoc man 145 autodoc rw command hook 4 pred 145 autodoc finish hook 1 pred o oo oo o 145 autodoc gen alternative hook 2 pred 145 Filesystem Abstraction 147 25 1 Usage and interface autodoc filesystem 147 25 2 Documentation on exports autodoc_filesystem 147 filename 1 rei pelan aos da aa 147 basename 1 regtype 0 cece eee eee eens 147 subtarget l restype s
128. es props regtypes declarations etc This can be shut off with the shorttoc option Made more silent in normal conditions file inclusion is muted now unless v option is selected A single texi file is now constructed by grouping the texic files gen erated for all components in which the references and menus are resolved This has the advantage that the process of resolving references and menus has now been sped up very significantly Also texi is now a valid tar get perhaps useful for distributions The generated files now have texic texinfo component Now declarations are always documented as long as there is a dec1 asser tion Also they are now documented in a separate section e Bug fixes and other minor improvements The directory containing html manual is now called BASENAME html instead of just BASENAME which was confusing Now requesting building a ps only does not leave a dvi behind useful for distributions File names can now include the symbol _ even if they contain figures TeX related intermediate files are now cleaned up after each run in order to avoid clutter Fixed modes which was broken since going to the new normalizer was normalizer problem Fixed problem with no documentation when only modes given Fixed duplication of documentation for internal predicates when also ex ported Minor formatting problem when no documentation nor definition found for a regtype fixed Determining exports
129. es should hold at call time PropertyConjunction is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property The first argument of each such term is a variable which appears as a head argument property conjunction 1 PREDICATE Usage trust PropertyConjunction Description This assertion also provides information on a clause program point It is identical syntactically to a check 1 assertion However the properties stated are not taken as something to be checked but are instead trusted by the compiler While the compiler may in some cases detect an inconsistency between a trust 1 assertion and the program in all other cases the information given in the assertion will be taken to be true As a result if these assertions are erroneous they can introduce bugs in programs Thus trust 1 assertions should be written with care Chapter 4 The Ciao assertion package 49 An important use of these assertions is in providing information to the compiler which it may not be able to infer from the program either because the information is not present or because the analyzer being used is not precise enough In particular providing information on external predicates which may not be accessible at the time of compiling the module can greatly improve the precision of the analyzer This can be easily done with trust assertion The following properties should hol
130. es should hold at call time AssertionBody is an assertion body assrt_body 1 This assertion is similar to a prop 1 assertion but it is explicitely qualified Non qualified prop 1 assertions are assumed the qualifier check Usage AssertionStatus prop AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is an assertion body assrt_body 1 This assertion provides information about the external calls to a predicate It is identical syntactically to a calls 1 assertion However they describe only external calls i e calls to the exported predicates of a module from outside the module or calls to the predicates in a non modular file from other files or the user These assertions are trusted by the compiler As a result if their descriptions are erroneous they can introduce bugs in programs Thus entry 1 assertions should be written with care An important use of these assertions is in providing information to the compiler which it may not be able to infer from the program The main use is in providing information on the ways in which exported predicates of a module will be called from outside the module This will greatly improve the precision of the analyzer which otherwise has to assume that the arguments that exported predicates receive are any arbitrary term Usage entry AssertionBody The following properties should h
131. escription An internal label doclink at 2 PREDICATE No further documentation available for this predicate doclink is local 1 PREDICATE No further documentation available for this predicate doctokens 1 REGTYPE Usage Description Primitive doctree subset ready for output not further reducible section prop 2 PREDICATE No further documentation available for this predicate section select prop 3 PREDICATE No further documentation available for this predicate doctree_save 2 PREDICATE doctree_restore 2 PREDICATE doctree simplify 2 PREDICATE No further documentation available for this predicate doctree putvars 5 PREDICATE Usage doctree putvars RO DocSt PDict VarDict R Description Traverse RO and replace each var Name doctree item with a fresh vari able B For each replacement the term B Var is introduced in VarDict where Var is the associated value to Name in the dictionary PDict 126 The Ipdoc Documentation Generator The following properties should hold at call time Intermediate tree representation for documentation docstate DocSt The following properties should hold upon exit Intermediate tree representation for documentation doctree scan and save refs 2 Usage doctree scan and save refs R DocSt Description Scan and save the references of the doctree The following properties should hold at call time Intermediate tree representation for documentation docstate D
132. et 4 main output name 2 get subbase 3 absfile to relfile 3 clean a11 0 clean docs no texi 0O clean all temporal 0 clean intermediate 0 clean tex intermediate 0 Regular Types filename 1 basename 1 subtarget 1 e Other modules used Application modules lpdocsrc src autodoc settings lpdocsrc src autodoc structure lpdocsrc src autodoc state lpdocsrc src component versions System library modules aggregates make system_extra terms distutils dirutils system component_ registry component_registry Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 25 2 Documentation on exports autodoc filesystem filename 1 REGTYPE Usage filename X Description X is the name of a file basename 1 REGTYPE Usage basename X Description X is the base name of a file without extension 148 The Ipdoc Documentation Generator subtarget 1 REGTYPE Usage Description The kind of intermediate final results for a single documentation pro cessing unit module file format name 2 PREDICATE No further documentation available for this predicate supported file format 1 PREDICATE No further documentation available for this predicate file format provided by backend 3 PREDICATE Usage fil
133. eval 1 is det 1 gnd 1 Required by the nonfailure test type 2 native 1 REGTYPE sideff 2 66 The Ipdoc Documentation Generator gndstr T If the following properties hold at call time T is currently ground it contains no variables then the following properties hold globally gndstr T is evaluable at compile time All calls of the form gndstr T are deterministic gndstr T The following properties hold upon exit T is a ground compound term Usage gndstr T Description T is a ground compound term The following properties hold globally This predicate is understood natively by CiaoPP constant 1 General properties constant T The following properties hold globally constant T is side effect free constant T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally constant T is evaluable at compile time All calls of the form constant T are deterministic constant T The following properties hold upon exit T is an atomic term an atom or a number Usage constant T Description T is an atomic term an atom or a number callable 1 General properties callable T The following properties hold globally callable T is side effect free callable T If the following properties hold at call time T is currently a term which is not a free varia
134. f predicate length 2 see lists pred length L N list var gt list integer Computes the length of L pred length L N var integer gt list integer Outputs L of length N pred length L N list integer gt list integer Chapter 4 The Ciao assertion package 43 Checks that L is of length N Usage pred AssertionBody The following properties should hold at call time AssertionBody is an assertion body assrt_body 1 pred 2 DECLARATION This assertion is similar to a pred 1 assertion but it is explicitely qualified Non qualified pred 1 assertions are assumed the qualifier check Usage AssertionStatus pred AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is an assertion body assrt_body 1 texec 1 DECLARATION This assertion is similar to a calls 1 assertion but it is used to provide input data and execution commands to the unit test driver Usage texec AssertionBody The following properties should hold at call time AssertionBody is a call assertion body c_assrt_body 1 texec 2 DECLARATION This assertion is similar to a texec 1 assertion but it is explicitely qualified with an assertion status Non qualified texec 1 assertions are assumed to have check status Usage AssertionStatus texec AssertionBody The following properties sho
135. f text in a framed box with round corners end cartouche marks the end of a section of text in a framed box begin falert marks the beginning of a section of text in a framed boz for alert messages end alert marks the end of the alert message sectiont text starts a section whose title is text Due to a limitation of the info format do not use or or in section subsection title chapter etc headings Osubsectionitert starts a subsection whose title is text footnote text places text in a footnote hfill introduces horizontal filling space may be ignored in certain formats bf tert text will be formatted in bold face or any other strong face em tert text will be formatted in italics face or any other emphasis face tt tert text will be formatted in a fixed width font i e typewriter like font Okeyikey key is the identifier of a keyboard key i e a letter such as a or a special key identifier such as RET or DEL and will be formatted as or in a fixed width typewriter like font sp N generates N blank lines of space Forces also a paragraph break p forces a paragraph break in the same way as leaving one or more blank lines Onoindent used at the beginning of paragraph states that the first line of the paragraph should not be indented Useful for example for avoiding indentation on paragraphs that are continuations of other paragraphs such as after a verbatim e Indexi
136. f version maintenance that should be performed by the emacs Ciao mode Example doc version_maintenance dir version Version control info is kept in directory version See the definition of version_ maintenance_type 1 for more information on the different version maintenance modes See the documentation on the emacs Ciao mode in the Ciao manual for information on how to automatically insert version control doc 2 declarations in files The version maintenance mode can also be set alternatively by inserting a comment such as Local Variables 4 mode CIAO update version comments off 4 End The lines above instruct emacs to put the buffer visiting the file in emacs Ciao mode and to turn version maintenance off Setting the version maintenance mode in this way Chapter 3 Documentation Mark up Language and Declarations 37 has the disadvantage that 1pdoc will not be aware of the type of version maintenance being performed the lines above are comments for Prolog However this can be useful in fact for setting the version maintenance mode for packages and other files meant for inclusion in other files since that way the settings will not affect the file in which the package is included The following properties should hold upon exit CommentType version maintenance 2 VersionMaintenanceType a type of version maintenance for a file version maintenance type 1 Usage 19 doc CommentType PredName
137. facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support y 7 2 Documentation on exports basic_props term 1 REGTYPE The most general type includes all possible terms General properties term X ter ter The following properties hold globally term X is side effect free sideff 2 m X The following properties hold globally term X is evaluable at compile time eval 1 m X The following properties hold globally term X is equivalent to true equiv 2 Usage term X 62 The Ipdoc Documentation Generator Description X is any term The following properties hold globally This predicate is understood natively by CiaoPP int 1 native 1 REGTYPE The type of integers The range of integers is 2 2147483616 2 2147483616 Thus for all practical purposes the range of integers can be considered infinite General properties int T The following properties hold globally int T is side effect free int T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally int T is evaluable at compile time All calls of the form int T are deterministic int T The following properties hold upon exit T is an integer The following properties hold globally Indicates the type of test that a predicat
138. file formats 1 load vpaths O viewer 3 xdvi 1 xdvisize 1 pdfview 1 psview 1 htmlview 1 bibtex 1 tex 1 texindex 1 dvips 1 ps2pdf 1 makeinfo 1 makertf 1 rtftohlp 1 convertc 1 make system extra make make rt aggregates distutils distutils Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support V Y 19 2 Documentation on exports autodoc_settings Ipdoc option 1 PREDICATE Defines the global options of lpdoc The predicate is of type data verify settings 0 PREDICATE No further documentation available for this predicate check setting 1 PREDICATE No further documentation available for this predicate setting value or default 2 PREDICATE Usage setting value or default Var Value 132 The Ipdoc Documentation Generator Description Returns in Value the value of the variable Var In case this variable does not exists it returns a default value If there is no default value for the variable Var it fails setting value or default 3 No further documentation available for this predicate setting value 2 No further documentation available for this predicate all setting values 2 No further documentation available for this predicate get command option 1 No further documentation available for this pre
139. fo term compare term typing hiord rt debugger support J 24 2 Documentation on multifiles autodoc_man autodoc_rw_command_hook 4 PREDICATE The predicate is multifile Usage autodoc_rw_command_hook Backend DocSt Command NewCommand The following properties should hold at call time Backend is a supported backend backend_id 1 docstate DocSt docstate 1 Intermediate tree representation for documentation doctree 1 Intermediate tree representation for documentation doctree 1 autodoc finish hook 1 PREDICATE No further documentation available for this predicate The predicate is multifile autodoc gen alternative hook 2 PREDICATE No further documentation available for this predicate The predicate is multifile 146 The Ipdoc Documentation Generator Chapter 25 Filesystem Abstraction 147 25 Filesystem Abstraction Author s Jose F Morales This module provides definitions to assign unique file system paths and names for each of the intermediate and final results of documentation generation 25 1 Usage and interface autodoc filesystem gt e Library usage use_module library autodoc_filesystem e Exports Predicates file_format_name 2 supported file format 1 file format provided by backend 3 clean_fs_db 0 get output dir 2 get cache dir 2 ensure output dir 1 ensure cache dir 1 main absfile in format 2 main absfile for subtarget 3 absfile for aux 3 absfile for subtarg
140. for an assertion assrt type 1 REGTYPE The admissible kinds of assertions assrt type pred assrt type prop assrt type decl assrt type func assrt type calls assrt type success assrt type comp assrt type entry assrt type exit assrt type test assrt type texec assrt type modedef Usage assrt type X Description X is an admissible kind of assertion predfunctor 1 REGTYPE Usage predfunctor X Description X is a type of assertion which defines a predicate propfunctor 1 REGTYPE Usage propfunctor X Description X is a type of assertion which defines a property docstring 1 PROPERTY Usage docstring String Description String is a text comment with admissible documentation commands The usual formatting commands that are applicable in comment strings are defined by stringcommand 1 See the 1pdoc manual for documentation on comments Chapter 6 Declaring regular types 57 6 Declaring regular types Author s Manuel Hermenegildo Pedro L pez Francisco Bueno This library package adds declarations and new operator definitions which provide simple syntactic sugar to write regular type definitions in source code Regular types are just properties which have the additional characteristic of being regular types basic_props regtype 1 defined below For example this library package allows writing regtype tree X X is a tree instead of the more cumbersome p
141. he assertion hold The usual formatting com mands that are applicable in comment strings can be used see stringcommand 1 See the 1pdoc manual for documentation on assertion comments Usage assrt body X Description X is an assertion body head pattern 1 PROPERTY A head pattern can be a predicate name functor arity predname 1 or a term Thus both p 3 and p A B C are valid head patterns In the case in which the head pattern is a term each argument of such a term can be e A variable This is useful in order to be able to refer to the correspond ing argument positions by name within properties and in comments Thus p Input Parameter utput is a valid head pattern LC e A variable as above but preceded by a mode This mode determines in a compact way certain call or answer properties For example the head pattern p Input Parameter Output is valid as long as 1 is declared as a mode Acceptable modes are documented in library basicmodes and library isomodes User defined modes are documented in modedef 1 e Any term In this case this term determines the instantiation state of the correspond ing argument position of the predicate calls to which the assertion applies H e A ground term preceded by a mode The ground term determines a property of the corresponding argument The mode determines if it applies to the calls and or the successes The actual property referred to is that given by th
142. he format of the different parts of the assertion body are given by n assrt body 5 and its auxiliary types Usage c_assrt_body X Description X is a call assertion body Chapter 5 Types and properties related to assertions 55 s assrt body 1 REGTYPE This predicate defines the different types of syntax admissible in the bodies of pred 1 func 1 etc assertions The following are admissible Pr CP gt AP CO Pr CP gt AP Pr gt AP CO Pr gt AP where e Pr is a head pattern head_pattern 1 which describes the predicate or property and possibly gives some implicit call answer information e CP is a possibly empty complex argument property complex arg property 1 which applies to the calls to the predicate e AP is a possibly empty complex argument property complex arg property 1 which applies to the answers to the predicate if the predicate succeeds These only apply if the possibly empty properties given for calls in the assertion hold e CO is a comment string docstring 1 This comment only applies if the possibly empty properties given for calls in the assertion hold The usual formatting com mands that are applicable in comment strings can be used see stringcommand 1 The format of the different parts of the assertion body are given by n assrt body 5 and its auxiliary types Usage s_assrt_body X Description X is a predicate assertion body g assrt body 1 REGTYPE This predic
143. hich printed manuals and several other printing and on line formats can be easily generated automatically including info html etc There is also some limited support for direct output in unix man format and direct html but note that html can also be generated in a better way by first generating texinfo and then using one of the available converters For texinfo the documentation for a module is a texinfo chapter suitable for inclusion in a wrapper main document file A simple example of the use of this library for generating a texinfo reference manual including a driver script useful Makefiles etc is included with the library source code Other examples can be found in the Ciao documentation directory i e the Ciao manuals themselves A simple example of the use of this library for generating a texinfo reference manual in cluding a driver script useful Makefiles etc is included with the library source code Other examples can be found in the Ciao documentation directory i e the Ciao manuals themselves 112 The Ipdoc Documentation Generator 15 1 Usage and interface autodoc a E e Library usage use module library autodoc e Exports Predicates index comment 2 reset_output_dir_db 0 ensure_output_dir_prepared 2 get_autodoc_opts 3 autodoc_gen_doctree 5 fmt_infodir_entry 3 autodoc_ compute_grefs 3 autodoc_translate_doctree 3 autodoc_finish 1 autodoc_ gen_alternative 2 Multifiles autodo
144. i ainiai pue mi EN xus 30 including a predicate definition snasssnaa 30 including an Image 30 including code RPSL QU ERE da 30 incl ding 11168354 uda cU TE dee e ROLE AR 30 including images eiser e244 e er DEG Dee ead 30 including or not authors 00 16 including or not bug info 16 including or not changelog 16 including or not versions patches 16 indentation avoiding 0 27 index pages out of order 18 Concept Index info path lisboa eR END ERE 20 installation 2 5 E eu RISUS 3 installation of manualS o ooooooooooo 18 instantiation Droperties esses eese 57 internals manual 22 IMC ii a a 34 NS A ius eeni e E AE ede 27 item in an itemized lisSt o o 26 itemized let edle MEN ENN ee ee 26 K keyboard key 27 L LaTeX notation 0 ec cee eee eee eee 29 letter size paper EE m rp abe ee ee 17 library 55 a e Qe Ee d 3 literate programming ssssse eene 19 log OF Changes ve cad vea dv Der suu mee eue 36 M machine readable comments 32 main body v eee a Neu dE UPC PY 34 maim file sedo eripe e LP UMS 4 Makefile vicio di OBEN 107 module comment 34 module declaration lesen 111 N new item in description list 27 O one sided printing eee 16 E page numbering changing 16 page size cha
145. i files can also be generated with the GNU Texinfo package which provides among others the texi2dvi command However Texinfo itself requires the standard tex document processing package In order to use texi2dvi instead of tex when processing documents you should change the variable TEX in the Makefile skel file in the 1ib direc tory before installing 1pdoc Generating the dvi file requires that the texinfo tex file containing the relevant macros be available to tex This file is normally included with modern tex distributions although it may be obsolete An appropriate and up to date one for 1pdoc is provided with the 1pdoc distribution stored in the 1pdoc library during instal lation and used automatically when 1pdoc runs tex The texindex package is required in order to process the indices If you use references in your manual then the bibtex package is also needed texindex and bibtex are included with most tex distributions Generating ps files ps files are generated from the dvi files using the dvips command this again can be changed in the Makefile skel file in the lib directory This command is included with standard tex distributions Generating pdf files pdf files are currently generated from the texi file using the pdftex command this again can be changed in the Makefile skel file in the lib direc tory This command is included in current Linux distributions Generating html files html files are generated dire
146. ication Several of these declarations can appear per module When generating documentation automatically the text in the Text fields will be used as items in an itemized list of module or application bugs Example doc bug Comment text still has to be written by user The following properties should hold upon exit CommentType bug 2 CommentText is a documentation string docstring 1 Usage 17 doc Version CommentText Description Provides a means for keeping a log of changes Version contains the version number and date corresponding to the change and CommentText an expla nation of the change Several of these declarations can appear per module When generating documentation automatically the texts in the different CommentText fields typically appear as items in an itemized list of changes The emacs Ciao mode helps tracking version numbers by prompting for version comments when files are saved This mode requires version comments to appear in reverse chronological order i e the topmost comment should be the most recent one Example doc version 1 1 21 1998 04 18 15 05 01 EST Added some missing comments Manuel Hermenegildo The following properties should hold upon exit Version is a complete version descriptor version_descriptor 1 CommentText is a documentation string docstring 1 Usage 18 doc CommentType VersionMaintenanceType Description Defines the type o
147. iccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 31 2 Documentation on exports autodoc images locate and convert image 4 PREDICATE Usage locate and convert image SrcSpecS AcceptedFormats DocSt TargetFiles Description The image at SrcSpecS is located as one of the known formats known_ format 1 and converted to one of the AcceptedFormats The target file is called TargetFiles Call and exit should be compatible with SrcSpecS is a string a list of character codes string 1 AcceptedFormats is a list of atoms list 2 docstate DocSt docstate 1 TargetFileS is a string a list of character codes string 1 clean_image_cache 0 PREDICATE Usage Description Clean the cache for image copy conversions 162 The Ipdoc Documentation Generator References 163 References Bue95 Bue98 DEDC96 DL93 DLGH97 DLGHL97 Her99 Her00 JL88 JM94 Knu84 LGHD96 MH89 F Bueno The CIAO Multiparadigm Compiler A User s Manual Technical Report CLIP8 95 0 Facultad de Inform tica UPM June 1995 F Bueno Using Assertions for Static Debugging of CLP A Manual Technical Report CLIP1 98 0 DISCIPL Project CLIP Group UPM June 1998 P Deransart A Ed Dbali and L Cervoni Prolog The Standard Springer Verlag 1996 S K Debray and N
148. ich is also accessible via WWW After setting docdir to this directory in the SETTINGS p1 file and selecting infoindex and htmlindex for the docformats variable lpdoc install lpdoc uninstall will install uninstall all manuals in all the selected formats in this directory and create and maintain the corresponding html and info indices Then setting the environment variables as follows e g for csh in cshrc setenv DOCDIR home clip public_html lpdoc_docs setenv INFOPATH usr local info DOCDIR setenv MANPATH DOCDIR MANPATH Example files for inclusion in user s or common shell initialization files are included in the lpdoc library More complex setups can be accommodated as for example installing different types of manuals in different directories However this currently requires changing the docformats and docdir variables and performing lpdoc install for each installation format directory 2 8 Some usage tips This section contains additional suggestions on the use of 1pdoc 2 8 1 Ensuring Compatibility with All Supported Target Formats One of the nice things about lpdoc is that it allows generating manuals in several formats which are quite different in nature Because these formats each have widely different require ments it is sometimes a little tricky to get things to work successfully for all formats The following recommendations are intended to help in achieving useful manuals in all formats e The best result
149. ield of an assertion Le the following is a valid assertion pred foo X Y nonvar var gt ground X ground Y Usage complex arg property Props Description Props is a possibly empty complex argument property property conjunction 1 REGTYPE This type defines the first unabridged format in which properties can be expressed in the bodies of assertions It is essentially a conjunction of properties which refer to variables The following is an example of a complex property in this format e integer X list Y integer X has the property integer 1 and Y has the prop erty list 2 with second argument integer Usage property conjunction Props Description Props is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property The first argument of each such term is a variable which appears as a head argument property starterm 1 REGTYPE This type defines a second compact format in which properties can be expressed in the bodies of assertions A property starterm 1 is a term whose main functor is 2 and when it appears in an assertion the number of terms joined by 2 is exactly the arity of the predicate it refers to A similar series of properties as in property conjunction 1 appears but the arity of each property is one less the argument position to which they refer first argument is left out and determined by the position of the p
150. ile at each point in which a major part starts The doc title declaration of this file will be used as the part title and the doc module declaration text will be used as the introduction to the part 2 8 6 Documenting reexported predicates Reexported predicates i e predicates which are exported by a module m1 but defined in another module m2 which is used by m1 are normally not documented in the original module but instead a simple reference is included to the module in which it is defined This can be changed so that the documentation is included in the original module by using a doc 2 declaration with doinclude in the first argument see the comments library This is often useful when documenting a library made of several components For a simple user s manual it is often sufficient to include in the 1pdoc SETTINGS p1 file the principal module which is the one which users will do a use module 1 of in the manual This module typically exports or reexports all the predicates which define the library s user interface Note however that currently due to limitations in the implementation only the comments inside assertions but not those in doc 2 declarations are included for reexported predicates 2 8 7 Separating the documentation from the source file Sometimes one would not like to include long introductory comments in the module itself but would rather have them in a different file This can be done quite simpl
151. iles This option can be used in software distributions in which the manuals in the different formats will be generated during installation This is generally more compact but requires the presence of several tools such as tex Emacs etc see Section 14 2 Other software packages required lpdoc page 107 in order to generate the manuals in the target formats during installation 18 The Ipdoc Documentation Generator e lpdoc realclean performs a complete cleanup deleting also the texic files i e it typically leaves only the SETTINGS p1 file This is is the most compact but requires the presence of the tools mentioned above the source files from which the manuals are generated and lpdoc in order to re generate the manuals in the target formats during installation 2 5 Installing a generated manual in a public area Note This part is obsolete It must be updated to describe Ipdoc version 2 0 EMM Once the manual has been generated in the desired formats the Makefile provided also al lows automatic installation in a different area specified by the docdir option in the SETTINGS pl file This is done by typing lpdoc install As mentioned above lpdoc can generate directly brief descriptions in html or Emacs info formats suitable for inclusion in an on line index of applications In particular if the htmlindex and or infoindex options are selected 1pdoc install will create the installation directory place the documentat
152. ilesystem lpdocsrc src autodoc bibrefs autodoc structure System library modules aggregates lists Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 27 2 Documentation on exports autodoc_refsdb compute refs and biblio 1 PREDICATE No further documentation available for this predicate prepare current refs 1 PREDICATE Usage Description Prepare references for the translation of the current file Call and exit should be compatible with docstate Arg1 docstate 1 clean_current_refs 1 PREDICATE Usage 154 The Ipdoc Documentation Generator Description Clean the data stored by prepare current refs 1 Call and exit should be compatible with docstate Arg1 docstate 1 secttree 1 REGTYPE Usage Description A tree of sections secttree_resolve 3 PREDICATE Usage secttree_resolve LabelName Tree Link Description Locate in the section tree Tree the section with label name LabelName and return the Link to the section Call and exit should be compatible with LabelName is a string a list of character codes string 1 Intermediate tree representation for documentation doctree 1 A link to a document label doclink 1 Chapter 28 Error Messages 155 28 Err
153. ined Do not signal undefined properties in text option comment no propsepln Do not put each property in a separate line option comment no biblio Do not include a bibliographical References appe option comment no sysmods Do not include system modules in list of libraries used option comment no engmods Do not include system engine modules in list of libraries used option comment no isoline Do not include textual description that a given usage conforms to the ISO standard option comment propmods Include module name to which props belong option Comment no propuses Do not Include property uses from assertions i option comment shorttoc Produce shorter table of contents no entries for individual defs of preds props etc option comment regtype props Include in the doc for regtypes the global prop stating that they are indeed regtypes option comment onesided For printing on one side default is two option comment no math Disable mathematical environments The following properties should hold upon exit Option is a supported documentation option supported option 1 Text is a string a list of character codes string 1 backend id 1 REGTYPE Usage backend id Id Description Id is a supported backend backend ignores components 1 PREDICATE Usage backend ignores components Id Description Id does not take into account components only documents the mainfil
154. ing documentation automatically the text in ComnentText will be used in one of the last sections or appendices of the corresponding chapter or manual There should be at most one of these declarations per module CommentText may use subsections if substructure is needed Chapter 3 Documentation Mark up Language and Declarations 35 Example doc appendix Other module functionality The following properties should hold upon exit CommentType appendix 2 CommentText is a documentation string docstring 1 Usage 12 doc CommentType ComnentText Description Provides a description of how the library should be loaded Normally this information is gathered automatically when generating documentation automat ically This declaration is meant for use when the module needs to be treated in some special way There should be at most one of these declarations per module Example doc usage Do not use still in development The following properties should hold upon exit CommentType usage 2 CommentText is a documentation string docstring 1 Usage 13 doc CommentType Section Description Insert a program section with name Section Sectioning commands allow a structured separation of the program into parts The division is only for doc umentation purposes so visibility and scope of definitions is not affected by sectioning commands Example doc section Main Steps of the A
155. ing properties should hold upon exit Argi is ground gnd 1 Arg2 is currently ground it contains no variables ground 1 The following properties should hold globally Arg3 is not further instantiated not further inst 2 i length A is a lower bound on the cost of any call of the form p Arg1 Arg2 Arg3 Arg4 A steps_1b 2 u 3 PREDICATE Usage 1 The following properties should hold at call time Arel is currently a term which is not a free variable nonvar 1 Arg2 is a free variable var 1 The following properties should hold upon exit Arg3 is ground gnd 1 98 The Ipdoc Documentation Generator long 1 PROPERTY This is a property describing a list that is longish The definition is long L length L N N gt 100 Usage long L Description L is rather long w 1 PREDICATE Usage Calls should and exit will be compatible with Argl is a list of mytypes list 2 The following properties should hold at call time Argi is currently a term which is not a free variable nonvar 1 mytype 1 PREDICATE No further documentation available for this predicate t 5 PREDICATE Usage t 4 B C D E Description This predicate uses modes extensively Call and exit should be compatible with A is a list list 1 B is a list list 1 C is an integer int 1 D is an integer int 1 E is a list list 1 The following properties should hold at call time A is currently a term
156. ion in the desired formats in this directory and produce and place in the same directory suitable index html and or dir files These files will contain some basic info on the manual extracted from the summary and title respectively and include pointers to the relevant documents which have been installed The infodirheadfile infodirtailfile default examples used in the CLIP group at UPM are included with the distribution should point to files which will be used as head and tail templates when generating the dir files Several manuals coming from different doc directories can be installed in the same docdir directory In this case the descriptions of and pointers to the different manuals will be automatically combined appearing in alphabetic order in the index html and or dir indices and a contents area will appear at the beginning of the html index page Important Note In order for the different components to appear in the correct positions in the index pages mentioned above the traditional C Lexical order must be active In recent Un x systems e g in most current Linux systems this may not be the case There are several possible fixes e For csh put setenv LC COLLATE C in your cshrc e For bash put export LC COLLATE C in your profile e In many systems this can be done globally by the super user E g in many Linux systems set LANG C in etc sysconfig i18n Note that depending on the structure of the manuals being gene
157. is se 0k vlr eu Ne oak 147 file format name 2 De te coders ee doe SER 148 supported file format 1 red 148 file format provided by backend 3 pred 148 clean fs db 0 pred iua cut de eer e ncn 148 get_output dir 2 pred oci cer Speer eg ic 148 get cache dir 2 pred iii 148 ensure output dir 1 pre 148 ensure cache dir 1 red 148 main absfile in format 2 pred ssususrusnusa 148 main absfile for subtarget 3 pred 149 bsfile Tor ux 3 EE 149 absfile for subtarget 4 pred suseusresrsrusa 149 main output name 2 pr d c vic oe bees 149 get_subbase 3 pred EE 149 absfile to relfile 3 red 149 lean ll 0 pred uae Sebald be iS be cien 149 clean docs no texi 0 pred 0ooooooooooo 149 clean all temporal 0 red 149 clean intermediate 0 pred ooooooooomoo 150 clean tex intermediate 0 red 150 ix The Ipdoc Documentation Generator x 26 Indexing Commands Definition and Formatting Re e ee re DA ee ip AAA inc trip A 151 26 1 Usage and interface autodoc Andezl 151 26 2 Documentation on exports autodoc index 151 get idxsub 2 pred 3 ccs Liter RR ye 3 151 get idxbase 3 predice 151 typeindex 5 pred cedat rcc DRE KO 151 idx set Tidices 3 pred esos meii re Ee EET 152 isindex cmd 1 pred uico EE 152 codetype 1 EEN 152 normalize index cmd 3 pred o oo o 152 tad pred NEE 152 fmtindex 3 X
158. is part of the assertions library It defines the basic code related assertions i e those intended to be used mainly by compilation related tools such as the static analyzer or the run time test generator Giving specifications for predicates and other program elements is the main functionality documented here The exact syntax of comments is described in the autodocumenter 1pdoc Knu84 Her99 manual although some support for adding machine readable comments in as sertions is also mentioned here There are two kinds of assertions predicate assertions and program point assertions All predicate assertions are currently placed as directives in the source code i e preceded by Program point assertions are placed as goals in clause bodies 4 1 More info The facilities provided by the library are documented in the description of its component modules This documentation is intended to provide information only at a reference man ual level For a more tutorial introduction to the subject and some more examples please see PBH00 The assertion language implemented in this library is modeled after this design document although due to implementation issues it may differ in some details The purpose of this manual is to document precisely what the implementation of the library supports at any given point in time 4 2 Some attention points e Formatting commands within text strings many of the predicates defined in these mod u
159. istic is det 1 num T The following properties hold upon exit T is a number num 1 The following properties hold globally Indicates the type of test that a predicate performs Required by the nonfailure analyisis test type 2 Usage num T Description T is a number The following properties hold globally This predicate is understood natively by CiaoPP native 1 atm 1 REGTYPE The type of atoms or non numeric constants The size of atoms is unbound General properties atm T The following properties hold globally atm T is side effect free sideff 2 atm T If the following properties hold at call time T is currently a term which is not a free variable nonvar 1 then the following properties hold globally atm T is evaluable at compile time eval 1 All calls of the form atm T are deterministic is_det 1 atm T The following properties hold upon exit T is an atom atm 1 The following properties hold globally Indicates the type of test that a predicate performs Required by the nonfailure analyisis test_type 2 Usage atm T Description T is an atom The following properties hold globally This predicate is understood natively by CiaoPP native 1 struct 1 REGTYPE The type of compound terms or terms with non zeroary functors By now there is a limit of 255 arguments General properties struct T Chapter 7 Basic data types and properties
160. ities of 1pdoc The module headers produce documentation on the module interface Exported predicates properties and types are documented by default module example module bar 1 baz 1 aorb 1 tree of 2 list or aorb 2 q9 2 r 1 p 1 p 5 u 3 l long 1 w 1 mytype 1 t 5 s 1 q 1l assertions basicmodes fsyntax regtypes hiord nativeprops We import two types list 1 and list 2 now in basic props which is hh exported by default from assertions We reexport list 1 reexport library engine basic props list 1 1 use module library lists length 2 4 use module bar ensure loaded foo doc declarations provide additional information doc title Auto Documenter Output for the Example Module doc author Anonymous Author 1 doc author Anonymous Author 2 doc summary This is a brief summary description of the module or file In this case the file is a library doc module This is where general comments on the file go In this case the file is a library which contains some assertion examples for testing the Cemfautomatic documentation system An example of a comment documenting a bug doc bug Library is hard to execute no actual code Standard declarations are documented with the corresponding predicate data r 1 dynamic g 2 multifile p 3 dynamic p 3 meta predicate p 7 90 The Ipdoc Documentation Generator
161. l data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 16 2 Documentation on exports autodoc state supported option 1 PROPERTY Usage supported option Option 116 The Ipdoc Documentation Generator Description Option is a supported documentation option option comment 2 PREDICATE Usage option comment Option Text Description Option is a documentation option which is supported Text describes the effect of selecting that option Currently supported options are option comment verbose Verbose output good for debugging option_comment no_bugs Do not include information on bugs gt option_comment no_authors Do not include author names option_comment no_stability Do not include stability comment n option comment no version Do not include version information gt option_comment no_versioned_output Do not include version in the output nan option comment no changelog Do not include change log s option comment no patches Do not include comments for patches option comment modes Do not translate modes and their arguments except for properties option_comment head_props Do not move head properties to body gt option comment literal props Do not use text to document properties n option comment no propnames Do not include property names in prop text option comment no undef
162. l engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support P 30 2 Documentation on exports autodoc aux read file 2 PREDICATE No further documentation available for this predicate ascii blank lines 2 PREDICATE No further documentation available for this predicate sh exec 2 PREDICATE No further documentation available for this predicate 160 The Ipdoc Documentation Generator Chapter 31 Image Handling 161 31 Image Handling Author s Jose F Morales This module defines the handling of image commands It defines predicates to locate and convert images in the different formats required for documentation Note This part needs better documentation JFMC 31 1 Usage and interface autodoc_images gt e Library usage use_module library autodoc_images e Exports Predicates locate_and_convert_image 4 clean image cache 0O e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc filesystem lpdocsrc src autodoc settings lpdocsrc src autodoc aux System library modules terms make make rt make system extra system errhandle messages format nternal engine modules term basic arithmetic atomic basic attributes basic props bas
163. l be included in the usage in dex In on line manuals a direct access to the corresponding predicate definition may also be generated opt operatorname operatorname which should be in functor arity form is the name of an operator and will be printed in fixed width typewriter like font This command should be used when referring to an operator in a documenta tion string A reference will be included in the usage index In on line manuals a direct access to the corresponding operator definition may also be generated decl deciname declname which should be in functor arity form is the name of a dec laration and will be printed in fixed width typewriter like font This command should be used when referring to a declaration in a documen tation string A reference will be included in the usage index In on line manuals a direct access to the corresponding declaration definition may also be generated 1ib libname libname is the name of a library and will be printed in fixed width typewriter like font This command should be used when referring to a module or library in a documentation string A reference will be in cluded in the usage index In on line manuals a direct access to the corresponding module definition may also be generated apl aplname aplname is the name of an application and will be printed in fixed width typewriter like font This command should be used when referring to an application in a documentation stri
164. le commands e Formatting commands The following commands are used to format certain words or sentences in a special font build itemized lists introduce sections include examples etc comment tert text will be treated as a comment and will be ignored begin itemize marks the beginning of an itemized list Each item should be in a separate paragraph and preceded by an Citem command item marks the beginning of a new item in an itemized list end itemize marks the end of an itemized list begin enumerate marks the beginning of an enumerated list Each item should be in a separate paragraph and preceded by an Citem command end enumerate marks the end of an enumerated list begin description marks the beginning of a description list i e a list of items and their description this list describing the different allowable commads is in fact a description list Each item should be in a separate paragraph and contained in an item itemtext command Chapter 3 Documentation Mark up Language and Declarations 27 item itemtext marks the beginning of a new item in description list and contains the header for the item end description marks the end of a description list begin verbatim marks the beginning of fired format text such as a program example A fixed width typewriter like font is used end verbatim marks the end of formatted text begin cartouche marks the beginning of a section o
165. le for this predicate 20 3 Documentation on multifiles autodoc texinfo autodoc escape string hook 5 PREDICATE No further documentation available for this predicate The predicate is multifile autodoc rw command hook 4 PREDICATE The predicate is multifile Usage autodoc rw command hook Backend Doc t Command NewCommand 138 The following properties should hold at call time Backend is a supported backend docstate DocSt Intermediate tree representation for documentation Intermediate tree representation for documentation autodoc finish hook 1 No further documentation available for this predicate The predicate is multifile autodoc gen alternative hook 2 No further documentation available for this predicate The predicate is multifile The Ipdoc Documentation Generator backend id 1 docstate 1 doctree 1 doctree 1 PREDICATE PREDICATE Chapter 21 HTML Backend 139 21 HTML Backend Author s Jose F Morales 21 1 Usage and interface autodoc html Va e Library usage use module library autodoc htm1 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc structure lpdocsrc src autodoc filesystem lpdocsrc src autodoc doctree lpdocsrc src autodoc index lpdocsrc src autodoc refsdb lpdocsrc src autodoc images lpdocsrc src autodoc settings lpdocsrc src comments fastformat lpdocsrc src autodoc ht
166. les include arguments intended for providing textual information This includes titles descriptions comments etc The type of this argument is a character string In order for the automatic generation of documentation to work correctly this character string should adhere to certain conventions See the description of the docstring 1 type grammar for details e Referring to variables In order for the automatic documentation system to work correctly variable names for example when referring to arguments in the head patterns of pred dec larations must be surrounded by an Gear command For example var VariableName should be used for referring to the variable VariableName which will appear then for matted as follows VariableName See the description of the docstring 1 type grammar for details 42 The Ipdoc Documentation Generator 4 3 Usage and interface assertions doc E 2 e Library usage The recommended procedure in order to make use of assertions in user programs is to include the assertions syntax library using one of the following declarations as appropriate module assertions use package assertions e Exports Predicates check 1 trust 1 true 1 false 1 e New operators defined gt 2 975 xfx 2 978 xfx dec1 1 1150 fx dec1 2 1150 xfx pred 1 1150 fx pred 2 1150 xfx prop 1 1150 fx prop 2 1150 xfx modedef 1 1150 fx calls 1 1150 fx calls 2 1150 xfx su
167. lgorithm The following properties should hold upon exit CommentType section 2 Section is a documentation string docstring 1 Usage 14 doc CommentType SubSection Description Insert a program subsection with name SubSection see program section command for more details Example doc subsection Auxiliary Definitions The following properties should hold upon exit CommentType subsection 2 SubSection is a documentation string docstring 1 Usage 15 doc PredName CommentText Description Provides an introductory comment for a given predicate function prop erty type etc denoted by PredName When generating documentation for the mod ule automatically the text in Text will be used as the introduction of the corre sponding predicate function description There should be at most one of these declarations per predicate function property or type Example doc doc 2 This declaration provides one of the main means for adding concept machine readable comments to programs The following properties should hold upon exit PredName is a Name Arity structure denoting a predicate name The Ipdoc Documentation Generator predname P A atm P nnegint A predname 1 CommentText is a documentation string docstring 1 Usage 16 doc CommentType ComnentText Description Documents a known bug or planned improvement in the module or appl
168. m analyzers of ciaopp They are used by ciaopp on output and they can also be used as properties in assertions 8 1 Usage and interface native_props e Library usage use module library assertions native props or also as a package use package nativeprops Note the different names of the library and the package e Exports Properties clique 1 clique 1 1 constraint 1 covered 1 covered 2 exception 1 exception 2 fails 1 finite solutions 1 have choicepoints 1 indep 1 indep 2 is det 1 linear 1 mshare 1 mut exclusive 1 no choicepoints 1 no exception 1 no exception 2 no signal 1 no signal 2 non det 1 nonground 1 not covered 1 not fails 1 not mut exclusive 1 num solutions 2 solutions 2 possibly fails 1 possibly nondet 1 relations 2 sideff hard 1 sideff pure 1 Sideff soft 1 signal 1 signal 2 signals 2 size 2 size 3 size 1b 2 size 0 2 size ub 2 size metric 3 size metric 4 steps 2 steps 1b 2 steps o 2 Steps ub 2 tau 1 terminates 1 test type 2 throws 2 user output 2 e Other modules used System library modules terms_check terms_vars sort lists streams file_utils system Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support internals P 8 2 Documentation on exp
169. m tex REPRE RE Ce ere 81 notsrads I ODPOB ae orsi de EDEN EF en OXON Iren 81 not mut exclusive 1 prop 43 2 eee re Eus 82 tuirn solutions 2 prop vd secre Er REPRE ERE 82 solutions 72 EE 82 possibly fails 1 EE 82 possibly nondet 1 prop 83 relations 2 prop Sua iere ED ia eee rae eee re es 83 sideff hard 1 prop varada EH 83 sidelt pure sl prop riot in ta 83 sideff soft b BEOD bi 83 Signal EE 83 im ual 2 plop cu oae titer sodes rt Ra tete es 83 GE EE 84 9126 2 PTOP ud neriie eee EE 84 SIZE JA PEOD sae ieee ed du n Sept nU ao bou dede 84 126 1h72 PrOD EE 84 SEO PrOD si aaiae hi ea 84 EE EE 84 vale Prop lt i E DO ena 84 size metric 4 prop v2 shove ae Exc e pre CERES 84 A 2 Prop ao bt bere tte tee wes ends 85 steps lb 2 prop ek EEN ert ed E Ert a 85 Steps 072 EE 85 steps ub 2 prop ge Eer 85 e A A 85 terminates 1 EE 86 test type 2 y AA eoe c E Le c f 86 E PrOp h Ee dee 86 user output 2 CDROB S e eis e RR ERE X RUM AE IRSE 86 instance 2 EE 86 9 M tacproperties sei ex RE E ES 87 9 1 Usage and interface meta props ee eee eee eee 87 9 2 Documentation on exports meta Dropel sees 87 calla PrOD cio seio debet EE 87 Prop 7 EE 87 tegtyp 2 DEOD uc err 20 preset Pon o orae 88 9 3 Documentation on multifiles neta Dropel s 88 le pred ina ceri HEIN Pearse IU e e 88 9 4 Documentation on internals meta Dropsl sees 88 Drop abs CL Prop eri wae Sec AERE REF RARE US 88
170. machine readable they can also be used to generate printed or on line documentation automatically using the 1pdoc automatic documentation generator These textual comments are meant to be complementary to the formal statements present in assertions see the assertions library 3 1 Usage and interface comments 3 e Library usage It is not necessary to use this library in user programs The recommended procedure in order to make use of the doc 2 declarations that this library defines is to include instead the assertions package which provides efficient support for all assertion and comment related declarations using one of the following declarations as appropriate module assertions use package assertions e Exports Predicates doc_id_type 3 Properties docstring 1 stringcommand 1 Regular Types version_descriptor 1 filetype 1 e Other modules used System library modules strings Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 3 2 Documentation on exports comments docstring 1 PROPERTY Defines the format of the character strings which can be used in machine readable com ments doc 2 declarations and assertions These character strings can include certain formatting c
171. ments included in the source file need to be written using the Ciao system assertion language A simple compatibility library is available to make traditional con straint logic programming systems ignore these assertions and comments allowing normal treat ment of programs documented in this way The documentation is currently generated in HTML or texinfo format From the texinfo output printed and on line manuals in several formats dvi ps info etc can be easily generated automatically using publicly available tools 1pdoc can also generate man pages Unix man page format as well as brief descriptions in html or emacs info formats suitable for inclusion in an on line index of applications In particular lpdoc can create and maintain fully automatically WWW and info sites containing on line versions of the documents it produces The 1pdoc manual and the Ciao system manuals are generated by 1pdoc lpdoc is distributed under the GNU general public license Note lpdoc is fully supported on Linux Mac OS X and other Un x like systems Due to the use of several Un x related utilities some documentation back ends may require Cygwin under Win32 This documentation corresponds to version 3 0 2011 7 7 16 33 15 CEST The Ipdoc Documentation Generator Chapter 1 Introduction 3 1 Introduction lpdoc is an automatic program documentation generator for C LP systems lpdoc generates a reference manual automatically from one or more
172. ml template lpdocsrc src distpkg download lpdocsrc src autodoc html resources System library modules lists dict system file utils Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support Y 21 2 Documentation on multifiles autodoc_html autodoc escape string hook 5 PREDICATE No further documentation available for this predicate The predicate is multifile autodoc_rw_command_hook 4 PREDICATE The predicate is multifile Usage autodoc_rw_command_hook Backend DocSt Command NewCommand The following properties should hold at call time Backend is a supported backend backend_id 1 docstate DocSt docstate 1 Intermediate tree representation for documentation doctree 1 Intermediate tree representation for documentation doctree 1 autodoc finish hook 1 PREDICATE No further documentation available for this predicate The predicate is multifile 140 The Ipdoc Documentation Generator autodoc gen alternative hook 2 PREDICATE No further documentation available for this predicate The predicate is multifile Chapter 22 Resource Handling for the HTML Backend 141 22 Resource Handling for the HTML Backend Author s Jose F Morales 22 1 Usage and interface autodoc html resources 3 e Library usage
173. n 1 4 v 1 v n are unique variables which are called parametric variables 5 Each body i is of the form 1 t z where z is one of the term variables and t is a regular type expression 2 q y t 1 t m where m gt 0 q m is a parametric type functor not in the set of functors 7 2 2 3 t 1 t mare regular type expressions and y is a term variable 6 Each term variable occurs at most once in the clause s body and should be as the first argument of a literal A regular type expression is either a parametric variable or a parametric type functor applied to some of the parametric variables A parametric type functor is a regular type defined by a regular program or a basic type Basic types are defined in Chapter 7 Basic data types and properties page 61 The set of regular types is thus a well defined subset of the set of properties Note that types can be used to describe characteristics of arguments in assertions and they can also be executed called as any other predicates Usage regtype AssertionBody The following properties should hold at call time AssertionBody is an assertion body assrt_body 1 regtype 2 DECLARATION This assertion is similar to a regtype 1 assertion but it is explicitely qualified Non qualified regtype 1 assertions are assumed the qualifier check Note that checking regular type definitions should be done with the ciaopp preprocessor Usage AssertionStat
174. n Goal E Description Calls of the form Goal do not throw exception E no signal 1 PROPERTY Meta predicate with arguments no_signal goal Usage no signal Goal Description Calls of the form Goal do not send any signal no signal 2 PROPERTY Meta predicate with arguments no signal goal Usage no signal Goal E Description Calls of the form Goal do not send the signal E non det 1 PROPERTY non det X All calls of the form X are non deterministic i e produce several solutions Meta predicate with arguments non det goal Usage non det X Description All calls of the form X are non deterministic nonground 1 PROPERTY Usage nonground X Description X is not ground The following properties should hold globally This predicate is understood natively by CiaoPP as not ground X native 2 not covered 1 PROPERTY not covered X There is some call of the form X for which there is no clause whose test succeeds DLGH97 Usage not covered X Description Not all of the calls of the form X are covered ER The Ipdoc Documentation Generator not fails 1 PROPERTY not fails X Calls of the form X produce at least one solution or do not terminate DLGH97 Meta predicate with arguments not fails goal Usage not failsQO Description All the calls of the form X do not fail The following properties hold globally This predicate is understood natively by Ci
175. n examples for testing the automatic documentation system 11 1 Usage and interface example module N e Library usage use module library example module e Exports Predicates q 2 r 1 p 1 p 5 u 3 w 1 mytype 1 t 5 s 1 q 1 Properties long 1 Regular Types bar 1 baz 1 aorb 1 tree_of 2 list_or_aorb 2 Multifiles p 3 e Other modules used Files of module user foo System library modules assertions native_props engine basic_props lists Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support y 11 2 Documentation on exports example_module bar 1 REGTYPE Usage bar X Description X is an acceptable kind of bar baz 1 REGTYPE A regular type defined as follows baz a baz b 96 The Ipdoc Documentation Generator aorb 1 REGTYPE A regular type defined as follows aorb a aorb b tree of 2 REGTYPE A regular type defined as follows tree of 1 void tree of T tree 1 2 3 call T 1 tree of T 2 tree of T 3 list or aorb 2 REGTYPE A regular type defined as follows list or aorb T 1 list T 1 list or aorb T 1 aorb 1 q 2 PREDICATE The predicate is of type dynamic Usage 1 The following properties should
176. ng A reference will be included in the usage index Chapter 3 Documentation Mark up Language and Declarations 29 filetfilename filename is the name of a file and will be printed in fixed width typewriter like font This command should be used when referring to a file in a documentation string A reference will be included in the usage index Qvarivarname varname is the name of a variable and will be formatted in an emphasized font Note that when referring to variable names in a pred 1 declara tion such names should be enclosed in var commands for the automatic documentation system to work correctly Referencing commands The following commands are used to introduce bibliographic citations and references to sections urls email addresses etc cite keyword keyword is the identifier of a bibliographic entry Such entry is assumed to reside in on of a number of bibtex files bib files A reference in brackets is inserted in the text an the full reference is included at the end with all other references in an appendix For example cite iso prolog will introduce a citation to a bibliographic entry whose keyword is iso prolog The list of bibliography files which will be searched for a match is determined by the BIBFILES variable of the 1pdoc SETTINGS file ref section title introduces at point a reference to the section or node section title where section title must be the exact text of the section title
177. ng Str representation of version Version except date version string 2 PREDICATE Usage version string Version Str Description Obtain the string Str representation of version Version including date insert show toc 3 PREDICATE Usage insert show toc RO DocSt R Description Insert the command to show the table of contents in a given doctree 1 The right place may be different depending on the chosen backend 17 3 Documentation on multifiles autodoc_doctree autodoc rw command hook 4 PREDICATE No further documentation available for this predicate The predicate is multifile autodoc escape string hook 5 PREDICATE No further documentation available for this predicate The predicate is multifile 128 The Ipdoc Documentation Generator Chapter 18 Handling the Document Structure 129 18 Handling the Document Structure Author s Jose F Morales 18 1 Usage and interface autodoc structure 3 e Library usage use module library autodoc_structure e Exports Predicates docstr node 4 clean_docstr 0 parse_structure 0 standalone docstr 1 get_ mainmod 1 get mainmod spec 1 all component specs 1 e Other modules used Application modules lpdocsrc src autodoc settings System library modules filenames aggregates terms make make rt Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions
178. ng commands The following commands are used to mark certain words or sentences in the text as concepts names of predicates libraries files etc The use of these commands is highly recommended since it results in very useful indices with little effort 28 The Ipdoc Documentation Generator index text text will be printed in an emphasized font and will be included in the concept definition index and also in the usage index This command should be used for the first or definitional appearance s of a concept The idea is that the concept definition index can be used to find the definition s of a concept cindex text text will be included in the concept index and also in the usage index but it is not printed This is used in the same way as above but allows sending to the index a different text than the one that is printed in the text concept tert text will be printed in a normal font This command is used to mark that some text is a defined concept In on line manuals a direct access to the corresponding concept definition may also be generated A pointer to the place in which the concept command occurs will appear only in the usage index pred predname predname which should be in functor arity form is the name of a pred icate and will be printed in fixed width typewriter like font This com mand should be used when referring to a predicate or a property or type in a documentation string A reference wil
179. ng properties hold globally iso G is side effect free sideff 2 Usage iso G Description Complies with the ISO Prolog standard deprecated 1 PROPERTY Specifies that the predicate marked with this global property has been deprecated i e its use is not recommended any more since it will be deleted at a future date Typically this is done because its functionality has been superseded by another predicate Meta predicate with arguments deprecated goal General properties deprecated G The following properties hold globally deprecated G is side effect free sideff 2 Usage deprecated G Description DEPRECATED not further inst 2 PROPERTY Meta predicate with arguments not further inst goal General properties not further inst G V The following properties hold globally not further inst G V is side effect free sideff 2 Usage not further inst G V Description V is not further instantiated The Ipdoc Documentation Generator sideff 2 sideff G X PROPERTY Declares that G is side effect free if its execution has no observable result other than its success its failure or its abortion soft if its execution may have other observable results which however do not affect subsequent execution e g input output or hard e g assert retract Meta predicate with arguments sideff goal General properties sideff G X The following properties hold globally Thi
180. nging s rrcucrecrerrrreere 17 page style changing 000 17 paragraph break essani cuado rinii e E ee eee 27 parametric property sseeeeee eee 88 parametric regular type abstractions 88 parametric type functor 60 parts in a large document 23 parts in large documents 38 179 planned improvement esses eeeeses 36 pred assertion s euer i I a Roe Ei 42 43 program section esn ed prete ERU PR SE 35 program subesechon eese 35 Prolog Clos tei 56 eio RI cto 15 prop assertion oo oooooooccocorrooo 45 46 properties of computations esses eese 5T properties of execution states o o o ooo 5T properties baste 61 properties native ce eee eee eee 77 property abstraction 0 0 eee eee eee 88 R TELETENCES si oy eo Bh ween ed ee ee AE Whe be oe 29 regtype assertion i eve mee eee ele 60 regular type expression 00 60 running unit tests 0 cee eee eee ee 105 S Sector aco uS Y bar Erie Nar atis duis 27 Ge De EE 29 SETTINGS plisin d NEEN Ed AE 15 sharing pieces of test 30 sharing Sets x aa DURER OUR S 80 soft side effects eese 83 space extra Dnes 2 0 cece eee eee eee 27 spcae horizontal fill o o o ooooooo oooo 27 special characters 0 cc eee e eee teens 30 Strong Eegeregie eats 27 Subsectlomnaz ce suu rx ro ee d 27 subtitle nio AA e a 33 success assertion ooooooooccoro
181. ntation on a basic set of properties types etc which are predefined in the Ciao basic props regtypes native props and meta props libraries These properties and any others defined by the user or in other Ciao libraries can be used in program assertions e Documentation on the formatting commands that can be embedded in comments This document is also an internals manual providing information on how the different internal parts of lpdoc are connected which can be useful if new capabilities need to be added to the system or its libraries are used for other purposes To this end the document also provides e The documentation for the autodoc automatic documentation library which provides the main functionality of 1pdoc e Documentation on the predicates that define the conversion formats used texinfo and others and which are in the autodocformats library All of the above have been generated automatically from the assertions in the corresponding sources and can also be seen as examples of the use of 1pdoc Some additional information on 1pdoc can be found in Her00 1 2 lpdoc operation source and target files The main input used by 1pdoc in order to generate a manual are Prolog source files Basically lpdoc generates a file in the GNU texinfo format with a texi ending for each Prolog file see The GNU Texinfo Documentation System manual for more info on this format The Prolog files must have a p1 ending If the
182. o 14 1 Installing the source distribution Ipdoc e Defore installing 1pdoc you may want to read Section 14 2 Other software packages re quired Ipdoc page 107 Make sure that emacs is installed in your system e Uncompress using gunzip and unpackage using tar xpf the distribution in a suitable directory This will create a new directory called 1pdoc as well as a link 1pdoc X Y to this directory where X Y is the version number of the distribution The p option in the tar command ensures that the relative dates of the files in the package are preserved which is needed for correct operation of the Makefiles e Enter the newly created directory and if needed edit the file LPDOCSETTINGS pl in a text editor but in general the default options works well edit the one in that directory not the ones in the subdirectories e Decide which Prolog CLP system you will use for compiling 1pdoc actually currently only Ciao is supported but porting to e g SICStus Prolog should not be too diffi cult and modify the first part of the LPDOCSETTINGS p1 file accordingly The DOCDIR directory should not be an existing info directory since this will overwrite the dir file in that directory e Select the directories in which you want the 1pdoc binaries libraries and documents installed by setting the corresponding variables in LPDOCSETTINGS pl e Type lpmake all This should create the 1pdoc executable and compile related libraries
183. o in Emacs or info in a shell there are two requirements e This directory must contain a dir index The first part of the process can all be done automatically by setting the docdir variable in the SETTINGS p1 file to this directory including the infoindex option in docformats and typing lpdoc install This will install the info manual in directory docdir and update the dir file there Ipdoc uninstall does the opposite eliminating also the manual from the index e The directory must be added to the info path list The easiest way to do this is to set the INFOPATH environment variable For example assuming that we are installing the info manual in home clip public_html lpdoc_docs and that usr info is the common info directory for csh in cshrc setenv INFOPATH usr info home clip public html lpdoc docs Adding the directory to the info path list can also be done within Emacs by including the following line in the Emacs file defun add info path newpath setq Info default directory list cons expand file name newpath Info default directory list add info path home clip public html lpdoc docs add info path usr info However this has the disadvantage that it will not be seen by the standalone info command Automatic direct on line access to the information contained in the info file e g going au tomatically to predicate descriptions by clicking on predicate names in programs in an Emacs buffer can be easily im
184. o predicate arguments in assertions The meaning of this application is that the call and success properties defined by the mode hold for the argument to which the mode is applied Thus a mode is conceptually a property macro The syntax of mode definitions is similar to that of pred declarations For example the following set of assertions modedef A nonvar A A is bound upon predicate entry pred p A B integer A gt ground B is equivalent to pred p A B nonvar A integer A gt ground B A is bound upon predicate entry Usage modedef AssertionBody The following properties should hold at call time AssertionBody is an assertion body assrt_body 1 decl 1 DECLARATION This assertion is similar to a pred 1 assertion but it is used for declarations instead than for predicates Usage decl AssertionBody The following properties should hold at call time AssertionBody is an assertion body assrt_body 1 decl 2 DECLARATION This assertion is similar to a decl 1 assertion but it is explicitely qualified Non qualified decl 1 assertions are assumed the qualifier check Usage AssertionStatus decl AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is an assertion body assrt_body 1 48 The Ipdoc Documentation Generator doc 2 DECLARATION Usage doc Pred Comment
185. ocSt doctree prepare docst translate and write 3 No further documentation available for this predicate doctree to rawtext 3 Usage doctree to rawtext X DocSt Y Description Y is a simplified raw text representation of the X Call and exit should be compatible with Intermediate tree representation for documentation docstate DocSt Y is a string a list of character codes doctree translate and write 3 No further documentation available for this predicate escape string 4 Usage doctree 1 docstate 1 doctree 1 PREDICATE doctree 1 docstate 1 PREDICATE PREDICATE doctree 1 docstate 1 string 1 PREDICATE PREDICATE Description Escapes needed characters in input string as needed for the target for mat The following properties should hold upon exit Argi is currently instantiated to an atom Arg2 is a string a list of character codes docstate Arg3 Arg4 is a string a list of character codes is version 1 No further documentation available for this predicate atom 1 string 1 docstate 1 string 1 PREDICATE Chapter 17 Documentation Abstract Syntax Tree 127 version patch 2 PREDICATE No further documentation available for this predicate version date 2 PREDICATE No further documentation available for this predicate version numstr 2 PREDICATE Usage version numstr Version Str Description Obtain the stri
186. of the html and info index head and tail files Manuel Hermenegildo Made pointers relative in library html templates Manuel Hermenegildo e Bug fixes and other minor improvements Declarations now documented properly even if they have the same name and arity as a predicate Manuel Hermenegildo Accented i s now translate correctly in html Manuel Hermenegildo Fixed a funny installation quirk while we want to install LPdoc in the Ciao group the manuals produced by LPdoc should be installed in the LPdoc group Manuel Hermenegildo Now using lpdoclib path alias Manuel Hermenegildo Fixed bug in ordering of html indices in recent Linux versions related to varying file listing order depending on locale Manuel Hermenegildo Version 1 9 1999 7 8 18 19 43 MEST In this release the name of the application has changed to 1pdoc e New commands begin cartouche and end cartouche commands now supported foonote command now supported New gmake htmlview command makes a running netscape visit the gen erated html manual Suggested by Per Cederberg New gmake distclean command intended for software distributions Leaves the generated documents and eliminates all intermediate files in cluding texic texi files Adobe pdf format now supported as a valid target Unfortunately embed ded eps figures are not supported at this time in pdf output The second argument of comment hide and comment doinclude
187. ogramming o ooooooc ooo o o 19 load vpaths 0 erre CiN deaa llle 131 132 locate and convert image 4 161 log of changes ecrire np ieoor cece cece ene enee 36 TEE 104 longp 4 voe qeu eu ab 95 97 98 lpdoc 1 3 4 5 8 15 16 17 18 19 20 21 22 23 24 25 29 37 41 48 52 56 89 107 108 lpdoc helpz gouvirs pi xe deua 16 lpdoc all 3E Fa BS X reden 16 17 19 IpPdOcEXAMPlOS enee a 89 Ipdoc Stallone 107 lpdoc option luariici ri VEA 131 LpdocareierctLautodoc mo 141 lpdocsrc src autodoc aux 137 145 157 161 lpdocsrc src autodoc bibrefs 153 lpdocsrc src autodoc doctree 112 115 137 139 145 151 153 157 lpdocsrc src autodoc filesystem 112 115 123 137 139 141 151 153 161 lpdocsrc src autodoc htm1 123 lpdocsrc src autodoc html resources 112 139 lpdocsrc src autodoc html template 139 lpdocsrc src autodoc images 137 139 145 lpdocsrc src autodoc index 112 115 123 137 139 lpdocsrc src autodoc man 123 lpdocsrc src autodoc_parse 112 115 157 lpdocsrc src autodoc refsdb 112 115 123 139 151 157 lpdocsrc src autodoc settings 112 115 123 129 137 139 141 143 147 157 159 161 lpdocsrc src autodoc state 112 123 137 139 145 147 151 153 157 161 lpdocsrc src autodoc structure 112 115 123 137 139 147 151
188. old at call time AssertionBody is a call assertion body c_assrt_body 1 This type of assertion provides information about the answers that an exported predicate provides for external calls It is identical syntactically to a success 1 assertion However it describes only external answers i e answers to the exported predicates of a module from outside the module or answers to the predicates in a non modular file from other files or the user The described answers may be conditioned to a particular way of calling the predicate E g exit length L N list var gt list integer Usage exit AssertionBody The following properties should hold at call time AssertionBody is a predicate assertion body s_assrt_body 1 DECLARATION DECLARATION DECLARATION Chapter 4 The Ciao assertion package 4T exit 2 DECLARATION exit assertion This assertion is similar to an exit 1 assertion but it is explicitely qualified with an assertion status Non qualified exit 1 assertions are assumed the qualifier check Usage AssertionStatus exit AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is a predicate assertion body s assrt body 1 modedef 1 DECLARATION This assertion is used to define modes A mode defines in a compact way a set of call and success properties Once defined modes can be applied t
189. ommands 26 The Ipdoc Documentation Generator e All printable characters are admissible in documentation strings except and To produce these characters the following escape sequences should be used respectively 60 Of and QJ e In order to allow better formatting of on line and printed manuals in addition to normal text certain formatting commands can be used within these strings The syntax of all these commands is Q command followed by either a space or or command body where command is the command name and body is the possibly empty command body The set of commands currently admitted can be found in the documentation for the predicate stringcommand 1 Usage docstring Text Description Text is a documentation string stringcommand 1 PROPERTY Defines the set of structures which can result from parsing a formatting command admis sible in comment strings inside assertions In order to make it possible to produce documentation in a wide variety of formats the command set is kept small The names of the commands are intended to be reminiscent of the commands used in the LaTeX text formatting system except that 6 is used instead of A Note that would need to be escaped in ISO Prolog strings which would make the source less readable and in any case many ideas in LaTeX were taken from scribe where the escape character was indeed The following are the currently admissib
190. on available for this predicate main output name 2 PREDICATE No further documentation available for this predicate get subbase 3 PREDICATE Usage get subbase Base Sub SubBase Description SubBase is the name for the sub file Sub associated with Base The following properties should hold upon exit Base is the base name of a file without extension basename 1 Sub is an atom atm 1 SubBase is the base name of a file without extension basename 1 absfile to relfile 3 PREDICATE Usage absfile to relfile A Backend B Description Obtain the relative path w r t the output directory of an absolute file This is useful e g for URLs clean all 0 PREDICATE No further documentation available for this predicate clean docs no texi 0 PREDICATE No further documentation available for this predicate 150 The Ipdoc Documentation Generator clean all temporal 0 PREDICATE No further documentation available for this predicate clean intermediate 0 PREDICATE No further documentation available for this predicate clean tex intermediate 0 PREDICATE No further documentation available for this predicate Chapter 26 Indexing Commands Definition and Formatting 151 26 Indexing Commands Definition and Formatting Author s Jose F Morales This module defines index commands and formatting Note This part needs better documentation JEMC J 26 1 Usage and interface autodoc
191. on to Jose Morales Double quotes correctly translated to HTML Jose Morales author command to reference authors changed command referring to people by Cauthor in all the documentation Jose Morales Simplification of documentation setting files see the documentation for further details Jose Morales Using open for 1pdoc htmlview command in MacOS X Jose Morales Adding html and pdf formats as options for emacs customization of LPdoc html is the default one now Jose Morales Improved detection of external tools for image conversion Manuel Hermenegildo Added section name syntax auto correction This avoids wrong section names and thus dangling pointers in generated texinfo files Manuel Hermenegildo Document size more appropriate for current xdvi versions Manuel Hermenegildo Lpdoc no longer adds info filename suffix to infoindex entries since it breaks Debian s install info remove and goes against standard practice anyway Jose Luis Gonzalez Chapter 1 Introduction T Added option cv comment version that tells lpdoc if the file has ver sion comment Formatting of lpdoc version comments completed Edison Mera Improved handling of option values Added d option to Ipdoc that allows defining additional values in the argument Added options 1 and m that are similar to the corresponding lpmake options Edison Mera e Support for in code sections experimental Latex like font lock highlight
192. op level of the source directory of the application To this end an INSTALL p1 file as follows can be constructed use package assertions doc filetype application 4 4 forces file to be documented as an application doc title Installation instructions doc module include INSTALLATION 1pdoc Then the ascii INSTALLATION file can be generated by simply running lpdoc ascii in a directory with a SETTINGS pl file where MAIN is set to INSTALLATION pl 2 9 Troubleshooting These are some common errors which may be found using 1pdoc and the usual fix e Sometimes messages of the type gmake No rule to make target myfile texic needed by main texic Stop appear i e in the case above when running g make main target Since 1pdoc definitely knows how to make a texic file given a p1 file this means in make s language that it cannot find the corresponding pl file myfile pl in the case above The usual reason for this is that there is no directory path to this file declared in the SETTINGS p1 file e Messages of the type No room for a new write while converting from texi to dvi i e while running tex These messages are tex s way of saying that an internal area typically for an index is full This is normally because more indices were selected in the INDICES variable of the SETTINGS p1 file than the maximum number supported by the installed version of tex texinfo install
193. or Messages Author s Manuel Hermenegildo 28 1 Usage and interface autodoc errors 3 e Library usage use module library autodoc errors e Exports Predicates error_text 3 e Other modules used Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 28 2 Documentation on exports autodoc errors error text 3 PREDICATE No further documentation available for this predicate 156 The Ipdoc Documentation Generator Chapter 29 Resolution of Bibliographical References 157 29 Resolution of Bibliographical References Author s Manuel Hermenegildo original version Jose F Morales This module provides a predicate to resolve the bibliographical references found during the generation of documentation 29 1 Usage and interface autodoc_bibrefs S e Library usage use_module library autodoc_bibrefs e Exports Predicates resolve_bibliography 1 e Other modules used Application modules lpdocsrc src autodoc state lpdocsrc src autodoc doctree lpdocsrc src autodoc refsdb Ipdocsrc src autodoc_aux lpdocsrc src autodoc settings lpdocsrc src autodoc_parse System library modules dict aggregates terms file utils lists format make make rt make system_ extra
194. or this predicate docst message 2 PREDICATE No further documentation available for this predicate docst message 3 PREDICATE No further documentation available for this predicate docst opt 2 PREDICATE No further documentation available for this predicate docst currmod is main 1 PREDICATE No further documentation available for this predicate docst no components 1 PREDICATE Usage docst no components DocSt Description DocSt specify an empty list of components docst modname 2 PREDICATE Usage docst_modname DocSt ModName Description ModName is the name of the module that we are documenting labgen_init 1 PREDICATE No further documentation available for this predicate labgen_clean 1 PREDICATE No further documentation available for this predicate Chapter 16 Internal State for Documentation Generation labgen get 2 No further documentation available for this predicate docst mvar lookup 3 No further documentation available for this predicate docst_mvar_replace 4 No further documentation available for this predicate docst_mvar_get 3 No further documentation available for this predicate docst_mdata_clean 1 No further documentation available for this predicate docst_mdata_assertz 2 No further documentation available for this predicate docst_mdata_save 1 No further documentation available for this predicate docst_gdata 3 No further documentation a
195. ormer must be part of the module being documented There are also commands for inserting and scaling images includef filename the contents of filename will be included in line as if they were part of the string This is useful for common pieces of documentation or storing in a separate file long explanations if they are perceived to clutter the source file includeverbatim filename as above but the contents of the file are included verbatim i e com mands within the file are not interpreted This is useful for includ ing code examples which may contain s etc Note that this only means that the file will be included as is If you want the string to be represented in verbatim mode in the output you must sur round the includeverbatim filename with Cbegin verbatim and end verbatim includefact factname it is assumed that the file being documented contains a fact of the pred icate factname 1 whose argument is a character string The contents of that character string will be included in line as if they were part of the documentation string This is useful for sharing pieces of text between the documentation and the running code An example is the text which explains the usage of a command options etc includedef predname it is assumed that the file being documented contains a definition for the predicate predname The clauses defining this predicate will be included in line in verbatim mode as if they were part
196. orts native props clique 1 PROPERTY clique X X is a set of variables of interest much the same as a sharing group but X represents all the sharing groups in the powerset of those variables Similar to a sharing group a clique is often translated to ground 1 indep 1 and indep 2 properties Usage clique X Description The clique pattern is X The following properties should hold globally This predicate is understood natively by CiaoPP as clique X native 2 78 The Ipdoc Documentation Generator clique 1 1 PROPERTY clique 1 X X is a set of variables of interest much the same as a sharing group but X represents all the sharing groups in the powerset of those variables but disregarding the singletons Similar to a sharing group a clique 1 is often translated to ground 1 indep 1 and indep 2 properties Usage clique 1 X Description The 1 clique pattern is X The following properties should hold globally This predicate is understood natively by CiaoPP as clique 1 X native 2 constraint 1 PROPERTY constraint C C contains a list of linear in equalities that relate variables and int values For example A lt B 4 is a constraint while A lt BC 4 or A 3 4 B gt C are not Usage constraint C Description C is a list of linear equations The following properties hold globally This predicate is understood natively by CiaoPP native 1 covered 1 PROPERTY cover
197. p1 file does not define the predicates main O or main 1 it is assumed to be a library and it is documented as such the texi file generated will contain information on the interface e g the predicates exported by the file the name of the module and usage if it is a module 4 The Ipdoc Documentation Generator etc in addition to any other machine readable comments included in the file see Section 2 6 Enhancing the documentation being generated page 18 If on the contrary the file defines the predicates main O or main 1 it is assumed to be an application and no description of the interface is generated see Section 2 8 Some usage tips page 21 If needed files written directly in texinfo can also be used as input files for 1pdoc These files must have a src instead of texi ending This is needed to distinguish them from any automatically generated texi files Writing files directly in texinfo has the disadvantage that it may be difficult to adhere to all the conventions used by 1pdoc For example these files will be typically used as chapters and must be written as such Also the set of indices used must be the same that lpdoc is generating automatically Finally no bibliographic citations can be used Because of this and because in the future 1pdoc may be able to generate documentation in formats other than texinfo directly in which case these files would not be useful writing files in texinfo directly is discouraged Thi
198. ple it is more useful to write added support for pred assertions than modifying file so pred case is also handled 22 The Ipdoc Documentation Generator Sometimes one would like to write version comments which are internal i e not meant to appear in the manual This can easily be done with standard Prolog comments which lpdoc will not read An alternative and quite useful solution is to put such internal comments in patch changes e g 1 142 to 1 143 and put the more general comments which describe major changes to the user and should appear in the manual in version changes e g 1 1222 to 1 2220 Selecting the appropriate options in 1pdoc then allows including in the manual the version changes but not the patch changes which might on the other hand be included in an internals manual 2 8 8 Documenting Libraries and or Applications As mentioned before for each a pl file lpdoc tries to determine whether it is a library or the main file of an application and documents it accordingly Any combination of libraries and or main files of applications can be used arbitrarily as components or main files of a 1pdoc manual Some typical combinations are e Main file is a library no components A manual of a simple library which appears externally as a single module The manual describes the purpose of the library and its interface e Main file is on application no components A manual of a simple application e Main file is a libr
199. plemented via existing el packages such as word help written by Jens T Berger Thielemann jensthi ifi uio no word help may already be in your Emacs dis tribution but for convenience the file word help el and a word help setup el file providing suitable initialization are included in the 1pdoc library A suitable interface for word help is also provided by the ciao el Emacs file that comes with the Ciao system distribution i e if ciao el is loaded it is not necessary to load or initialize word help 2 7 3 Accessing man manuals The Unix man format manuals generated by lpdoc can be viewed using the Unix man com mand In order for man to be able to locate the manuals they should be copied to one of the subdirectories e g usr 1ocal man manl of one of the main man directories in the previous case the main directory would be usr local man As usual any directory can be used as as a man main directory provided it is included in the environment variable MANPATH Again this process can be performed automatically by setting the docdir variable in the SETTINGS p1 file to this directory and typing 1pdoc install Chapter 2 Generating Installing and Accessing Manuals 21 2 7 4 Putting it all together A simple powerful and very convenient way to use the facilities provided by lpdoc for automatic installation of manuals in different formats is to install all manuals in all formats in the same directory docdir and to choose a directory wh
200. pred Leg ae ae oe 152 27 Database of Documentation References 153 27 1 Usage and interface autodoc_refsdb 04 153 27 2 Documentation on exports autodoc_refsdb 153 compute refs and biblio 1 pred 153 prepare current refs 1 red 153 clean current refs 1 pred rs 153 secttree 1 regtype dis cava ac beber bi Perge t 154 secttree resolve 3 pred cece ee eee eee 154 28 Error Nessages cis ev ties bah EXER ES 155 28 1 Usage and interface Lautodoc errorsl suse 155 28 2 Documentation on exports autodoc_errors 155 error text 9 pred 55 das astute ier quet buda e 155 29 Resolution of Bibliographical References 157 29 1 Usage and interface autodoc_bibrefs 157 29 2 Documentation on exports autodoc_bibrefs 157 resolve bibliography 1 pred susasasununun 157 30 Auxiliary Definitions 159 30 1 Usage and interface autodoc aux 159 30 2 Documentation on exports autodoc_aux 159 read_file 2 Pr Poe e Rer ep ee Pes tes 159 aseit blank lines 2 pred ec e A gh 159 Sh exec 2 Pred Us oo reb eee o aae tea ded 159 31 Image Handling v Rt eee 161 31 1 Usage and interface autodoc Jnages sss 161 31 2 Documentation on exports autodoc images 161 locate and convert image 4 pred 161 clean image cache 0 pred eee 161 Referentes
201. predname 1 Usage 22 doc CommentType PredName 38 The Ipdoc Documentation Generator Description A different usage which allows the second argument of doc hide to bea list of predicate names The following properties should hold upon exit CommentType hide 2 PredName is a list of prednames list 2 Usage 23 doc CommentType FileType Description Provides a way of defining the intended use of the file This use is normally easily inferred from the contents of the file itself and therefore such a declaration is in general not needed The exception is the special case of include files and Ciao packages which are typically indistiguishable from normal user files i e files which are not modules but are however quite different in their form of use they are loaded via include 1 or use package 1 declarations instead of ensure loaded 1 and effect since they are included they export operators declarations etc Typically it is assumed by default that files which are not modules will be used as include files or packages Thus a doc 2 declaration of this kind strictly only needs to be added to user type files Example doc filetype user There is another special case the value part This filetype is used to flag files which serve as introductions to boundaries between major parts in large documents See Section 2 8 5 Splitting large documents into parts page 22 for details
202. ption Lis T or a nested list of Ts Note that if T is term this type is equivalent to term this fact explain why we do not have a nlist 1 type member 2 PROPERTY General properties member X L The following properties hold globally member X L is side effect free sideff 2 member X L is binding insensitive bind ins 1 member X L If the following properties hold at call time L is a list list 1 then the following properties hold globally member X L is evaluable at compile time eval 1 member _X L The following properties hold upon exit L is a list list 1 member X L If the following properties hold at call time L is currently ground it contains no variables ground 1 then the following properties hold upon exit X is currently ground it contains no variables ground 1 Usage member X L Description X is an element of L sequence 2 REGTYPE A sequence is formed with zero one or more occurrences of the operator 2 For example a b c is a sequence of three atoms a is a sequence of one atom Meta predicate with arguments sequence pred 1 General properties sequence S T TO The Ipdoc Documentation Generator The following properties hold globally sequence S T is side effect free sequence S T Ifthe following properties hold at call time S is currently ground it contains no variables T is currently ground it contains no variables
203. r this predicate modtype 1 modtype part modtype application modtype documentation modtype module modtype user modtype include modtype package Usage Description Represents the type of file being documented PREDICATE REGTYPE Chapter 16 Internal State for Documentation Generation 121 docst modtype 2 PREDICATE No further documentation available for this predicate get first loc for pred 3 PREDICATE No further documentation available for this predicate 122 The Ipdoc Documentation Generator Chapter 17 Documentation Abstract Syntax Tree 123 17 Documentation Abstract Syntax Tree Author s Manuel Hermenegildo original version Jose F Morales This module defines the intermediate tree representation doctree 1 for documentation and its related operations Note This part needs better documentation JFMC 17 1 Usage and interface autodoc_doctree f N e Library usage use module library autodoc_doctree e Exports Predicates cmd type 1 doctree is empty 1 is nonempty doctree 1 empty doctree 1 doctree insert end 3 doctree insert before section 3 doctree concat 3 doclink at 2 doclink is local 1 section prop 2 section select prop 3 doctree save 2 doctree restore 2 doctree simplify 2 doctree_putvars 5 doctree scan and save refs 2 doctree prepare docst translate and write 3 doctree to rawtext 3 doctree translate and write 3 escap
204. r which it was compiled this allows documenting Prolog systems other than that under which lpdoc was compiled The effect of putting a path in systempaths instead of in filepaths is that the mod ules and files in those paths are documented as system modules this is useful when documenting an application to distinguish its parts from those which are in the system libraries Set doc structure to be the document structure doc structure 1 For the rest of the settings in the SETTINGS p1 file you can simply use the default values indicated You may however want to change several of these doc mainopts can be set to a series of options which allow more detailed control of what is included in the documentation for the main file and how i e including bug information versions and patches or only patches authors changelog explanation of modes one sided printing two sided is the default etc See option comment 2 in autodoc or type 1pdoc help for a list of these options In the same way doc compopts sets options for the component files Currently these op tions are common to all component files but they can be different from doc mainopts The allowable options are the same as above docformat determines the set of formats dvi ps ascii html info manl in which the documentation should be generated by default when typing 1pdoc all Se lecting htmlindex and or infoindex requests the generation of parts of a mast
205. ram a meta interpreter for this purpose 6 2 Usage and interface regtypes doc p e Library usage use package regtypes Or module regtypes e New operators defined regtype 1 1150 fx regtype 2 1150 xfx e New declarations defined regtype 1 regtype 2 e Other modules used System library modules assertions assertions_props Internal engine modules term_basic 60 The Ipdoc Documentation Generator 6 3 Documentation on new declarations regtypes doc regtype 1 DECLARATION This assertion is similar to a prop assertion but it flags that the property being doc umented is also a regular type Regular types are properties whose definitions are regular programs see lelow This allows for example checking whether it is in the class of types supported by the regular type checking and inference modules A regular program is defined by a set of clauses each of the form p x v 1 v n body 1 body k where 1 x is a term whose variables which are called term variables are unique i e it is not allowed to introduce equality constraints between the variables of x For example pC X Y is valid but pC X X is not 2 in all clauses defining p n 1 the terms x do not unify except maybe for one single clause in which x is a variable 3 n gt 0 and p n is a parametric type functor whereas the predicate defined by the clauses is p
206. rated some formats are not very suitable for public installation For example the dvi format has the disadvantage that it is not self contained if images are included in the manual Typing 1pdoc uninstall in a doc directory will uninstall from docdir the manuals corresponding to the Makefile in that doc directory If a manual is already installed and changes in the number of formats being installed are desired 1pdoc uninstall should be made before changing the docformats variable and doing lpdoc install again This is needed in order to ensure that a complete cleanup is performed 2 6 Enhancing the documentation being generated The quality of the documentation generated can be greatly enhanced by including within the program text e assertions and e machine readable comments Assertions are declarations which are included in the source program and provide the com piler with information regarding characteristics of the program Typical assertions include type Chapter 2 Generating Installing and Accessing Manuals 19 declarations modes general properties such as does not fail standard compiler directives such as dynamic 1 op 3 meta predicate 1 etc When documenting a module 1pdoc will use the assertions associated with the module interface to construct a textual description of this interface In principle only the exported predicates are documented although any pred icate can be included in the documentation by explicitly r
207. rcoroomoooo 44 supported documentation formats 113 synopsis section of the man page 16 syntax of formatting commands 26 system modules 16 T test assertion ooocooccocooooo 44 45 105 texec assertion 00 eee eee ee 43 texinios ds rU EN eee elas 2E 111 texto files Ay cese pense eram pe Eee et 4 textual comments 25 thesis like style eet yo EO 17 titles eating A LAO dde Det 32 33 tr e Assertion jog e eb gee iting gon rS ER 49 trust assertions s o EE Xo CES 48 180 two sided iecit ect os p ob ecu By 16 typewriter like font 27 uit tests sit bdo A Soe MER ES 105 Universal Resource Locator ooooooooooo 29 UE cir RIDUC O eee Ed 29 EEN 29 usage of acommand esee 30 usage of the application 16 The Ipdoc Documentation Generator V verbatim text i orcnpeixue4j Ree iR x3 bey 27 Versio adu eru I ee Dig UA ee a Ried 29 version maintenance mode for packages 37 version number 36 W WWW address 0 0 ccc cence eens 29 Author Index Author Index A Anonymous Author 1 95 Anonymous Author 2 eene 95 D Daniel Cabeza o o ooooomomoo E Edison Mera F Francisco Dueno 77 103 105 41 57 77 87 181 G German Puebla mo 41 J Jose F Morales 111 115 123 129 131 137 139 141 143 145 147 151 153 157 159 161 M Manuel Hermenegildo 15 25 41 51 5
208. re no longer a problem space can be omitted Jose Morales Added and documented a new documentation filetype for some parts of the manual that contains only documentation That avoids the old trick of declaring a fake main O predicate Jose Morales Style for subtitle added automatically in texinfo it is emph in HTML it is normal text with smaller font The entries in subtitle extra are free form Jose Morales Bugs and changelog appear now in the global links in the HTML backend Jose Morales Merged code that documented pl and 1pdoc files Jose Morales No copyright section if no copyright comment Jose Morales Auxiliary documentation files ending in doc displayed incorrect names for the module ending in doc E g use package foo doc was dis played instead of use_package foo_doc Fixed Jose Morales In verbatim enviroments new line characters are removed from the begin ning Jose Morales Fix wrong use of erase 1 for clauses which resulted in segmentation fault when documentation generation failed Jose Morales Fixed image generation now uses png files for HTML Jose Morales New code for text escape fixed some problems like 1 operator not being displayed corretly in Info Jose Morales Colors for Prolog variables in HTML Jose Morales Added begin alert environment for alert messages like cartouche but in red Jose Morales Supporting command for umlaut in additi
209. red Ipdoc 107 PART II LPdoc Internals Manual 109 15 Documentation Generation Library 111 15 1 Usage and interface autodoc sg SEENEN EEN NEE 112 15 2 Documentation on exports Lautodoc 008 112 index comment 2 EE set er ee Ae 112 reset output dir db 0 pred o 0 oo oo ooo o 112 ensure output dir prepared 2 pred 112 get autodoc opts 3 pred cec oii pe 113 autodoc gen doctree 5 pred oooo ooooo 113 Imt infodir entry 3 pred 11 9 iet RES 113 autodoc compute grefs 3 pred 113 autodoc translate doctree 3 pred 113 autodoc finish 1 predecir ee edere he ton 114 autodoc gen alternative 2 pred 114 15 3 Documentation on multifiles autodoc 000 114 autodoc finish hook 1 pred o o oo oo o 114 autodoc gen alternative hook 2 pred 114 16 Internal State for Documentation Generation E udi ei aor cR ana ARCU SUA E EC Sa pcm dI d 115 16 1 Usage and interface autodoc statel 115 16 2 Documentation on exports autodoc state 115 supported options 1 prop aeo cies Ceres 115 option comment 2 red 116 backend id Al regtype isis IRE 116 backend ignores components 1 pred 116 backend alt format 2 pred oooooooo 117 top suf ix 2 pred gege 2 117 docstate l regtybe sedis re y Re e cds
210. reported Note that there is also an older package called rtchecks by David Trallero The advantage of this one is that it can be used independently of CiaoPP and also has updated functionality There are two main applications of run time checks e To improve debugging of certain predicates specifying some expected behavior that is checked at run time with the assertions e To avoid manual implementation of run time checks that should be done in some predicates leaving the code clean and understandable The run time checks can be configured using prolog flags Below we itemize the valid prolog flags with its values and a brief explanation of the meaning e rtchecks level e exports Only use rtchecks for external calls of the exported predicates e inner Use also rtchecks for internal calls Default e rtchecks trust e no Disable rtchecks for trust assertions e yes Enable rtchecks for trust assertions Default e rtchecks entry e no Disable rtchecks for entry assertions e yes Enable rtchecks for entry assertions Default e rtchecks exit e no Disable rtchecks for exit assertions e yes Enable rtchecks for exit assertions Default e rtchecks test e no Disable rtchecks for test assertions Default e yes Enable rtchecks for test assertions Used for debugging purposes but is better to use the unittest library e rtchecks inline e no Instrument rtchecks using call to library predicates present in rtchecks rt pl nativ
211. resentation format Any reference to the official version original version or how to obtain original versions of the document is preserved verbatim Any copyright notice in the document is preserved verbatim Also the title and author s of the original document should be clearly mentioned as such In the case of translations verbatim sentences mentioned in 6 are preserved in the language of the original document accompanied by verbatim translations to the language of the traslated document All translations state clearly that the author is not responsible for the translated work This license is included at least in the language in which it is referenced in the original version Whatever the mode of storage reproduction or dissemination anyone able to access a digitized version of this document must be able to make a digitized copy in a format directly usable and if possible editable according to accepted and publicly documented public standards Redistributing this document to a third party requires simultaneous redistribution of this licence without modification and in particular without any further condition or restriction expressed or implied related or not to this redistribution In particular in case of inclusion in a database or collection the owner or the manager of the database or the collection re nounces any right related to this inclusion and concerning the possible uses of the document after extraction from th
212. resented as 1 0e1000 and 1 0e1000 and Not a number which arises as the result of indeterminate operations represented as 0 Nan General properties 1t T The following properties hold globally flt T is side effect free flt T If the following properties hold at call time T is currently a term which is not a free variable then the following properties hold globally flt T is evaluable at compile time All calls of the form 1t T are deterministic flt T The following properties hold upon exit T is a float The following properties hold globally Indicates the type of test that a predicate performs analyisis Usage flt T Description T is a float The following properties hold globally This predicate is understood natively by CiaoPP num 1 The type of numbers that is integer or floating point General properties num T The following properties hold globally num T is side effect free num T is binding insensitive num T sideff 2 nonvar 1 eval 1 is_det 1 1t 1 Required by the nonfailure test type 2 native 1 REGTYPE sideff 2 bind ins 1 64 The Ipdoc Documentation Generator If the following properties hold at call time T is currently a term which is not a free variable nonvar 1 then the following properties hold globally num T is evaluable at compile time eval 1 All calls of the form num T are determin
213. rion EE 31 Qaa eeh e cci lo ESRB 31 QAA commande 31 Qae command AN WIRES Seyi oR dee 31 QAE commande 31 apl commande 28 author commande 29 Qb commazd eR hs See ees 31 begin alert commande 27 begin cartouche command 27 begin description command 26 begin displaymath command 30 Gbeginfenumerate command 26 begin itemize command 26 begin verbatim command 27 Qbf command o ck Reus ete aden bes 27 bullet commande 31 Qc command aere fate ed IR eke das 31 cindex commande 28 Qcite commande 29 comment Commande 26 concept commande 28 copyright commande 31 d command A ose tee e A a Sanae 31 decl commande 28 defmathemd 2 commande 30 defmathemd 3 commande 30 Qem commande 27 Qemail commande 29 Qend alert commande 27 end cartouche commande 27 end description commande 27 end displaymath command 30 177 end enumerate command 26 end itemize commande 26 end verbatim commande 27 file commande 29 footnote commande 27 D I command sisi seas a ose pet e 31 Ohfil eegne REUS us 27 Qi command ero ode Bex oot he 31 image Commande 30 include commande 30 includedef commande 30 includefact commande 30 includeverbatim commande 30 index commande 28 Qso command EE 31 item commande 26 27 OU command ebe II 31 key commande 27 Ql cOMmMANG A
214. rmi Term2 Description Termi is an instance of Term2 The following properties hold globally This predicate is understood natively by CiaoPP native 1 Chapter 9 Meta properties 87 9 Meta properties Author s Francisco Bueno This library allows the use of some meta constructs which provide for specifying properties of terms which are unknown at the time of the specification or expressed with a shorthand for the property definition i e without really defining it An example of such use is an assertion which specifies that any property holding upon call will also hold upon exit pred p X Prop X gt Prop X Another example is using shorthands for properties when documenting pred p X regtype X list list list See below for an explanation of such a regular type 9 1 Usage and interface meta_props E e Library usage use module library assertions meta props or also as a package use package metaprops Note the different names of the library and the package e Exports Properties call 2 prop 2 regtype 2 Multifiles callme 2 e Other modules used Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 9 2 Documentation on exports meta props call 2 PROP
215. rompt for an info file name Input the name of the info file generated by lpdoc main info and Emacs will open the manual in info mode There are several possibilities in order to install an info file so that it is publicly available i e so that it appears automatically with all other info manuals when starting info or typing C u M x info in Emacs e Installation in the common info directory 20 The Ipdoc Documentation Generator e Move the info file to the common info directory typically usr info usr local info This can be done automatically by setting the docdir vari able in the SETTINGS p1 file to this directory and typing lpdoc install Warning if you are installing in an info directory that is not maintained automatically by lpdoc make sure that you have not selected the infoindex option in docformats since this will overwrite the existing dir file e Add an entry to the info index in that directory normally a file in that directory called dir The manual should appear as part of the normal set of manuals available when typing M x info in Emacs or info in a shell See the Emacs manual for details e Installation in a different info directory you may want to place one or more manuals generated by 1pdoc in their own directory This has the advantage that 1pdoc will maintain automatically an index for all the 1pdoc generated manuals installed in that directory In order for such manuals to appear when typing M x inf
216. rop tree X regtype X is a tree Regular types can be used as properties to describe predicates and play an essential role in program debugging see the Ciao Prolog preprocessor ciaopp manual In this chapter we explain some general considerations worth taking into account when writing properties in general not just regular types 6 1 Defining properties Given the classes of assertions in the Ciao assertion language there are two fundamental classes of properties Properties used in assertions which refer to execution states i e calls 1 success 1 and the like are called properties of execution states Properties used in asser tions related to computations i e comp 1 are called properties of computations Different considerations apply when writing a property of the former or of the later kind Consider a definition of the predicate string concat 3 which concatenates two character strings represented as lists of ASCII codes string concat L L string concat X Xs L X NL string concat Xs L NL Assume that we would like to state in an assertion that each argument is a list of inte gers However we must decide which one of the following two possibilities we mean exactly the argument is instantiated to a list of integers let us call this property instantiated_ to intlist 1 or if any part of the argument is instantiated this instantiation must be compatible with the argument being a list of in
217. roperty in the property starterm 1 The idea is that each element of the 2 term corresponds to head argument position Several properties can be assigned to each argument position by grouping them in curly brackets The following is an example of a complex property in this format e integer list integer the first argument of the procedure or function or has the property integer 1 and the second one has the property list 2 with second argument integer e integer var list integer the first argument of the procedure or function or has the properties integer 1 and var 1 and the second one has the property list 2 with second argument integer Usage property starterm Props Description Props is either a term or several terms separated by 2 The main functor of each of those terms corresponds to that of the definition of a property and the arity should be one less than in the definition of such property All arguments of each such term are ground 54 The Ipdoc Documentation Generator complex goal property 1 REGTYPE complex goal property Props Props is a possibly empty complex goal property Such properties can be either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property Such properties apply to all executions of all goals of the predicate which comply with the assertion in which the Props appear The arguments of the term
218. rtchecks doc d E e Library usage use package rtchecks Or module rtchecks e Other modules used Internal engine modules term basic arithmetic atomic basic attributes basic props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support Chapter 13 Unit Testing Library 105 13 Unit Testing Library Author s Edison Mera This library provides an extension of the Ciao assertion language which allows writing unit tests The central idea is to use the assertion language to provide specifications of test cases for a given predicate The package also provides some special properties that are convenient when specifying unit tests and the required run time libraries In general a test assertion is written as follows test predicate A1 A2 An lt Precondition gt gt lt Postcondition gt lt Global properties gt t lt Comment gt Where the fields of the test assertion have the usual meaning in Ciao assertions i e they contain conjunctions of properties which must hold at certain points in the execution Here we give a somewhat more operational test oriented reading to these fields predicate n is the predicate to be tested Precondition is a goal that is called before the predicate being tested and can be used to generate values of the input parameters Postcondition is a
219. rtion coiere gai eena E RIS ipie 43 eege le sd a ERI See ar 42 43 Eege AANER E ER AE E 42 43 texi2dWl AA S T Ea 108 texi2htiml 2 EEN ali dE 108 exlndex i o ge ns atte TES UPS Audit 108 teximder do ede ste ARIA Ue 131 133 texinfo jussi n 1 3 4 16 17 21 24 111 TexinfOoi siticotis iege EN 108 t xinfo les cia dia oe ex Eee EREROUR 4 textual comments 210 kd luus di Gos wee 25 thesis like styles 10 os 17 thro ws 2 P e td oa a Rus 77 86 time stru ct 4 2222 a td ed Biden won a YR 39 times N on epp rea d idee Edit 105 title e mou ree hes 32 33 top suffix 2 v nbl dE AE 115 117 tree of 2 ostium ees 95 96 troubleshooting o o ooocooocoocmmo moo 15 true assertiom 4205 Lb Ue e UE 49 true ii EE 42 49 ET EE 48 tr st l i ipee ev PP Ree hel 42 48 try Sols N 2 doesvesbxkuecded eri wr wie 105 A cs scie ets IL OLIO uU ADS DIU ES 112 twossided uen app da 16 typeindex bc traci cas LP gg e DV peris 151 DY EE 3 typewriter like font 27 u 3 t estar usb tet Cd vete bere et 95 97 nit tests 5 0 da IO YR 105 unittest iaia wl etu ditt vermibus 105 Universal Resource Locator 29 Unix ite aeo E bailar ge ides Re 20 UR Dace A abd PE MN Raed bau idv 29 rl references EE 11 A BANS Dti EE se EE 29 USA DP 42 193 usage of the application 16 usage Section sv pL ecran 11 Usage EE 15 usage message 11 16 use module eee eh 23 Use packs Lia ER VETE
220. rty is used New option noisoline makes the textual explanation of the iso 1 property not appear in the description of the usage but the e ISO e symbol does appear Two new options nosysmods and noengmods selectively avoid listing the system or engine libraries used If there is no declaration for a predicate now a line is output with the name and arity and a simple comment saying that there is no further documentation available this has the great advantage that then it goes in the index and for example in ciao they get added to completion commands Now if a property or regtype declaration has no textual comment the actual definition is given first level only in the place where it is documented and a simple generic message where it is used Added noindent and iso commands Nicer spacing now when printing predicate names which are operators as well as modes etc Reporting of versions in libraries has been improved now both the global version and the last version in which the library itself was changed are reported Exported new declarations also documented now for include type files A module is now documented even if exports nothing at all Engine modules used now documented even if no other modules used was a reported bug Fixed indexing of names containing etc for newer versions of texinfo Tabs in verbatim modes now converted to a number of spaces 8 Not perfect but produces better output than leaving th
221. s Sty c m PPS eai E 107 dVips uhiide eie See tee ae a neas 7 108 AVA PSY Vacs tiie ere Ae te Sie Geld RES P 131 133 Ke 19 E Edison Meta ue e ERE erg 77 103 105 EE eS 11 36 39 107 108 EMACS SHA tmt e eet dias 15 18 19 20 emacs Ciao mode 36 Emacs accessing info files 19 Emacs generating manuals from 15 Emacs LPdoc mod cc s 2 uua a ado 15 ug E occ 108 187 email address mE he Pe e S 29 email addresses Leti lic Se 11 29 emphasis TACO nre risat eret Deep RM EDEN 27 empty doctree t 000 eee 123 124 encapsulated postscript 000 30 engine basic pDrops cess ee eee 95 ensure cache dir 1 sss 147 148 ensure Loaded esses 10 22 38 ensure output dir 1 ss 147 148 ensure output dir prepared 2 112 entry assertion oone e owed Y UE creme mes 46 entrfy 1 ue dv E am bie C bbs 42 46 54 en mnerated list 3 eb paw dv ps 26 environment variables leues 107 equiv 2 venu eaters PHELPS Qe ED Ens 61 75 errh ndle x ca oe EES de a aS 161 E EE 105 error free 1 eee e 61 75 error A S vebiuniexas eil 155 escape Seduenceg seen nn 26 escape String i esses 123 126 eval 1 61 62 63 64 65 66 67 68 69 70 71 72 73 75 99 101 example of lpdoc use 89 example module 0 cece eee eee 95 ezceptionierroria bi 105 exception 4d EA d v RA 77 78 EE 77 78 exceptions 25 42 51
222. s are obtained when documenting code organized as a series of libraries and with a well designed module structure e texinfo supports only a limited number of indices Thus if you select too many indices in the SETTINGS pl file you may exceed texinfo s capacity which it will signal by saying something like No room for a new write e The GNU info format requires all nodes chapters sections etc to have different names This is ensured by 1pdoc for the automatically generated sections by appending the module or file name to all section headings However care must be taken when writing section names manually to make them different For example use lpdoc usage instead of simply Usage which is much more likely to be used as a section name in another file being documented e Also due to a limitation of the info format do not use or or in section chapter etc headings e The character in names may sometimes give problems in indices since current versions of texinfo do not always handle it correctly 2 8 2 Writing comments which document version patch changes When writing version comments doc version it is useful to keep in mind that the text can often be used to include in the manual a list of improvements made to the software since the last time that it was distributed For this to work well the textual comments should describe the significance of the work done for the user For exam
223. s eL REL I Vets x dn 95 97 packages un sene boos ae CR em P Edo 22 38 page numbering changing 16 page size changing cece eeaee 17 Global Index page style changing 17 paragraph break i 6c cece cc eee 27 parametric property sese 88 parametric regular type abstractions 88 parametric type functor sess ss 60 parse structure 0 i nl dl acl 129 parts in a large document 23 parts in large docunents s 38 pdf generations ucla wie de RR ERA Pass 7 D EN ease cease Rea ea were et 8 POLE o d PD Eh pie E 108 pdfview l A EEN ule 131 132 pe type l oag cnp P malted qe 61 76 Pedro LopeZ ii RPM HIER eee de 57 77 POT EE 108 EE EE 143 planned improvement cece eae 36 possibly Zails t 77 82 possibly nondert i oo 77 83 pred assertiOn mica DV eee do os 42 43 pred 4 centies 29 42 43 44 45 47 51 55 EE 42 43 predfunctor l luxe ES REALES 51 56 predicatel ie at Db b UTC bars 104 predicate m rieut iori v Re ee Meese et 105 prednam e 1 2 92 su 36 37 52 61 71 72 prepare current refs 1 153 154 prepare mathjax 0 sse eee eee 141 prepare web skel 1 sess ess 141 program assertions esee ess 41 program Section esee 35 program subsection 0c eee eee eee 35 LTE 3 16 22 107 Prolog source filles 3 Prolog 0180 das adds 15 prolog flags 25 42 51 61 77
224. s facility was added mainly to be able to reuse parts of manuals which were already written in texinfo Note that if a stand alone file needs to be written i e a piece of documentation that is not associated to any pl file it can always be written as a dummy pl file De one that is not used as code but which contains machine readable comments A manual can be generated either from a single source file pl or src or from a set of source files In the latter case then one of these files should be chosen to be the main file and the others will be the component files The main file is the one that will provide the title author date summary etc to the entire document In principle any set of source files can be documented even if they contain no assertions or comments However the presence of these will greatly improve the documentation see Section 2 6 Enhancing the documentation being generated page 18 If the manual is generated from a single main file i e component 1 defined below is empty then the document generated will be a flat document containing no chapters If the manual is generated from a main file and one or more components then the document will contain chapters The comments in the main file will be used to generate the introduction while each of the component files will be used to generate a separate chapter The contents of each chapter will be controlled by the contents of the corresponding component
225. s hold upon exit T is a list Usage list L Description L is a list list 2 list L T L is a list and for all its elements T holds Meta predicate with arguments list pred 1 General properties list L T The following properties hold globally list L T is side effect free list L T If the following properties hold at call time L is currently ground it contains no variables T is currently ground it contains no variables then the following properties hold globally list L T is evaluable at compile time list X T The following properties hold upon exit X is a list Usage list L T Description L is a list of Ts nlist 2 Meta predicate with arguments nlist pred 1 General properties nlist L T sideff 2 ground 1 eval 1 is_det 1 list 1 REGTYPE sideff 2 ground 1 ground 1 eval 1 list 1 REGTYPE Chapter 7 Basic data types and properties 69 The following properties hold globally nlist L T is side effect free sideff 2 nlist L T If the following properties hold at call time L is currently ground it contains no variables ground 1 T is currently ground it contains no variables ground 1 then the following properties hold globally nlist L T is evaluable at compile time eval 1 nlist X T The following properties hold upon exit X is any term term 1 Usage nlist L T Descri
226. s in Props are implicitely augmented with a first argument which corresponds to a goal of the predicate of the assertion in which the Props appear For example the assertion comp var A not further inst A has property not further inst 1 as goal property and establishes that in all executions of var A it should hold that not further inst var A 4A Usage complex goal property Props Description Props is either a term or a conjunction of terms The main functor and arity of each of those terms corresponds to the definition of a property A first implicit argument in such terms identifies goals to which the properties apply nabody 1 PROPERTY Usage nabody ABody Description ABody is a normalized assertion body dictionary 1 REGTYPE Usage dictionary D Description D is a dictionary of variable names c assrt body 1 REGTYPE This predicate defines the different types of syntax admissible in the bodies of ca11 1 entry 1 etc assertions The following are admissible Pr CP CO where fields between are optional e CP is a possibly empty complex argument property complex arg property 1 which applies to the calls to the predicate e CO is a comment string docstring 1 This comment only applies if the possibly empty properties given for calls in the assertion hold The usual formatting com mands that are applicable in comment strings can be used see stringcommand 1 T
227. s predicate is understood natively by CiaoPP sideff G X is side effect free Usage sideff G X Description G is side effect X If the following properties hold at call time X is an element of free soft hard regtype 1 Meta predicate with arguments regtype goal General properties regtype G The following properties hold globally regtype G is side effect free Usage regtype G Description Defines a regular type native 1 Meta predicate with arguments native goal General properties native P The following properties hold globally native P is side effect free Usage native Pred Description This predicate is understood natively by CiaoPP native 2 Meta predicate with arguments native goal General properties native P K The following properties hold globally native P K is side effect free Usage native Pred Key Description This predicate is understood natively by CiaoPP as Key native 1 sideff 2 member 2 PROPERTY sideff 2 PROPERTY sideff 2 PROPERTY sideff 2 Chapter 7 Basic data types and properties 75 no_rtcheck 1 PROPERTY Meta predicate with arguments no_rtcheck goal General properties no_rtcheck G The following properties hold globally no_rtcheck G is side effect free sideff 2 Usage no rtcheck G Description Declares that the assertion in which this comp property appears must not
228. t provided by backend 3 148 fmt html Cenplate ess 143 ft dx env T s AS e RENS 152 fut TE EEN 152 fmt inf dir entry 3 c eg dera a da ue Di 113 G get autodoc opte sells 113 get cache dir 2 3i IRR EINER 148 get command option l ooo 132 Get dng as slate oul sex ve pp aeos 120 get docifield 3c x yl e p PRSE d 120 getdoc field dict Sict eves AR as 120 get_first_loc_for_pred 3 121 getlidxbase 3 iio eis AER hells 151 get idrsub 2 ege deed LTEM HS VR 151 getomaiimod L unen ati tea nes 129 Set maimod specil esses 130 get mod doc 3 udo et Ug iot 120 Set Output LE Ree bep ees 148 get subbase 3 s s ce erre 149 H A REV 133 I idx g t indices 3 v wore be EEUU 152 A he deer EE 143 index comment 2 ees 112 infodir base 2 Roe eese ien 137 insert show Loc cece 127 DD P 102 is andex cmd 1 REENEN 152 is nonempty doctree 1 sss sss 124 is version Li ici ia dech See ee 126 The Ipdoc Documentation Generator L labgen clean Lia A UE 118 labgen get 2 end eles id e MR E AE 118 I bg ipit Listado Di dee Peeters 118 load vpaths 0 ictu ik Exc aa eb pr 132 locate and convert image 4 161 Ipdoc option Les se sing pede e te bes 131 M main_absfile_for_subtarget 3 149 main absfile in format 148 main output name 2 seen 149 pakeinfo i cci 5M A 133 n kertf l uw NER OR ERU Wed ge a 133 mytype l
229. t call time L is currently ground it contains no variables T is currently ground it contains no variables then the following properties hold globally list L T is evaluable at compile time list X T The following properties hold upon exit X is a list Usage list L T Description L is a list of Ts 101 var 1 var 1 list 1 int 1 int 1 list 1 not_fails 1 list 1 int 1 list 1 not_fails 1 not_fails 1 REGTYPE sideff 2 ground 1 ground 1 eval 1 list 1 102 The Ipdoc Documentation Generator og 2 MODE Usage og A T Description This is a parametric mode definition Call and exit are compatible with call T A undefined property The following properties are added upon exit A is ground gnd 1 is 2 PREDICATE Usage Num is Expr Description Typical way to describe document an external predicate e g written in C The following properties should hold at call time Expr is an arithmetic expression arithexpression 1 The following properties hold upon exit Num is a number num 1 Chapter 12 Run time checking of assertions 103 12 Run time checking of assertions Author s Edison Mera This package provides a complete implementation of run time checks of predicate assertions The program is instrumented to check such assertions at run time and in case a property does not hold the error is
230. t ip fee 11 comp assertion 55er vele EM 45 compi oou epa it get ones 42 45 55 COMPILA y o MTM Reb 42 45 conipat 2 oboe MuPHEPPD ae ap PERS 61 72 compatibility properties sss 97 compatible acia io 51 compiler c itf 61 eet eee E 112 115 Compiler iconpiler 112 115 complex argument property 51 52 53 54 55 complex goal poropertg sss se 52 54 55 complex arg property 1 51 52 54 55 complex goal property 1 51 52 53 55 component Tiles land 4 component registry component registry 143 147 compute refs and biblio 1 153 constant 1iz het geet EE dE a Pa ETA 61 66 constraint 1 1 bes 000 Ape UPS pe Ed 77 78 contents area co ies LIE at SE 18 conversion formats ele 3 convertc 1 io bb STRIP Bowel ERG 131 133 COpyrightu i ue Ze a E ved M E PRU LA 34 COEL Li A n PII eia 77 78 GE 77 78 ER A iW A E 18 20 21 107 D Daniel Cabeza mbar em LS 61 The Ipdoc Documentation Generator data facts 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 date icone IX Tq Rh HIR aa ERE Tr eS 29 debugger support 25 42 51 61 77 87 95 104 106 112 115 123 129 131 137 139 141 143 145 147 151 153 155 157 159 161 deci assertions P AI ELA A 47 decl 1 20222 EE 42 47 51 d cl 2 5 2 A RR e Res 42 4T deprecated 1 sb ents bes ed E dese EE 61 73 description list
231. ted in documentation in the interface description by type user system engine Supports new hide option in comments to prevent an exported predicate from being documented This is useful for example for avoiding mentioning in the docu mentation multifile predicates which are not intended to be modified by the user Manuel Hermenegildo 12 The Ipdoc Documentation Generator Version 1 3 1998 7 10 16 35 2 MET DST Exports are now listed in the chapter header separated by kind pred types prop erties The list of other modules used by a module is now separated in the chapter header into User and System modules controlled by two sets of paths in SETTINGS New hide option of comment 2 decl prevents an exported predicate from being included in the documentation comment hide p 3 Manuel Hermenegildo Version 1 2 1998 6 4 9 12 19 MET DST Major overall improvements Manuel Hermenegildo Version 1 1 1998 3 31 Incorporated autodoc and autodoformats library to source in order to make distri bution standalone Improvements to installation and documentation Makefiles now also install documentation in public areas and produce global indices Several documents can cohexist in the same installation directory Manuel Hermenegildo Version 1 0 1998 2 24 First Ciao native distribution with installation Manuel Hermenegildo Version 0 9 1998 2 24 Intermediate version preparing for first major release
232. tegers we will call this property compatible with intlist 1 For example instantiated to intlist 1 should be true for the terms and 1 2 but should not for X 34 2 and X 2 In turn compatible with intlist 1 should be true for X 1 2 and X 2 but should not be for XI 11 a 2 and 1 We refer to properties such as instantiated to intlist 1 above as instantiation properties and to those such as compatible with intlist 1 as compatibility properties corresponding to the traditional notions of instantiation types and compatibility types It turns out that both of these notions are quite useful in practice In the example above we probably would like to use compatible with intlist 1 to state that on success of string concat 3 all three argument must be compatible with lists of integers in an assertion like success string concat A B C gt compatible with intlist A compatible with intlist B compatible with intlist C With this assertion no error will be flagged for a call to string concat 3 such as string concat 20 L R which on success produces the resulting atom string concat 20 L 20 L but a call string concat a R would indeed flag an error On the other hand and assuming that we are running on a Prolog system we would probably like to use instantiated to intlist 1 for sumlist 2 as follows 58 The Ipdoc Documentation Generator calls sumlist L N instantiated to intlist L
233. th L N N gt 100 Now a series of assertions This declares the entry mode of this exported predicate i e how it is called from outside entry p 3 gnd var var This describes all the calls calls p 3 foo bar baz foo _ hh hh d This describes the successes for a given type of calls success p 3 int int var gt int int gnd This describes a global property for a given type of calls comp p 3 int int var not fails doc p 3 A bf general comment on the predicate Documenting some typical usages of the predicate pred p 3 int int var int int list iso not fails This mode is nice pred p Preds Value Assoc var var list int int list not fails This mode is also nice pred p 3 list int list not fails not fails Just playing around pred q A list A list A gnd A not fails Foo pred q A Not a bad use at all 92 The Ipdoc Documentation Generator pred q 2 var gnd int gt gnd int int pred q 2 int list Non moded types are best used this way q _ pred p 1 var gt list p _ pred r A list A gt list A int gnd A not_fails This uses parametric types doc doinclude s 1 Forces documentation even if not exported pred s A list A gt list A gnd A not_fails s _ doc doinclude list 2 list 1
234. that will be produced when incorporating this file into a larger document It is also possible to generate more complex documents by editing the automatically provided SETTINGS pl in the same way as when generating a manual from the command line see below However when generating complex documents it is best to devote an independent permanent directory to the manual and the full procedure described in the rest of this text is preferred 2 2 Generating a manual Two possible scenarios are described in this section The first one is indicated to document quickly a single module and the second one targets the documentation of a larger application or library in which the settings which define how the documentation is to be generated etc are read from a file so that they can be reused as the application library evolves In order to make 1pdoc generate quickly the documentation of a single file it suffices to execute the command 1pdoc d doc structure modulename dvi where modulename is the module to be documented without extension and in this example dvi is the desired format of the manual other accepted formats include html pfd ps etc see later lpdoc will generate a manual with the name of the module and the format extension in the example it would be modulename dvi in the same directory where it is executed For the second scenario the lpdoc library directory includes a generic file which is quite useful for the genera
235. tion of complete manuals the SETTINGS pl file Use of this file is strongly recommended Generating a manual using this file involves the following steps e Create a directory e g doc in which the documentation will be built The creation of this directory is recommended as it will be populated with intermediate files which are best kept separate This directory is typically created in the top directory of the distribution of the application or library to be documented e Execute the command lpdoc lpsettings in the directory where the documentation is to be created e g doc in the previous point lpdoc will create an SETTINGS pl generated file with the default settings This file should be renamed to SETTINGS pl once the user agrees with its contents e Edit SETTINGS pl to suit your needs It is recommended that you review at least the following points 16 The Ipdoc Documentation Generator Set the variable filepath to include all the directories where the files to be documented can be found Set the variable systempath to include all the system directories where system files used can be found regardless whether they are to be documented or not This will be used to access definitions of types etc It is very important to include all related directories either in filepath or in systempath because on startup lpdoc has mo default search paths for files defined not even those typically defined by default in the Prolog system unde
236. tor yf Postfix associative the subexpression can be of the same precedence as the operator General properties operator specifier X The following properties hold globally operator specifier X is side effect free sideff 2 operator specifier X If the following properties hold at call time X is currently a term which is not a free variable nonvar 1 then the following properties hold globally operator specifier X is evaluable at compile time eval 1 All calls of the form operator_specifier X are deterministic is_det 1 Goal operator_specifier X produces 7 solutions relations 2 operator_specifier T The following properties hold upon exit T specifies the type and associativity of an operator operator specifier 1 Usage operator specifier X Description X specifies the type and associativity of an operator list 1 REGTYPE A list is formed with successive applications of the functor 2 and its end is the atom Defined as The Ipdoc Documentation Generator listC list 1 L list L General properties list L The following properties hold globally list L is side effect free list L If the following properties hold at call time L is currently ground it contains no variables then the following properties hold globally list L is evaluable at compile time All calls of the form list L are deterministic list T The following propertie
237. tree R Description Not empty test The following properties should hold at call time Intermediate tree representation for documentation empty doctree 1 Usage empty doctree R Description Empty The following properties should hold at call time Intermediate tree representation for documentation doctree insert end 3 Usage doctree insert end AO Elem A Description Insert Elem in AO at the end obtaining A Call and exit should be compatible with Intermediate tree representation for documentation Intermediate tree representation for documentation Intermediate tree representation for documentation doctree insert before section 3 Usage doctree insert before section AO Elem A Description Insert Elem in AO before the first section obtaining A Call and exit should be compatible with Intermediate tree representation for documentation Intermediate tree representation for documentation Intermediate tree representation for documentation doctree_concat 3 No further documentation available for this predicate REGTYPE PREDICATE doctree 1 PREDICATE doctree 1 PREDICATE doctree 1 PREDICATE doctree 1 doctree 1 doctree 1 PREDICATE doctree 1 doctree 1 doctree 1 PREDICATE Chapter 17 Documentation Abstract Syntax Tree 125 doclink 1 REGTYPE Usage Description A link to a document label doclabel 1 REGTYPE Usage D
238. ty conjunction 1 50 The Ipdoc Documentation Generator Chapter 5 Types and properties related to assertions 51 5 Types and properties related to assertions Author s Manuel Hermenegildo This module is part of the assertions library It provides the formal definition of the syntax of several forms of assertions and describes their meaning It does so by defining types and properties related to the assertions themselves The text describes for example the overall fields which are admissible in the bodies of assertions where properties can be used inside these bodies how to combine properties for a given predicate argument e g conjunctions etc and provides some examples 5 1 Usage and interface assertions props S e Library usage use_module library assertions_props e Exports Properties head_pattern 1 nabody 1 docstring 1 Regular Types assrt_body 1 complex_arg_property 1 property_conjunction 1 property_ starterm 1 complex_goal_property 1 dictionary 1 c_assrt_body 1 s_assrt_ body 1 g_assrt_body 1 assrt_status 1 assrt_type 1 predfunctor 1 propfunctor 1 e Other modules used Internal engine modules term_basic arithmetic atomic_basic attributes basic_props basiccontrol data facts exceptions io aux io basic prolog flags streams basic system info term compare term typing hiord rt debugger support 5 2 Documentation on exports assertions props
239. uL vp EREPALRORSEES bee 98 Reech cute ne edet e Ee Eege nut 97 Ree ane cord E d d oe re Page ete d 100 Dl Die cosi ade a eaten ee tl tec trad 97 Parse SEET Ne wy MEHN AN 129 pdfview l ugue ds 132 prepare current refs l sss 153 prepare mathjax 0 sees eese ees 141 prepare web skel t sees 141 PSP Zaire eee EE ug RR Ped 133 psview dl u cote eke a ub Ries qoa 132 Q q 1 voee Seats AS 99 Uli A a AA 96 DAA AS E ENE A 96 read A Y AA A O dcop Palins tae 159 requested_file_formats l 132 reset output dir db 0 esses 112 resolve bibliograpbu s 157 Predicate Method Index S Tc cross d A ette ah 98 se ction prop 2 s d X AE HD DeC 125 section select Drop eee e eee 125 secttree resolve i cele 154 setting valiie 2 2 acc v xe a Ese 132 setting value or default 2 131 setting value or default 3 132 MS AA id do et Uie 159 standalone docstr 1 sees 129 supported file format 1 148 T t buives ate Pe s tu ee RE 98 tex doosI5 VENE ee ee a oh bee ee he ERA 133 texindex Terere i ocd AAA 133 top suttix 2 EE 117 CEO DEE 49 E SE Ve een Yan Shee toe A teste Ld 48 typeindex 5 inel wee ee bat 151 169 UA duco EE oh esr Rie tudo E 97 using math ax ee e ol oes 141 verify settings 000 131 version date cen 127 version numstr 2 eee eee 127 version patch 2 aa ced mise RR Yd Ebene 127 version string 2
240. uld hold at call time AssertionStatus is an acceptable status for an assertion assrt status 1 AssertionBody is a call assertion body c assrt body 1 calls 1 DECLARATION This assertion is similar to a pred 1 assertion but it only provides information about the calls to a predicate If one or several calls assertions are given they are understood to describe all possible calls to the predicate For example the following assertion describes all possible calls to predicate is 2 see arithmetic calls is term arithexpression Usage calls AssertionBody The following properties should hold at call time AssertionBody is a call assertion body c_assrt_body 1 44 The Ipdoc Documentation Generator calls 2 DECLARATION This assertion is similar to a calls 1 assertion but it is explicitely qualified with an assertion status Non qualified calls 1 assertions are assumed to have check status Usage AssertionStatus calls AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is a call assertion body c assrt body 1 success 1 DECLARATION This assertion is similar to a pred 1 assertion but it only provides information about the answers to a predicate The described answers might be conditioned to a particular way of calling the predicate For example the following assertion specifies the answers of the l
241. us regtype AssertionBody The following properties should hold at call time AssertionStatus is an acceptable status for an assertion assrt_status 1 AssertionBody is an assertion body assrt_body 1 Chapter 7 Basic data types and properties 61 7 Basic data types and properties Author s Daniel Cabeza Manuel Hermenegildo This library contains the set of basic properties used by the builtin predicates and which constitute the basic data types and properties of the language They can be used both as type testing builtins within programs by calling them explicitly and as properties in assertions 7 1 Usage and interface basic props Va e Library usage These predicates are builtin in Ciao so nothing special has to be done to use them e Exports e Other modules used Properties member 2 compat 2 inst 2 iso 1 deprecated 1 not_further_inst 2 sideff 2 regtype 1 native 1 native 2 no rtcheck 1 eval 1 equiv 2 bind_ins 1 error free 1 memo 1 filter 2 pe type 1 Regular Types term 1 int 1 nnegint 1 flt 1 num 1 atm 1 struct 1 gnd 1 gndstr 1 constant 1 callable 1 operator specifier 1 list 1 list 2 nlist 2 sequence 2 sequence or list 2 character code 1 string 1 num code 1 predname 1 atm or atm list 1 flag values 1 System library modules assertions native props terms check Internal engine modules term basic arithmetic atomic basic attributes basiccontrol data
242. usa 131 setting value or default 3 pred seususrusruua 132 setting value 2 predi actes kPa oem er S 132 all setting values 2 pred 2 eren eR 132 get command option 1 pred corrida 132 requested file formats 1 red 132 load vpaths 0 pred eiis dian da etna e bi t AC 132 viewer 3 EE 132 ad EE 132 xdvisize 1 pred oscuros toe uuo EE 132 o o AAA verona E kai en 132 psview Fl pred coser eret ES fn 132 htmlview 1 pred s opui hag tete de uM ib et 133 Dibte x Ll EE 133 tex 1 pred esso decies Bey eG ahmed EK Rn 133 texindex T Pred as cava eet Duero eae eee odes 133 dyips l EE 133 ps2pdf NEE RE NO ee ean teeta 133 makeinfo 1 pred eenig ee AE ome 133 makertf 1 EE 244 caved Sigh CEU X MES ARE ERU 133 p ttohllp EE 133 convertc 1 EE 133 LPdoc Backend sissies Sees eee eee ha 135 20 Texinfo Backend cms tas 137 20 1 Usage and interface autodoc texinfo sess 137 20 2 Documentation on exports autodoc_texinfo 137 infodir base 2 pred ag derer sisi eke a 137 20 3 Documentation on multifiles autodoc_texinfo 137 autodoc escape string hook 5 pred 137 autodoc rw command hook 4 pred 137 autodoc finish hook 1 pre 138 autodoc gen alternative hook 2 pred 138 21 22 23 24 25 ITIML Backend ostia 139 21 1 Usage and interface autodoc html sss 139 21 2 Documentation on multifil
243. vailable for this predicate The predicate is of type data docst_gdata_query 2 No further documentation available for this predicate docst gdata query 3 No further documentation available for this predicate docst gdata restore 1 No further documentation available for this predicate docst gdata clean 1 No further documentation available for this predicate 119 PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE 120 The Ipdoc Documentation Generator docst_gvar_save 2 No further documentation available for this predicate docst_gvar_restore 2 No further documentation available for this predicate docst_has_index 2 No further documentation available for this predicate all_indices 2 No further documentation available for this predicate get doc 4 No further documentation available for this predicate get doc field 3 No further documentation available for this predicate get doc field dict 3 No further documentation available for this predicate bind dict varnames 1 Usage bind dict varnames Dict PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE PREDICATE Description Binds the variables in Dict to the corresponding names i e the names that appeared in the source during read get mod doc 3 No further documentation available fo
244. version_maintenance_type 1 REGTYPE Possible kinds of version maintenance for a file version_maintenance_type on version_maintenance_type off version_maintenance_type dir Path atm Path e on version numbering is maintained locally in the file in which the declaration occurs i e an independent version number is kept for this file and the current version is given by the most recent doc version declaration e off no version numbering maintained e dir Path version numbering is maintained globally in directory Path This is useful for maintaining a common global version for an application which involves several files The automatic maintenance of version numbers is typically done by the Ciao emacs mode Usage version maintenance type Type Description Type a type of version maintenance for a file 40 The Ipdoc Documentation Generator Chapter 4 The Ciao assertion package 41 4 The Ciao assertion package Author s Manuel Hermenegildo Francisco Bueno German Puebla The assertions package adds a number of new declaration definitions and new operator definitions which allow including program assertions in user programs Such assertions can be used to describe predicates properties modules applications etc These descriptions can contain formal specifications such as sets of preconditions post conditions or descriptions of computations as well as machine readable textual comments This module
245. y note that the above definition provided that it suits the requirements for being a property and that int 1 is a regular type meets the criteria for being a regular type Thus it could be declared regtype intlist 1 But note that independently of the definition of int 1 the definition above is not the correct instantiation check since it would succeed for a call such as intlist X In fact it is not strictly correct as a compatibility property either because while it would fail or succeed as expected it would perform instantiations e g if called with intlist X it would bind X to In practice it is convenient to provide some run time support to aid in this task The run time support of the Ciao system see Chapter 12 Run time checking of assertions page 103 ensures that the execution of properties is performed in such a way that properties written as above can be used directly as instantiation checks Thus writing Chapter 6 Declaring regular types 59 calls sumlist L N intlist L has the desired effect Also the same properties can often be used as compatibility checks by writing them in the assertions as compat Property basic props compat 1 Thus writing success string concat A B C compat intlist A compat intlist B compat intlist C also has the desired effect As a general rule the properties that can be used directly for checking for compatibility should be downwards close
246. y by using the include command For example the following declaration doc module include Intro lpdoc will include the contents of the file Intro 1pdoc as the module description Alternatively sometimes one may want to generate the documentation from a completely different file Assuming that the original module is m1 pl this can be done by calling the module containing the documentation m1 doc pl This m1 doc p1 file is the one that will be included in the 1pdoc SETTINGS p1 file instead of m1 pl lpdoc recognizes and treats such doc files specially so that the name without the doc part is used in the different parts of the documentation in the same way as if the documentation were placed in file m1 2 8 8 Generating auxiliary files e g READMEs E adas significant parts of this are obsolete They must be updated to describe Ipdoc version Using 1pdoc it is often possible to use a common source for documentation text which should appear in several places For example assume a file INSTALLATION 1pdoc contains text with lpdoc formatting commands describing an application This text can be included in a section of the main file documentation as follows doc module section Installation instructions include INSTALLATION 1lpdoc 24 The Ipdoc Documentation Generator At the same time this text can be used to generate a nicely formatted INSTALLATION file in ascii which can perhaps be included in the t
Download Pdf Manuals
Related Search
Related Contents
Product Safety Information MANUAL DE INSTRUÇÕES TÉCNICAS TRIFLEX 1.6.0 E&Ms CapTel North Carolina - Relay North Carolina Télécharger le fichier PDF Harbor Freight Tools 67336 User's Manual Copyright © All rights reserved.
Failed to retrieve file