Lengths and substitution in L-systems Am looking into writing up a Lindenmayer systems implementation. I've looked at a few example implementations and the one thing that's giving me trouble at this stage is how symbols and substitutions are meant to work (if this is even specified in the original treatise).

For example, the implementations I've seen tend in most cases to start with axioms based on A. Let's take the simplest example of this where the Axiom is (just) A.

When this is drawn (depth 0), what should I expect to see? If otherwise undefined, is A meant to render as anything at all? Or does it need to be defined as one full length (whichever symbol is used for this; I have seen pipe being used to this purpose) before it will render out?

Taking a second example, let us say that A renders out, irrespective of what the answer to the above is. If part of F's definition is B, and B is not defined, should B render as a full length?

The way I would expect this to work is that without F being defined at all, nothing should be drawn at depth 0 and subsequently at no other depth, either.

Yet in L-systems Explorer (LSE) and in this web-based implementation, even where a symbol is not defined, it will still be rendered as a full length. The question is, why?
L-systems, are more about general : Abstract rewriting systems rather then to concrete application.

Agree, a wide range of L-systems applications is in computer graphics (generating nature, textures etc), while from mathematical point of view, they are still, the same model.

As stated in referred by you L-systems definition :


  Using L-systems for generating graphical images requires that the symbols in the model refer to elements of a drawing on the computer screen.


Coming back to your question 


  Yet in (...) implementation, even where a symbol is not defined, it will still be rendered as a full length. The question is, why?


Answer: Because that's the way, how those implementations' authors decided to map symbols into rendering commands.

You can do in your implementation any other mapping... and still both of them can be same type of system - L-system.

It's all about defining isomorphism between systems behind implementations, or homomorphism between those systems and graphics they generate. If you will make your own implementation, that will draw symbols differently - you will indirectly define your own homomorphism.