Hacker News new | past | comments | ask | show | jobs | submit login
Much less than, Much greater than symbols (johndcook.com)
96 points by chmaynard on Sept 12, 2021 | hide | past | favorite | 93 comments



≪ / U+226A / MUCH LESS-THAN

≫ / U+226B / MUCH GREATER-THAN

not to be confused with:

« / U+00AB / LEFT-POINTING DOUBLE ANGLE QUOTATION MARK

» / U+00BB / RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK

Switching one for the other is a frequent tactic of phishing attacks. Kidding.


Maybe not phishing attacks, but certainly text-to-speech attacks


what is the goal of that attack?


Mostly tongue-in-cheek. Twitch donations get text read aloud on streams at times: https://www.twitch.tv/a_seagull/clip/BlightedPreciousEchidna...


This led me to learn:

    ⋘ U+22D8 VERY MUCH LESS-THAN
    ⋙ U+22D9 VERY MUCH GREATER-THAN
... which for some reason made me chuckle.


Got me curious so I just did a search for "less than" and found some more interesting ones:

≰ NEITHER LESS-THAN NOR EQUAL TO - https://www.fileformat.info/info/unicode/char/2270/index.htm

≨ LESS-THAN BUT NOT EQUAL TO - https://www.fileformat.info/info/unicode/char/2268/index.htm

⪒ GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL - https://www.fileformat.info/info/unicode/char/2a92/index.htm


>LESS-THAN BUT NOT EQUAL TO

what's the point of this? This is already implied with just "<"


"<" is used to represent partial-order relations, and partial orders are often non-strict (i.e. really less-than-or-equal). Then LESS-THAN BUT NOT EQUAL TO can be used to denote that a particular pair is partially-ordered but not equal (i.e. strict partially ordered). In the same vein there’s also SUBSET OF WITH NOT EQUAL TO (U+228A).


I don't understand. "equal" and "less than" are disjoint. "subset" and "equals" are not disjoint (equal sets are each others subsets), so that's a whole different example.


In mathematics, the symbol "<" is also used for non-strict partial orders, where it effectively means “less than or equal to” instead of “strictly less than”. Working with non-strict partial orders is often easier than working with the equivalent strict partial order, and for economy of notation/ease of writing some mathematicians still use “<“ then instead of “≤”. In the rare cases they want to express strictly-less-than for a particular pair in the non-strict partial order, they can use the “less than but not equals” sign.

> "subset" and "equals" are not disjoint (equal sets are each others subsets)

There is “⊂” vs. “⊆” just like there’s “<“ vs. “≤”. A set is not a strict subset of itself, merely a non-strict subset of itself.


> and for economy of notation/ease of writing some mathematicians still use “<“ then instead of “≤”. In the rare cases they want to express strictly-less-than for a particular pair in the non-strict partial order, they can use the “less than but not equals” sign.

This is pure bullshit of the highest grade. Is is a perfect example of newspeak. "The symbols I use mean what I say they mean whenever I say so". It is gatekeeping. It is part of what makes math impenetrable for a lot of people. It is lazy. It is absurd. Such a lack of consistency is absurd for a rigorous field like math. It is a perfect example of my belief that mathematicians are abysmal linguists. I do not understand why mathematicians have this attitude towards their communication medium. If I could ask a genie for a wish, I would force the use of a compiler and a linter on all mathematicians. If your paper does not pass compilation and linting it gets automatically deleted. Bullshit!

/rant


Thanks, now I understand.


How is the ⪒ used?


I could see people using this symbol when proving for example that x = 0. Say they first show x \geq 0 and then x \leq 0. Then they've shown x ⪒ 0, and therefore x = 0. But yeah, a symbol like '⪒' for this purpose is maybe natural to write on a blackboard, maybe not so much in electronic form.

I'm not aware of any other purposes.


If a ≤ b or b ≤ a. That does not always have to be the case. For example, x ≤ y could mean that x is a descendant of y in a tree.


Interestingly, that last one seems to be missing from LaTeX.


now I want the also the absurdist VERY MUCH LESS-THAN OR EQUAL


Would that be an implicit inclusive or (i.e. very much less than, much less than, less than, or equal), or exclusive (very much less than or equal, but not much less than or less than)?


Exclusive, I reckon.


I want "much equal to", and "very much equal to". Which, in scientific terms, or floating point comparisons, would probably make some sense


  0 ⋘===8


