00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <stdio.h>
00012 #include <ctype.h>
00013 #include <pwd.h>
00014
00015 #define PICK1(list) list[random()%(sizeof (list) / sizeof (char *))]
00016 #define isvowel(c) ((c)=='a'||(c)=='e'||(c)=='i'||(c)=='o'||(c)=='u')
00017
00018 #define PRESENT 1
00019 #define PAST 2
00020
00021 char *index(s, c) { return strchr(s, c); }
00022 long random() { return rand(); }
00023 int srandom(int i) { return srand(i); }
00024
00025
00026 char *attributes[] = {
00027 #if 1
00028 "concrete","abstract","procedural","real","ideal",
00029 "functional","prototype","effective","capable","incremental",
00030 "perceived","associated","interdepartmental",
00031 "diverse","characteristic","worst-case",
00032 "qualitative","fully automatic","candidate",
00033 "consensual","consequential","conjectural",
00034 "constructive","initial","cooperative",
00035 "essential","methodological","requisite",
00036 "historical","situational","political",
00037 "prepared","material","defined","well defined",
00038 "organizational","projected","overall",
00039 "accepted","rejected","corresponding",
00040 "committed","environmental","typical","working","timely",
00041 "growing","unprecedented","new","renewed","fresh",
00042 "rapid","changing","careful","comprehensive","broad",
00043 "massive","huge","enormous", "evaluated","discretionary",
00044 "durable","beneficial", "maximal","tremendous","minimal",
00045 "on-site","standardized","standard",
00046 "powerful","natural","necessary", "reasonable","successful",
00047 "doubtful","dubious","certain",
00048 "\1unified","different","similar","\1utilitarian",
00049 "realizable","organizable","motivated",
00050 "topical","valuable","feasible",
00051 "intelligent","deliverable","nontrivial",
00052 "worthwhile","complicated", "organized","organizing","progressing",
00053 "schedulable","resourceful","commanding",
00054 "important","allocatable","temporal",
00055 "ponderable","understandable","comprehensible",
00056 "past","present","future", "obvious","considerable","finished","completed",
00057 "\1unique","abovementioned", "major","minor","tendentious","activating",
00058 "actual","added","adequate","affordable",
00059 "analyzable","additional","intuitive", "artificial","good","better",
00060 "worse","bad","basic","fundamental","brief",
00061 "general","very unique","extreme","most unique",
00062 "central","proximate","approximate","collected",
00063 "conductable","contemplatable", "continuing","demonstrable","desirable",
00064 "correctable","foreseeable", "discontinued","early","beginning",
00065 "effectuated","elucidated","emotional",
00066 "enclosed","enthused","entire","exact", "experimental","final",
00067 "following","informative", "full","complete","indicated","authorized",
00068 "modularized","submodularized", "particular","preferred","satisfactory",
00069 "measurable","referenced","literal",
00070 "modified", "correct","prioritized","prolonged",
00071 "regrettable","apparent", "continued","subsequent","sufficient",
00072 "suggestive","true","ultimate","separate",
00073 "purposeful","regarded","resulting",
00074 "doubtful","evident","interesting","worthy",
00075 "\1uniform", "vital","viable", "worthwhile","alternative",
00076 "sophisticated","employed", "clear","lucid","simple","perspicuous",
00077 "incomplete","concerned"
00078 #else
00079 "abstract",
00080 "abstract",
00081 "abstract",
00082 "abstract",
00083 "acceptable",
00084 "actual",
00085 "algebraic",
00086 "algebraic",
00087 "algebraic",
00088 "alternative",
00089 "analogous",
00090 "antisymmetric",
00091 "applicable",
00092 "applied",
00093 "appropriate",
00094 "arbitrary",
00095 "arbitrary",
00096 "arbitrary",
00097 "arbitrary",
00098 "arbitrary",
00099 "arbitrary",
00100 "arithmetic",
00101 "associated",
00102 "attractive",
00103 "available",
00104 "background",
00105 "binary",
00106 "boolean",
00107 "canonical",
00108 "canonical",
00109 "canonical",
00110 "canonical",
00111 "canonical",
00112 "canonical",
00113 "canonical",
00114 "canonical",
00115 "cartesian",
00116 "categorical",
00117 "central",
00118 "certain",
00119 "clarifying",
00120 "classical",
00121 "clear",
00122 "closed",
00123 "collected",
00124 "combinatory",
00125 "combined",
00126 "complete",
00127 "complex",
00128 "complicated",
00129 "computable",
00130 "computational",
00131 "computed",
00132 "computed",
00133 "computed",
00134 "computed",
00135 "computed",
00136 "computed",
00137 "concatenated",
00138 "conceptual",
00139 "conditional",
00140 "confusing",
00141 "connected",
00142 "considered",
00143 "constructed",
00144 "constructed",
00145 "constructed",
00146 "constructed",
00147 "constructive",
00148 "constructive",
00149 "constructive",
00150 "constructive",
00151 "constructive",
00152 "constructive",
00153 "constructive",
00154 "contained",
00155 "convenient",
00156 "conventional",
00157 "correct",
00158 "corresponding",
00159 "counterintuitive",
00160 "covered",
00161 "curried",
00162 "customary",
00163 "decidable",
00164 "decomposed",
00165 "definable",
00166 "defined",
00167 "defined",
00168 "defined",
00169 "defined",
00170 "defined",
00171 "defining",
00172 "definitional",
00173 "definitional",
00174 "definitional",
00175 "definitional",
00176 "denotational",
00177 "denoted",
00178 "dependent",
00179 "dependent",
00180 "depending",
00181 "derived",
00182 "described",
00183 "desired",
00184 "detailed",
00185 "determined",
00186 "developed",
00187 "different",
00188 "different",
00189 "different",
00190 "different",
00191 "different",
00192 "different",
00193 "difficult",
00194 "directed",
00195 "discharged",
00196 "discussed",
00197 "disjoint",
00198 "disjoint",
00199 "disjoint",
00200 "disjoint",
00201 "divided",
00202 "easy",
00203 "elegant",
00204 "elementary",
00205 "eliminated",
00206 "eliminable",
00207 "empty",
00208 "equal",
00209 "equivalent",
00210 "essential",
00211 "evaluated",
00212 "excluded",
00213 "executed",
00214 "exemplified",
00215 "existential",
00216 "expected",
00217 "explained",
00218 "explicit",
00219 "expressed",
00220 "expressive",
00221 "extended",
00222 "extensional",
00223 "extensional",
00224 "extensional",
00225 "extensional",
00226 "extensional",
00227 "finite",
00228 "formal",
00229 "formalized",
00230 "formulated",
00231 "foundational",
00232 "founded",
00233 "functional",
00234 "fundamental",
00235 "general",
00236 "general",
00237 "general",
00238 "general",
00239 "general",
00240 "generalized",
00241 "heavy",
00242 "hidden",
00243 "hypothetical",
00244 "identical",
00245 "identical",
00246 "identical",
00247 "identical",
00248 "identical",
00249 "identical",
00250 "identical",
00251 "identified",
00252 "immediate",
00253 "important",
00254 "impossible",
00255 "included",
00256 "incorporated",
00257 "independent",
00258 "indeterminate",
00259 "inductive",
00260 "infeasible",
00261 "inferential",
00262 "infinite",
00263 "informal",
00264 "inhabited",
00265 "inherent",
00266 "initial",
00267 "integral",
00268 "intended",
00269 "intensional",
00270 "intensional",
00271 "intensional",
00272 "intensional",
00273 "intensional",
00274 "interpreted",
00275 "introduced",
00276 "intuitionistic",
00277 "intuitionistic",
00278 "intuitionistic",
00279 "intuitionistic",
00280 "intuitive",
00281 "intuitive",
00282 "intuitive",
00283 "intuitive",
00284 "intuitive",
00285 "intuitive",
00286 "intuitive",
00287 "intuitive",
00288 "inverse",
00289 "involved",
00290 "irrelevant",
00291 "justified",
00292 "limited",
00293 "logical",
00294 "major",
00295 "mathematical",
00296 "mechanical",
00297 "metamathematical",
00298 "modified",
00299 "modularizing",
00300 "monomorphic",
00301 "multilevel",
00302 "necessary",
00303 "noncanonical",
00304 "noncanonical",
00305 "noncanonical",
00306 "noncanonical",
00307 "nonconstructive",
00308 "nonempty",
00309 "nonstandard",
00310 "nonstandard",
00311 "nonstandard",
00312 "nonstandard",
00313 "notational",
00314 "observed",
00315 "obtained",
00316 "obvious",
00317 "omitted",
00318 "operational",
00319 "optimizing",
00320 "ordered",
00321 "ordinary",
00322 "original",
00323 "oriented",
00324 "outermost",
00325 "parameterized",
00326 "particular",
00327 "particular",
00328 "particular",
00329 "particular",
00330 "philosophical",
00331 "polymorphic",
00332 "polymorphic",
00333 "polymorphic",
00334 "polymorphic",
00335 "possible",
00336 "practical",
00337 "preceding",
00338 "predefined",
00339 "presented",
00340 "previous",
00341 "primitive",
00342 "principal",
00343 "proposed",
00344 "propositional",
00345 "propositional",
00346 "propositional",
00347 "propositional",
00348 "propositional",
00349 "propositional",
00350 "propositional",
00351 "propositional",
00352 "propositional",
00353 "provable",
00354 "proved",
00355 "provided",
00356 "pure",
00357 "reasonable",
00358 "recursive",
00359 "reduced",
00360 "reflected",
00361 "reflexive",
00362 "reformulated",
00363 "related",
00364 "repeated",
00365 "replaced",
00366 "represented",
00367 "required",
00368 "restricted",
00369 "satisfied",
00370 "saturated",
00371 "schematical",
00372 "selected",
00373 "semantical",
00374 "sentential",
00375 "separated",
00376 "shortest",
00377 "similar",
00378 "simple",
00379 "sketched",
00380 "skipped",
00381 "slight",
00382 "sophisticated",
00383 "special",
00384 "specified",
00385 "standard",
00386 "stated",
00387 "straightforward",
00388 "strange",
00389 "strong",
00390 "structured",
00391 "sufficient",
00392 "suggested",
00393 "suitable",
00394 "suited",
00395 "supposed",
00396 "symmetric",
00397 "syntactical",
00398 "terminal",
00399 "theoretical",
00400 "theoretical",
00401 "theoretical",
00402 "theoretical",
00403 "theoretical",
00404 "theoretical",
00405 "traditional",
00406 "transitive",
00407 "translated",
00408 "trivial",
00409 "typable",
00410 "trivial",
00411 "typable",
00412 "trivial",
00413 "typable",
00414 "trivial",
00415 "typable",
00416 "trivial",
00417 "typable",
00418 "\1unary",
00419 "understood",
00420 "\1uniform",
00421 "uninteresting",
00422 "\1unique",
00423 "\1universal",
00424 "unnatural",
00425 "unsaturated",
00426 "untyped",
00427 "unusual",
00428 "\1usual",
00429 "valid",
00430 "valued",
00431 "wellfounded",
00432 "well defined",
00433 "well defined",
00434 "well defined",
00435 "well defined",
00436 "well defined",
00437 "weak",
00438 "wrong",
00439 #endif
00440 };
00441
00442 char *predicates[] = {
00443 #if 1
00444 "real","ideal","functional","effective","characteristic",
00445 "qualitative","fully automatic","a candidate",
00446 "consensual","consequential","conjectural",
00447 "constructive","initial", "essential",
00448 "prepared","material","defined","well defined",
00449 "projected","accepted","rejected",
00450 "typical","working","timely",
00451 "growing","unprecedented","renewed",
00452 "rapid","changing","comprehensive",
00453 "massive","huge","enormous", "evaluated",
00454 "durable","beneficial", "maximal","tremendous","minimal",
00455 "standardized","standard",
00456 "powerful","natural","necessary", "reasonable","successful",
00457 "doubtful","dubious","certain",
00458 "realizable","organizable","motivated",
00459 "topical","valuable","feasible","nontrivial",
00460 "worthwhile","complicated", "organized","progressing",
00461 "schedulable","important","temporal",
00462 "ponderable","understandable","comprehensible",
00463 "obvious","considerable","finished","completed",
00464 "\1unique","major","minor","tendentious","activating",
00465 "added","adequate","affordable",
00466 "analyzable","counter-intuitive","artificial","good","better",
00467 "worse","bad","basic","fundamental",
00468 "general","very unique","extreme","most unique",
00469 "central","proximate","approximate","collected",
00470 "conductable","contemplatable","demonstrable","desirable",
00471 "correctable","foreseeable", "discontinued","beginning",
00472 "effectuated","exact","experimental","final",
00473 "informative","full","complete","indicated","authorized",
00474 "preferred","satisfactory","measurable",
00475 "modified", "correct","prioritized","prolonged",
00476 "regrettable","apparent","continued","sufficient",
00477 "suggestive","true","purposeful",
00478 "doubtful","evident","interesting",
00479 "vital","viable","worthwhile",
00480 "employed","clear","simple","perspicuous",
00481 "complete","incomplete"
00482 #else
00483 "real","ideal","functional","effective","characteristic",
00484 "fully automatic","a candidate",
00485 "consensual","consequential","conjectural",
00486 "constructive","initial", "essential",
00487 "prepared","material","defined","well defined",
00488 "projected","accepted","rejected",
00489 "typical","working",
00490 "growing",
00491 "rapid","changing","comprehensive",
00492 "maximal","minimal",
00493 "standardized","standard",
00494 "powerful","natural","necessary", "reasonable","successful",
00495 "doubtful","dubious","certain",
00496 "realizable","motivated",
00497 "valuable","feasible","nontrivial",
00498 "worthwhile","complicated", "organized",
00499 "important",
00500 "ponderable","understandable","comprehensible",
00501 "obvious","considerable","finished","completed",
00502 "\1unique","major","minor",
00503 "adequate",
00504 "analyzable","counter-intuitive","artificial","good","better",
00505 "worse","bad","basic","fundamental",
00506 "general",
00507 "central","collected",
00508 "demonstrable","desirable",
00509 "exact","final",
00510 "informative","full","complete",
00511 "preferred","satisfactory",
00512 "modified", "correct",
00513 "apparent","continued","sufficient",
00514 "suggestive","true","purposeful",
00515 "doubtful","evident","interesting",
00516 "worthwhile",
00517 "clear","simple",
00518 "complete","incomplete",
00519 "functional",
00520 "functional",
00521 "intuitive","intuitive","intuitive","intuitive","intuitive",
00522 "true","true","true","true","true","true",
00523 #endif
00524 };
00525
00526 char *nouns[] = {
00527 #if 1
00528 "program","computer science","architecture","set theory",
00529 "type theory","proof","specification",
00530 "final completion","final ending","final outcome",
00531 "adaptation","appearance","argument","circumstance",
00532 "confession","confidence","delimitation","dilution",
00533 "dissertation","distribution","duplication",
00534 "entertainment","equipment","evolution",
00535 "existence","expression","generation","impression",
00536 "integration","interaction","investment","judgment",
00537 "population","provision","solution","statement",
00538 "tradition","transmission",
00539 "final result","added increment","assistance",
00540 "beneficial assistance","mutual cooperation",
00541 "projection","future projection",
00542 "capability","conjecture","consensus of opinion",
00543 "general consensus","absence","deficiency",
00544 "inadequacy","insufficience","insufficiency",
00545 "growing importance","renewed emphasis",
00546 "renewed interest","changing behavior",
00547 "critical thinking","careful thinking",
00548 "comprehensive survey","high standard",
00549 "basic foundation","system testing",
00550 "serious discussion","serious concern",
00551 "organizational framework","prototype model",
00552 "\1uniform nomenclature","greater cooperation",
00553 "\1uniform consistency","early expectation",
00554 "standardization","great similarity",
00555 "shortage","presence","sufficiency",
00556 "consequent result","construct","disutility",
00557 "early beginning","emotional feeling","endeavor",
00558 "authorization","order of magnitude","preference",
00559 "impact","joint cooperation","joint partnership",
00560 "main essential","methodology","modification",
00561 "necessary requisite","past history","situation",
00562 "effectuation","clarification","new doubt",
00563 "policy","encouragement","preparation",
00564 "criterion","material","interest","acceptance",
00565 "rejection","publication","circulation",
00566 "protection","insurance", "assignment","identification",
00567 "submission","request", "guidance","correspondence","inclusion",
00568 "attachment","assumption", "recommendation","prescription","approval",
00569 "discretion","responsibility","relevance",
00570 "issuance","termination","total effect",
00571 "deleterious effect","consolidation",
00572 "aggregation","definiteness","commencement",
00573 "actual experience","experience", "combination","accord","filing",
00574 "idea","abstraction","method","procedure",
00575 "complaint","maintenance","finance","travel",
00576 "purchase","repair","routine", "development","cancellation",
00577 "partitioning","development effort",
00578 "project","automation","multilevel architecture",
00579 "multilevel hierarchy","data stream", "objective",
00580 "individual assignment","mode of operation",
00581 "clear community","attendant interest",
00582 "task division","well defined interfacing",
00583 "team report","meeting time","effective use",
00584 "friction", "major objective","ownership",
00585 "overall project time constraint",
00586 "functional division","requirements analysis", "code development","charter",
00587 "requirements definition","vertical division",
00588 "broad range","strong feeling",
00589 "considerable latitude","overall project constraint",
00590 "sufficient resource","assigned task","expectation",
00591 "critical aspect","clear understanding",
00592 "computing load","clean interfacing","natural basis",
00593 "team activity","team responsibility",
00594 "main function","predominant portion",
00595 "work plan","major breakpoint","work module",
00596 "achievable accuracy","supplementary work",
00597 "field version","internal establishment",
00598 "internal communication","development progress",
00599 "internal meeting","experience level", "high level autonomy","adherence",
00600 "feasibility demonstration","persistent problem",
00601 "internal objective","idea sharing",
00602 "improved performance","unfamiliar methodology",
00603 "new methodology","development experience",
00604 "module specification","good progress", "optimal number","natural division",
00605 "good relationship","cross attendance",
00606 "attendance","necessary communication",
00607 "evolving organization","basic principle",
00608 "complete revision","general information",
00609 "primary objective","load-carrying capacity",
00610 "necessary revision","major change",
00611 "clarified interpretation","subsequent attempt",
00612 "basic objective","full utilization", "practical consideration",
00613 "proportionate quantity","substantial change",
00614 "database design","\1unified framework",
00615 "customer service","strong interest",
00616 "\1unified description","necessary background information",
00617 "provisioning","physical coverage","general observation",
00618 "new technology","validity determination",
00619 "relation","regulation","verification",
00620 "impediment","portal","practice","premise",
00621 "basis","movement","question", "issue","input","output","observation",
00622 "input","output","input","output", "mechanization","function","evaluation",
00623 "result","further consideration","category",
00624 "performance indicator","early warning",
00625 "analysis purpose","measurement","replacement",
00626 "\1utilitarian purpose", "quota","proposed enhancement","enhancement",
00627 "interfacing","team organization","module", "guideline","continuing study",
00628 "required assistance","major advance", "proposal","hierarchy",
00629 "current view","refinement","activity",
00630 "external description","tight schedule pressure",
00631 "internal conflict","internal issue", "reasonable compromise","next phase",
00632 "goal","time constraint","constraint", "outcome","important outcome",
00633 "considerable experience","intelligent choice",
00634 "deliverable documentation","discussion",
00635 "timely delivery","design issue","large quantity",
00636 "general environment","protocol", "transitioning","modeling",
00637 "considerable difficulty","abstract interfacing",
00638 "data structure","consideration","difficulty",
00639 "statistical accuracy", "agenda","technique","reordering",
00640 "reauthorization","current proposal",
00641 "significant change","criteria","validation",
00642 "validity", "terminology","current understanding",
00643 "incorporation","staffing impact", "schedule impact","cost tradeoff",
00644 "system architecture", "adequate capacity","centralization",
00645 "current task","system deployment", "attendant uncertainty","process",
00646 "potential usefulness","proposed method", "basic assumption","anomaly",
00647 "available data","potential improvement",
00648 "registration","exemption","exception", "follow-up","service",
00649 "installation","construction","necessity",
00650 "occasion","instrumentation","disposal", "attractiveness",
00651 "convenience","sponsoring", "signification","meaningfulness",
00652 "significantness","individuality",
00653 "specification","determination","affirmation",
00654 "recruitment","supervision","management",
00655 "oversight","overview","environment",
00656 "effectation","circumvention","location",
00657 "execution","effectiveness","consciousness",
00658 "notation","confirmation","restriction",
00659 "organization","realization","actification",
00660 "activation","reification","beginning","conclusion",
00661 "ending","finishing","teamwork","motivation",
00662 "attitude","good attitude", "progress","milestone","deadline","schedule",
00663 "allocation","resource","command","concern",
00664 "time","time frame","reality", "behaviour","ability","advent","increment",
00665 "opportunity","accomplishment","aggregate",
00666 "analysis","totality","matter", "date","duration","centrality",
00667 "proximity","collection","elimination", "investigation","opinion","debate",
00668 "decision","benefit","difference","discontinuity",
00669 "fabrication","plan","chart","forecast",
00670 "simplicity","simplification","maximization",
00671 "minimization","direction", "agreement",
00672 "amount","quantity","quality","essence",
00673 "description","violation","purpose",
00674 "primary purpose","automatic control","redefinition",
00675 "\1uniform emphasis","study activity","work activity",
00676 "concept stage","concept activity",
00677 "possible potential","summarization","system function",
00678 "rationale","significant enhancement","diverse need",
00679 "diverse organization","comprehensive plan","interim",
00680 "functional overview","system configuration",
00681 "configuration","failure","quantitative result",
00682 "major obstacle","conception", "effectiveness","final evaluation",
00683 "interrelationship","functional requirement",
00684 "system philosophy","verbal interchange",
00685 "perceived inadequacy","primary emphasis",
00686 "intermingling","cooperation","partnership",
00687 "adjustment","application","implementation", "contact","mention","power",
00688 "nature","invention","importance", "ground","reason","permission","size",
00689 "report","documentation","priority", "pursuance","recurrence","resumption",
00690 "presupposition","continuance", "substantiation","success","action","truth",
00691 "past experience","greater acceptability",
00692 "organizational structure","clear distinction", "clear definition",
00693 "significant use","unmet need","centralized organization",
00694 "vague concept","negative impact","detrimental effect",
00695 "modularization","submodularization", "effect","consistency",
00696 "inconsistency","completion","\1utilization", "reference","doubt","evidence",
00697 "viewpoint", "actual fact", "true fact","underlying purpose",
00698 "viable alternative"
00699 #else
00700 "abbreviation",
00701 "abstraction",
00702 "abstraction",
00703 "abstraction",
00704 "abstraction",
00705 "absurdity",
00706 "advantage",
00707 "aim",
00708 "algorithm",
00709 "alphabet",
00710 "altenative",
00711 "analysis",
00712 "application",
00713 "application",
00714 "application",
00715 "application",
00716 "application",
00717 "application",
00718 "approach",
00719 "argument",
00720 "arity",
00721 "arity",
00722 "arity",
00723 "arity",
00724 "arity",
00725 "arity",
00726 "arity",
00727 "arity",
00728 "arity",
00729 "array",
00730 "assumption",
00731 "assumption",
00732 "assumption",
00733 "assumption",
00734 "assumption",
00735 "assumption",
00736 "assumption",
00737 "assumption",
00738 "assumption",
00739 "assumption",
00740 "assumption",
00741 "attempt",
00742 "axiom",
00743 "axiom",
00744 "axiom",
00745 "axiom",
00746 "basis",
00747 "binding",
00748 "branch",
00749 "calculus",
00750 "capture",
00751 "category",
00752 "category",
00753 "category",
00754 "choice",
00755 "coding",
00756 "collection",
00757 "colour",
00758 "combination",
00759 "comment",
00760 "comparison",
00761 "compiler",
00762 "completion",
00763 "complexity",
00764 "component",
00765 "comprehension",
00766 "computation",
00767 "computation",
00768 "computation",
00769 "computer",
00770 "concept",
00771 "concern",
00772 "conclusion",
00773 "conclusion",
00774 "conclusion",
00775 "conclusion",
00776 "conclusion",
00777 "conclusion",
00778 "condition",
00779 "conflict",
00780 "confusion",
00781 "conjunction",
00782 "conjunction",
00783 "connection",
00784 "consequence",
00785 "constant",
00786 "construct",
00787 "construct",
00788 "construct",
00789 "construct",
00790 "construction",
00791 "construction",
00792 "construction",
00793 "construction",
00794 "constructor",
00795 "constructor",
00796 "constructor",
00797 "constructor",
00798 "context",
00799 "context",
00800 "context",
00801 "context",
00802 "context",
00803 "context",
00804 "convention",
00805 "conversion",
00806 "correctness",
00807 "correspondence",
00808 "counterpart",
00809 "crisis",
00810 "datatype",
00811 "debate",
00812 "decision",
00813 "declaration",
00814 "deduction",
00815 "deduction",
00816 "deduction",
00817 "deduction rule",
00818 "deduction rule",
00819 "deduction rule",
00820 "deduction rule",
00821 "definiendum",
00822 "definiens",
00823 "definition",
00824 "definition",
00825 "definition",
00826 "definition",
00827 "definition",
00828 "dependent type",
00829 "dependent type",
00830 "dependent type",
00831 "dependent type",
00832 "dependent type",
00833 "dependent type",
00834 "dependent type",
00835 "dependent type",
00836 "dependent type",
00837 "derivation",
00838 "derivation",
00839 "derivation",
00840 "derivation",
00841 "derivation",
00842 "derivation",
00843 "derivation",
00844 "description",
00845 "detail",
00846 "development",
00847 "difference",
00848 "direction",
00849 "disadvantage",
00850 "discipline",
00851 "disjunction",
00852 "disjunct",
00853 "distinction",
00854 "distribution",
00855 "division",
00856 "domain",
00857 "effect",
00858 "element",
00859 "element",
00860 "element",
00861 "element",
00862 "element",
00863 "elimination",
00864 "elimination rule",
00865 "elimination rule",
00866 "elimination rule",
00867 "enumeration",
00868 "equality",
00869 "equality",
00870 "equality",
00871 "equality",
00872 "equality",
00873 "equality",
00874 "equality",
00875 "equality",
00876 "equality",
00877 "equality",
00878 "equation",
00879 "equivalence",
00880 "error",
00881 "evaluation",
00882 "evaluation",
00883 "evaluation",
00884 "example",
00885 "exception",
00886 "existence",
00887 "explanation",
00888 "explanation",
00889 "explanation",
00890 "expression","expression","expression","expression","expression","expression","expression",
00891 "extension",
00892 "family",
00893 "figure",
00894 "formalism",
00895 "formalization",
00896 "formalization",
00897 "formalization",
00898 "formalization",
00899 "format",
00900 "formation",
00901 "formation",
00902 "formation rule",
00903 "formation rule",
00904 "formation rule",
00905 "form",
00906 "formula",
00907 "formulation",
00908 "foundation",
00909 "foundation",
00910 "foundation",
00911 "foundation",
00912 "framework",
00913 "framework",
00914 "framework",
00915 "function",
00916 "function",
00917 "function",
00918 "function",
00919 "function",
00920 "gap",
00921 "generalization",
00922 "goal",
00923 "grammar",
00924 "graph",
00925 "group",
00926 "hauptsatz",
00927 "hypothesis",
00928 "hypothesis",
00929 "hypothesis",
00930 "idea",
00931 "identification",
00932 "identifier",
00933 "identifier",
00934 "identifier",
00935 "identifier",
00936 "identity",
00937 "identity",
00938 "identity",
00939 "identity",
00940 "identity",
00941 "implementation",
00942 "implication",
00943 "index",
00944 "individual",
00945 "induction",
00946 "induction",
00947 "induction",
00948 "induction",
00949 "induction",
00950 "induction",
00951 "induction",
00952 "induction",
00953 "inequality",
00954 "inference",
00955 "inference",
00956 "inference",
00957 "inference",
00958 "inference",
00959 "inspiration",
00960 "instance",
00961 "integer",
00962 "intention",
00963 "interpretation",
00964 "interpretation",
00965 "interpretation",
00966 "interpretation",
00967 "interpretation",
00968 "introduction",
00969 "introduction",
00970 "introduction",
00971 "introduction rule",
00972 "introduction rule",
00973 "introduction rule",
00974 "introduction rule",
00975 "introduction rule",
00976 "introduction rule",
00977 "introduction rule",
00978 "intuition",
00979 "intuition",
00980 "intuition",
00981 "intuition",
00982 "intuition",
00983 "intuition",
00984 "investigation",
00985 "judgement",
00986 "judgement",
00987 "judgement",
00988 "judgement",
00989 "judgement",
00990 "judgement",
00991 "judgement",
00992 "judgement",
00993 "justification",
00994 "justification",
00995 "justification",
00996 "justification",
00997 "knowledge",
00998 "lambda",
00999 "leaf",
01000 "language",
01001 "lemma",
01002 "length",
01003 "level",
01004 "limit",
01005 "list",
01006 "logic",
01007 "logic",
01008 "logic",
01009 "logic",
01010 "machine",
01011 "mapping",
01012 "member",
01013 "metamathematics",
01014 "metavariable",
01015 "method",
01016 "methodology",
01017 "module",
01018 "motivation",
01019 "motive",
01020 "name",
01021 "negation",
01022 "node",
01023 "normalization",
01024 "normalization",
01025 "normalization",
01026 "notation",
01027 "notion",
01028 "number",
01029 "object",
01030 "object",
01031 "object",
01032 "object",
01033 "numeral",
01034 "occurence",
01035 "operation",
01036 "operator",
01037 "order",
01038 "order",
01039 "order",
01040 "ordering",
01041 "origin",
01042 "output",
01043 "pair",
01044 "parameter",
01045 "parentheses",
01046 "parentheses",
01047 "parser",
01048 "part",
01049 "partition",
01050 "pattern",
01051 "permutation",
01052 "phrase",
01053 "picture",
01054 "place",
01055 "placeholder",
01056 "placeholder",
01057 "position",
01058 "possibility",
01059 "postulate",
01060 "predicate",
01061 "predicate",
01062 "predicate",
01063 "predicate",
01064 "predicate",
01065 "prefix",
01066 "premise",
01067 "premise",
01068 "premise",
01069 "premise",
01070 "prescription",
01071 "presentation",
01072 "principle",
01073 "priority",
01074 "problem",
01075 "procedure",
01076 "product",
01077 "program",
01078 "programmer",
01079 "projection",
01080 "proof",
01081 "proof",
01082 "proof",
01083 "proof",
01084 "proof",
01085 "property",
01086 "proofchecker",
01087 "proposal",
01088 "proposition",
01089 "proposition",
01090 "proposition",
01091 "proposition",
01092 "proposition",
01093 "purpose",
01094 "quantifier",
01095 "range",
01096 "reader",
01097 "reason",
01098 "record",
01099 "recursion",
01100 "reduction",
01101 "reduction",
01102 "reduction",
01103 "relation",
01104 "relationship",
01105 "remedy",
01106 "report",
01107 "representation",
01108 "requirement",
01109 "restriction",
01110 "result",
01111 "risk",
01112 "rule",
01113 "rule",
01114 "rule",
01115 "rule",
01116 "rule",
01117 "rule",
01118 "rule",
01119 "rule",
01120 "schema",
01121 "selection",
01122 "selector",
01123 "semantics",
01124 "semantics",
01125 "semantics",
01126 "semantics",
01127 "semantics",
01128 "sentence",
01129 "sequence",
01130 "set",
01131 "set",
01132 "set",
01133 "set",
01134 "set",
01135 "set",
01136 "set",
01137 "set",
01138 "set",
01139 "set",
01140 "set",
01141 "set",
01142 "set",
01143 "set",
01144 "set",
01145 "set",
01146 "set",
01147 "set",
01148 "set",
01149 "set",
01150 "set",
01151 "shorthand",
01152 "side",
01153 "simplification",
01154 "situation",
01155 "solution",
01156 "source",
01157 "specification",
01158 "specification",
01159 "specification",
01160 "specification",
01161 "specification",
01162 "specification",
01163 "specification",
01164 "specification",
01165 "specification",
01166 "space",
01167 "stack",
01168 "start",
01169 "state",
01170 "step",
01171 "strength",
01172 "strategy",
01173 "structure",
01174 "style",
01175 "subexpression",
01176 "subgoal",
01177 "subject",
01178 "subproblem",
01179 "subset",
01180 "subset",
01181 "subset",
01182 "subset",
01183 "subset",
01184 "subset",
01185 "subspecification",
01186 "substitution",
01187 "substitution",
01188 "substitution",
01189 "substitution",
01190 "subtree",
01191 "successor",
01192 "support",
01193 "symmetry",
01194 "symmetry",
01195 "symmetry",
01196 "syntax",
01197 "system",
01198 "tactic",
01199 "tautology",
01200 "technique",
01201 "term",
01202 "text",
01203 "theorem",
01204 "theorem",
01205 "theorem",
01206 "theory",
01207 "theory",
01208 "theory",
01209 "theory",
01210 "theory",
01211 "thought",
01212 "transition",
01213 "treatment",
01214 "tree",
01215 "trick",
01216 "triple",
01217 "truth",
01218 "tuple",
01219 "type",
01220 "type",
01221 "type",
01222 "type",
01223 "type",
01224 "type",
01225 "type theory",
01226 "type theory",
01227 "type theory",
01228 "type theory",
01229 "type theory",
01230 "type theory",
01231 "type theory",
01232 "type theory",
01233 "type theory",
01234 "type theory",
01235 "type theory",
01236 "typing",
01237 "understanding",
01238 "union",
01239 "universe",
01240 "universe",
01241 "universe",
01242 "validity",
01243 "value",
01244 "value",
01245 "value",
01246 "value",
01247 "value",
01248 "variable",
01249 "variant",
01250 "verification",
01251 "version",
01252 "view",
01253 "way",
01254 "wellordering",
01255 "work",
01256 "zero",
01257 #endif
01258 };
01259
01260 char *adverbs[] = {
01261 #if 1
01262 "very","extremely","generally","reasonably",
01263 "fundamentally","essentially","particularly","very",
01264 "very","very", "very","very", "very","very", "very","very",
01265 "very","very", "very","very", "very","very", "entirely ",
01266 "rather","fairly","relatively","comparatively",
01267 "moderately", "absolutely","functionally",
01268 "accordingly","broadly","actionably","actually", "additionally",
01269 "ambiguously","amply", "analogously", "aperiodically",
01270 "apparently","appreciably", "appropriately","approximately",
01271 "arbitrarily", "associatively", "automatically", "awfully",
01272 "axiomatically", "badly","barely","basically", "beneficially",
01273 "blatantly", "capably","carefully","carelessly",
01274 "casually","causally","cautiously", "centrally","certainly",
01275 "cheaply","cleanly", "closely","coarsely","cognizantly",
01276 "coincidentally","collectively","collaterally",
01277 "comparably", "competently","completely","comprehensibly",
01278 "concededly","conceivably", "concisely","conclusively","concretely",
01279 "concurrently","conjecturally", "currently",
01280 "conscientiously","consequently","consequentially",
01281 "consistently","constantly", "contemporaneously","constructively",
01282 "continually","continuously","contractually", "correctively",
01283 "contrarily","contributatively","conveniently", "conventionally",
01284 "correctly", "crudely", "curiously", "decidedly", "deeply",
01285 "deficiently","demandingly", "dependably","desirably",
01286 "determinately","diagnostically", "differentially","differently",
01287 "directly","discernibly", "distinctly","doubtfully","dramatically",
01288 "dynamically", "economically", "efficaciously","efficiently",
01289 "elegantly", "emphatically","encouragingly", "endlessly","endurably",
01290 "entirely","epistemologically", "functionally","immediately",
01291 "equably","equally","equitably","erroneously",
01292 "esoterically","eternally","evenly","eventfully",
01293 "eventually","evidently", "exceedingly","exactly","excellently",
01294 "exceptionally","excessively","exclusively", "experimentally",
01295 "explicitly","extremely", "factually","faithfully",
01296 "faultlessly","feasibly", "finitely","firmly","forcefully",
01297 "formally","formerly","frankly","freely",
01298 "frugally","fully","generally", "globally","gradually", "harmlessly",
01299 "helpfully", "highly","homogeneously", "hopefully",
01300 "ideally","identically","ideologically",
01301 "idiomatically","idiosyncratically","idly",
01302 "imaginably","immaterially","immensely",
01303 "impartially","imperceptibly","imperfectly","importantly",
01304 "improperly","imprudently","inaccurately","inappropriately",
01305 "accurately", "inclusively","incompletely","incorrectly",
01306 "increasingly","independently",
01307 "indirectly","ineffectively","ineffectually","inefficiently",
01308 "infallibly","instantaneously","instantly",
01309 "insufficiently","internally","likely","only",
01310 "invaluably","inversely","irrelevantly","irrespectively",
01311 "largely","lastly","legitimately","literally",
01312 "locally","loosely","manageably","markedly",
01313 "memorably","mildly","mindfully","moderately",
01314 "momentarily","naturally","needfully","needlessly",
01315 "nominally","normally","objectively","occasionally",
01316 "temporarily", "officially","oppositely","ordinarily","ostensibly",
01317 "partially","permissibly", "personally","pertinently",
01318 "physically","plainly","plainly", "pleasingly","politically",
01319 "potentially","predictively",
01320 "predominantly","prematurely","preparedly","presently",
01321 "previously","primarily", "primely","principally","problematically",
01322 "productively","promptly","proportionately",
01323 "provably","purely","quickly","radically","randomly","recently",
01324 "repeatedly","secondarily","separately",
01325 "\1usually","specifically", "redundantly","regardlessly","reliably",
01326 "remarkably","remotely","respectively", "probably",
01327 "robustly","seemingly", "sensibly","singularly","steadily",
01328 "strikingly","substantially","successfully",
01329 "supposedly","systematically","understandably", "necessarily",
01330 "unfortunately", "unnecessarily","unmistakably","\1usefully","weakly",
01331 "totally","very","quite"
01332 #else
01333 "very","extremely","generally","reasonably",
01334 "fundamentally","essentially","particularly","very",
01335 "very","very", "very","very", "very","very", "entirely",
01336 "rather","fairly","relatively","comparatively",
01337 "moderately", "absolutely","functionally",
01338 "ambiguously", "analogously",
01339 "apparently","appreciably", "appropriately","approximately",
01340 "arbitrarily", "associatively", "automatically",
01341 "axiomatically", "badly","barely","basically",
01342 "capably","carefully",
01343 "casually","causally","cautiously", "centrally","certainly",
01344 "cleanly", "closely","coarsely",
01345 "coincidentally","collectively",
01346 "comparably", "competently","completely","comprehensibly",
01347 "concededly","conceivably", "concisely","conclusively","concretely",
01348 "concurrently","conjecturally", "currently",
01349 "conscientiously","consequently","consequentially",
01350 "consistently","constantly", "constructively",
01351 "continually","continuously", "correctively",
01352 "contrarily","contributatively","conveniently", "conventionally",
01353 "correctly", "crudely", "curiously", "decidedly", "deeply",
01354 "deficiently","demandingly", "dependably","desirably",
01355 "determinately", "differentially","differently",
01356 "directly","discernibly", "distinctly","doubtfully","dramatically",
01357 "dynamically", "efficiently",
01358 "elegantly", "endlessly","endurably",
01359 "entirely","epistemologically", "functionally","immediately",
01360 "equably","equally","erroneously",
01361 "eventually","evidently", "exceedingly","exactly","excellently",
01362 "exceptionally","excessively","exclusively", "experimentally",
01363 "explicitly","extremely", "factually","faithfully",
01364 "faultlessly","feasibly", "finitely","firmly","forcefully",
01365 "formally","formerly","frankly","freely",
01366 "ideally","identically","ideologically",
01367 "idiomatically","idiosyncratically","idly",
01368 "imaginably","immaterially","immensely",
01369 "impartially","imperfectly","importantly",
01370 "improperly","inaccurately","inappropriately",
01371 "accurately", "inclusively","incompletely","incorrectly",
01372 "increasingly","independently",
01373 "indirectly","ineffectively","ineffectually","inefficiently",
01374 "infallibly","instantaneously","instantly",
01375 "insufficiently","internally","likely","only",
01376 "invaluably","inversely","irrelevantly","irrespectively",
01377 "largely","lastly","legitimately","literally",
01378 "locally","loosely","manageably","markedly",
01379 "memorably","mildly","mindfully","moderately",
01380 "momentarily","naturally","needlessly",
01381 "nominally","normally","objectively","occasionally",
01382 "temporarily","oppositely","ordinarily",
01383 "partially","permissibly",
01384 "potentially","predictively",
01385 "predominantly","prematurely","preparedly","presently",
01386 "previously","primarily", "primely","principally","problematically",
01387 "productively","promptly","proportionately",
01388 "provably","purely","quickly","radically","randomly","recently",
01389 "repeatedly","secondarily","separately",
01390 "\1usually","specifically", "redundantly","regardlessly","reliably",
01391 "remarkably","remotely","respectively", "probably",
01392 "robustly","seemingly", "sensibly","singularly","steadily",
01393 "strikingly","substantially","successfully",
01394 "supposedly","systematically","understandably", "necessarily",
01395 "unfortunately", "unnecessarily","unmistakably","\1usefully","weakly",
01396 "totally","very","quite",
01397 "arbitrarily",
01398 "arbitrarily",
01399 "arbitrarily",
01400 "arbitrarily",
01401 "automatically",
01402 "briefly",
01403 "certainly",
01404 "classically",
01405 "clearly",
01406 "closely",
01407 "completely",
01408 "computationally",
01409 "computationally",
01410 "computationally",
01411 "consequently",
01412 "constructively","constructively","constructively","correspondingly",
01413 "definitionally",
01414 "definitionally",
01415 "definitionally",
01416 "differently",
01417 "directly",
01418 "easily",
01419 "equally",
01420 "equivalently",
01421 "equivalently",
01422 "equivalently",
01423 "especially",
01424 "essentially",
01425 "exactly",
01426 "explicitly",
01427 "extensionally",
01428 "extensionally",
01429 "extensionally",
01430 "extensionally",
01431 "extensively",
01432 "finally",
01433 "finitely",
01434 "formally",
01435 "formally",
01436 "formally",
01437 "formally",
01438 "formally",
01439 "fully",
01440 "hardly",
01441 "hopefully",
01442 "immediately",
01443 "increasingly",
01444 "independently",
01445 "inductively",
01446 "inductively",
01447 "inductively",
01448 "inductively",
01449 "inductively",
01450 "infinitely",
01451 "informally",
01452 "intensionally",
01453 "intensionally",
01454 "intensionally",
01455 "intensionally",
01456 "intuitionistically",
01457 "intuitionistically",
01458 "intuitionistically",
01459 "intuitively",
01460 "intuitively",
01461 "intuitively",
01462 "intuitively",
01463 "irrespectively",
01464 "mainly",
01465 "mechanically",
01466 "mutally",
01467 "mutually",
01468 "namely",
01469 "neatly",
01470 "normally",
01471 "operationally",
01472 "originally",
01473 "perfectly",
01474 "possibly",
01475 "precisely",
01476 "previously",
01477 "probably",
01478 "properly",
01479 "provably",
01480 "purely",
01481 "schematically",
01482 "semantically",
01483 "similarly",
01484 "simultaneously",
01485 "slightly",
01486 "specifically",
01487 "succesively",
01488 "syntactically",
01489 "trivially",
01490 "unfortunately",
01491 "usually",
01492 #endif
01493 };
01494
01495 char *hedge[] = {
01496 "it is easy to see that", "it is a basic fact that", "trivially,",
01497 "it can be shown that", "it is obvious that","it is not unimportant that",
01498 "it is easy to overlook the fact that",
01499 "it is within the realm of possibility that", "it is apparent that",
01500 "this is indicative of the fact that",
01501 "this is in substantial agreement with the fact that",
01502 "this demonstrates the fact that",
01503 "this leaves out of consideration the fact that",
01504 "it is of the utmost importance that", "the truth is that",
01505 "the fact is that", "it turns out that","it will turn out to be true that",
01506 "it should be noted that", "it stands to reason that",
01507 "it would not be unreasonable to assume that",
01508 "it is interesting to note that",
01509 "it is intuitively clear that",
01510 "it is intuitively clear that",
01511 "the reason for this is that",
01512 "it seems natural that",
01513 };
01514
01515 char *clause[] = {
01516 "although","even though","despite the fact that",
01517 "because","due to the fact that","since",
01518 "if","any time that","in the case that",
01519 "as a consequence of the fact that",
01520 "as regards the fact that", "as a desirable benefit of the fact that",
01521 "with reference to the fact that", "as long as",
01522 "as an important essential of the fact that",
01523 "in conjunction with the fact that", "in the light of the fact that",
01524 "if","if","if","if", "leaving out of consideration the fact that",
01525 "just as", "inasmuch as","until such time as",
01526 "as soon as","being as","in the same way as",
01527 "with the exception of the fact that", "notwithstanding the fact that",
01528 "on the grounds that", "on the basis of the fact that",
01529 "persuant to the fact that", "although it seems apparent that",
01530 "with regard to the fact that", "as can be seen from the fact that",
01531 "as", "although","even though","despite the fact that",
01532 "for the simple reason that", "because","due to the fact that","since",
01533 "whether or not", "inasmuch as", "as"
01534 };
01535
01536 char *prep[] = {
01537 "across","by","in","of","near","under","over",
01538 "below","behind","of","of","of","of",
01539 "centered around",
01540 "in close proximity to","following after",
01541 "in conflict with","in conjunction with",
01542 "in the area of","in the neighborhood of","in the proximity of",
01543 "for the purpose of",
01544 "giving rise to","based upon","being caused by", "of","of","of","of",
01545 "being used with",
01546 "being collected together with","being combined together with",
01547 "connected up to","exhibiting a tendency towards",
01548 "being employed with",
01549 "impacting upon",
01550 "being joined together with","being merged together with",
01551 "in the vicinity of", "to","at","by","from","with","for",
01552 "based upon","based upon","based upon",
01553 };
01554
01555 char *pred_prep[] = {
01556 "in","near","above","below","beyond",
01557 "centered around","centered about",
01558 "in close proximity to","following after",
01559 "in conflict with","in conjunction with",
01560 "in the area of","in the neighborhood of","in the proximity of",
01561 "in the field of",
01562 "giving rise to","based upon","being caused by",
01563 "being effectuated by",
01564 "connected up to","exhibiting a tendency towards",
01565 "being facilitated by",
01566 "impacting","impacting upon",
01567 "being joined together with","being merged together with",
01568 "in the vicinity of","at"
01569 };
01570
01571 int Lpos, Tense, Intitle, Inclause, Inpred;
01572
01573 main(argc, argv)
01574 char **argv;
01575 {
01576 char buf[BUFSIZ];
01577 register char *maxbuf = buf + BUFSIZ;
01578 register nsentences, n, para;
01579
01580 if(argc < 2)
01581 printf("Usage: %s number_of_sentences\n", argv[0]), exit(1);
01582 nsentences = atoi(argv[1]);
01583 srandom (getpid());
01584
01585 if (nsentences > 2) {
01586 *buf = 0;
01587 title (buf);
01588 output (buf);
01589 if (Lpos > 0)
01590 putchar('\n');
01591 putchar('\n');
01592 Lpos = 0;
01593 *buf = 0;
01594 author(buf);
01595 output (buf);
01596 if (Lpos > 0)
01597 putchar('\n');
01598 putchar('\n');
01599 }
01600 for (Lpos = para = n = 0; n < nsentences; n++) {
01601 *buf = 0;
01602 Tense = NULL;
01603 sentence (buf);
01604 if (!(random() % 2)) {
01605 strcat (buf, !(random() % 2)? ", and ": ", but ");
01606 sentence (buf);
01607 }
01608 output (buf);
01609 if (++para > 2 && nsentences - n > 2 && !(random() % 2)) {
01610 if (Lpos > 0)
01611 putchar('\n');
01612 putchar('\n');
01613 Lpos = para = 0;
01614 }
01615 }
01616 if (Lpos > 0)
01617 putchar('\n');
01618 }
01619
01620 title (char *buf)
01621 {
01622 Intitle = 1;
01623 strcat (buf, "The ");
01624 strcat (buf, PICK1(nouns));
01625 strcat (buf, ".");
01626 output (buf);
01627 *buf = 0;
01628 attribute (buf);
01629 strcat (buf, " ");
01630 strcat (buf, PICK1(nouns));
01631 strcat (buf, " ");
01632 strcat (buf, PICK1(prep));
01633 strcat (buf, " ");
01634 nounphr (buf);
01635 Intitle = 0;
01636 }
01637
01638 author(char *buf)
01639 {
01640 struct passwd *pw, *getpwuid();
01641 register char *gp, *ep, *ap, *np;
01642 extern char *index();
01643
01644 pw = getpwuid(getuid());
01645 if (*(gp = pw->pw_gecos)) {
01646 if (ep = index(gp, ','))
01647 *ep = 0;
01648 if (ap = index(gp, '&'))
01649 *ap++ = 0;
01650 strcat(buf, "By ");
01651 if (islower(*gp))
01652 *gp = toupper(*gp);
01653 strcat(buf, gp);
01654 if (ap) {
01655 if(*(np = pw->pw_name)) {
01656 if (islower(*np))
01657 *np = toupper(*np);
01658 strcat(buf, np);
01659 }
01660 strcat(buf, ap);
01661 }
01662 }
01663 }
01664
01665 sentence (char *buf)
01666 {
01667 if (random() % 3)
01668 put_clause (buf);
01669 nounphr (buf);
01670 strcat (buf, " ");
01671 be (buf);
01672 predicate (buf);
01673 }
01674
01675 nounphr (char *buf)
01676 {
01677 register char *noun;
01678
01679 noun = PICK1(nouns);
01680 if (index(noun, ' ') || Intitle || !(random() % 4))
01681 strcat (buf, !(random() % 2)? "the ":
01682 (isvowel(*noun))? "an ": "a ");
01683 else {
01684 attribute (buf);
01685 strcat (buf, " ");
01686 }
01687 strcat (buf, noun);
01688 if (!Intitle && !Inpred && !(random() % 3)) {
01689 strcat (buf, " ");
01690 strcat (buf, PICK1(prep));
01691 strcat (buf, " ");
01692 nounphr (buf);
01693 }
01694 }
01695
01696 attribute (char *buf)
01697 {
01698 register char *nextw, *attr, *adv = NULL;
01699
01700 nextw = attr = PICK1(attributes);
01701 if (index(attr, ' ') == NULL && !(random() % 3))
01702 nextw = adv = PICK1(adverbs);
01703 strcat (buf, !Intitle && !(random() % 2)? "the ":
01704 (isvowel(*nextw))? "an ": "a ");
01705 if (adv) {
01706 strcat (buf, adv);
01707 strcat (buf, " ");
01708 }
01709 strcat (buf, attr);
01710 }
01711
01712 be (char *buf)
01713 {
01714 register char *verb;
01715
01716 verb = Tense == PRESENT? "is ":
01717 Tense == PAST? "was ":
01718 random() % 3? "is " :
01719 "was ";
01720 Tense = *verb == 'i'? PRESENT: PAST;
01721 strcat (buf, verb);
01722 if (!(random() % 3))
01723 strcat (buf, "not ");
01724 }
01725
01726 predicate (char *buf)
01727 {
01728 register char *pred;
01729
01730 Inpred = 1;
01731 if (random() % 3) {
01732 if (!(random() % 10))
01733 strcat (buf, "known to be ");
01734 pred = PICK1(predicates);
01735 if (index(pred, ' ') == NULL && !(random() % 2)) {
01736 strcat (buf, PICK1(adverbs));
01737 strcat (buf, " ");
01738 }
01739 strcat (buf, pred);
01740 }
01741 else {
01742 strcat (buf, PICK1(pred_prep));
01743 strcat (buf, " ");
01744 nounphr (buf);
01745 }
01746 Inpred = 0;
01747 }
01748
01749 put_clause (char *buf)
01750 {
01751 if (!Inclause) {
01752 Inclause = 1;
01753 if (random() % 3) {
01754 strcat (buf, PICK1(hedge));
01755 strcat (buf, " ");
01756 Tense = PRESENT;
01757 }
01758 else {
01759 strcat (buf, PICK1(clause));
01760 strcat (buf, " ");
01761 sentence (buf);
01762 strcat (buf, ", ");
01763 }
01764 Inclause = 0;
01765 }
01766 }
01767
01768 output( char *bufbuf)
01769 {
01770 register char *sp, *p;
01771
01772 if (*buf == '\1')
01773 buf++;
01774 if (islower(*buf))
01775 *buf = toupper (*buf);
01776 if (!Intitle)
01777 strcat (buf, ".");
01778 for (sp = buf; *sp; sp++) {
01779 if (*sp == '\1')
01780 continue;
01781 if (sp == buf || *sp == ' ') {
01782 for (p = sp + 1; *p && *p != ' '; p++);
01783 if (Lpos + (p - sp) + (sp == buf? 2: 0) >= 72) {
01784 putchar('\n');
01785 Lpos = 0;
01786 if (*sp == ' ')
01787 continue;
01788 }
01789 else if (sp == buf && Lpos > 0) {
01790 putchar(' ');
01791 if (!Intitle)
01792 putchar(' ');
01793 }
01794 }
01795 putchar(*sp);
01796 Lpos++;
01797 }
01798 }