Skip to content

Chimera

chimera · word · validated

A text keeping one text's frame — its word order, its function words and its punctuation — while every noun, verb and adjective is one of a text supplied for that class: nouns from one, verbs from another, adjectives from a third. A drawn word may be the one it replaced, and the three supplying texts need not differ. The checker reads word classes from a model, so its verdict is an estimate; the generator can refuse a frame it cannot fill.

Provenance

  • Source: Oulipo, Atlas de littérature potentielle (1981)
  • Attribution: reference — attested in a standard reference rather than traced to an origin
  • Checkability: source — decidable against the source text it was made from
  • Attested: author-stated — the originator set this rule down

Details

  • Kind: constructive
  • Languages: en
  • Requires: tokens, pos
  • Deterministic: no
  • In other languages: Chimère (fr)

Notes

Built on the pos capability of ADR 0045, beside homosyntaxism and verbless_prose. The parameter shape it was said to be waiting for is three role-keyed fields — nouns_from, verbs_from, adjectives_from — beside the inherited source, and it needed no change to core/base.py. The premise that it did was wrong: SourceParams means the text this one was made from, which here is the frame — the text emptied of its nouns, verbs and adjectives — and the three donors are not sources in that sense but lexical stock. Role keys rather than an ordered list because position cannot say which donor fills which word class in params_schema(). This row empties a text of its nouns, verbs and adjectives and refills each class from a different source, which is a part-of-speech operation; it was previously filed under lexicon.synonyms, which it never needed. What the checker verifies is that each content word is of the right donor, not that it was taken from it, and the tags come from a model, so the verdict is an estimate. Four rulings the definition does not settle — an empty donor, repetition, capitalisation, and how the frame's own words are compared — are recorded in the module docstring. Three things a caller meets in practice. A donor pool is the tagger's reading of the donor, not its word list: a paragraph of English can yield two usable verbs, and a word that reads as its class in the donor may not read as that class in the position it is drawn into — each candidate carries forced_positions for how many positions had only one word that survives, which is where seed stops mattering. apply may refuse: it searches greedily and a NoCandidateWord is that search failing, not a proof that the frame cannot be filled (docs/audit/chimera.md measures a refusal on a satisfiable case). And nothing requires the three donors to differ from each other or from the frame; where they do not, apply can only hand back the frame, which the spine then refuses as degenerate.

Prompt hint

Empty the text of its nouns, verbs and adjectives and refill each class from a different source.

Parameters

Name Type Default Description
adjectives_from string — The text the adjectives are taken from.
nouns_from string — The text the nouns are taken from.
source string — The text this one was made from.
verbs_from string — The text the verbs are taken from.

Examples

refilled-from-three

en — this text satisfies the procedure.

The small wind watched the letter.

Parameters: source='The quick boy opened the door.', nouns_from='The cold wind carried the letter.', verbs_from='The warm girl watched the river.', adjectives_from='The small child painted the table.'

Source: constructed example; the frame's determiners stand, its adjective comes from adjectives_from, both nouns from nouns_from and the verb from verbs_from

the-frame-must-survive

en — this text does not satisfy the procedure.

A small wind watched the letter.

Parameters: source='The quick boy opened the door.', nouns_from='The cold wind carried the letter.', verbs_from='The warm girl watched the river.', adjectives_from='The small child painted the table.'

Source: constructed counterexample; every content word is drawn correctly and a determiner is not the frame's, which is the half of the definition a donor-membership-only checker would miss

a-noun-from-nowhere

en — this text does not satisfy the procedure.

The small mountain watched the letter.

Parameters: source='The quick boy opened the door.', nouns_from='The cold wind carried the letter.', verbs_from='The warm girl watched the river.', adjectives_from='The small child painted the table.'

Source: constructed counterexample; mountain is a noun and is in none of the three donors

the-wrong-class

en — this text does not satisfy the procedure.

The small watched watched the letter.

Parameters: source='The quick boy opened the door.', nouns_from='The cold wind carried the letter.', verbs_from='The warm girl watched the river.', adjectives_from='The small child painted the table.'

Source: constructed counterexample; the subject position carries a verb, so the frame's word classes are not kept at all

an-empty-donor-is-unsatisfiable-not-an-error

en — this text does not satisfy the procedure.

The small wind watched the letter.

Parameters: source='The quick boy opened the door.', nouns_from='The cold wind carried the letter.', verbs_from='The warm girl watched the river.', adjectives_from='Dogs run and birds fly.'

Source: constructed counterexample for ruling 1 in the module docstring: adjectives_from carries no adjective, so the frame's adjective position cannot be filled from it. check returns a verdict rather than refusing — apply is the half that raises.

two-sentences-refilled

en — this text satisfies the procedure.

The green crates carried a bright market. Coffee carried the green crates and laughed every green market.

Parameters: source='The old lighthouse kept a steady light. Sailors watched the dark water and counted every slow turn.', nouns_from='A grocer weighed the apples. The market held bread, salt and coffee in wooden crates.', verbs_from='She hurried, stumbled and laughed. They carried the ladder, painted the shutters and left.', adjectives_from='The morning was bright and cold. A thin mist hung over the green fields, quiet and wide.'

Source: the row's own apply at seed 0 over the audit's frame and donors (docs/audit/chimera.md), recorded because every other case here is one six-token sentence: this one has a sentence boundary, seventeen positions and an inherited sentence-initial capital (Coffee), which is the only place the fixtures exercise ruling 3 or the per-sentence tagging

two-sentences-and-a-frame-word-lost

en — this text does not satisfy the procedure.

The green crates carried a bright market. Coffee carried a green crates and laughed every green market.

Parameters: source='The old lighthouse kept a steady light. Sailors watched the dark water and counted every slow turn.', nouns_from='A grocer weighed the apples. The market held bread, salt and coffee in wooden crates.', verbs_from='She hurried, stumbled and laughed. They carried the ladder, painted the shutters and left.', adjectives_from='The morning was bright and cold. A thin mist hung over the green fields, quiet and wide.'

Source: the case above with one determiner of the second sentence changed; a checker that compared only the first sentence, or that rebased offsets per sentence, would still call this satisfied