W3C

Errata for CSS level 2 revision 1,
CR version of 19 July 2007

These are the errata for CSS level 2 revision 1, CR version of 19 July 2007. These corrections have the status of a draft.

Section 1.4.2.1 Value

[2009-04-15] The notation “&&” may be used in syntax definitions in future CSS specifications.

Section 2.3 The CSS 2.1 processing model

[2008-08-19] The first part of the section is not normative.

Section 3.1 Definitions

[2007-11-14] Append For raster images without reliable resolution information, a size of 1 px unit per image source pixel must be assumed. to the definition of intrinsic dimensions.

Section 4.1.1 Tokenization

[2007-09-27] Remove DELIM? from the grammar rule

declaration : DELIM? property S* ':' S* value;

The DELIM was allowed there so that unofficial properties could start with a dash (-), but the dash was already allowed because of the definition of IDENT.

[2009-02-02] Change U to u in token UNICODE-RANGE. (It means the same, but seems to avoid confusion.)

[2009-02-02] Clarify where comments are allowed:

COMMENT tokens do not occur in the grammar (to keep it readable), but any number of these tokens may appear anywhere between outside other tokens. (Note, however, that a comment before or within the @charset rule disables the @charset.)

Section 4.1.2.2 Informative Historical Notes

[2008-12-09] Other known vendor prefixes are: -xv-, -ah-, prince-, -webkit-, and -khtml-.

Section 4.1.3 Characters and case

[2007-11-14] In the second bullet, change [a-z0-9] to [a-zA-Z0-9]; in the third bullet, change [0-9a-f] to [0-9a-fA-F].

Although the preceding bullet already says that CSS is case-insensitive, the explicit mention of upper and lower case letters helps avoid mistakes.

Section 4.1.3 Characters and case

[2008-03-05] CSS is now case-sensitive, except for certain parts:

All CSS syntax is case-insensitive within the ASCII range (i.e. [a-z] and [A-Z] are equivalent), except for parts that are not under the control of CSS.

Section 4.1.3 Characters and case

[2008-12-02] The pair “*/” ends a comment, even if preceded by a backslash. Change this sentence in the third bullet:

Except within CSS comments, any character (except a hexadecimal digit) can be escaped with a backslash to remove its special meaning.

Section 4.1.3 Characters and case

[2009-04-15] Text added to match the grammar:

[…] any character (except a hexadecimal digit , linefeed, carriage return or form feed) can be escaped […]

Section 4.1.5 At-rules

[2009-04-15] Clarified that unknown statements are ignored when looking for @import:

CSS 2.1 user agents must ignore any '@import' rule that occurs inside a block or after any valid non-ignored statement other than an @charset or an @import rule.

Section 4.1.7 Rule sets, declaration blocks, and selectors

[2008-11-26] More precise statement of what is ignored:

When a user agent can't parse the selector (i.e., it is not valid CSS 2.1), it must ignore the selector and the following declaration block (if any) as well.

Section 4.2 Rules for handling parsing errors

[2009-04-15] Added error recovery rule for unexpected tokens at the top level:

Malformed statements. User agents must handle unexpected tokens encountered while parsing a statement by reading until the end of the statement, while observing the rules for matching pairs of (), [], {}, "", and '', and correctly handling escapes. For example, a malformed statement may contain an unexpected closing brace or at-keyword. E.g., the following lines are all ignored:

p @here {color: red}     /* ruleset with unexpected at-keyword "@here" */
@foo @bar;               /* at-rule with unexpected at-keyword "@bar" */
}} {{ - }}               /* ruleset with unexpected right brace */
) [ {} ] p {color: red } /* ruleset with unexpected right parenthesis */

Section 4.2 Rules for handling parsing errors

[2008-11-26] Change “or block” as follows:

User agents must ignore an invalid at-keyword together with everything following it, up to and including the next semicolon (;), or block ({...}) the next block ({...}), or the end of the block (}) that contains the invalid at-keyword, whichever comes first.

Section 4.3.2 Lengths

[2008-08-19] Add recommendation about size of px:

[…] the user agent should rescale pixel values. It is recommended that the pixel unit refer to the whole number of device pixels that best approximates the reference pixel.

Section 4.3.5 Counters

[2008-03-05] Insert case-sensitive in Counters are denoted by case-sensitive identifiers.

