Home » Why aren’t postfix and primary expressions symmetrical?

Why aren’t postfix and primary expressions symmetrical?


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).

Related Solutions

Calculate the sum with minimum usage of numbers

Here's a hint: 23 : 11 + 11+ 1 ( 3 magic numbers) 120: 110+ 10 (2 magic numbers) The highest digit in the target number is the answer, since you need exactly k magic numbers (all having 1 in the relevant position) in order for the sum to contain the digit k. So...

Why not drop the “auto” keyword? [duplicate]

Your proposal would be rejected on the basis of backward compatibility alone. But let's say for the sake of argument that the standards committee like your idea. You don't take into account the numerous ways you can initialize a variable widget w; // (a) widget...

Recursive to iterative using a systematic method [closed]

So, to restate the question. We have a function f, in our case fac. def fac(n): if n==0: return 1 else: return n*fac(n-1) It is implemented recursively. We want to implement a function facOpt that does the same thing but iteratively. fac is written almost in...

How can I match values in one file to ranges from another?

if the data file sizes are not huge, there is a simpler way $ join input1 input2 | awk '$5<$4 && $3<$5 {print $2, $5-$3+1}' B100002 32 B100043 15 B123465 3 This Perl code seems to solve your problem It is a common idiom: to load the entire...

Javascript difference between “=” and “===” [duplicate]

You need to use == or === for equality checking. = is the assignment operator. You can read about assignment operators here on MDN. As a quick reference as you are learning JS: = assignment operator == equal to === equal value and equal type != not equal !==...

Compiler complains about misplaced else [closed]

Your compiler complains about an misplaced else because, well, there is an else without a preceding if: // ... for (j=1; j<n-i; j++) { if(a[j]<=a[j+1]) { // ... } // END OF IF } // END OF FOR else { continue; } // ... The else in your code does not follow...

Bootstrap – custom alerts with progress bar

/* !important are just used to overide the bootstrap css in the snippet */ .alertContainer { border-radius: 0 !important; border-width: 0 !important; padding: 0 !important; height: auto !important; position: absolute !important; bottom: 15px !important; left:...

How to Garbage Collect an external Javascript load?

Yes, s.onload = null is useful and will garbage collect! As of 2019, it is not possible to explicitly or programmatically trigger garbage collection in JavaScript. That means it collects when it wants. Although there is cases where setting to null may do a GC...

Math programming with python

At first, what you are looking for is the modulo operator and the function math.floor() Modulo from wikipedia: In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus). for example: 12%12=0...

Android slide over letters to create a word [closed]

Here some advice you can use: First for each cell you can create an object that represents the state of that cell: class Cell { char mChar; int row,column; boolean isSelected; } then you can create a 2D array of your cells Cell[][] mTable = ... For views you...

Sum two integers in Java

You reused the x and y variable names (hence the variable x is already defined in method main error), and forgot to assign the ints read from the Scanner to the x and y variables. Besides, there's no need to create two Scanner objects. public static void...

Extend three classes that implements an interface in Java

Using this simplified implementation of the library, using method() instead of M(): interface IFC { void method(); } class A implements IFC { public void method() { System.out.println("method in A"); }; } As akuzminykh mentions in their comment You'd write a...

How to set the stream content in PHPExcel? [closed]

Okey, First thing first PHPExcel_Worksheet_MemoryDrawing() can't solve your problem if you insist to use stream content and pass that to your worksheet your PDF will not render your image. But you can use `PHPExcel_Worksheet_Drawing()' if you want to render...