% $Id: Swell.html,v 1.1 2003/10/01 07:22:16 connolly Exp $

% foundations of Swell, the Semantic Web Logic Language
% cf http://www.w3.org/DesignIssues/
% cf http://www.w3.org/2000/07/hs78/FOPC

Swell: trait
    includes
% each property URI (with optional fragment identifer) is
% a relation from subject URIs to object URIs
% for s \< p \> o you can read: p(s, o) is true,
% or p(s, o) is a theorem.
% @@hm... do a sort of modal extension, where
% p(s, o) is asserted by a message?
        Relation(URIwf, URIwf,
         __ \< __ \> __ for __ 〈 __ 〉 __,
        bot for ⊥, top for ⊤)

    introduces
% primitives
        false_ : → URIwf
        implies_: → URIwf
        forall_ : → URIwf

        subject : → URIwf
        predicate : → URIwf
        object : → URIwf

        first: → URIwf
        rest: → URIwf
        empty: → URIwf

% it's axiomatic that for any URIwf's p,s,o, they
% form a statement.. oops! maybe not! maybe subj/obj/pred are
% acyclic!
% hmm... can I reify this operator somehow?
% using some sort of lambda thingy?
% ( (lambda x . body) y ) == http://www.w3.org/2000/07/lambda?body=urlescape(body);arg=urlescape(y)

% short-hands
        quote: URIwf, URIwf, URIwf, URIwf → Bool % quote(p, s, o, x)
        insert: URIwf, URIwf, URIwf → Bool % insert(first, rest, l)

% derived stuff

        true : → URIwf
        negation, conjunction, implication : → URIwf

        second, restrest : → URIwf

    asserts
        ∀ p, s, o, x, y, a_l, a, l: URIwf

% shorthand (hmm... could build this on n-ary predicate mechanism)
        quote(p, s, o, x) = (x \< subject \> s
                            ∧ x \< predicate \> p
                            ∧ x \< object \> o);

        insert(a, l, a_l) = (a_l \< first \> a
                            ∧ a_l \< rest \> l);

% define negation
        quote(implies_, x, false_, y)
        ⇒ x \< negation \> y;

%negation \< type \> symmetric;
        x \< negation \> y
        ⇒ y \< negation \> x;

% and here we define true:
        false_ \< negation \> true;

% and here we give an axiom for implies_ ...
% this is known as the "level breaking" axiom
        true \< implies_ \> x
        ∧ quote(p, s, o, x)
        ⇒ s \< p \> o;

% the implication of a list of statements...
        empty \< implication \> true;

        a_l \< first \>  a
        ∧ a_l \< rest \> l
        ∧ l \< implication \> s
        ∧ quote(implies_, a, s, x)
        ⇒ a_l \< implication \> x;


% define second
        s \< first \> x
        ∧ o \< rest \> x
        ⇒ s \< second \> o;

% build a conjuction from implies_, false_
        empty \< conjunction \> true;

        ∀ a, l, a_l,  s, notS,
                a_notS, impliesANotS, notImpliesANotS: URIwf

        l \< conjunction \> s
        ∧ insert(a, l, a_l)
        ∧ s \< negation \> notS
        ∧ a_notS \< first \> a
        ∧ a_notS \< second \> notS
        ∧ a_notS \< restrest \> empty
        ∧ a_notS \< implication \> impliesANotS
        ∧ impliesANotS \< negation \> notImpliesANotS
        ⇒ a_l \< conjunction \> notImpliesANotS;

[Index]


HTML generated using lsl2html.