From this message I realize that there are two buffers in Isabelle: one to handle UTF8 symbols and the other to convert those symbols to ASCII.
Is it possible to add more UTF8 symbols? It seems like it is possible by modifying /etc/symbols. However, I wanted to know if user-defined symbols can be imported when opening an existing project. For example, when I pull a repo and open it in Isabelle/jEdit or Isabelle/VSCode, it auto-imports custom symbols.
Don't let yourself be confused by that discussion about technical internals.
Isabelle symbols are independent on the concrete encoding. They can be defined in the user home (but not for a project IIRC) and arbitrarily extended. For rendering, those symbols may be assigned a unicode glyph in a certain encoding (e.g., UTF-8).
However, you will find that a unicode glyph alone is not very helpful: You also need a font that can render it. For that, you need to add glyphs in the font base, build the fonts, and re-assemble Isabelle components.
My default font renders the extensions I'd like to make just fine; the symbols in question are ⸢ these two ⸣
Fabian Huch said:
They can be defined in the user home
the user home being the location where Isabelle is installed?
the symbols file, to my understanding, is like a global environment variable. Can we make a local file that overrides this symbols file if need be? I guess this is slightly different from saying that it is defined for a given project, because that would imply having some sort of project file, and I'm not sure if that's the case in Isabelle
In ISABELLE_HOME_USER/etc/symbols - I don't know what you mean with environment variable here.
See the system manual for an overview about session / component specification, settings, etc. (though symbols are explained in the jedit doc).
thanks!
Last updated: Mar 04 2026 at 20:34 UTC