Oh God yes


This triggers a doge meme in my mind... Wow, such very much less-than!


When you're trying to convince STEM professionals to go from hand written design documents to computer generated, you'd better be able to reproduce every little symbol that they're accustomed to using, or else it's just an excuse for non-compliance.

Something like:

(X+1)/X ≈ 1 for X ⋙ 1

We actually use a bit for showing derivation work on engineering design documents, especially for stating requirements for an equation to be valid. Or for equations that need to be simplified to be algebraically solved.

A one line equation might have two pages of definitions, assumptions, and constraints.

In this case, ⋙ is used to mean not just much greater-than, but big enough to justify whatever the simplification it is that you're making.

Eg, 10 could be considered much greater (≫) than 1, but is still a 10% error in the equation above.


This is getting ridiculous. How long until we have things uncountably more than other things?


Could you combining-character an aleph-1 symbol on top of one of these?


In math, when you care about the details of how small one thing is compared to some other thing, you probably use little-o notation. It's the same thing you're probably familiar with from computer science.

So if y is small compared to x, you might say y = o(x), or if it's really small compared to x, you might say y = o(x²), or if it's really really really small, o(x⁶)... whatever you need for your proof.

(o(x²) is more impressively small than o(x) because x < 1)


Nice

That reminds me of something about the Greek letters Omega (Ω, ω) and Omicron (Ο, ο). O-mega means "big O" and O-micron means "small O".


Isn't that +∞ and -∞?


Some infinities are countable.


Yes, but the GP's idea extends to larger infinities.


It seems closer to the aleph numbers.


To me, a << b also connotes that the inequality a < b is "robust". For example, even if we mismeasured the values of a and b quite severely, we'd likely still have a < b. Or perhaps later on in my mathematical argument I will consider values that are a bit larger than a, say 5*a. If I claimed before that a << b, it means the reader can be assured that I won't do anything to a that'll make it bigger than b.


Also, a <<< b connotes that for all practical purposes a + b = b.


There are more puzzling mathematical symbols in “Supplemental Mathematical Operators” unicode block: https://en.m.wikipedia.org/wiki/Supplemental_Mathematical_Op... .

I’m especially fascinated by ⪋ ⪌, ⪑ ⪒, and ⪓ ⪔.

I wish that wikipedia page came with notes on the intended use (or a link to the relevant page) for every symbol.


I’ve seen this used in the context of statements like “x is less than, equal to, or greater than y if and only if w is less than, equal to, or greater than z”. Which might be written “x ⪋ y if and only if w ⪋ z”.


When is x not less than, equal to, nor greater than y ? Is it like, x is complex and y isn't?


The original text is meant to mean a triple of statements:

x < y if and only if w < z

x = y if and only if w = z

x > y if and only if w > z

This can be tiresome (and obviously confusing) if you need to keep using it in many places, hence some authors define the odd symbol to start with, and then use that in many places.


“If and only if” also has a shorthand in “iff”.


Surreal games[1] are probably my favorite example. But any partially-ordered set without total order can be an example.

[1] https://en.wikipedia.org/wiki/Surreal_number#Games


For partial orderings, we can have neither a ≤ b nor b ≤ a. Perhaps it's that?


A funny thing is, I've seen Congressman Thomas Massie (EE undergrad, MechE masters) casually use this notation on his Twitter account.


The issues we face are complex and technical enough that I would like our leaders to be well-educated, preferably better educated than me or the public in general. It reminds me of the time ‘orthogonal’ came up in oral arguments and it was such a novel word for the Supreme Court that a justice paused to ask and remark on the word.


> The issues we face are complex and technical enough that I would like our leaders to be well-educated

I don't think we are facing much complex issues beyond anyone's grasp. Of course it takes some level of study to understand the issues, but as the french citizen convention on climate [0] (started by the government itself) has shown, given appropriate information ordinary citizens are very capable to grasp complex issues (and ordinary leaders are very capable to ignore those citizens and wipe their asses with their proposals).

What you advocate for, whether consciously or not, is not a democracy but a form of technocracy [1]. It sounds like a good idea at first, but:

- centralizing power (eg. in a parliament/government) is always always the recipe for abuse [2], even if you take the 500 best people you can think of

- political issues are not just technical issues, and we science/tech people from our somewhat-comfortable ivory towers are in a very bad position to make diagnostics on what goes right and wrong in society (except on a micro level where our science applies)

