18 ms·
For mathematicians, = does not mean equality
- mabbo 8y agoTitle could use a touch up. On mobile chrome at least, I'm not seeing the "=" in the title.
- allthenews 8y agoOperators in mathematics are overloaded in a very similar way to operators in computer science (in languages that permit overloading). I think the author hints toward a good point: there is no use arguing over the meaning of "=" in a general sense, because the meaning is contextual. I think this whole discussion is merely indicative of inexperience on the part of computer scientists attempting to navigate mathematics.
- deleted 8y ago[deleted]
- roywiggins 8y agoCS already abuses equality all the time with big-O notation. Often you see stuff like f(n) = O(N²), when they mean that f ∈ O(N²). It's fine because everyone knows what's going on, but it's not using it in the sense of equality.
- gizmo686 8y agoMathamaticians also abuse big-O in a simmilar way. For instance we might say: sin(x) = x -x^3/6 + x^5/120 + O(x^7) To indicate that the terms we did not write are in O(x^7). Also note that, in this case, we are actually looking at big-O as x->0.
- xyzzyz 8y agoThe statement about sine above is not something mathematicians would write. It makes little sense to use big-O notation in this context, as it doesn't say anything useful here: the O(x^7) element absolutely dominates the remaining explicit elements of lower order, so including them tells us absolutely nothing. In fact, sin(x) = O(1). However, mathematicians do indeed use similar notation in this context, that is, little-o notation. It is in fact true that sin(x) = x -x^3/6 + x^5/120 + o(x^5), x -> 0.
- gizmo686 8y agohttps://en.wikipedia.org/wiki/Taylor_series#First_example https://en.wikipedia.org/wiki/Taylor_series#First_example https://www.wolframalpha.com/input/?i=taylor+series+sin+x https://www.wolframalpha.com/input/?i=taylor+series+sin+x Notice that in your example, you have o(x^5) and an explicit x^5 term. In my example I have O(x^7), but no explicit x^7 term. It is true that I cannot think of a circumstance where you want to do this abuse of notation and would care if you were forced to use little-o or big-O instead of the other. In my experience, it happens to be more common to use big-O.
- j2kun 8y agoI have definitely used big-O as the parent described. I think many mathematicians would write it in that way.
- proto-n 8y agoHave you considered that higher orders of x are in fact smaller when x is near 0? The parent comment was right and you are wrong, around zero x^5 absolutely dominates x^7 and the big-O notation is used. See for example here [1] [1] https://en.wikipedia.org/wiki/Taylor_series#First_example https://en.wikipedia.org/wiki/Taylor_series#First_example
- danharaj 8y agoSure it is, O notation denotes equivalence classes and being part of the same equivalence class is a perfectly cromulent notion of equality.
- gizmo686 8y agoBig-theta gives you equivalence classes. Big-O only gives you partial ordering. For instance, we might say x = O(x^2) and x=O(x), but we would not say O(x^2)=O(x). Interestingly, in my experience, some people will actually say O(x)=O(x^2), but that seems a bit too abusive for my liking.
- danharaj 8y agoYea, my mistake :)
- deleted 8y ago[deleted]
- svat 8y agoSigh; it seems it's only programmers who think CS has a monopoly on big-O notation, or keep calling it abuse of notation and trying to use ∈, when it's really = that's the standard notation in mathematics (and for good reason). Before Knuth popularized Big O notation in CS and started the field of analysis of algorithms, already in 1958 N. G. de Bruijn wrote an entire book on Asymptotic Methods in Analysis (not CS): see a few of its leading pages here: https://shreevatsa.wordpress.com/2014/03/13/big-o-notation-a-couple-of-sources/ https://shreevatsa.wordpress.com/2014/03/13/big-o-notation-a... And the notation was already being used by Bachmann in 1894 and Landau by 1909 in analytic number theory, well before computers. It was perfectly commonplace to use big-O notation with the equals sign very quickly: see e.g. this paper by Hardy and Littlewood (https://projecteuclid.org/download/pdf_1/euclid.acta/1485887376 https://projecteuclid.org/download/pdf_1/euclid.acta/1485887...) from 1914, well before even Turing machines or lambda calculus were formulated, let alone actual computers or analysis of algorithms.
- js8 8y agoI was taught to use tilde in big-O notation. Your use of "set element" operator is not quite correct either, because of the limit that's going on there.
- gizmo686 8y agoI don't think the limit is really an issue here. Most CS textbooks define big-O with the limit ->infinity part baked into the definition. So, this is more of an issue of different people using different definitions than an issue of abuse of notation.
- contravariant 8y agoWhile operators are 'overloaded' all the time, equality is a bit of a special case as it is part of logic rather than some algebraic operation. In model theory you don't require your models to have an equality operator, they have one simply by being logical constructs. Then again mathematicians use quotient spaces so transparently that you might as well consider: 5 = 1 (mod 4) as 'overloading the equality operator' even though the technical definition implies that those 5 and 1 are different from the 5 and 1 in the set of natural numbers, and in Z/4Z the symbols 1 and 5 refer to the same object.
- rsp1984 8y agoThis. It's even more obvious in linear algebra where mathematicians routinely start with the premise "Ax = b", even if there is no solution x that would satisfy the equation exactly.
- maho 8y agoI disagree: "Ax = b" is a statement. It does not need to be true. This is quite useful and often used for "proofs by contradiction".
- rsp1984 8y agoI see it being used all over the place as a starting point to solve for x, even if A is non-square and/or x ends up being a least squares solution.
- jcranberry 8y agoThe supposition in instances like these is one expressing a notion of equivalence, whether or not an equality results in a contradiction doesnt mean that the meaning of the symbol has changed.
- sirclueless 8y agoI vaguely remember writing question marks over equality signs when one was using an equals sign as a proposition.
- theparanoid 8y agoA succinct summary is that mathematics is about understanding a thing and computing is about describing a concrete process.
- jonnybgood 8y agoDepending on your philosophy of math, math also describes concrete processes.
- nothrabannosir 8y agoMinor note: > A = { n^2 : n = 1, 2, …, 100 } > In Python, or interpreting the expression literally, the value of n would be a tuple, producing a type error. (In Javascript, it produces 2.[link] How could it be Javascript if it didn’t?) That linked JS code uses ^, which is xor, not pow. Math.pow([], 2) = NaN. Or maybe that was the joke and it flew completely over my head.
- lotharbot 8y agoI suspect that's the joke. Making fun of how Javascript parses or evaluates expressions is a favorite passtime in programmer circles. See, for example, https://www.destroyallsoftware.com/talks/wat https://www.destroyallsoftware.com/talks/wat
- waynecochran 8y agoLisp has many flavors of "equal": = eq eql equal equalp string= ... Because equivalence mean many things in both the mathematical and programming world.
- raphlinus 8y agoThere are few more examples that come to mind, like statements about intervals (π = 3.14 ± 0.01) and the usual notation for modular arithmetic; 3 * 3 = 1 (mod 4). Oh, and the wonderful notation for integrals, ∫ 2x dx = x² + C
- vostok 8y agoIsn't the integral notation just saying that two sets (or equivalence classes or similar) are equal?
- romwell 8y agoThe integral notation is a set-builder in disguise: ∫ f(x) dx = set of solutions of diff. eq. g'(x) = f(x) Of course, writing ∫ 2x dx = { x² + C | C ∊ R } grows old pretty fast, so we drop a couple of characters here and there, but it's pretty consistent with set-builder. Of course, this only goes to show the article's point that what "=" means here requires a lot of context.
- lvh 8y agoThe usual notation for modular arithmetic uses three dashes, not two, to denote congruence.
- raphlinus 8y agoI probably should have said "common" notation; it's certainly what I learned. I think you're right in that many authors prefer ≡ to emphasize that it is an equivalence rather than equality relation. Source that both are in use: https://math.stackexchange.com/questions/196081/the-right-way-to-write-modulus-equation https://math.stackexchange.com/questions/196081/the-right-wa...
- lvh 8y agoYeah, sorry, I didn’t mean to split hairs. They’re definitely both in use. I do plenty of work in Zp and I feel bad every time I don’t write \equiv or the \pmod for that matter :)
- 8y ago
- xg15 8y agoFully agreed, though to nitpick: > Rather than precisely say, f(2) = 7, we say that for x=2, f(x) = 7. So x is simultaneously an indeterminate input and a concrete value This seems like a perfectly by-the-book piece of second-order logic with two equality predicates. i.e., the statement asserts that if you look at the space of all possible values for x, then for each value where the predicate "x = 2" holds, the other predicate "f(x) = 7" will also hold. It happens there is only a single value that will satisfy "x = 2", but that's not the equality's problem. So both = signs really are equality here.
- j2kun 8y agoFair point. I'd add that f(x) = 7 can be both equality of functions and equality of evaluations, and binding x=2 suddenly changes the meaning of the equality and the expression.
- xg15 8y agoTrue. I don't want to dispute that there is a hell of ambiguity in using =.
- diffeomorphism 8y agoI wouldn't call that ambiguity. While several shorthand notations use =, it is always clear from the context which one and only one is referring to (and if there are multiple that all of them agree). This touches on another point that one sees much of in mathematics lectures but little in math lectures. Mathematical notation needs to be unambiguous but also facilitate communication and hence tends to be very terse. Thus when discussing addition on a finite field F_5, one usually starts defining equivalence classes [j] and an addition operator "+" and then says that [3]"+"[3]=[3+3]=[5+1]=[1] followed by a disclaimer like: "We hence see that this notion is compatible with the previously defined one when identifying ... . Hence, if there is no possible confusion, we will simply write ..." See also Tao's comments on rigor in mathematics: https://terrytao.wordpress.com/career-advice/theres-more-to-mathematics-than-rigour-and-proofs/ https://terrytao.wordpress.com/career-advice/theres-more-to-... All notation can be made rigorous, if one wants to, but discussion is more concise if we let everybody do that by themselves.
- ChrisSD 8y agoI agree with the thoughts on the = sign but I'm not so sure about mutations. > If mutation is so great, why do mathematicians use recursion so much? Huh? Huh? > Well, I’ve got two counterpoints. The first is that the goal here is to reason about the sequence, not to describe it in a way that can be efficiently carried out by a computer. Most high level languages try to avoid making the programmer describe the most efficient way to handle variables. The idea is to describe your algorithms and how they connect and allow the compiler (or interpreter) to figure out how to use registers etc to implement it. Of course that ideal breaks down sometimes but most high level programmers don't normally need to stress the low level details too much. > My second point is that mathematical notation is so flexible and adaptable that it doesn’t need mutation the same way programming languages need it. In mathematics we have no stack overflows, no register limits or page swaps, no limitations on variable names or memory allocation, our brains do the continuation passing for us, and we can rewrite history ad hoc and pile on abstractions as needed to achieve a particular goal. It's true that there's a limit to abstractions even the highest level languages can make if they want to remain general purpose. However I think languages can handle immutable variables as a default. That's not to say I agree that programming should always follow mathematical notation. But I also don't think it's a bad ideal in many cases.
- theoh 8y ago>> If mutation is so great, why do mathematicians use recursion so much? > Huh? Huh? The deal here is surely that induction and other recursive approaches are conducive to being reasoned about in traditional mathematical contexts (e.g. taking a walk). Mutation is impossible to keep track of, mentally. Though others' mileage will vary on that.
- ChrisSD 8y agoFor the record the "Huh? Huh?" is a quote from the article.
- theoh 8y agoOK. Downvotes happily accepted; but I think we all operate in "peephole" mode now; the cost of tracing sources back to the original is significant. There is no karma to be had from complaining about HN's software, and yet it is so very inadequate.
- victorNicollet 8y agoInterestingly, when using mathematics to describe the semantics of programming languages (say, operational structural semantics for an imperative language), the assignment tends to use an arrow, i.e. S[ x ↦ V ] indicates that the new state is equal to old state S, but with variable x now bound to value V.
- evincarofautumn 8y agoMost commonly I see a “substitution” notation for that, S[V/x], but unfortunately there are dozens of variations in use, including: [V/x]S, [x ↦ V]S, [x ⇒ V]S, [x → V]S, {V/x}S, {x ↦ V}S, S_(x → V), S[V|x], S[x := V], S[x/V], S[x ← V], S[V\x], S(v/x), S{V/x}, S{x ↦ V}, S{x := V}, S{x → V}, S⦃x ← V⦄, S{x ← V}, …
- abhishekjha 8y agoAlso the asymptotic notation where f(n) = O(n^2) means a set membership operation.
- jcranberry 8y agoIMO one of the most irritating abuses of notation that I've come across given that it requires no additional effort to use the 'is an element of' symbol instead.
- abhishekjha 8y agoI agree. And given it is always introduced in an standard CS course I don’t see why they couldn’t have gone ahead with membership notation.
- contravariant 8y agoCould be worse. I've seen things like f(x) = g(x) + O(h(x)) a few times.
- abhishekjha 8y agoA few would be sn understatement as far as my algoritmic anslysis class went.
- svat 8y agoThat's not “worse”, that's the entire point of using O() notation! The beauty of O() notation is that it lets us carry out, fully rigorously, computations like (n + O(√n))(n + O(log n))^2 = (n + O(√n)(n^2 + O(n)) = n^3 + O(n^(5/2)) without dealing with a mess of sets and quantifiers. Please take a look at some works where asymptotic expressions are dealt with proficiently; you'll understand. (de Bruijn's book https://news.ycombinator.com/item?id=16834297 https://news.ycombinator.com/item?id=16834297 for example, or at least Chapter 9 of Concrete Mathematics.) I recently worked out an example here: https://cs.stackexchange.com/a/88562/891 https://cs.stackexchange.com/a/88562/891 — replacing all O() equations with “∈” and “⊆”, though it can be done ( https://math.stackexchange.com/a/86096/205 https://math.stackexchange.com/a/86096/205 ), is just cumbersome and only distracts from what's going on.
- kps 8y ago(I assume this was inspired by https://news.ycombinator.com/item?id=16803874 https://news.ycombinator.com/item?id=16803874) The use of ‘=’ for assignment in programming languages comes, not directly from mathematics, but indirectly from the use of mathematics in science and engineering. As an example, consider the formula for kinetic energy, commonly written 𝑚𝑣² 𝐾 = ─── 2 Why isn't it written 2K=mv², which expresses the same mathematical equality in a smaller, simpler form? Or any of the other equivalent rearrangements? It's because formulas have a convention, where the LHS is a single term naming the value you want, and the RHS contains the terms for values you have. That is, a formula doesn't just state an equality, it states a method for calculating something. That usage predates programming, and was explicitly copied by early programming languages like For[mula]tran[slator] that were designed for scientific & engineering calculations.
- jonnybgood 8y agoI believe it comes directly from conventional math exposition. In a general form it’s about emphasis. “The change of subject from “The dog bit the boy” to “the boy was bitten by the dog” is similar to the change of subject in a formula, as for example … In each case, the two sentences state the same relationship, but with different emphasis.” [1] [1] https://medium.com/q-e-d/that-loser-woman-mathematician-who-changed-my-life-7df96e218eb1 https://medium.com/q-e-d/that-loser-woman-mathematician-who-...
- no_identd 8y agoSpeaking of subject, I find it helpful to have awareness of changes in agent/patient, and not just object/subject: https://en.wikipedia.org/wiki/Thematic_relation https://en.wikipedia.org/wiki/Thematic_relation https://en.wikipedia.org/wiki/Agent_(grammar) https://en.wikipedia.org/wiki/Agent_(grammar) https://en.wikipedia.org/wiki/Patient_(grammar) https://en.wikipedia.org/wiki/Patient_(grammar)
- hyperpallium 8y agoBecause I started programming before taking maths at school, I didn't properly appreciate equality for a while. Sure, algebra was fine, a(x+y)=ax+ay can go either way; but not ratios and other relationships. What helped me was was geometry, where you can see it's just a relationship. All the components move together; one part isn't priviledged as the result. e.g. you enlarge a circle. It doesn't make sense to ask whether the radius made the circumference bigger, or the circumference made the radius bigger.
- jovial_cavalier 8y agoWhen you say 'i=0', what you mean is that that is the base case, and the sigma specifies a bunch of other cases. i_1 =/= i_2. As xg15 noted, it's perfectly fine to say (x=2) => (x + 3 = 5). The problem the first example really addresses is that in mathematics, the namespaces are loosely defined, but in programming they aren't. 'i' can mean several things at once, and it doesn't really matter because those things never really interact in the same context. In programming, you need to specify the name 'i' every time you want to reference it, so it's important that you have a stricter namespace rule.
- deleted 8y ago[deleted]
- MaxLeiter 8y agoCan someone explain why the JavaScript example equals 2?
- l_t 8y agoThe JS code in question: console.log([1,2,3,4,5,6,7] ^ 2); This produces 2 because ^ is the bitwise XOR operator in Javascript. Arrays are not numeric types, so they appear to be coerced to 0 for this comparison. In short, they are effectively logging "0 XOR 2", which is 2.
- mattnewton 8y agoI think it is actually NaN since it should be equivalent to Number([1,2,3])
- mattnewton 8y ago^ is XOR. The author’s “translation” to JavaScript made inconsistent changes in the notation. Here we’re XOR between 2 and a non numeric value, which is coerced into a Number (NaN I think here), and NaN bitshifted with anything gives that thing.
- thetruthseeker1 8y agoWhen I learnt programming, i was confused by x=x+1; After I understood what it really meant, I wondered why they didn’t use some other symbol to capture this semantic. Say something like x <- x+1 ; Which implies assignment rather than equality - That way this would be unambiguous and I feel is more clear. I now guess the choice of using ‘=‘ was probably an attempt at making a (compromised) choice given the limited symbols that were available back when High level languages were first written?
- gcmac 8y agoGo write a couple hundred lines of R (please don't actually do this R is atrocious imo) and then you'll understand why '=' is used instead of '<-' - because it's a pain in the ass, even with hotkeys
- abhishekjha 8y agoR has = as well which has been working equivalently for me so far. Any caveats?
- haZard_OS 8y agoHey, hey, hey! R IDEs give plenty of options which utterly mitigate such alleged difficulties: https://stackoverflow.com/questions/1741820/what-are-the-differences-between-and-in-r https://stackoverflow.com/questions/1741820/what-are-the-dif...
- egwynn 8y agoSome languages made slightly better design choices, just not the ones that became super popular! https://en.wikipedia.org/wiki/Assignment_(computer_science)#Notation https://en.wikipedia.org/wiki/Assignment_(computer_science)#...
- kirillseva 8y agothis is exactly how R syntax works
- jcranberry 8y ago
- smadge 8y agoSome authors might prefer -- \ / -- 0 < i < n Ass opposed to n -- \ / -- i = 1
- abhishekjha 8y ago0 < i <= n or upto n-1 respectively.
- vlasev 8y agoSometimes we even leave it as "i" instead of "0 < i < n" or "i = 1 to n". Sometimes the range of the summation doesn't even need to be determined in intermediate steps.
- EvilTerran 8y agoThere's also this formulation, which I'm quite partial to: --- \ / --- i∈[1,n]
- lou1306 8y agoSome more food for thought on the meaning of =, from Girard's "Proofs and Types" [0]: > There is a standard procedure for multiplication, which yields for the inputs 27 and 37 the result 999. What can we say about that? A first attempt is to say that we have an equality "27 x 37 = 999". This equality makes sense in the mainstream of mathematics by saying that the two sides denote the same integer [...] but it misses the essential point: There is a finite computation process which shows that the denotations are equal. > [...] if the two things we have were the same then we would never feel the need to state their equality. Concretely we ask a question, 27 x 37, and get an answer, 999. The two expressions have different senses and we must do something (make a proof or a calculation, or at least look in an encyclopedia) to show that these two senses have the same denotation. [0]: http://www.paultaylor.eu/stable/prot.pdf http://www.paultaylor.eu/stable/prot.pdf
- pron 8y agoJust a bit of background: Girard is paraphrasing Frege's famous paper On Sense and Reference[1] which is an investigation into the meaning of equality. As a result of that investigation, Frege shows that terms in a language have at least two kinds of meanings (sense and reference or denotation), which Girard presents in a programming context. [1]: http://www.scu.edu.tw/philos/98class/Peng/05.pdf http://www.scu.edu.tw/philos/98class/Peng/05.pdf
- cortesoft 8y agoOh man, I took a great class on that paper in college. Spent the whole quarter reading it, yet lecture was always interesting.
- jtc1983 8y agoThese quotes from Girard are great, as is the mention of Frege below. Typically, the objects related by equality can be thought to have the same meaning with respect to extension and different meanings with respect to intension. Further, the difference in intension reveals something of the computational content of the extensional object being referred to. Further topics to explore: the BHK interpretation of intuitionistic proof and the univalence axiom in homotopy type theory. Both of these topics give one some insight on the relationship between the computational content of mathematical objects and how this content pertains to the question of whether two objects are “the same.” Finally, I did skim the article itself and found it lacking. The author seems to be aware of the fact that there are surprising, highly non-trivial properties of the (seemingly trivial) notion of equality in mathematics. And also to be aware of the fact that the use of ‘=‘ in CS contexts isn’t some sort of abuse of notation. But there seems to be very little of interest here beyond some circumstantial verification of these two general (and well-known) facts about equality in the mathematical and computational contexts.
- sykh 8y agoThink about the equation x + 3 = 1 Typically we write that the solution is "x = –2". This to me is the most abusive form of usage for "=" in mathematics. The solution to the equation is –2. The solution to the equation x = –2 is also –2. Solving the equation x = –2 is very easy. We can solve it just by looking at the equation. What we are really doing when solving an equation is transforming the original equation into a simpler equation with the same solution set. Tt gets tedious to write this all out so we just say things like "the solution is x = -2" when we've transformed the original equation to x = –2. This is weird because x is not the number -2. x is a variable that can assume a myriad of values. The only value of x that solves the equation is –2. As the article states the abuse of the = sign in mathematics is rampant. We do it mostly without realizing it. In this sense mathematical language mimics human languages. All human languages are prone to abuse of rules and to shifting with the times. The notation in mathematics, while much more precise than spoken human languages, is abused frequently and the purpose is to make things cognitively easier. The ancient Greeks didn't have symbols for numbers and in their mathematics they wrote everything out in Greek. This makes it very hard to do tedious calculations. Using symbols in lieu of writing out all the minutia makes doing math easier provided you learn the contextual meaning of the symbols. Over the centuries symbols have been introduced as a shorthand for complex ideas/objects/operations. If you want everything precisely stated then reading Principia Mathematica ought to cure you of this desire. Mathematics is written by humans for humans. Code is written by humans for computers and hence the notation needs to be rigorously defined in the language you are using and why your code needs to be commented.
- CJefferson 8y agoI disagree. If you are saying 'the solution's is -2, you have to be clear what the problem is. This becomes clearer when you have a problem with multiple variables. Then saying 'x=-2, y=3', makes clear the value each variable is taking in the solution.
- sykh 8y agoSolutions to equations in multiple variables are ordered tuples. For instance, x y + 2 = 0 has infinitely many solutions. One of them is (1, -2).
- wcr3 8y agocute, but syntax is like < 50% of this. next step is addressing this as an ontological question.
- deleted 8y ago[deleted]
- cconroy 8y agoAlan Kay had a good answer on quora for this. Let me confess that I’ve not read every answer. But the ones that I did read were all very concerned with “squaring” etc. The simplest answer — and I think the reason many people have difficulty with both arithmetic and especially algebra — is that you need to deeply internalize just what the “=” sign symbolizes and asserts: that there is the very same number on each side. In other words don’t be distracted by the symbols and operations. One way to think about this is that “a number is all the ways you can make it” (i.e. it can be thought of as “processes” (an infinite number of them) as well as a “value”). This means whatever you can do to any number can be done on both sides of the “=” because there is just the same number underneath the gobblydegook on both sides. This is what “=” actually means. And it’s why algebra is actually quite easy rather than mysterious or difficult. [0] [0] http://qr.ae/TU1SxJ http://qr.ae/TU1SxJ
- cconroy 8y agoI also think prolog has the most advanced sense of this concept with equalities and unification operators.
- howling 8y agoAll these discussions of "=" are missing the point. The notation "x = x + 1" is awful because at lhs x denotes a reference to an integer while at rhs x denotes the value hold by the reference. If you know C, it is similar to the difference between an integer pointer *x and an integer x. As an illustration, here are two programs that are doing the same thing, one in C and one in Haskell. #include <stdio.h> int main() { int x = 0; x = x + 1; printf("%d\n", x); return 0; } import Data.IORef main :: IO () main = do xref <- newIORef 0 x1 <- readIORef xref writeIORef xref (x1 + 1) x2 <- readIORef xref print x2
- harrygallagher4 8y agoI noticed this recently when I was trying to define a note-taking syntax for my math classes. I thought it would be smart to use := for definitions and = for equality, but then I was frustrated when = didn't always mean equals in the same way, and some things didn't really fit into either category. I ended up just giving up and switching back to abusing = in all situations. I think math has a really cool human aspect, it's very rigorous but also relies on the fact that your notes/proofs/whatevers are going to be read by a person.
- internetman55 8y agoI don't mean to be rude cause this seems like a really interesting and well researched article, but my question is what an I gonna gain by reading it
- hyperpallium 8y agoGeometry distinguishes between equivalence and value. An "angle" isn't its degrees, but the geometric figure (two rays or segments meeting at an end-point of each). It's the measure of the angle that is the degrees. You don't say "angles are equal" - you say they are congruent. It's their measures that are "equal". Although congruency implies measure equality, it doesn't really mean that, but that the shapes are the same (can be rotated/translated to coincide).
- vinchuco 8y agoMeasures are equal if and only if angles are congruent ?
- fjsolwmv 8y agoCongruent means that you have some relevant information that you are discarding (projecting away) information, such as position and rotation. It's just as correct to say equal if you've already established the relevant context / quotient space. Two triangles on a page are congruent, because they have different position. The three corners of an eauikao trisne are congruent, because their corner+angles are equal. If you take angle to mean corner, you say congruent. If you aren't also talking so about their position, you say equal. In math you can slice things every which way, so it's impossible to use the different words for every different concept, so you have to establish a context Equal vs congruent (and equal vs equivalent, which are also synonymous in math) is a crutch for beginners who are over reliant on their informal intuition.
- jasonkostempski 8y agoAren't we all taught to write "y = 3" as the answer to algebra questions? That's how I always thought of it, not as assignment, but as a declaration of truth.
- deleted 8y ago[deleted]
- grosjona 8y agoI remember thinking the same thing after reading https://www.hillelwayne.com/post/equals-as-assignment/ https://www.hillelwayne.com/post/equals-as-assignment/ Math symbols and expressions are inconsistent just like regular languages. But, unlike math, other languages don't claim to be consistent. It's not surprising that John von Neumann said "in mathematics you don't understand things. You just get used to them." - I've never heard a software developer say this about coding. For example, I did not enjoy integrals at school because of the 'dx' at the end which means 'with respect to x' but which actually looks like a multiplication (* d * x). I think that the reason why I never got deep into math is because the language of math is too inconsistent and has too many logical shortcuts and I can't operate in such environment.
- analog31 8y agoMy understanding was that the "d" is an operator, and there are notations in which an operator on an operand is notated by just putting the one before the other. Also, the dx corresponds to delta x in the limit definition of the integral. One reason for keeping it, is that it makes the units of measure work out if the integral involves things that have units. So, notational consistency aside, it saved my arse when doing physics problems. ;-) (even in my pure math classes, I sometimes imagined that the variables had units, to help find mistakes). But your point is well taken about the consistency of math notation. Math spent most of its history being scribbled by hand and read by humans. It got the job done. And it was not uncommon to invent a new notation on the fly to replace an abstraction with a single symbol. That's the precursor to the subroutine. The need for perfect formality of notation is a new thing, brought on by the computer age. This may illustrate the point that programming is not "just math," and math is not a form of programming.
- fjsolwmv 8y ago> I've never heard a software developer say this about coding. This is sarcasm, right? We say this all the time about legacy spaghetti code or excessively clever magic our languages or (closest to von Neumann's statement, perhaps) the mountain of APIs and libraries and OS we use..
- smadge 8y agoI agree that “=“ as interpreted by people doing math requires context, but in most situations they are able to translate it into a “correct” or formal notion of equality. For example, translating on the fly these ad hoc notions of equality into precise notions of equality in first order logic and/or set theory. For example, f(x) = 2x + 3 Might be translate into something like, For all x in the domain of f, f(x) = 2x + 3 Or maybe further, f = { (x, y) in Cartesian product of domain and codomain | y = 2x + 3 } Where equality is, I think, strictly defined here as set equality. The articles other point in this example is that we might way “when x = 2, f(x) = 7.” Claiming that x is used both as an indeterminate value and a concrete value. Again, I think the ambiguity is resolved when translate using the correct quantifies, something like “for all x in the domain of f, if x = 2, then f(x) = 7.” Or perhaps you might claim, “there exists an x in the domain of f such that f(x) = 7.” The important point being that the function f is formally NOT the formula f(x) = 2x + 3, but a particular set of ordered pairs, of which you can make formal statements about in first order logic. Another example used was A = {n^2 | n = 1, 2, ... 100} But again this is just “syntactic sugar” that a reader would translate into perhaps A = { n^2 | n in {1, 2, ..., 100}}
- triska 8y agoThis comment contains an important key distinction between different usages of "=" that are often casually intermixed in such discussions: There is a major difference in how we quantify the logical variables that occur in formulas. For example, if we consider the atomic formula x = 5+y, then we may mean the identity ∀x∀y (x = 5+y), where all variables are universally quantified. Or we may mean ∃x∃y (x = 5+y), where the variables are existentially quantified. To determine whether this holds, we can search for a solution given by a substitution that makes the terms equal modulo some theory E we associate with =. If E is empty, then this corresponds to syntactic unification. Confusingly, in the literature, sometimes "equation" is used for both, and an entire subthread in this discussion is due to this issue. When one is asked to "solve for x" etc., then one answers whether there is any solution, thus solving the existentially quantified version. When one means "this identity holds", then one states the universally quantified sentence.
- 8y ago
- giomasce 8y agoThe author itself admits in the postscript that he has embellished a bit the article, but allow me to take it at its face value: to me, it seems that the article confuses mathematics with its notation (and the same for computer science, but at this level CS is just a branch of mathematics). All the funny stuff he goes on describing follow from this confusion. When a mathematician does mathematics, they have very well defined concepts for "equality", "equality up to some equivalent relation" (my preferred: "equality up to diffeomorphisms that are isotopic to the identity") and so on. However notation is chosen saving on clarity and conciseness, sometimes at the expense of the direct mapping with underlying mathematical concepts. Thus in some case the sign "=" is meant to mean equality (in a certain sense), in some other cases it is not. Computer languages make no exception: they are nothing else than formalisms to express computations. As for every other formalism, the meaning of signs is chosen to be what appears most comfortable in that context by the formalism designer. The statement "x = x+1" has very different interpretations depending on whether you consider it written in C or in standard polynomial equation theory; but in both cases there is a well known meaning for it. In exactly the same way the word "case" has different meaning depending on whether your are reading in English or in Italian.
- deleted 8y ago[deleted]
- fjsolwmv 8y agoThe article and the article it is written in response to are explicitly about notation, not semantics.
- ttctciyf 8y ago> The usual way to get half an apple is to chop one into "two equal parts". Of course, the parts are actually NOT EQUAL - if they were, there would be only one part! They are merely ISOMORPHIC. - John Baez ( http://math.ucr.edu/home/baez/week147.html http://math.ucr.edu/home/baez/week147.html )
- qxmat 8y agoI have an engineers understanding of higher maths - overly general and very patchy. Short of taking an undergraduate math course, are there any resources to help me parse math notation? For example, while brushing up on endogeneity/exogeneity, E[B'|X] = 0 completely threw me - I had to search Google for the use cases of a bar/pipe aka latex vert/mid. I usually lose interest in a paper if I get stuck trying to decode the syntax.
- xiaq 8y agohttps://en.wikipedia.org/wiki/List_of_mathematical_symbols https://en.wikipedia.org/wiki/List_of_mathematical_symbols Also, if I were you, I would always look up introductory textbooks before trying to read math literature. The example you gave is conditional probability; any textbook on probability theory would cover it.
- deleted 8y ago[deleted]
- vinchuco 8y agoHumans are compilers of math. '=', like number, means that concept, regardless of instantiation. Beyond that note, I don't see the value in listing all the ways you could interpret notation. Maybe you would also find it entertaining to list all the ways a program can interpret a binary string?
- OscarCunningham 8y agoOne can at least say that in formal ZFC the symbol "=" has exactly one interpretation. And it's this interpretation that people talking about Haskell are referring to.
- amelius 8y agoI think of mathematical = as similar to a let-binding: it's valid within a certain context.
- nilanp 8y agoJeremy – I’m a mega fan of your work. But think going deeper into this is quite fun Your post goes to the point at the heart of philsophical number theory. What does equality mean ? Yup – you got functinal equivalence, isomorphism, and temporary assignment of values. But I think you could prove – that all these types of equality – are “instances” of “different implementations” of “equivalence. They are no more equivalent than 1 = 1 is equivalent. I.e. 1 = 1 means I think we can define a bijective “counting function” that proves there’s the “same number” of “elemetns” in the “sets” I think (not sure) – if you define – counting fucntion / same number / elements / sets differently – you get the differing definitions of equivalence you enumerate. The interesting thing for me is that 1 = 1 is defined clear in 4 of peano’s axioms https://en.wikipedia.org/wiki/Peano_axioms#Formulation https://en.wikipedia.org/wiki/Peano_axioms#Formulation And you could mentally – try to develop different (and potentially) – more powerful notions of “equivalence” – with differing axioms A final point… the prevalence of several “similar” concepts of equivalence in computer science – may point to an underlying “platonic idea” of equivalence – that either exists dormant in the world awaiting for us to discover it; or is a useful “technologocial” construct – that has accelerated “progress”