[SCL] Proposed additions to the SCL draft standard

Tanel Tammet tammet at staff.ttu.ee
Sun May 25 05:38:24 CDT 2003


Hi,

Before additional work on the XML concrete syntax I thought
that it would be more important to put some new features
into SCL proper. These "new" features have been discussed a lot
on the SCL list, but they are not present in Chris's
minimalistic SCL draft.

If we do not have these features in SCL proper (the
abstract syntax and semantics), it would not be suitable
to put them into the XML concrete syntax: the latter
has to reflect the SCL abstract syntax, not extend it.

I took Chris Menzel's SCL draft from
http://cl.tamu.edu/docs/scl-latest.html at 24 May
and added a number of PROPOSED modifications directly
to it.

Attached please find the modified SCL draft, as
a zip file (sent a message with unzipped html before,
but this was too big for the list program).

The additions introduced are proposals. I have colored
the background of all the additions green, so that it
would be easier to follow (tested the Amaya editor
while writing the additions).

Please have a look at the additions and decide whether
some of them or all of them are in principle worth
keeping. Once the list of OK additions is decided,
further modifications to the presentation would
be suitable.

Found a few parts of the SCL draft which contained
errors or were in obvious need for further details.
More about this after the list of proposed additions.

The following is a list of the additions in the
SCL draft html file along with motivations:


- SCL standard is split into four levels or layers.

   Motivation: it is easier to implement a smaller standard
   than a larger standard. Fancier parts of SCL might
   be hard to implement/understand for users. It would
   be good to indicate that even partial implementations
   may correspond to an identified subset of a standard,
   if done properly. Othwerwise we stand the serious risk of
   partial implementations claiming to be SCL, while
   nobody really knows which parts are implemented and which
   not (or we stand the risk that very few people take up courage
   to implement and use SCL at all).

- Annotations (might be called also comments or documentation
   strings). Free text (strings) may be attached to terms
   and formulas.

   Motivations:
    - Obvious need for documentation. Most probably will
      be implemented in concrete syntaxes. Hence it would be
      good to define in the abstract syntax, so that different
      concrete syntaxes would be intertranslatable.
    - Possibility to encode additional (nonlogical) information
      for specialised systems in annotation strings.
      For example, in the automated
      theorem proving (ATP) context it is really crucial to identify
      that some parts of the formula stem from general axioms
      while some parts stem from a specification of a system
      explored while yet others stem from a query asked.
      This is absolutely unavoidable for practical ATP needs.
      And we DO NOT want to go into serius metalogic in the SCL
      context in order to attack this everyday necessity.

- Integers and bounded existential quantifications (a possibility
   to say that there exist exactly N objects with some property P).
   By 'integers' I mean the use of numerals with a predefined
   property that all lexically different numerals map to
   different elements of the domain. Ie, not(id(4,7)) holds,
   no need for a user to define this.

   I have NOT defined the semantics of integer-bounded
   existential quantifier in the text, since the predicate-bounded
   existential quantifier was not defined either (see later in
   the 'omissions' section).

   Motivations:
     - OWL Full contains bounded existential quantification.
       While this can be encoded in plain FOL (or SCL), it is
       pretty cumbersome. Would be more convenient to use integers
       in the language.
       Once we do allow to use bounded existential quantification,
       it would be a bit weird not to allow integers in general.
     - Integers and integer arithmetic is, not surprisingly, very
       important in many practical ATP fields, like verification.
       Essentially, you have to build in integers and arithmetic
       for doing practical verification of hardware (electronics,
       railroads, etc). You have to build in integers for creating
       e-commerce system rules, etc (think prices, quantities of goods,
       etc).
     - Integers are not just syntactic sugar. It is not enough to
       decide that, say, let us use 0 to denote 0, s(0) to denote
       1, s(s(0)) to denote 2, etc.
       The crucial issue is that you need to define that 1 is not equal
       to 2, 3 is not equal to 7, etc for all pairs of integers.
       As we know, this CANNOT BE DONE IN FOL. This can be done
       only using induction. However, it is easy to PREDEFINE that
       different numerals map to different integers in the domain,
       essentially building in the infinite list of disequalities
       (similar to the equality predicate, which also cannot be defined
        in pure FOL).
     - Once we have integers in the language, we could in principle
       (if we want to) encode strings and string equalities as
       integers (for example, by using ascii or utf) along with
       the ascii or utf string type constuctor taking an integer as
       an argument. Strictly speaking we would not need to extend
       the core language to encode strings (or any other datatypes,
       for that matter: integers suffice, at least theoretically).