- solving complex problems requires a level of coordination/participation which can only be consented; trying to force the people against its will "for its own good", often results in exactly the opposite of what you wanted to achieve in the first place

All in all, i would personally argue as long as "leaders" is a thing there's a very little hope for humanity.

[0] https://fr.wikipedia.org/wiki/Convention_citoyenne_pour_le_c... [1] https://en.wikipedia.org/wiki/Technocracy [2] One could argue if you have elected representatives deciding for the people, then it is not a democracy because the power is not operated by the people directly.


I feel like orthogonal is a fairly basic logical concept, which makes that a little concerning.


I once made a bet that most people know what a prime number is, being sure that at least for my closest environment of 5-7 highly educated people it is undoubtedly true. A bet was lost after a quick asking round - I’ve got only a couple of confident answers. But what hit me hard was not that the specific term was forgotten, but that most of them were not even familiar with the concept.

Another thing I figured out too late is that after someone (not me) explains a complex topic to a group, everyone seems to agree by silence and ready to get to work on it. But my habit of asking if they understand the terms A and B and how it all works made me discover that essentially nobody gets it. People just don’t ask questions and delay their research for some reason. A thought that maybe they do that all the time in every situation or conversation is pretty discomforting.


I'm coming to the same conclusion; it blows my mind how people can just run off and confidently implement something vaguely related to what was talked about. People seem very sure about what's supposed to be built, its context, and how. No questions asked. (am I the stupid one for not understanding?) Turns out they just made something up in their head that didn't make sense. As a leader, how does one work with such people? It feels condescending quizzing your team members to verify understanding and I can't spend my time specifying work down to the most minute details.


In a competitive environment it's a strategy to look smarter than your peers. The hope is that they can go and figure out whatever they missed during implementation (often this is not the case, of course).

There's social value in appearing to "get it", and social cost in being the one to ask (especially if others in the group, hearing the explanation, pretend they knew all along).


I'm sure there is a more elegant way of saying this, but I judge people a lot more for coming back 2 days later with a solution to the wrong problem than silly questions asked on the spot.


All of my initial conversations with clients start with me asking them (usually multiple times in different ways) what they’re actually trying to achieve. A large proportion of those conversations end with them saying they have to go figure that out.

A surprising amount of human activity takes place with no clear understanding of the goal.


I just joined a new software team. I had a time where I felt like I couldn't really get a point across to a teammate. Not that he didn't agree, but I just didn't feel understood. Then it happened with someone else. Well, after the seventh time with the fourth person over the third medium, the common denominator became obvious (me).

I think part of the problem is my whole team is honest and direct. They really engage with ideas. Sometimes they'll engage with an idea different than the one I intended to communicate. Because they're really taking the idea on, the misunderstanding will stand out.

Maybe most people don't do that as often. They just nod along and passively agree. Only when it comes to the final decision/action will they fully engage. And if they disagree with that, they'll let you know (maybe) even if they've been uh-huh-ing every supporting argument on the way.


I’d imagine the justice knew perfectly well what it meant in common usage, and was just checking that there wasn’t some obscure precedent establishing another legal meaning. No different to a software developer seeing a function called “push” and checking the documentation to find out exactly what it does.


Astounding to see that an MIT graduate "rejects the scientific consensus on climate change " (Wikipedia).


Unlikely that anyone intelligent rejects the actual science part of it, which is not controversial. What they reject is the media-politician complex’s version, which then gets reported — by the same media — as “rejecting the science”.


If one is educated, sensible, and insists on telling people the truth about important or should-be important issues - how sustainable Social Security is in the face of demographs and fiscal realities, whether the war in Afghanistan is winnable, how much of a congressman's time every week must be devoted to fundraising from special interests, etc. - then one will serve zero or very little time in Congress.

"In a democracy, the people get the government they deserve." - Alexis De Tocqueville


You didn't know that Wikipedia is editorialized by the left?


Looking at his record, he's one of those democratic representatives who takes the broad endorsement of a fiercely Right Wing local electorate to mean that he should ignore what's politically possible and fight for whatever he and his voters believe anyway -- but only when it doesn't matter.

So that means things like when there's obviously very broad support for a measure, insist on a roll call vote, wasting the time of every other member so as to underscore your opposition to say, clean water, or food for the poor. But, as with so many of these "principled" Republicans, when it's very narrow and every vote counts suddenly he's straight party line Republican...