Section 5.8.1 Matching attributes and attribute values

[2008-04-07] Clarified ~= and |= by using the definitions from the Selectors module.

[2008-11-03] Clarified that [foo~=""] (i.e., with an empty value) will not match anything.

Section 5.8.2 Default attribute values in DTDs

[2007-11-14] Replace tag selector by type selector.

Section 5.11.4 The language pseudo-class: :lang

[2009-04-15] The language code is case-insensitive.

Section 5.12.3 The :before and :after pseudo-elements

[2008-11-03] Clarified text:

When the :first-letter and :first-line pseudo-elements are combined with applied to an element having content generated using :before and :after, they apply to the first letter or line of the element including the inserted text generated content.

Section 6.3 The @import rule

[2008-08-19] Add “In CSS 2.1” and “See the section on parsing for when user agents must ignore @import rules” to

In CSS 2.1, any @import rules must precede all other rules (except the @charset rule, if present). See the section on parsing for when user agents must ignore @import rules.

Section 6.3 The @import rule

[2008-11-26] Define what it means to import a style sheet twice and how the media list is matched. Add at the end:

In the absence of any media types, the import is unconditional. Specifying 'all' for the medium has the same effect. The import only takes effect if the target medium matches the media list.

A target medium matches a media list if one of the items in the media list is the target medium or 'all'.

Note that Media Queries [MEDIAQ] extends the syntax of media lists and the definition of matching.

When the same style sheet is imported or linked to a document in multiple places, user agents must process (or act as though they do) each link as though the link were to a separate style sheet.

Section 6.4.1 Cascading order

[2007-11-22] Spelling error: precendence.

Section 6.4.1 Cascading order

[2008-11-26] Define the meaning of a media list:

Find all declarations that apply to the element and property in question, for the target media type. Declarations apply if the associated selector matches the element in question and the target medium matches the media list on all @media rules containing the declaration and on all links on the path through which the style sheet was reached.

Section 7.2.1 The @media rule

[2008-12-02] The rules for parsing unknown statements inside @media blocks were ambiguous. Change the first sentence as follows:

An @media rule specifies the target media types (separated by commas) of a set of rules statements (delimited by curly braces). Invalid statements must be ignored per 4.1.7 "Rule sets, declaration blocks, and selectors" and 4.2 "Rules for handling parsing errors."

Also make it explicit that CSS level 2 (unlike higher levels) has no nested @-rules. Add at the end of the section: “At-rules inside @media are invalid in CSS 2.1.

Section 8.3.1 Collapsing margins

[2008-08-18] In bullet 6, sub-bullet 2, the position of the top border edge is determined by assuming the element has a non-zero bottom (not: top) border.

Section 8.3.1 Collapsing margins

[2009-02-02] Rephrased the rule for adjoining margins so that the 'min-height' and 'max-height' of an element have no influence over whether the element's bottom margin is adjoining to its last child's bottom margin.

Section 8.3.1 Collapsing margins

[2008-12-02] Not only elements with 'overflow' other than 'visible', but all block formatting contexts avoid collapsing their margins with their children. Change the third bullet as follows:

Section 9.2.2 Inline-level elements and inline boxes

[2008-12-02] Added missing 'inline-block' in: “Several values of the 'display' property make an element inline: 'inline', 'inline-table', 'inline-block' and 'run-in' (part of the time; see run-in boxes).”

Section 9.2.4 The 'display' property

[2008-04-07] Clarified that 'display: none' also applies to non-visual media.

Section 9.3.2 Box offsets: 'top', 'right', 'bottom', 'left'

[2008-08-19] Remove true but confusing note (occurs 4×):

Note: For absolutely positioned elements whose containing block is based on a block-level element, this property is an offset from the padding edge of that element.

Section 9.5 Floats

[2008-08-19] Positioned descendants of a float are in the stacking context of the float's parent. Add “positioned elements and” to

[…] except that any positioned elements and elements that actually create new stacking contexts take part in the float's parent's stacking context.

Same change in Section 9.9 Layered presentation:

[…] except that any positioned elements and any elements that actually create new stacking contexts take part in the parent stacking context.”

Section 9.5 Floats

[2008-12-02] Remove “'s” that may be misinterpreted: “the float's parent's stacking context.”