Small errors and omissions found:

- In the early part of text the name of the identity function
   used was Ind, not Id as later.
- The semantics of quantifiers bounded by predicates was IMHO
   not defined. This needs to be done. Once it is defined, the
   definition can be extended to the existential quantifier bound by an
   integer (not done in the proposed additions).
- XML DTD was IMHO not complete: again, the possibility for
   bounded quantifiers was not there in the DTD. Hence I have not
   put in the integer-bounded quantifier into the DTD either.


Some serious extension possibilities worth considering (not introduced
as proposals in the attached text):

- Identity (equality) on the object level.

   Chris mentioned that once we encode predicates using the App/Pred
   functions, the formula (forall x. P(x) & -Q(x)) & (forall x,y. x=y) is
   NOT valid, while it IS valid in the standard, non-app/pred semantics
   of FOL.

   This means that it is very hard to use SCL for encoding
   standard logical problems, including a large part of the
   thousands of problems in TPTP, used extensively in the
   ATP community. People cannot use Id in these contexts:
   they'd have to define their own equality not present
   in SCL and not axiomatisable in pure SCL alone.

   This might be survivable, but is really
   unpleasant, since it unnecessarily limits
   or confuses our audience.

   We could use the App/Pred-based SCL for standard FOL problems
   IF:
    - we explicitly identify a "simple" subclass of SCL where any first
      arguments of App and Pred are constants. This subclass
      can be trivially mapped to non-App/Pred, classical
      semantics (just drop the App and Pred and lift the first
      argument to the function/predicate symbol position: validity
      of formulas is not changed by this transformation).

     The "simple" subclass can be extended, of course, allowing
     cases where a variable is used in the first argument: the
     mapping will be harder, though.

   - We do provide an equality predicate on the individual
     constants only: ie, not usable on predicate/function name
     constants.

   Observe that the current Id predicate is NOT such an
   individual-constants only predicate.

   Also, the current
   SCL does explicitly differentiate between object constants
   and function/predicate constants, simplifying the introduction
   of the second equality predicate.

   Hence I suggest to:
   - write a chapter identifying the "simple" subclass of SCL
     and properties of its semantics,
    - introduce the second equality predicate, different from
      Id, defined only on the object constants.


- Including other text.

   Both in the semantic web context and "ordinary" ATP it is
   important to import other files or parts of other files into
   the formula.

   If we want to put this into SCL (and why shouldn't we?) we
   do need an "include" operation. Include should IMHO take an
   URI as an argument and return the text at the URI. In case
   namespaces or any external links are used in the text referred
   by our URI, these namespaces and/or links should be resolved
   before including the text (a simple recursive process).

   If we do NOT put "include" into SCL, then inevitably people using
   SCL would have to construct their own inclusion constructions,
   different for different concrete syntaxes and users.

   Observe that the XML concrete syntax would not automatically
   introduce the linking possibility. Pure XML provides us with
   namespaces, but does not provide including text. We could
   try to use additional XML-based languages like XLINK, but
   these are highly complex. IMHO it would be better to put
   text inclusion into SCL directly, as an additional layer.


Regards,
      Tanel Tammet

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sclmodif25may.zip
Type: application/x-zip-compressed
Size: 9856 bytes
Desc: not available
Url : http://philebus.tamu.edu/pipermail/scl/attachments/20030525/f62672b2/sclmodif25may.bin


More information about the Scl mailing list