In the UK we have people like Peter Bone, Bone opposes same-sex marriage, abortion, wants to see the Death Penalty brought back, as well as mandatory conscription. He sees the NHS as dangerous example of socialism, "like Stalin's Russia".

But Westminster has more experience than Washington, and so it's a little harder to be disruptive. Bone can introduce "Private Members Bills" which could become law but, lacking support from either government or the opposition, they aren't likely to go anywhere. By convention the readings of these bills are scheduled for Friday afternoon. So, almost everybody goes home, people like Bone are left in the chamber to ramble on about how it'd be a great idea if Britain's threadbare Army was made to try to turn unwilling 18 and 19 year olds into soldiers, as if a vast unskilled infantry is something you need in the 21st century; or why a foetus is a "human person" or whatever - and then eventually it comes to the point where there's supposed to be a vote. The Deputy Speaker who drew the short straw and is obliged to be there pretends to hear a controversy in the mostly empty room, "Division!" and this causes a count, which of course finds that the chamber is inquorate and thus incapable of anything, Bone wasted his time and that of a handful of the other representatives (who won't forget it) and civil servants, but most people went home early.


yeah plenty of politicians and political personalities are very accomplished and technical, doesn’t stop them from spewing the total nonsense required to attract attention (this is bipartisan). the far right extremist who got banned at 80k followers recently is a MIT grad and Yale polsci, but still endorsed all the Covid quackery he (probably) knew was nonsense


Huh, it's funny but I have seen >> to the nth degree used in casual internet slang to indicate a similar concept. Almost certainly just used intuitively for emphasis, but it's interesting that it's also a real notation.


Yes, I remember on IRC in the 90s people would use ">" to mean "better than", and ">>" to mean "much better than" (like "chocolate >> vanilla"). I still see this usage occasionally on other platforms (matrix, slack), but not all that often anymore.


Isn't this notation very common and widely used in school Mathematics?


Well, sort of. The notation is common in the sense that if you're taking a math class where the concept is relevant, that's what's going to be used. But it's not so common to take a class like that.


I’d imagine both are the result of the same emphasis-by-repetition.


That depends on the context or the language you are using. In some computer languages those signs can mean entirely different things.

In the bash scripting language '>>' means 'append to the named file' as in:

     echo "what?" >> my_file
In C, '>>' means 'shift the value right by one bit' while '<<' means 'shift the value left'. However, in C++, '<<' can also mean 'write to standard output'.

No confusion at all possible, ya think?


> However, in C++, '<<' can also mean 'write to standard output'.

This is where I shake off the cobwebs and ancient dust and lost memories from my childhood to point out that I somehow still know that << is the insertion operator. It does more than just write, and it can write to more than just the standard output stream.

https://www.cplusplus.com/reference/ostream/ostream/operator...


However, despite having doubled down on this particular oddity rather than abandoning it as a bad idea in the C++ 11 era, operator<< isn't really "the insertion operator" because you'd obviously give that a different precedence if it existed.

It's an overload for the left shift operator, and keeps the natural precedence of this operator (slightly lower than addition and subtraction) which leads to occasional surprises because something like:

out << x == y;

... is actually outputing x, and then comparing y to the out stream not to x, and then throwing away the result, even though that's clearly not what anybody intended.


"<<"'s meaning in C++ is never "write to standard output". That is the output streams overloading the operator for their own operations. Similarly, you can write operator<< for your classes to mean whatever. The original meaning of "<<" has always been left shift.


I'm not sure what you mean; standard library is part of C++ and it overloaded the meaning in that way. iostream "is C++".


Yep, this blog post is in the context of using these symbols in mathematics, where this is the only usage of << and >> that I've seen.

I agree that programming languages, it can mean various things, just like < and > mean different things in C++ vs bash vs drawing arrows.


If I tell you "Spring was lovely this year" are you going to confuse it with the mechanical part? No.

Context matters.


This is fine in ordinary human conversation because of Grice's maxims and the goal of mutual comprehension, although...

https://www.youtube.com/watch?v=gi_6SaqVQSw

Still you probably don't want opportunities for confusion when dealing with machines. What you are sure is obvious may not be obvious at all to the machine and it needn't care what you thought you meant.


I mean, are we gonna talk about ‘=‘, ‘==‘, and ‘===‘?


