What does the '#$' in front of "#$Kitten" mean?

When working with Cyc, it is important to understand the difference between English words and Cyc terms. When we want to be explicit in documentation that something is a Cyc term, we precede it with the symbols '#$'. For example, "Charge" is a word, but #$Charge is a Cyc concept. The first one can mean either a credit card transaction or an electrical charge. The second, if it exists in the KB, will have a precise meaning. In fact, we '#$Charge' does not exist in the KB. Instead, we have the terms #$SaleByCreditCard and #$ElectricalCharge.

Why the '#$' symbols? Because within the Cyc program, these symbols act as a "reader macro" to indicate to the program that the string of characters that follow them should be interpreted as a Cyc concept term. When programming with Cyc, and when doing ASKs and ASSERTs, it is necessary to precede Cyc terms with '#$'. Note: There is a plan to eliminate the need for '#$' in ASKs and ASSERTs, but they will continue to be needed in SubL programming. And they will continue to be useful in documentation.