Section 9.5.2 Controlling flow next to floats: the 'clear' property

[2009-02-02] Add an example of negative clearance after the first note.

Section 9.6.1 Fixed positioning

[2008-11-03] Added:

Boxes with fixed position that are larger than the page box are clipped. Parts of the fixed position box that are not visible in the initial containing block will not print.

Section 9.9.1 Specifying the stack level: the 'z-index' property

[2008-12-02] The list of stacking levels is ambiguous: relatively positioned elements could fall under items 3/4/5 or under item 6. Meant is item 6, so exclude them from 3/4/5 as follows:

  1. the background and borders of the element forming the stacking context.
  2. the stacking contexts of descendants with negative stack levels.
  3. a stacking level containing in-flow non-inline-level non-positioned descendants.
  4. a stacking level for non-positioned floats and their contents.
  5. a stacking level for in-flow inline-level non-positioned descendants.
  6. a stacking level for positioned descendants with 'z-index: auto', and any descendant stacking contexts with 'z-index: 0'.
  7. the stacking contexts of descendants with positive stack levels.

Section 10.1 Definition of "containing block"

[2009-02-02] Rephrase first bullet point to make easier to read:

The containing block in which the root element lives is a rectangle with the dimensions of the viewport, anchored at the canvas origin for continuous media, and the page area for paged media. This containing block is called the initial containing block.

The containing block in which the root element lives is a rectangle called the initial containing block. For continuous media, it has the dimensions of the viewport and is anchored at the canvas origin; it is the page area for paged media.

Section 10.3 Calculating widths and margins

[2009-04-15] The values of 'left' and 'right' are only determined by section 9.4.3 in the case of relatively positioned elements:

For Points 1-6 and 9-10, the values of 'left' and 'right' used for layout in the case of relatively positioned elements are determined by the rules in section 9.4.3.

Section 10.3.1 Inline, non-replaced elements

[2009-04-15] The only case in which 'left' or 'right' can be 'auto' is when the element is statically positioned. In that case 'left' and 'right are ignored and there is thus no need to determine a used value:

A computed value of 'auto' for 'left', 'right', 'margin-left' or 'margin-right' becomes a used value of '0'.

Section 10.3.2 Inline, replaced elements

[2007-11-14] Add the following paragraph:

Otherwise, if 'width' has a computed value of 'auto', and the element has an intrinsic width, then that intrinsic width is the used value of 'width'.

just before the paragraph beginning Otherwise, if 'width' has a computed value of 'auto', but none of the conditions above are met, […].

Section 10.3.2 Inline, replaced elements

[2008-03-05] Change the last paragraph as follows:

If it does, then a percentage intrinsic width on that element can't be resolved and the element is assumed to have no intrinsic width then the resulting layout is undefined in CSS2.1.

Section 10.3.3 Block-level, non-replaced elements in normal flow

[2008-03-05] Scrollbar widths are no longer included in the containing block width. Remove scrollbar width from:

'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' + scrollbar width (if any) = width of containing block

and from:

If 'width' is not 'auto' and 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + scrollbar width (if any) [...]

and remove the paragraph:

The "scrollbar width" value is only relevant if the user agent uses a scrollbar as its scrolling mechanism. See the definition of the 'overflow' property.

Section 10.3.7 Absolutely positioned, non-replaced elements

[2008-03-05] Scrollbar widths are no longer included in the containing block width. Remove scrollbar width from:

'left' + 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' + 'right' + scrollbar width (if any) = width of containing block

and remove the paragraph:

The "scrollbar width" value is only relevant if the user agent uses a scrollbar as its scrolling mechanism. See the definition of the 'overflow' property.

Section 10.3.7 Absolutely positioned, non-replaced elements

[2008-03-05] Add the following definition.

[2008-08-19] Add the following note to that definition.

The static-position containing block is the containing block of a hypothetical box that would have been the first box of the element if its specified 'position' property had been 'static' and its 'float' had been 'none'. (Note that due to the rules in section 9.7 this hypothetical calculation might require also assuming a different computed value for 'display'.)

And change which 'direction' property is used as follows (two occurrences):

[...] if the 'direction' property of the element establishing the static-position containing block is [...]

Section 10.3.8 Absolutely positioned, replaced elements

[2008-03-05] Change bullet 2 as follows:

[...] if the 'direction' property of the element establishing the static-position containing block is [...]

Section 10.3.8 Absolutely positioned, replaced elements

[2008-03-05] Clarification. Replace

This situation is similar to the previous one, except that the element has an intrinsic width. The sequence of substitutions is now:

by

In this case, section 10.3.7 applies up through and including the constraint equation, but the rest of section 10.3.7 is replaced by the following rules:

Section 10.3.8 Absolutely positioned, replaced elements

[2008-04-07] Clarified that margins are not calculated as for inline elements.

Section 10.5 Content height: the 'height' property

Under “<percentage>,” add the same note as under “<percentage>,” in section 10.2 (“Content width: the 'width' property”).

Section 10.6.2 Inline replaced elements […]

[2007-11-14] Add the following paragraph:

Otherwise, if 'height' has a computed value of 'auto', and the element has an intrinsic height, then that intrinsic height is the used value of 'height'.

just before the paragraph beginning Otherwise, if 'height' has a computed value of 'auto', but none of the conditions above are met […].

Section 10.6.4 Absolutely positioned, non-replaced elements

[2008-11-26] The static position is determined considering neither float nor clear. Add this:

[…] and its specified 'float' had been 'none' and 'clear' had been 'none'.

Section 10.6.5 Absolutely positioned, replaced elements

[2008-04-07] Clarified that margins are not calculated as for inline elements.

Section 10.8.1 Leading and half-leading

[2007-11-14] In the Note under 'vertical-align', remove slightly from Values of this property have slightly different meanings in the context of tables.

Section 11.1.1 Overflow: the 'overflow' property

[2008-03-05] Scrollbar widths are no longer included in the containing block width. Replace

The space taken up by the scrollbars affects the computation of the dimensions in the rendering model.

by

Any space taken up by the scrollbars should be taken out of (subtracted from the dimensions of) the containing block formed by the element with the scrollbars.

[2008-11-03] 'Overflow' on BODY is special not only in HTML but also in XHTML. Change the sentence “HTML UAs must instead apply the 'overflow' property from the BODY element to the viewport, if the value on the HTML element is 'visible'.” to:

When the root element is an HTML "HTML" element or an XHTML "html" element, and that element has an HTML "BODY" element or an XHTML "body" element as a child, user agents must instead apply the 'overflow' property from the first such child element to the viewport, if the value on the root element is 'visible'.

Section 11.1.2 Clipping: the 'clip' property

[2008-03-05] Insert (but not a combination) in User agents must support separation with commas, but may also support separation without commas (but not a combination).

Section 12.2 The 'content' property

[2009-04-15] (And also in section 12.4:) certain keywords, in particular 'none', 'inherit' and 'initial' (the latter being reserved for future use) cannot be used as names for counters.

Section 12.4.2 Counter styles

[2008-03-05] Error in example. Replace hebrew by lower-greek:

BLOCKQUOTE:after { content: " [" counter(bq, hebrew lower-greek) "]" }

Section 12.5 Lists

[2008-12-01] Change “in” to “with respect to” in

The list properties describe basic visual formatting of lists: they allow style sheets to specify the marker type (image, glyph, or number), and the marker position in with respect to the principal box (outside it or within it before content).

because the marker is, as the rest of the sentence itself makes clear, not necessarily in the principal box.

Section 12.5.1 Lists: the 'list-style-type', 'list-style-image', 'list-style-position', and 'list-style' properties

[2008-04-07] The size of list style markers without an intrinsic size is now defined.

Section 12.5.1 Lists: the 'list-style-type', 'list-style-image', 'list-style-position', and 'list-style' properties

[2008-12-01] CSS 2.1 does not specify the position of the list item marker, but does require it to be on the left or right of the content. Also, the marker is not affected by 'overflow', but may influence the height of the principal box. Add to the definition of 'outside':

… but does require that for list items whose 'direction' property is 'ltr' the marker box be on the left side of the content and for elements whose 'direction' property is 'rtl' the marker box be on the right side of the content. 'overflow' on the element does not clip the marker box. The marker box is fixed with respect to the principal block box's border and does not scroll with the principal block box's content. The size or contents of the marker box may affect the height of the principal block box and/or the height of its first line box, and in some cases may cause the creation of a new line box. Note: This interaction may be more precisely defined in a future level of CSS.

Section 12.5.1 Lists: the 'list-style-type', 'list-style-image', 'list-style-position', and 'list-style' properties

[2009-04-015] Meaning of 'none' for 'list-style' was only defined by an example.

Section 13.2 Page boxes: the @page rule

[2008-08-19] Add rules for drawing canvas to:

Section 13.2.1.1 Rendering page boxes that do not fit a target sheet

[2009-02-02]

Remove sections 13.2.1.1 and 13.2.1.2. (The described situations cannot occur in CSS 2.1, because CSS 2.1 doesn't have a 'size' property.)

Section 13.2.3 Content outside the page box

[2008-11-03] Clarified what locations are inconvenient for printing:

When formatting content in the page model, some content may end up outside the current page box. For example, an element whose 'white-space' property has the value 'pre' may generate a box that is wider than the page box. As another example, when boxes are positioned absolutely or relatively, they may end up in “inconvenient” locations. For example, images may be placed on the edge of the page box or 100,000 meters below the page box.

Section 13.3.1 Page break properties: 'page-break-before', 'page-break-after', 'page-break-inside'

[2008-04-30] The 'page-break-inside' property no longer inherits.

Section 13.3.1 Page break properties: 'page-break-before', 'page-break-after', 'page-break-inside'

[2008-12-01] UAs may apply 'page-break-before', 'page-break-after' and 'page-break-inside' to other elements than block-level ones.

Section 13.3.2 Breaks inside elements: 'orphans', 'widows'

[2009-02-02] “Paragraph” is not a defined term. Change of a paragraph to in a block element (twice).

Section 13.3.2 Breaks inside elements: 'orphans', 'widows'

[2009-04-15] 'Widows' and 'orphans' only accept positive values.

Section 13.3.3 Allowed page breaks

[2008-04-30] The 'page-break-inside' property of all ancestors is checked for page-breaking restrictions, not just that of the breakpoint's parent.

Section 13.3.3 Allowed page breaks

[2009-02-02] Remove possible confusion:

Rule D: In addition, breaking at (2) is allowed only if the 'page-break-inside' property of the element and all its ancestors is 'auto'.

Section 13.3.3 Allowed page breaks

[2009-02-02] Top margins do not disappear at a page break that is forced by a 'page-break-after' or 'page-break-before'. Correct the first bullet to:

When an unforced page break occurs here, the used values of the relevant 'margin-top' and 'margin-bottom' properties are set to '0'. When a forced page break occurs here, the used value of the relevant 'margin-bottom' property is set to '0'; the relevant 'margin-top' used value may either be set to '0' or retained.

And add the following note:

Note: It is expected that CSS3 will specify that the relevant 'margin-top' applies (i.e., is not set to '0') after a forced page break.

Section 13.3.5 "Best" page breaks

[2009-02-02] Remove the advice to user agents to avoid breaking inside elements with borders, inside tables or inside floating elements; add the advice to avoid breaking inside replaced elements.

Section 14.2 The background

[2008-11-03] The 'background' property is special on BODY not only in HTML but also in XHTML.

Section 14.2 The background

[2009-04-15] The whole 'background' property is used for the canvas, not just the color and the image:

For documents whose root element is an HTML "HTML" element or an XHTML "html" element that has computed values of 'transparent' for 'background-color' and 'none' for 'background-image', user agents must instead use the computed value of those the background properties from that element's first HTML "BODY" element or XHTML "body" element child […]

Section 14.2.1 Background properties: 'background-color', 'background-image', 'background-repeat', 'background-attachment', 'background-position', and 'background'

[2008-04-07] The size of background images without an intrinsic size is now defined.

Section 15.6 Font boldness: the 'font-weight' property

[2008-11-26] Remove incorrect text:

and:

The computed value of "font-weight" is either:

And instead add this note:

Note: A set of nested elements that mix 'bolder' and 'lighter' will give unpredictable results depending on the UA, OS, and font availability. This behavior will be more precisely defined in CSS3.

Section 16.6 Whitespace: the 'white-space' property

[2008-08-19] Remove rules about generated text from:

The following examples show what whitespace behavior is expected from the PRE and P elements, the “nowrap” attribute in HTML, and in generated content.

pre        { white-space: pre }
p          { white-space: normal }
td[nowrap] { white-space: nowrap }
:before,:after { white-space: pre-line }

Section 16.6.1 The 'white-space' processing model

[2009-02-02] Collapsing of white space does not remove any line breaking oppportunities. Add the following clarification:

Then, the entire block is rendered. Inlines are laid out, taking bidi reordering into account, and wrapping as specified by the 'white-space' property. When wrapping, line breaking opportunities are determined based on the text prior to the white space collapsing steps above.

Section 17.2.1 Anonymous table objects

[2007-11-14] Spelling error: boxess.

Section 17.2.1 Anonymous table objects

[2008-10-13] Added new rule after bullet 4:

5. If a child T of a 'table', 'inline-table', 'table-row-group', 'table-header-group', 'table-footer-group', or 'table-row' box is an anonymous inline box that contains only white space, then it is treated as if it has 'display: none'.

Section 17.4 Tables in the visual formatting model

[2009-02-02] The anonymous block containing the table and its caption establishes a block formatting context:

The anonymous box is a 'block' box if the table is block-level, and an 'inline-block' box if the table is inline-level except that this block is never considered as a block for 'run-in' interaction, and that The anonymous box establishes a block formatting context. The table box (not the anonymous box) is used when doing baseline vertical alignment for an 'inline-table'.

The diagram now shows the caption's margins inside the anonymous box.

Section 17.5.4 Horizontal alignment in a column

[2008-04-07] Clarification:

The horizontal alignment of a cell's inline content within a cell box is can be specified with the 'text-align' property by the value of the 'text-align' property on the cell.

Section 18.1 Cursors: the 'cursor' property

[2008-04-07] The size of cursors without an intrinsic size is now defined.

Section B.2 Informative references

[2007-11-14] Spelling error: change ?lik to Çelik (2×).

Appendix D. Default style sheet for HTML 4

[2008-08-19] Replace

br:before       { content: "\A" }
:before, :after { white-space: pre-line }

with

br:before       { content: "\A"; white-space: pre-line }

Appendix D. Default style sheet for HTML 4

[2008-08-19] Add tr to:

td, th, tr      { vertical-align: inherit }

Section E.2 Painting order

[2007-11-14] Replace but any descendants which actually create a new stacking context by but any positioned descendants and descendants which actually create a new stacking context.

Appendix G. Grammar of CSS 2.1

[2007-09-27] Change the last S in the grammar rule for combinator to S+:

combinator
  : PLUS S*
  | GREATER S*
  | S+

and remove the rule

{s}+\/\*[^*]*\*+([^/*][^*]*\*+)*\/  {unput(' '); /*replace by space*/}

in the tokenizer. The resulting language is the same, but the grammar is easier to read and relies less on specific notations of Flex.

Section G.1 Grammar

[2007-09-27] Changes to remove ambiguity with respect to the S token and avoid nullable non-terminals.

Section G.2 Lexical scanner

[2007-09-27] Change the tokenizer rule

@{C}{H}{A}{R}{S}{E}{T}	{return CHARSET_SYM;}

to

"@charset "  {return CHARSET_SYM;}

The @charset must be in lowercase and must have a space after it (as defined in section  4.4 CSS style sheet representation).

Section G.2 Lexical scanner

[2008-03-05] Change the tokenizer rules

"url("{w}{string}{w}")" {return URI;}
"url("{w}{url}{w}")"    {return URI;}

to

{U}{R}{L}"("{w}{string}{w}")"	{return URI;}
{U}{R}{L}"("{w}{url}{w}")"	{return URI;}

Section G.2 Lexical scanner

[2008-04-07] The definition of the macro “O” is wrong. The letters O and o can be written with hexadecimal escapes as “\4f” and “\6f” respectively (not as “\51” and “\71”). The macro should therefore be

O		o|\\0{0,4}(4f|6f)(\r\n|[ \t\r\n\f])?|\\o

Section G.2 Lexical scanner

“The two occurrences of "\377"…”: There is in fact only one occurrence.

Appendix I. Index

Add a TITLE attribute to all links and which is equal to the lemma.

Bert Bos
Created: 17 July 2007
Last modified: $Date: 2009/04/20 13:57:01 $