Don't forget the languages that use := for assignment! And golang, which I vaguely think can use both = and := to do slightly different assignment (assignment vs initialization?).


Golang uses := to represent declaration and simultaneous assignment to at least one new variable. = only works if the LHS variables have already been declared. If you use :=, at least one of the variables on the LHS has to be new. So the following snippet would be an error:

  a := 3
  ...
  a := 4
This is valid:

  a := 3
  ...
  a = 4
As is this:

  a := 3
  ...
  a, b := 4, 2
And this is an error again:

  a := 3
  b := 4
  a, b := 1, 2
Since neither a nor b are new variables.


As someone who has never used go, the third example feels counter-intuitive to me. I would expect a, b := 4, 2; to be equivalent to a := 4; b := 2; is there a reason it was done this way?


It is as you say, however, a and b had already been declared, which is the error.


But... why the latter?


Because if you're modifying a function and you're adding a new variable to hold some intermediary value, you might accidentally pick a variable name that already exists. If you're in the habit of writing := to signal your intent to create a new variable, that error will probably get caught at compile time rather than being a source of subtle bugs where you trample data needed by something else.

The multi-variable case is trickier, especially because (result, err) is such a common pattern and you neither want to impede the very common case of storing a result into a new variable nor to require a profusion of differently-named variables for errors that are very likely to just get folded anyway. So it allows it if any of the variables are new rather than requiring all. But clearing a large chunk of the bug surface is still much better than not.

(This is only my extrapolated reasoning, of course.)


Oh, this is a good time to remember Prolog exists. Assignment isn't even a concept there, but equality can act on so many different ways!


if you want to know where the expression for sqrt(a+b) come from it is a taylor series expansion of the first order (linear approximation) of f(x)=sqrt(a+x) arount 0. f'(x)= 1/(2*sqrt(a+x)). For x close to 0 you get f(x)≈f(0)+x*f'(0)


That's a bad wording for mathematics. It usually means "sufficiently greater than", and only makes sense as part of a sentence or wider context where what it is sufficient for is clear.

"Much greater than" is misleading because it could be confused with a valid statement by itself.


I saw these and thought

“meh, nested generic”

I’m ruined.


I always think RPN object. :P


I remember using this in maths lessons. IIRC, it was used to analyze how functions behave, so `999*x + y + 99999` where `y ≫ x` behaves basically the same as just `y`. Something like that, maybe it was for big-O analysis or something.


I think every sentence in this post is more or less wrong. Also, we do not want to introduce non-ascii glyphs into programming languages - APL is about the only time this has been tried and (merits of the language aside) it was hardly a success.


Julia is a rather popular (though not the most popular) language which makes extensive use of Unicode symbols in the language. I had some fun with it at the start of this year building out a package for astrodynamics where, thanks to being able to use math symbols, the code was a near exact translation of the formulas in the textbooks I was using.

Fortress is a much less popular language (perhaps, to be accurate, it should be described as a failed experiment) which was intended to permit the same thing. Offering an ASCII, Unicode, and prettified presentation of code.

There are quite a few other languages which support Unicode characters, though most of those don't aim for the same symbol heavy presentation of mathematical code.

However, the submitted article is not about programming languages so your post and this response are both off-topic.


Speaking of symbols used in the language, I'm still waiting for

https://en.wikipedia.org/wiki/Space-cadet_keyboard

to make a comeback.


It seems pretty correct to me (excluding a few things I'm not familiar enough with to evaluate).

Is it possible that you misinterpreted this as a post about << and >> in code rather than their usage in mathematics?


Possibly so, but this is a site that tends to concentrate on programming rather than maths. Anyway, I stand by my opinions about introducing extra glyphs into programming languages.


Am I missing something, like another page of text? This looks like a short exposition of the symbols and some examples of their use in math notation.


APL started on blackboard, where writing weird math symbols is easy. Since we have computerized tablets with pencils now, it seems like a good idea to explore weird symbols again.

https://mlajtos.mu/posts/new-kind-of-paper


Scala also used non-ASCII arrows in some places, though you could always use a two-ASCII-char version instead. I remember some IDEs had auto-replace rules to give you the "fancy" version, but I think that syntax is deprecated now.


Lean also makes heavy use of non-ascii characters (inserted into texts using a LaTeX-inspired backslash-and-then-name , in a number of editors).

It also has ways to write the same things in ascii, but it is a fair bit less convenient to read.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: