One of the main design goals of the source language (BabelScript) is to avoid ambiguity, but this does not mean that information must be conveyed in perfect detail. On the contrary, it has become very clear as I’ve started writing predicate definitions that a degree of imprecision is often a necessity.
For example, consider the statement “the sky is blue”. What is the meaning of ‘blue’ in this sentence? The shade known as ’sky blue’ is an obvious possibility, but the writer hasn’t said that, and in reality the colour of the sky varies enourmously dependingly on the time of day, weather, and zenith angle. There is not enough information for the reader to deduce whether the sky is actually sky blue, or medium blue, or some other shade. Significantly, it is quite conceivable that the writer did not know the precise colour (or had not given the matter any thought).
Does this make the statement defective in some way? Not at all. There are details which it does not specify, but that is true of most writing. Indeed, natural language would be considerably less useful if it were not able to convey incomplete or imprecise information: it should be possible to make comment about the colour of the sky without first measuring it with a photometer.
Why, then, all of the fuss about avoiding ambiguity? The concern is to avoid creating predicates that require a deep understanding of the context before they can be translated.
An example is English word ‘revolting’, which can refer either to a cause of revulsion or to an act of rebellion. Individual sentences, such as “the peasants are revolting”, do not necessarily contain enough information to deduce what is intended, but the intent must be known prior to translation because other languages are likely to use different words for the two concepts.
Key differences between ambiguity and imprecision are that:
- Ambiguities must be resolved by the reader in order to correctly interpret the text, whereas imprecisions need not be.
- Ambiguities typically correspond to large (often qualitative) differences of meaning, imprecisions to smaller (usually quantitative) variations.
- Imprecision is a useful tool for conveying incomplete information, whereas ambiguity is useful only where the intent is to pun or dissemble.
If imprecision is considered useful then some means should be found for representing it within the source language. One way in which this can be done is through a class hierarchy, an example being the taxonomic classification of animals and plants. This gives the means to identify an individual species if that information is known (such as V. vulpes, the red fox), but also provides the option of stating only the genus (Vulpes, foxes), the family (Canidae, dogs), the order (Carnivora, carnivores) or the class (Mammalia, mammals). Some species are subdivided into subspecies, allowing even greater precision.
An alternative method is to take a predicate with a more precise meaning, then qualify it in some way to indicate that the precision should be reduced. This is a process which often happens in natural language (hence words such as reddish, smallish, and roundish), and is particularly useful where the imprecise concepts would otherwise be difficult to name.
Whichever method is chosen, the aim should be to approximate a similar level of granularity to that present in typical natural languages. For this reason, it may be appropriate for the degree of granularity to vary between different parts of a hierarchy. (Compare, for example, the phylum Chordata - which includes all mammals, birds, reptiles, amphibians and fish - with the phylum Nematoda - which consists entirely of nematode worms.)
Finally, there will be a need to identify what are known as ‘base level’ concepts. These represent the preferred level of detail if there is no good reason for specifying more or less. Exactly what form this will take has not been decided yet, however my working assumption is that it is a language-dependent phenonenum and therefore belongs in the language definition, not the predicate dictionary.