- From: David Booth <david@dbooth.org>
- Date: Wed, 25 Sep 2013 23:56:31 -0400
- To: Pat Hayes <phayes@ihmc.us>
- CC: www-archive <www-archive@w3.org>, "Hawke, Sandro" <sandro@w3.org>, Gregg Reynolds <dev@mobileink.com>
Hi Pat, Thanks for taking the time to discuss this with me, and sorry for the slow response. Lots of other things going on right now. My goal in this discussion is to reach common understanding to allow the wording in the RDF specs to be made agreeable to all. The current draft has certain passages that I find problematic. I'm trying first to convey an understanding of *why* I see these portions as problematic. I'd like to to avoid as much back-end-forth as possible, but some back-and-forth may be unavoidable in order isolate where our common understanding breaks down. On 09/15/2013 06:45 AM, Pat Hayes wrote: > > On Sep 13, 2013, at 9:07 AM, David Booth wrote: > >> Hi Pat, >> >> I think the big disconnect between us is that I am looking at the >> semantics from the perspective of multiple interpretations, whereas >> you seem to keep assuming a single-interpretation viewpoint. > > This idea you have of two different perspectives is a fallacy. There > is only one correct way to understand model theory. Oh, come on. That's an absurd thing to say about *any* scientific discipline. If that were true, we'd never make any scientific progress! But that's completely beside the point. I'm not trying to make any grand new discoveries here. I'm just trying to point out something fairly simple: that as currently written, certain statements in the RDF documents do not align with reality. They don't need a lot to be corrected -- very little really -- but first we need to understand the problem. I am not in any way trying to reinvent or redesign the semantics, nor am I trying to make any new observations about model theory. You're the expert on that. I'm just applying what I read in the spec. > Apparently, you have not fully grasped the basic idea. I don't think that is the problem. AFAICT I've been following all of your explanations -- very good explanations BTW -- but you seem to be making some an additional "magic" assumption that apparently I am not making -- an assumption that AFAICT is unjustified by the mathematics and seems false to me. The central assumption that I do not buy is that in the end there is only ever permitted to be one interpretation, or at least we're only allowed to talk about one at a time. That is perhaps a crude way of putting it, but I think it kind of captures the gist. As an example, below you admit: "There are interpretations which make G1 true, and there are other interpretations which make G2 true, and these interpretations give different meanings to ex:p." And yet the introduction to RDF Concepts blithely states that "Two different appearances of an IRI denote the same resource". Taken at face value, this seems contradictory. If somehow that contradiction is to be avoided, surely some qualifications need to be added. Also, if indeed it were true that "Two different appearances of an IRI denote the same resource" then there could never be a URI Collision http://www.w3.org/TR/webarch/#URI-collision and there would be no point in the AWWW discussing it or admonishing against it. Furthermore, no matter what style of semantics was used in writing the RDF Semantics spec, it is still a W3C spec and it still must stand on its own according to what it *says* -- not what philosophical outlook one chooses to have. You cannot dismiss my points about the spec with "go read a book" or "you have not fully grasped the basic idea" just because I'm not wearing the same model-theory-colored glasses that you are wearing. In particular, if the spec says that an interpretation is a *function*, then it had damn well better be a function and nothing more than a function! Not a function with magic powers or special implicit constraints, but a *function*. And yet, somehow additional assumptions keep creeping in, as I've been trying to point out, because you keep trying to constrain the application of those functions *beyond* what the mathematics requires. Last spring I think we made some significant progress in understanding this disconnect between our perspectives, so I found it useful to review some of that exchange in the email archives. I don't expect you to go back and re-read all of those messages, but for convenience, here are my posts in that conversation: http://tinyurl.com/k4csl4v To recap where we left off, let me quote some of that exchange: http://lists.w3.org/Archives/Public/public-semweb-lifesci/2013Mar/0191.html [[ From: David Booth (in reply to Pat Hayes) [ . . . ] > It's not the interpretations that you are suggesting to treat as > contexts, it is the *graphs*. Your idea amounts to treating graphs as > local contexts for the URI tokens that occur in them. And this is not > a wholly insane idea, and indeed it has been suggested by several > other people, including people on the current RDF WG. Some users use > datasets in this way, treating the URI tokens in the various named > graphs as functionally independent of one another until they have > evidence that they are being used with the same meaning. First of all, I was not making a proposal, I was making an *observation* about the *existing* RDF Semantics spec and the *existing* conforming use of that spec. But to understand that observation, you need to be able to look at the RDF Semantics spec as a whole, and recognize that: (a) in essence, the RDF Semantics spec defines a standard function -- call it RS -- for determining the truth value of an <interpretation, graph> pair; and (b) the particular formal style in which that function was defined -- in this case, a model theoretic style -- is **completely irrelevant** to the end result of its definition. If you are unwilling/unable to acknowledge those two basic points, then indeed my observation will sound like an improperly stated proposal, and no amount of discussion will correct that appearance. On the other hand, if you are with me so far, or if you can at least temporarily suspend your disbelief in those points, there are some fundamental observations that follow. 1. Applications correspond to interpretations. (Well, technically they correspond to *sets* of interpretations, but for simplicity let's pretend an app corresponds to one interpretation.) Think of an application as a function that maps a graph to an output. When a conforming RDF app takes a graph as input, assumes that graph is true, and uses some algorithm (perhaps computing entailments) to produce some output based on that graph, in essence it has chosen an interpretation to apply to that graph. That interpretation maps URIs to resources in that application's domain of discourse, whatever it may be. 2. Different applications choose *different* interpretations, because they have different purposes. Thus, the *same* graph may contain a URI that maps to *different* resources in different applications/interpretations. 3. Different RDF authors sometimes use the same URI to denote *different* things. I.e., different RDF authors make different assumptions about the interpretations that will/should be applied to the graphs that they write. We may wish they didn't, but they do. (And because ambiguity is inescapable, this is impossible to avoid, so there's no point in getting huffy about it.) Fortunately, we can still use the RDF Semantics to help us determine the author's intended "meaning" of each graph by recognizing that different graphs require different interpretations! To clarify, we can use the RDF Semantics to (separately) determine the entailments and satisfying interpretations for each graph. This is useful! And it cannot be done under the single-interpretation assumption. 4. Just because we can use the RDF Semantics to correctly determine the authors' intended "meaning" of two graphs individually -- i.e., determine each graph's entailments and satisfying interpretations -- this does *not* mean that the *merge* of those two graphs will be useful. Because if those two graphs have disjoint sets of satisfying interpretations, then there cannot be any satisfying interpretations for the merge, i.e., the merge is necessarily false. In other words, even though an app may work perfectly on two graphs *individually*, it may *not* work on the merge of those two graphs. This may be quite counter-intuitive to those who would assume that if an app works fine on one set of RDF data then it should also work fine on a superset of that data. [ . . . ] 5. This has direct consequences for owl:sameAs. It explains why it is useful, as Jeremy suggested, to keep separate graphs that reflect different "perspectives" -- i.e., that assume different sets of interpretations -- and keep them separate from owl:sameAs assertions. This allows you to *choose* which URIs will be joined by owl:sameAs, and which RDF assertions will be used with them, by choosing which datasets to merge into the graph that you wish to use for a particular application, *without* requiring that the merge of all possible graphs be consistent, and *without* violating RDF Semantics. ]] And later, you wrote: http://lists.w3.org/Archives/Public/public-semweb-lifesci/2013Mar/0212.html [[ From: Pat Hayes (in reply to David Booth) [ . . . ] > An interpretation can be applied to any graph or any RDF > statement. And certainly you could determine the truth > value of N different statements according to N different > interpretations. But would it be useful to do so? > Probably not. Furthermore, if two statements are true > under two different interpretations, that would not tell you > whether a graph consisting of those two statements would be > true under a single interpretation. > > OTOH, it *is* useful to apply different intepretations to > different graphs, and one reason is that you may be using > those graphs for different applications, each app in effect > applying its own interpretation. But the fact that those > graphs may be true under different interpretations does > *not* tell you whether the merge of those graphs will be > true under a single interpretation. > > The RDF Semantics spec only tells you how to compute the > truth value of one <interpretation, graph> pair at a time, > but you can certainly apply it to as many <interpretation, > graph> pairs as you want -- in full conformance with the > intent of the spec. Not with the *intent*, even if I have to concede that it does conform to the letter. The intention of the spec is to describe a model-theoretic semantics for RDF and RDF extensions. What you are doing, David, is not model theory semantics and does not describe any useful notion of interpretation. ]] I beg to differ on its conformance and its usefuless, since: (a) it is merely applying the *existing* RDF semantics; and (b) it is *certainly* useful to talk about what sets of interpretations satisfy two different graphs (respectively). Consequently it is also useful to talk about what resource(s) a given URI might denote in each of those graphs (respectively), based on each graph's set of satisfying interpretations. As a simple example of how a URI can denote different things in different graphs, suppose Alice sends this graph G1 from her smart phone to her home computer to turn *on* her porch light (assuming the usual URI prefix definitions): G1: { @prefix db: <http://dbooth.org/> ex:alicePorchLight rdf:value db:x . db:x owl:sameAs ex:on . ex:on owl:differentFrom ex:off . } and her light turns on. In contrast, Bob sends this graph G2 from his smart phone to his home computer to turn *off* his oven: G2: { ex:bobOven rdf:value db:x . db:x owl:sameAs ex:off . ex:on owl:differentFrom ex:off . } and his oven turns off. It is perfectly reasonable and natural to ask "What resource does db:x denote in G1?", and it is reasonable and natural to ask the same of G2. The RDF Semantics (along with OWL) tells us that in G1 db:x denotes whatever ex:on denotes, whereas in G2 db:x denotes whatever ex:off denotes. That is useful! Furthermore, the semantics tells us that if we merge those graphs then we have a contradiction -- there are no satisfying interpretations for the merge -- and that is useful to know also, because it means that Alice and Bob's graphs **cannot be used together**. Furthermore, the RDF Semantics notion of an interpretation maps well to real life applications: in effect, an application chooses a particular interpretation when it processes RDF data. This is a very useful aspect of the model theoretic style of the semantics. In this example, Alice's home control app interpreted db:x to denote "on" and Bob's home control app interpreted it to denote "off". And *both* were correct (in isolation): they both did The Right Thing. Anyway, one of the parts of the RDF specs that needs to be fixed is the sentence in the RDF Concepts spec that says "Two different appearances of an IRI denote the same resource", because as pointed out, this simply is not true. To address this, I think two things are needed. The first is to reword that sentence as a *goal* or as an *intent*, rather than as a fact. A change as simple as: "Two different appearances of an IRI are intended to denote the same resource" would probably be adequate. The second thing that's needed is a small amount of explanation about *why* two appearances of an IRI do not necessarily denote the same resource, and how this can be handled by the RDF Semantics. (Short answer: it can't, except by applying the semantics separately to each appearance, using different interpretations.) The other part (along these lines) of the RDF specs that I think needs to be fixed is in the RDF Semantics spec, but let's address the above statement in the RDF Concepts first and see if we can get on the same page with that one before addressing the other one. So . . . based on the above, how close or far apart do you think we are? Would you be agreeable to changes along the lines described above? Before I wrote the above, I started to respond to some specific things below. You can read them below if you want, but I think I have already covered my overall points above anyway. > >> I'll try to explain . . . >> >> On 09/11/2013 11:15 PM, Pat Hayes wrote: >>> >>> On Sep 11, 2013, at 6:14 PM, David Booth wrote: >>> >>>> hi Pat, >>>> >>>> Since the RDF WG does not have a public discussion list to >>>> which non-members can post, I'm copying the public www-archive >>>> list. I want to propose a couple of changes to the RDF specs, >>>> and thought it might save the WG and others time if I first >>>> discuss them with you (and anyone else you think would be >>>> interested). One of them is the following. >>>> >>>> In >>>> https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html >>>> >>>> >>>> I see this statement: >>>> >>>> "IRIs have global scope: Two different appearances of an IRI >>>> denote the same resource." >>>> >>>> This is wrong >>> >>> It is a foundational assumption of RDF. Without this assumption, >>> graph merging would never be a valid operation, and no RDF >>> engines could combine informationfrom different sources to draw >>> conclusions. >>> >>>> , because an IRI can and often does denote different resources >>>> in different RDF interpretations. >>> >>> That is irrelevant to the point being made in the sentence you >>> cite above. No interpretation allows two occurrences of a single >>> IRI to denote different things. >> >> The problem is that that sentence is not constrained to a single >> interpretation. If it said "**For each RDF interpretation** IRIs >> have global scope . . . . " then it would be fine. > > An interpretation is just a formalization of the idea of the language > having a meaning. One does not completely know the intended meanings, > so is more than one possible interpretation. But that does not say > that some RDF has one interpretation while other RDF has a different > interpretation. That idea - what you are calling the > "multiple-interpretation perspective", if I follow you properly - is > simply a misunderstanding of the very idea of an interpretation in > model-theoretic semantics. The RDF Semantics document says that an interpretation is a *function*, and I know what a function is. I see nothing in the semantics that requires only *one* interpretation function to exist. > >> >> As written, that sentence ("IRIs have global scope: Two different >> appearances of an IRI denote the same resource") is just patently >> false, as your example of G1 and G2 illustrated: >> >>> G1: ex:a ex:p "23"^^xsd:number . >>> >>> G2: ex:p rdfs:range xsd:string . >> >> Assuming XSD semantics, ex:p clearly denotes something different in >> G1 than it denotes in G2. > > No, it does not, which is WHY these are mutually inconsistent. If it > could denote one thing in G1 and something different in G2, and if > this were somehow acceptable, then these two graphs would be > consistent. In fact, the statements P and (not P) would be > consistent, becuase the firat P could be interpreted as being true > and the second P as being false. No, you're talking about the merge of the two graphs, which indeed would be inconsistent. I'm talking about the two graphs separately. > >> >>> >>>> And this, in practice, means that an IRI often denotes >>>> different resources in different *graphs* >>> >>> No, it does not. What is true, of course, is that the sets of >>> interpretations which satisfy the two graphs will be different, >>> and each will likely be different from the set of >>> interpretations satisfying both of them (their union.) But that >>> does not imply that IRIs in different graphs denote differently. >> >> When you say "But that does not imply that IRIs in different graphs >> denote differently", notice that you are implicitly assuming that >> the *same* interpretation(s) will be applied to both graphs. >> (Because obviously if different interpretations are applied, the >> same URI may denote different things.) But my point was that if >> you look at it from the perspective of "What are the sets of >> satisfying interpretations for each of these graphs (separately)?", >> then we *are* talking about different sets of interpretations, and >> the same IRI *may* denote different things in them. > > No. Look, if we take each graph in isolation, then yes, different > sets of interpretations make them true. There are interpretations > which make G1 true, and there are other interpretations which make G2 > true, and these interpretations give different meanings to ex:p. Exactly. That's what I have been trying so hard to point out. > But > still, each interpretation assigns meanings to every occurence of > every IRI. So the interpretations that make G1 true also make G2 > false, and the interpretations that make G2 true also make G1 false. > There is no interpretation that makes G1 and G2 *both* true, and this > is BECAUSE every interpretation assigns a truthvalue to every triple > in every graph, and assigns the same denotation to every occurrence > of each IRI, whatever graph it is in. Of course. > > Do you see how this works yet? Yes, of course, I see how it works in *that* direction. But I also see how it works in the other direction: given G1, it is reasonable to ask: "What resource does ex:p denote in G1?" And the obvious answer is that ex:p denotes some resource r1=i1(ex:p) such that i1 is in the set of satisfying interpretations for G1. Similarly, the obvious answer to the question "What resource does ex:p denote in G2?" is that ex:p denotes some resource r2=i2(ex:p) such that i2 is in the set of satisfying interpretations for G2. It is useful to look at graphs this way! But now we have a problem, because the RDF Concepts introduction says: "Two different appearances of an IRI denote the same resource", but we also know that r1 != r2. > >> >>> >>>> , because any graph has a set of satisfying interpretations, >>>> and different graphs may have different sets of satisfying >>>> interpretations. >>> >>> Yes, but that does not imply what you seem to think it implies. >> >> I doubt that what I think is what you think I think. What do you >> think I think it implies? >> >> To be clear, I think it implies the following. For graphs g1 and >> g2, URI u, let s1 and s2 be the sets of satisfying interpretations >> for g1 and g2 (respectively). Let rs1 be the set of resources >> {i(u) such that i is in s1}, and similarly let rs2 be the set of >> resources {j(u) such that j is in s2}. Claim: Every member of s1 >> is "what u denotes in g1" > > That phrase is meaningless, and it is not used anywhere in the RDF > semantics. Denotation is not graph-relative. Are you telling me that it is meaningless to ask, given a graph, what a particular IRI denotes in that graph? That would be absurd. It is perfectly reasonable and normal thing to ask. The fact that the RDF Semantics has specifically defined this notion is a *bug*, not a feature. It could easily be defined as described above (in terms of the satisfying interpretations for the graph). I get the impression that you would *like* the question to be: "what resource does u denote in *all* graphs?". But that question would be completely pointless, because nobody cares about *all* graphs. People care about *specific* graphs, and it is very important that people have the ability to chose *which* graphs to care about, thank you very much. The fact is that people *do* use the same URI to denote different things, and people *do* look at graphs and want to know what a URI denotes in a particular graph. We might as well take advantage of the existing RDF Semantics to help them out. Thanks, David > >> and every member of s2 is "what u denotes in g2". (But note that >> they came from different sets of interpretations: s1 and s2, >> respectively.) Claim: "what u denotes in g1" may be *different* >> from "what u denotes in g2". The truth of this should be obvious. >> >> Notice that nowhere am I making the single-interpretation >> assumption. AFAICT, the disconnect between us seems to be that you >> are assuming that one must only be talking about the *same* >> interpretation(s) when talking about g1 and g2. > > Interpretations apply across all IRIs and all graphs, by definition. > The set of interpretations which satisfy a graph is dependent upon > the graph, of course. But every interpretation defines a truthvalue > for every possible RDF triple, and hence for every possible RDF > graph. That is the entire point of model-theoretic semantics: > interpretations fix the meaning of ALL SENTENCES in a given language. > If they did not, they would not be interpretations. > >> That would be necessary if we were talking about the union of g1 >> and g2, but it is *not* necessary if we are talking about g1 and g2 >> as separate graphs. The RDF Semantics can perfectly well be >> applied to each graph separately. >> >>> >>>> For example, suppose graphs g1 and g2 have sets of satisfying >>>> interpretations s1 and s2, respectively, and those sets may be >>>> disjoint. Then colloquially (and technically) we can say that >>>> an IRI may map to one resource in g1 (i.e., in some >>>> interpretation in s1) and a different resource in g2 (i.e., in >>>> some interpretation in s2). >>> >>> No, that would not be a correct way to express this condition, >>> even colloquially. What you are describing is two graphs which >>> contradict each other in some way. >> >> Yes: the intersection of their sets of satisfying interpretations >> is empty. I.e., the graphs contradict each other. >> >>> Which is impossible in RDF but much easier to arrange in RDFS or >>> OWL or other more expressive languages, but in any case it is >>> often only possible to detect the contradiction when we presume >>> that IRIs denote uniformly across graphs. Take this example, >>> using some rdfs: >>> >>> G1: ex:a ex:p "23"^^xsd:number . >>> >>> G2: ex:p rdfs:range xsd:string . >>> >>> Each is consistent (has satisfying interpretations) but together >>> they are inconsistent (recognizing XSD). Why? Because if ex:p has >>> range xsd:string, then the first triple in G1 implies that a >>> nuber must be an XSD string, and XSD says these are disjoint. But >>> notice, this line of reasoning assumes that the ex:p in the G1 is >>> the same ex:p as in G2. >> >> By "inconsistent", presumably you mean either; (a) that the graph >> that is the union of G1 and G2 has no satisfying interpretations; >> or (b) that the intersection of the sets of satisfying >> interpretations for G1 and G2 is empty. > > Those are two ways of saying the same thing. so I mean both of them. > >> In case (a), we would be talking about a different graph that has >> G1 and G2 as subgraphs, so yes, ex:p in G1 must be the same as ex:p >> in G2, and there are no interpretations that satisfy this >> requirement. In case (b), ex:p in G1 clearly denotes a different >> resource than ex:p in G2, and that is why the intersection of their >> satisfying interpretations is empty. > > No. The reason why the set is empty is not because ex:p denotes > differently in the two graphs (which is meaningless as stated) , it > is because *whatever you take ex:p to denote*, at least one of the > graphs must be false. You survey all the possible interpretations, > and you find that whatever you do, you never get both graphs true at > the same time. > >> >>> If it wasn't – if the same IRI in two different graphs could >>> denote different things – then there would be no inconsistency >>> here, because G2 might be talking about a different thing than >>> the ex:p that G1 is talking about. >> >> Indeed, it is quite clear that the ex:p that G1 is talking about >> *is* different than the ex:p that G2 is talking about, and this is >> why these graphs are incompatible. This is evident because in >> every satisfying interpretation of G1, the value of ex:p is an >> xsd:number, whereas in every satisfying interpretation of G2, the >> value of ex:p its value is an xsd:number, whereas in G2 its value >> is required to be an xsd:string, and an xsd:string cannot be an >> xsd:number. I.e., the intersection of their sets of satisfying >> interpretations is empty, so the graphs are necessarily >> inconsistent. > > Yes, exactly. Put another way, the interpretations which satisfy G1 > cannot satisfy G2, and vice versa. > >> >>> >>>> >>>> This requires thinking about graphs in terms of sets of >>>> satisfying interpretations -- an important and valid >>>> perspective -- rather than assuming that one looks at them only >>>> through the lens of a single interpretation. >>> >>> Of course we think of graphs in terms of sets of satisfying >>> interpretations. That does not imply that different occurrences >>> of an IRI can denote differently. >> >> Sure it does. ex:p denotes *different* things in the set of >> satisfying interpretations of G1 than it does in the set of >> satisfying interpretations of G2, as we just established above. > > So what? What established mutual inconsistency here is that in every > interpretation which satisfies G1, G2 is false (and vice versa.) But > to show this rigorously means that we have to consider the truth of > G2 in those G1-satisfying interpretations. And we do that by applying > the interpretation mapping to G2; and when we do, we interpret the > IRIs in G2 exactly the way they are interpreted in G1. Because, to > make the basic point one again, interpretation mappings are defined > on IRIs, not on occurrences of IRIs in graphs, so you get the same > denotation for every occurrence of the IRI, in any graph. And this > follows from the *definition* of "interpretation". Different > occurrences of an IRI cannot denote differently. > >>>> In short, I think the above statement needs to be qualified >>>> somehow, such as: >>>> >>>> "IRIs are intended to have global scope: Two different >>>> appearances of an IRI are intended to denote the same resource. >>>> (But see RDF Semantics for caveats regarding different RDF >>>> interpretations.)" >>> >>> The semantics document has no such "caveats". >>>> >>>> And then we would have to add something to the RDF Semantics >>>> document to explain how an IRI can denote different things in >>>> different interpretations. >>> >>> Of course IRIs denote different things in different >>> interpretations. That is what interpretations are all about: each >>> interpretation is one way to construe what IRIs mean, one mapping >>> from IRIs to denoted things. But each one of them construes each >>> IRI in a particular way. It does not construe one occurrence of a >>> given IRI in one way, and a different occurrence of the same IRI >>> in a different way. >> >> Correct: a single interpretation does not construe one occurrence >> of a given IRI in one way and a different occurrence of the same >> IRI in a different way. But that is *exactly* what multiple >> interpretations do. > > No, that is NOT what they do. They simply provide a mathematical > survey of possible ways for IRIs to denote. But they are all > functions *from IRIs to denotations*, not from IRI occurrences to > denotations. (You can define a (different) semantics which allows > this, and it is a context-logic semantics: interpretations map from > <context, IRI> pairs to denotations. In your case, the contexts would > be graphs, I presume.) > >> >>> That condition – we might call it a 'split reference' – is not >>> possible in any interpretation. In fact, it is explciitly ruled >>> out by the very construction of interpretations, which are >>> defined as mappings from IRIs to referents. Not from >>> *occurrences* of IRIs to referents, notice. >> >> Agreed. I'm not talking about a single interpretation. I'm >> talking about multiple interpretations, such as we may be >> considering when we ask: "What are the sets of satisfying >> interpretations for g1, g2 and g3 (respectively)?" > > Multiple interpretations are still interpretations. A set of mappings > from one set to another is not a mapping from a different set. > >> >>> >>>> >>>> Does this make sense to you? >>> >>> Clearly not; but you knew this, surely, from our earlier >>> extended discussions on this topic. >> >> Hey, I'm trying to make headway toward a common understanding here! >> :) Have I made any progress? > > Apperently not. > > David, if you think that you have a new idea here and you are > eventually going to convince me you are right, give up now. I know > model theory and logical semantics very well indeed, and I know that > you are confused about the basic ideas. You are not going to persuade > me that you are right, because you aren't. > > Pat > >> >> Best wishes, David >> > > ------------------------------------------------------------ IHMC > (850)434 8903 home 40 South Alcaniz St. (850)202 4416 > office Pensacola (850)202 4440 fax FL > 32502 (850)291 0667 mobile > (preferred) phayes@ihmc.us http://www.ihmc.us/users/phayes > > > > > > > > >
Received on Thursday, 26 September 2013 03:56:59 UTC