Before we can move from three-valued logic to fuzzy logic, we need to take a look at semantics - both how conventional two-valued logic handle semantics, and how three-valued logics extend the basic semantic structure. This isn't exactly one of the more exciting topics I've ever written about - but it is important, and going through it now will set the groundwork for the interesting stuff - the semantics of a true fuzzy logic.

What we've looked at so far has been propositional 3-valued logics. Propositional logics aren't particularly interesting. You can't do or say much with them. What we really care about is predicate logics. But all we need to do is take the three-valued logics we've seen, and allow statements to be

In a conventional first-order predicate logic, we define the semantics in terms of a *model* or *interpretation* of the logic. (Technically, a logic and an interpretation aren't quite the same thing, but for our purposes here, we don't need to get into the difference.)

An interpretation basically takes a *domain* consisting of a set of objects or values, and does two things:

- For each atomic symbol in the logic, it assigns an object from the domain. That value is called the
*interpretation*of the symbol. - For each predicate in the logic, it assigns a set, called the
*extension*of the predicate. The extension contains the tuples for which the predicate is true.

For example, we could use logic to talk about Scientopia. The *domain* would be the set of bloggers, and the set of blogs. Then we could have predicates like "Writes", which takes two parameters - A, and B - and which is true is A is the author of the blog B.

Then the *extension* of "Writes" would be a set of pairs: { (MarkCC, Good Math/Bad Math), (Scicurious, Neurotic Physiology), ... }.

We can also define the *counterextension*, which is the set of pairs for whiche the predicate is *not* true. So the counterextension of "writes" would contain values like { (MarkCC, Neurotic Physiology), ...}.

Given a domain of objects, and the extension of each predicate, we know the meaning of statements in the logic. We know what objects we're reasoning about, and we know the truth or falsehood of every statement. Importantly, we don't need to know the counterextension of a predicate: if we know the extension, then the counterextension is simple the complement of the extension.

In three-valued Lukasiewicz logic, that's not true, for reasons that should be obvious: if is the interpretation of the predicate , then the complement of is *not* the same thing as . requires *three* sets for a predicate: the extension, the counterextension, and the *fringe*. The fringe of a predicate is the set of values for which is .

To be more precise, an interpretation for first order consists of:

- A set of values, , called the
*domain*of the logic. This is the set of objects that the logic can be used to reason about. - For each predicate of arity (that is, taking arguments), three sets , , and , such that:
- the values of the members of all three sets are members of .
- the sets are mutually exclusive - that is, there is no value that is in more than one of the sets.
- the sets are
*exhaustive*: .

- For each constant symbol in the logic, an assignment of to some member of :

With the interpretation, we can look at statements in the logic, and determine their truth or falsehood. But when we go through a proof, we'll often have statements that don't operate on specific values - they use *variables* inside of them. In order to make a statement have a truth value, all of the variables in that statement have to be *bound* by a quantifier, or *assigned* to a specific value by a variable assignment. So given a statement, we can frequently only talk about its meaning in terms of variable assignments for it.

So, for example, consider a simple statement: P(x,y,z). In the interpretation I, P(x, y, z) is satisfied if ; it's dissatisfied if . Otherwise, must be in , and then the statement is *undetermined*.

The basic connectives - and, or, not, implies, etc., all have defining rules like the above - they're obvious and easy to derive given the truth tables for the connectives, so I'm not going to go into detail. But it does get at least a little bit interesting when we get to quantified statements. But to talk about we need to first define a construction called a variant. Given a statement with variable assignment v, which maps all of the variables in the statement to values, an x-variant of is a variable assignment where for every variable *except* , . In other words, it's an assignment where all of the variables *except x* have the same value as in .

Now we can finally get to the interpretation of quantified statements. Given a statement , is *satisfied* by a variable assignment if is satisfied by *every* x-variant of ; it's *dissatisfied* if is dissatisfied by *at least* one x-variant of . Otherwise, it's undetermined.

Similarly, an existentially quantified statement is *satisfied* by if is satisfied by at least one x-variant of ; it's dissatisfied if is dissatisfied by *every* x-variant of v. Otherwise, it's undetermined.

Finally, now, we can get to the most important bit: what it means for a statement to be true or false in . A statement is (true) if it is satisfied by *every* variable assignment on ; it's (false) if it's dissatisfied by every variable assignment on , and it's otherwise.

"Given a statement , P is

satisfiedby a variable assignment v if P is satisfied byeveryx-variant of v."I'm confused by your overloading of 'satisfied,' which makes this definition seem circular. Perhaps you meant:

"Given a universally quantified statement , is

satisfiedby a variable assignment if is satisfied byeveryx-variant of ."However, I don't understand why universal quantification is defined in terms of x-variants. Perhaps someone could give a motivating example for this?

(Apologies, I don't know how to get the math symbols to show up. Also, I'm using "true" and "if" a bit informally below.)

What you want to say is "AxPx is true if Px is true for everything you can substitute for x." But you can't substitute objects into sentences (and the alternative, "AxPx is true if Px is true for every

expressionx", gives you a dramatically different semantics, and probably not what you want). So you have to say "AxPx is true if Px is true under every assignment of x to something in the domain." The variant part comes in when you have other variables that you want to hold constant while you change what x is assigned to. E.g. "Assign y to something. Now AxQxy is true if Qxy is true for every assignment of x to something, keeping y's assignment unchanged."I appreciate very much your posts on Maths, Mark.

When you write about something unknown, one can always learn from your clever writing.

And when you write about something familiar, it's always a pleasure to go back to basics. I'm with Feynman on this: it's good to rethink about known subjects. There are always new ideas.

A couple of nit-picks:

"we define the semantics in terms of a model or interpretation of the logic"

I think it would be clearer and more accurate to talk about models or interpretations of sets of sentences of the logic.

" (Technically, a logic and an interpretation aren't quite the same thing, but for our purposes here, we don't need to get into the difference.)"

I think you mean "model" instead of "logic" in the above. And the difference is very easy to state: a model of a set of sentences is an interpretation that makes them all true.

"...what it means for a statement to be true or false in L3..."

I don't think that's entirely sensical. I think you can only talk about a statement of L3 being true or false given an interpretation.

Finally, what I think has gotten lost a bit in all the definitions is that (using ordinary letters for the quantifiers and "-" for "not"):

AxPx iff -Ex-Px

still holds in this logic, which is nice.

Does ExPx, -Ax-Px also hold here as in classical predicate calculus?

I meant iff ExPx, -Ax-Px of course.

"What we've looked at so far has been propositional 3-valued logics. Propositional logics aren't particularly interesting. You can't do or say much with them. What we really care about is predicate logics."

Interesting. I have Lukasiewicz's _Elements of Mathematical Logic_ here. In the section on "The Sentential Calculus with Quantifiers" he uses two rules... a rule for joining the universal quantifier, and one for omitting it. He says that these rules can get justified by the formulae CCpqCCprCpKqr, CCpKqrCpq, and CCpKqrCpr. I'd suspect rules involving the existential quantifier can justified by some conditionals involving alternations instead of conjunctions.

"The basic connectives - and, or, not, implies, etc., all have defining rules like the above - they're obvious and easy to derive given the truth tables for the connectives, so I'm not going to go into detail. "

This makes me realize that the number of basic connectives for a fuzzy logic must have at least the cardinality of the continuum (an infinity "larger" than the infinity natural numbers), since even for unary functions the number of inputs and outputs here both equal the cardinality of the continuum.

Mark,

I'm flattered that you like my book An Introduction to Three-Valued and Fuzzy Logics. Your lessons have come right out of that book, including the unique terminology that I introduced. That being the case, you should cite my book as the source for your blog entries.

Merrie Bergmann

So I guessed correctly! In a previous post: http://scientopia.org/blogs/goodmath/2011/01/31/more-3-valued-logic-lukasiewicz-and-bochvar/#more-1286 I said "

For those interested in learning more, I think Merrie Bergmann's book http://www.amazon.com/Introduction-Many-Valued-Fuzzy-Logic-Derivation/dp/0521707579/ref=cm_cr_pr_product_top, would work well. The terminology is quite similar, and I have a feeling Mark is using it."