But In mathematic sense, when A is B then B is also A

From a logical perspective, the verb “to be” is overloaded. In this sentence, “is” means “identity”, which is a symmetric, reflexive, transitive relation, so A = B <=> B = A. If Superman is Clark Kent, then Clark Kent is also Superman.

In the example you quoted, “a primary expression is also a postfix expression”, “is” means “for every x, if x has property A then x also has property B”. This is not a symmetric relation. For example, every human is mortal, but not every mortal is human. (Sometimes, this is shortened to “humans are mortal” or in this case “A human is moral, provided…”)

Another common use is “x is F” as in “Socrates is human”, where “is” means “exemplifies the property” or “has the property”. This is not a relation (not in first order logic, anyway), so the terms reflective/symmetric/transitive don’t really apply, but you can’t deduce from “Socrates is human” that “human is Socrates” or from “Socrates is human and Mike Tyson is human” that “Socrates is Mike Tyson”.

The difference is that Socrates, Clark Kent and Superman are individuals (and A and B are meant to be variables referring to individuals) while “primary expression”, “postfix expression”, “human”, “mortal” are properties.

Things get really weird when you have a sentence like “Socrates was Plato’s teacher”, because “Plato’s teacher” is a property, but only one individual has (had) this property, so it can also be used as a name for that individual (in fact, according to some theories of naming, proper names like “Plato” and “Socrates” are simply properties that are only exemplified by one individual and names of fictional characters like “Clark Kent” and “Superman” are actually properties that aren’t exemplified by anything). So you might deduce from “Socrates was Plato’s Teacher” and “Plato’s teacher was poisoned” that “Socrates was poisoned”. But this is really a border case that only works because Plato had only one teacher.

But In mathematic sense, when A is B then B is also A. I don’t get this. How come this is not true? what sort of logic is this or am i missing something here?

To give it a mathematical sense, you have to define the meaning of **is** in the sentence ”A is B” in a precise, mathematical way.

I will use small letters from now on (”a is b” instead of ”A is B”) to indicate elements of a set, and capital letters to indicate sets.

Take a set A and a relation R that is a subset of A x A, i.e. a set of pairs {(a1, b1), (a2, b2) … | a1, a2, b1, b2, … in A}. Instead of writing “(a1, b1) belongs to R”, write “a1 R b1”.

If the relation is

- Reflexive: for all a in A, we have a R a.
- Symmetric: for all a, b in A, we have that a R b implies b R a.
- Transitive: for all a, b, c in A, we have that a R b and b R c implies a R c.

then R is called an equivalence relation.

An example of an equivalence relation is the following:

- A is the set of all Java String objects.
- For any two strings s1, s2, define s1 R s2 if and only if s1.equals(s2)

A particular equivalence relation is the identity. R is the identify of a set A, if, for all a, b in A, a R b implies a = b. (‘=’ is equal in a mathematical sense).

An example in Java is the == operator on objects, i.e., for two objects o1, o2, let o1 R o2 if and only if o1 == o2.

Coming back to your question: “A is B then B is also A” refers to a symmetric relation, and the two Java examples above (relations induced by equals(), ==) are example thereof. In this case, a programming language feature corresponds to your “mathematic sense”.

There is however, another informal use of “A is B”. Let A and B be two sets, and A a subset of B. In this case we say “A is B” (e.g. a Dialog **is** a Widget) meaning “an element a of A is also an element of B”. In general, A is a subset of B does not imply that B is a subset of A. This is only the case when the two sets are equal. Note that the subset relation is a relation between sets and not between their elements.

If A is a subset of B but A **is not** equal to B, we say that A is a **proper subset** of B. In your example, the set of **primary expressions** is a proper subset of the set of **postfix expressions**.

So, according to the context and the precise definition of “A”, “B”, and “is” your statement “when A is B then B is also A” can be true or false.

You can look for examples of logic in programs, but the question I think you’re answering isn’t really appropriate (if you’re asking it as a logician), since **programs are sets of instructions not logical statements** (in the symbolic logic sense).