- From: Dan Connolly <connolly@w3.org>
- Date: Thu, 01 Sep 2005 22:23:03 -0500
- To: www-archive+breadcrumbs@w3.org
- Message-Id: <1125631384.16011.741.camel@dirk>
On Sun, 2005-08-28 at 20:20 -0500, Dan Connolly wrote: > What of wtr and intuitionistic? S4, provability, ... Partial functions What about functions that aren't total? The ACL2 convention seems to be to make them total somehow... when non-numeric arguments are provided, the functions act as though 0 had been provided. Existential Variables What to do with formulas like the following? car normalLocation [ a Garage ]. I recall some discussion of skolemization and choice. Hmm. Substitution I think there's a (subst) library function, no? Generalized Modus Ponens Hmm... ACL2 has no quantification. How to represent it... (defun (log:implies F G) (or (not F) G)) No, that assumes F and G are t/f constants, not formulas. Hmm... Actually, ACL2 does provide full first-order quantification via defun-sk. Atomic Formulas So... how to represent the basic sentence of RDF? i.e. @keywords is, of, a. car color blue. Ah... In ACL2, "relations" and "predicates" are defined as Boolean valued functions... -- Finite Set Theory in ACL2, by J Strother Moore so... (holds car color blue) but... oops... how to define holds? It's not computable, in general, is it? Suppose the extent of each predicate is computable... and finite... (defun (lookup p) ...) (defun (extent p) ...) (defun (holds p s o) (mem (pair s o) (extent p)) ) Maybe the thing to do is, rather than translating N3 to ACL2, define the proof theory (or provability logic) of N3 in ACL2. That doesn't give a semantics for N3, but it might still be useful. e.g. to get a proof of B' from a proof of A => B and a proof of A', where B' is (subst (match A' A) B): (defun (generalized-modus-ponens pfA pfAimpB) (let (bindings (match (conclusion pfA) (antecedent (conclusion pfAimpB)))) (subst bindings (consequent (conclusion pfAimpB))) ) ) umm... that returns B'. Maybe the thing to define in ACL2 is the proof checker: (defun (check-gmp pf) (and (listp pf) (rule pf :GMP) (equal 2 (premise-qty pf)) (let* ( (pfA2 (premise 1 pf)) (pfAimpB (premise 2 pf)) (A2 (conclusion pfA2)) (B (consequent (conclusion pfAimpB))) (bindings (match A A2)) ) (equal (subst bindings B) (conclusion pf)) ) But now we're back to using ACL2 as an ordinary programming language, and we might as well use python or Java. -- Dan Connolly, research scientist, MIT CSAIL Decentralized Information Group http://groups.csail.mit.edu/dig/ office: tel:+1-617-395-0241 mobile: mailto:connolly+pager@w3.org
Received on Friday, 2 September 2005 03:23:12 UTC