Earlier quoted context omitted.
Re tag inference: no I mean both start- and end-tag inference, like HTML does. It's explained in my linked paper, and it's not for "covering up design flaws". I think you're making quite strong conclusions here considering your lack of knowledge of SGML.
We're talking about syntax here. Start-tag inference is not syntactic. There is no way to tell if there's a missing start tag in: End-tag inference is semi-syntactic. You can tell that the following might have a missing end tag: But the previous example definitely does not.
tells SGML that the html element should contain a head element, followed by a body element. "O O" (capital letter O for omission) are tag omission indicators (in this case meaning that both the start- and the end-element tags for html can be omitted).This is covered in depth in the linked paper/slides (in fact, covering JimDabell's example exactly).