text:
×

Search anything:

# Disassembly

#### Compiler Design

Get this book -> Problems on Array: For Interviews and Competitive Programming

Disassembly involves recreating assembly code from binary machine code. In this article we discuss concepts surrounding disassembly and a basic algorithm used for disassembly.

1. Introduction.
2. Instructions and data.
3. Disassembly with indirection.
4. Disassembly with relocation.
5. Summary.
6. References.

## Introduction.

Assemblers are simpler compared to compilers as their only function is to translate assembly code to binary machine code via a one-to-one correspondence.
Since assembly is simple, disassembly is often just as simple because the assembly instructions have a one-to-one correspondence with machine code.

A disassembler is the opposite of an assembler, it reverses the process and recreates assembly code from binary machine code.
A basic assembler can be implemented by reading in bytes and table lookups.

## Instructions and data.

Assembly languages have separate code and data segments however an assembled program may contain data in the code segment.

The first step in disassembly is to distinguish between instructions and data in the sequence of bytes presented to the disassembler, specifically the addresses instructions start so as to decode them and data types so as to decode values correctly.

Initially the only thing we have is the entry point - start address of the binary program which points to an instruction, we analyze this instruction and from it we draw conclusions about other addresses, we repeat this until no new conclusions can be drawn.

A basic disassembly algorithm.

Data definitions

1. ${A}_{I}$ is the set of addresses where an instruction starts, each is associated with a label.
2. ${A}_{D}$ is the set of addresses where data items start, each is associated with a label and a type.

Initialization
${A}_{I}$ is filled with the start address of the binary program.
${A}_{D}$ is empty.

Inference rules
For each address A in ${A}_{I}$, decode instruction at A and call it I.

1. If I is not a jump instruction, the address following I must be ${A}_{I}$
2. If I is an unconditional jump, the conditional jump or routine call instruction to address L, L must be in ${A}_{I}$ associated with a different label.
3. If I is a conditional jump of routine call instruction, the following address of I must be in ${A}_{I}$.
4. If I accesses data at address L and uses its type T, L must be in ${A}_{D}$, associated with different label from other labels and type T.

Jump instructions include conditional and unconditional jumps, routine calls and return
We use information in ${A}_{I}$ and ${A}_{D}$ to convert the binary sequence into assembly code starting from the beginning.
For each address A in ${A}_{I}$ we produce symbolic code for the instruction I preceded by a label if it has one. If I has more than one addresses, they will be in ${A}_{I}$ or ${A}_{D}$ and have labels therefore the labels can be produced in I.
For each address A in ${A}_{D}$, we produce formatted data for the bit pattern preceded by the label.
If the external symbol table is available we can identify addresses and use their original names instead of labels to improve readability.

Address locations in analyzed segments won't be in either ${A}_{I}$ or ${A}_{D}$ since they point to the middle of an instruction or data item, also they may be addressing unused data or unreachable code. Others may occur multiple times. It is also a possibility that an address is in both ${A}_{I}$ and ${A}_{D}$ which means that the program uses instructions as data and/or vice versa.

Such analysis allows a program to be disassembled correctly, however it is convenient to flag these occurrences for manual inspection.

## Disassembly with indirection.

Programs use indirect addresses which are obtained by computation rather than a direct derivation from an instruction. The discussed approach cannot discover indirect addresses.

Translation of switches and computed routine calls are the main sources of indirect instruction addresses.

An example
We have the following C switch code.

``````switch (ch) {
case ’ ’ : code to handle space; break;
case ’! ’ : code to handle exclamation mark; break;
.
.
.
case ’~’: code to handle tilde ; break;
}
``````

Two possible intermediate translations are as follows.

``````/* common code */
reg := ch;
IF reg < 32 GOTO L_default;
IF reg > 127 GOTO L_default;
reg := reg − 32; /* slide to zero */

/* jump table */                    /* address table */
GOTO_INDEXED reg, L_jump_table; GOTO_INDIRECT reg;
GOTO L032;                              L032;
GOTO L033;                              L033;
.                                       .
.                                       .
.                                       .
GOTO L127;                              L127;
L032: code to handle space; GOTO L_default;
L033: code to handle exclamation mark; GOTO L_default;
.
.
.
L127: code to handle tilde; GOTO L_default;
L_default:
``````

From the above we can see that both the left and right translations use switch tables while the middle column is common to both.

The left translation uses a table of jump instructions into which flow of control is led.

The right translation uses a table of addresses which is picked and applied in an indirect jump.

GOTO_INDEXED reg, L_jump_table jumps to L_jump_tabl[reg];
GOTO_INDIRECT reg jumps to mem[reg].
Generally the problem of obtaining the information that L032, L033,...,L127, LO, L1, L_show_landscape and L_show_portrait are addresses and should be in ${A}_{I}$ is unsolvable however we will see two techniques that produce the desired results.
One is for switch tables another is for routine pointers both of which require a form of control flow analysis, however, obtaining a control flow graph is an issue since at this point we don't have the full code.

A switch table is signaled by the occurrence of an indexed jump J on register R and is preceded by code to load R.

A program slice of R at J is the program segment determining the value of R at position J. These are useful for understanding the program, debugging it an optimizing it.

We first perform a backwards scan through the disassembled code so as to find instruction ${I}_{R}$ that set R. This is repeated for registers in ${I}_{R}$ from which R is set and we stop after a register is loaded from memory or when we arrive at the beginning of the routine or program.

We now perform a forward scan, symbolically interpreting instructions so as to create symbolic expressions for the registers.

An example

Assuming the forward scan results in the following instruction sequence;

``````Load_Mem SP−12,R1
``````

It is rewritten as;

``````R1 := mem[SP−12];
R2 := 8;
R1 := R1 + R2
``````

Then by forward substitution it is converted to;

``````R1 := mem[SP−12] + 8;
``````

If this is successful, we are left with a short sequence of conditional jumps followed by an indexed jump all with expressions as parameters.

The function of this sequence is similar in all case-testing boundaries, finding the switch table and indexing it - there exist few patterns for it and a simple pattern match will suffice so as to find the right one.

Constants in the sequence are matched to the pattern's parameters. This gives the position and size of the switch table and so we can extract the addresses from the table and insert them in ${A}_{I}$.

Otherwise the code is flagged for manual inspection.

Translation of a computed routine call

``````    reg1 := pic.width − pic.height;
IF reg1 > 0 GOTO L0;
reg2 := L_show_portrait;
GOTO L1;
L0: reg2 := L_show_landscape;
CALL_REG reg2;
``````

These instructions are used to load data addresses therefore we need symbolic interpretation so as to find the use of the loaded values.

Again with the issue of an incomplete control-flow graph, to complete it we need the information we are trying to extract - a chicken-and-egg problem.

This is handled by using an unknown node or hell node in the graph which will be the source and destination of jumps we don't have information on.

All jumps on registers will follow edges leading into this node, for inter-procedural analysis, outgoing edges will lead to all code positions after routine jumps. For incoming edges we assume all registers are live and for outgoing we assume all registers have unknown clients.

This node enables us to complete the control-flow graph after which we can run a symbolic interpretation algorithm to obtain value sets for all registers at all positions.

## Disassembly with relocation information.

Relocation information is provided by the assembler.

The relocation bit map as described in the prerequisite article states that for every byte position if it is relocatable and if it is, whether it pertains to the code or data segment. By scanning it we can find addresses in instructions and insert them in ${A}_{I}$ or ${A}_{D}$ after which the disassembly algorithm does the rest.

Most assemblers will still reconstruct the control-flow graph so as to obtain better information on routine boundaries and data types.

## Summary.

Disassembly involves recreating assembly code from binary machine code
Decompilation on the other hand works its way from an executable binary or assembly code to yield a higher-level source code. The idea is to examine the program to gain understanding of it functioning then recompiling it.
Reasons for disassembly could be we need to change a legacy program for which we don't have the source code for therefore we disassemble it, make changes then reassemble it, we can also disassemble binary code so as to build a dependency graph, apply optimizations, apply security checks and measurement code then reassemble, this is referred to as binary rewriting an example of a binary rewriting system is valgrind, disassembly can also be used for malware analysis since basic static and dynamic methods are not good enough, disassembly is also used for optimizing code size and power consumption.

## References.

#### Erick Lumunge

Erick is a passionate programmer with a computer science background who loves to learn about and use code to impact lives positively.

Improved & Reviewed by:

Disassembly


text:
Posted By feehar

Artificial intelligence remains a mystery for many people, as a few can understand how a machine acts or, more importantly, why it performs a certain action. Although machines are capable of limited learning, all the knowledge they gain is stored in ontologies or knowledge bases. These knowledge databases can be edited and analyzed, in order to get a better view on how a machine reacts. Amine Platform Suite is a dependable application that can help you analyze any ontology or knowledge-based program. In order to function properly, it requires Java to be installed on your computer. Versatile database editor The program allows users to organize and edit various files used by multi-agents systems layer applications, as well as other programming layers, such as knowledge-based processing or memory based inferences. These files can then be used to build artificial intelligence systems for various machines and robots. Furthermore, the application can help you “read” the mind of artificial intelligence(AI) systems, by allowing you to see the source code on which they are based. While doing so, you can import other ontologies, thus expanding the options that your AI will be able to perform. This adds up to the flexibility of this tool, as new AI machines can have their older knowledge database updated with new actions or case scenarios. In addition, you can import various ontology formats to a single file and use it for one application, although you need to integrate the code properly in order to have a functional AI agent. A powerful artificial intelligence analyzer Amine Platform Suite can help you determine what makes a machine tick, by decompiling its knowledge databases and ontologies. This can give you a glimpse on how AI react to various stimuli from the sensors that they are connected to.

The problem with the information entropy would be the $1.5\text{ Gb}$ in my case i would prefer to be with the knowledge i have and not the knowledge i need to have since i start working with the AI if the entropy is realy high than i wouldn’t be able to maintain the AI in my project. A: With that amount of information, there would be a high cost of materialising it in an abstract storage. So, you either need to run this process frequently (and this might be costly in terms of time, power, etc.), or to store all information efficiently (e.g. compressing it). For that reason, unless you are really interested in the source code, maybe it would be better to just make a training set. Or, at least, a large enough one that covers a large number of different situations. I would say that the source code is too hard to get for free, and that it’s not very useful for a beginner anyway (what else would they gain from it?). Also, what if you don’t want to, or can’t, pay for it? What if you want to give it to others? Instead, create a huge training set. You may get some extra free bytes (instead of a very large one), but you won’t lose anything in terms of functionality. New video shows how emissions from coal plants hurt communities. Scientists warn that continued reliance on coal and other fossil fuels for electricity is “starkly inconsistent with the long-term health and well-being of the world.” The video shows how emissions from coal plants hurt communities. “This is the result of relying on fossil fuel for electricity, and it harms the local communities by reducing investment, jobs, and incomes,” said Kate Porter, lead author of the Intergovernmental Panel on Climate Change Fifth Assessment Report, which was released in November. In addition to coal, the video highlights how the production of oil and natural gas causes similar harm to communities. “The shift away from fossil fuels toward sustainable energy is the most pressing challenge facing the world today and it urgently needs to be addressed by action on the climate,” she said.Q: Set the default value for a text field in a form from a variable I am trying to default a textfield in a form to a variable on another page. The field on the form

## Amine Platform Suite 8.5.0 Crack + Full Product Key [April-2022]

This tool is specifically designed for users of artificial intelligence and robotics. It has a wide range of features, including AI-based software development. Like a software engineer, you can do an analysis of an AI machine in order to decode the knowledge it stores inside and why it performs a certain action. The tool also has the ability to import and export databases in various formats. Amine Platform Suite Reviews: Amine Platform Suite is a dependable program for anyone who is working on automated application development. It is capable of converting various knowledge bases in a simple structure, from which a machine can learn a new way of performing a certain task. This tool is used in the emerging industry for the advancement of artificial intelligence programs, robotics, simulation programming, and game development. Amine Platform Suite gives you the opportunity to analyze how a machine acts, as well as it’s ability to perform various tasks. Thus, the application can help you “read” the mind of various programs and robots. Replacing My DSLR With A Smartphone If you’re into photography, chances are you’re always on the look out for the best cameras that the market has to offer. However, these high-end digital cameras are far from affordable; something that surely puts the brakes on your budget. If you’re looking for a cheaper alternative, have we got an offer for you. With this clip, we’re going to show you how to buy a DSLR (Digital Single Lens Refractor) with a smartphone. And we’re going to show you how it can actually replace a far more expensive DSLR. We’re starting with the Sony A6000, which is basically the new entry-level DSLR camera from Sony. It has a 16MP sensor, an f/1.8 aperture, a 3-in-1 lens, and the ability to take 16-megapixel photos and video. The camera can also capture 4K video at 24 frames per second. However, this camera actually comes with a flip-out screen, giving you a 180 degree view of the scene you’re shooting. So, how much would this camera set you back? The A6000 normally retails for \$550 USD. Next, we’re going to move on to your smartphone. Instead of using this to take photos, we’re going to use it as a monitor for the DSLR. In this tutorial, we 2f7fe94e24

## Amine Platform Suite 8.5.0 Crack + [Latest-2022]

What is Amine Platform Suite? It is a tool that allows you to keep an eye on a machine’s decisions, even if that machine is not working as a person, in a patient care or robotics application, for example. The program analyzes one of the programs that the machine is using to perform its actions, as well as its knowledge database. The functions of the program are then defined according to the actions of the machine. How Amine Platform Suite Works? Amine Platform Suite is a useful program that is capable of analyzing and dissecting a person’s ontology, to make sure that an AI is performing its actions properly. This takes into consideration the file that is being used by the machine, what data are being used in the file, as well as its corresponding code. Since Amine Platform Suite requires Java to be installed on your computer, it has a wide range of features that will appeal to those who are in the medical and robotics industries, for example. In addition, the application can store data and this can be accessed from a different machine and time. The program has a variety of parameters that you can adjust in order to experience a better and easier analysis on how a machine is functioning. To keep the AI focused on one particular task, you can disable the parameters that it is not using, and to do so, you can block its monitoring of particular activities. You can also import various ontology formats to one file, which will make your AI more responsive and will help you to update its database with new code. The Amine Platform Suite is a useful application that has a wide range of features that will help you analyze a machine’s ontology and code, make sure that it is performing its actions properly and make its actions more responsive by changing the database that is being used.Hugh Jud Hugh Jud (April 25, 1752 in Amsterdam – August 16, 1829 in The Hague) was a Dutch painter who is mainly known for his watercolour landscapes. Biography He became a pupil of Abraham van den Tempel at the Stadstimmerkamer in Amsterdam. He went to study at the Academy of Painting and Sculpture in Brussels under Louis Gallait and Bernadotte Guiboust. He also travelled in Italy, the Netherlands and France. When he returned to The Hague, he painted small oil paintings in a lyrical style. Among his pupils were Willem Maris and Jan ten Hommest

## What’s New In?

Amine Platform Suite is a software tool that helps you analyze any machine or robot’s knowledge and ontologies. The software is effective and can be used to help you build AI machines on any level of complexity. You can input your own code and ontology file in order to run AI analysis, import a base/core ontology to create your own, and you can also import other AI files and codes. The tool will not only help you understand the logic behind an AI machine but also help you organize and edit your files as well. The program can be used to analyze files that are: – AVI (Video) – TMP (MP3) – CIN (Audiotape) – BIN (Image) – PCX (Pix) – PAC (Audio) – ASCII (Text) – CDP (Audio) – CDC (Audio) – WAV (Audio) – TP1 (Video) – TP2 (Video) – RMF (RTF) – MOV (Movie) – AVI (Video) – MPG (Movie) – MCV (VCD) – DAT (Audio) – DMP (DiscMusic) – MDR (Audio) – FSC (Audio) – RFC (PDF) – TOC (English Paper) – CCD (Audio) – TRT (Audio) – SST (Audio) – VPH (Video) – SHP (Image) – PED (Audio) – HSR (Audio) – SKP (Audio) – GSM (Audio) – IGP (Audio) – PHD (Audio) – DIC (Audio) – GEM (Audio) – MME (Audio) – MRF (Audio) – GIT (Text) – EIT (Text) – RMB (Text) – DAT (Audio) – DMP (DiscMusic) – MDR (Audio) – FSC (Audio) – RRG (Text) – SRF (Audio) – SVX (Text) – FLX (Text) – FRC (Audio) – IDT (Audio) – ITD (Audio) – KNT (Audio) – KCT (Audio) – WAV (Audio) – WCA (

https://wakelet.com/wake/_uvSte8F6YNnzTPzxQvBu
https://wakelet.com/wake/DfK95Hub6wdZ08woOwBqW
https://wakelet.com/wake/F5lQSKiPU4FG4byDrRdjv
https://wakelet.com/wake/rVkfIu0zokskxujeF4pR3
https://wakelet.com/wake/waEzJ_4E4Rbu4yIGqNr0d

## System Requirements:

Minimum: OS: Windows XP, Vista, Windows 7, 8, 8.1 Processor: 1.5 GHz processor RAM: 512 MB Hard Drive: 8 GB available space Graphics: DirectX 9.0 DirectX: Version 9.0 Recommended: Processor: 2.0 GHz processor RAM: 1 GB Direct

format: plain


text:
# Search by Topic

#### Resources tagged with Mathematical reasoning & proof similar to Route to Root:

Filter by: Content type:
Age range:
Challenge level:

### There are 174 results

Broad Topics > Using, Applying and Reasoning about Mathematics > Mathematical reasoning & proof

### Transitivity

##### Age 16 to 18

Suppose A always beats B and B always beats C, then would you expect A to beat C? Not always! What seems obvious is not always true. Results always need to be proved in mathematics.

### Knight Defeated

##### Age 14 to 16 Challenge Level:

The knight's move on a chess board is 2 steps in one direction and one step in the other direction. Prove that a knight cannot visit every square on the board once and only (a tour) on a 2 by n board. . . .

### Plus or Minus

##### Age 16 to 18 Challenge Level:

Make and prove a conjecture about the value of the product of the Fibonacci numbers $F_{n+1}F_{n-1}$.

### Ordered Sums

##### Age 14 to 16 Challenge Level:

Let a(n) be the number of ways of expressing the integer n as an ordered sum of 1's and 2's. Let b(n) be the number of ways of expressing n as an ordered sum of integers greater than 1. (i) Calculate. . . .

### Postage

##### Age 14 to 16 Challenge Level:

The country Sixtania prints postage stamps with only three values 6 lucres, 10 lucres and 15 lucres (where the currency is in lucres).Which values cannot be made up with combinations of these postage. . . .

### Magic W Wrap Up

##### Age 16 to 18 Challenge Level:

Prove that you cannot form a Magic W with a total of 12 or less or with a with a total of 18 or more.

### Archimedes and Numerical Roots

##### Age 14 to 16 Challenge Level:

The problem is how did Archimedes calculate the lengths of the sides of the polygons which needed him to be able to calculate square roots?

### Cube Net

##### Age 16 to 18 Challenge Level:

How many tours visit each vertex of a cube once and only once? How many return to the starting point?

### Doodles

##### Age 14 to 16 Challenge Level:

Draw a 'doodle' - a closed intersecting curve drawn without taking pencil from paper. What can you prove about the intersections?

### Russian Cubes

##### Age 14 to 16 Challenge Level:

I want some cubes painted with three blue faces and three red faces. How many different cubes can be painted like that?

### Rational Roots

##### Age 16 to 18 Challenge Level:

Given that a, b and c are natural numbers show that if sqrt a+sqrt b is rational then it is a natural number. Extend this to 3 variables.

### How Many Solutions?

##### Age 16 to 18 Challenge Level:

Find all the solutions to the this equation.

### Golden Eggs

##### Age 16 to 18 Challenge Level:

Find a connection between the shape of a special ellipse and an infinite string of nested square roots.

### Dalmatians

##### Age 14 to 18 Challenge Level:

Investigate the sequences obtained by starting with any positive 2 digit number (10a+b) and repeatedly using the rule 10a+b maps to 10b-a to get the next number in the sequence.

### Triangle Incircle Iteration

##### Age 14 to 16 Challenge Level:

Keep constructing triangles in the incircle of the previous triangle. What happens?

### Square Pair Circles

##### Age 16 to 18 Challenge Level:

Investigate the number of points with integer coordinates on circles with centres at the origin for which the square of the radius is a power of 5.

### The Golden Ratio, Fibonacci Numbers and Continued Fractions.

##### Age 14 to 16

An iterative method for finding the value of the Golden Ratio with explanations of how this involves the ratios of Fibonacci numbers and continued fractions.

### Tree Graphs

##### Age 16 to 18 Challenge Level:

A connected graph is a graph in which we can get from any vertex to any other by travelling along the edges. A tree is a connected graph with no closed circuits (or loops. Prove that every tree has. . . .

### Symmetric Tangles

##### Age 14 to 16

The tangles created by the twists and turns of the Conway rope trick are surprisingly symmetrical. Here's why!

### N000ughty Thoughts

##### Age 14 to 16 Challenge Level:

How many noughts are at the end of these giant numbers?

### Impossible Sandwiches

##### Age 11 to 18

In this 7-sandwich: 7 1 3 1 6 4 3 5 7 2 4 6 2 5 there are 7 numbers between the 7s, 6 between the 6s etc. The article shows which values of n can make n-sandwiches and which cannot.

### Classifying Solids Using Angle Deficiency

##### Age 11 to 16 Challenge Level:

Toni Beardon has chosen this article introducing a rich area for practical exploration and discovery in 3D geometry

### Triangular Intersection

##### Age 14 to 16 Short Challenge Level:

What is the largest number of intersection points that a triangle and a quadrilateral can have?

### The Triangle Game

##### Age 11 to 16 Challenge Level:

Can you discover whether this is a fair game?

### Euclid's Algorithm II

##### Age 16 to 18

We continue the discussion given in Euclid's Algorithm I, and here we shall discover when an equation of the form ax+by=c has no solutions, and when it has infinitely many solutions.

### Mouhefanggai

##### Age 14 to 16

Imagine two identical cylindrical pipes meeting at right angles and think about the shape of the space which belongs to both pipes. Early Chinese mathematicians call this shape the mouhefanggai.

### Number Rules - OK

##### Age 14 to 16 Challenge Level:

Can you convince me of each of the following: If a square number is multiplied by a square number the product is ALWAYS a square number...

### Proofs with Pictures

##### Age 14 to 18

Some diagrammatic 'proofs' of algebraic identities and inequalities.

### Yih or Luk Tsut K'i or Three Men's Morris

##### Age 11 to 18 Challenge Level:

Some puzzles requiring no knowledge of knot theory, just a careful inspection of the patterns. A glimpse of the classification of knots and a little about prime knots, crossing numbers and. . . .

### Modulus Arithmetic and a Solution to Dirisibly Yours

##### Age 16 to 18

Peter Zimmerman from Mill Hill County High School in Barnet, London gives a neat proof that: 5^(2n+1) + 11^(2n+1) + 17^(2n+1) is divisible by 33 for every non negative integer n.

### Sums of Squares and Sums of Cubes

##### Age 16 to 18

An account of methods for finding whether or not a number can be written as the sum of two or more squares or as the sum of two or more cubes.

### Magic Squares II

##### Age 14 to 18

An article which gives an account of some properties of magic squares.

### Picturing Pythagorean Triples

##### Age 14 to 18

This article discusses how every Pythagorean triple (a, b, c) can be illustrated by a square and an L shape within another square. You are invited to find some triples for yourself.

### Where Do We Get Our Feet Wet?

##### Age 16 to 18

Professor Korner has generously supported school mathematics for more than 30 years and has been a good friend to NRICH since it started.

### A Knight's Journey

##### Age 14 to 18

This article looks at knight's moves on a chess board and introduces you to the idea of vectors and vector addition.

### Can it Be

##### Age 16 to 18 Challenge Level:

When if ever do you get the right answer if you add two fractions by adding the numerators and adding the denominators?

### Pythagorean Triples II

##### Age 11 to 16

This is the second article on right-angled triangles whose edge lengths are whole numbers.

### Proof of Pick's Theorem

##### Age 16 to 18 Challenge Level:

Follow the hints and prove Pick's Theorem.

### Pythagorean Triples I

##### Age 11 to 16

The first of two articles on Pythagorean Triples which asks how many right angled triangles can you find with the lengths of each side exactly a whole number measurement. Try it!

### Little and Large

##### Age 16 to 18 Challenge Level:

A point moves around inside a rectangle. What are the least and the greatest values of the sum of the squares of the distances from the vertices?

### Angle Trisection

##### Age 14 to 16 Challenge Level:

It is impossible to trisect an angle using only ruler and compasses but it can be done using a carpenter's square.

### Problem Solving, Using and Applying and Functional Mathematics

##### Age 5 to 18 Challenge Level:

Problem solving is at the heart of the NRICH site. All the problems give learners opportunities to learn, develop or use mathematical concepts and skills. Read here for more information.

##### Age 16 to 18 Challenge Level:

Find all positive integers a and b for which the two equations: x^2-ax+b = 0 and x^2-bx+a = 0 both have positive integer solutions.

### Mechanical Integration

##### Age 16 to 18 Challenge Level:

To find the integral of a polynomial, evaluate it at some special points and add multiples of these values.

### Matter of Scale

##### Age 14 to 16 Challenge Level:

Prove Pythagoras' Theorem using enlargements and scale factors.

### Thousand Words

##### Age 16 to 18 Challenge Level:

Here the diagram says it all. Can you find the diagram?

### Pareq Exists

##### Age 14 to 16 Challenge Level:

Prove that, given any three parallel lines, an equilateral triangle always exists with one vertex on each of the three lines.

### Breaking the Equation ' Empirical Argument = Proof '

##### Age 7 to 18

This article stems from research on the teaching of proof and offers guidance on how to move learners from focussing on experimental arguments to mathematical arguments and deductive reasoning.

### More Number Sandwiches

##### Age 11 to 16 Challenge Level:

When is it impossible to make number sandwiches?

### Particularly General

##### Age 16 to 18 Challenge Level:

By proving these particular identities, prove the existence of general cases.


text:
main-content

## Über dieses Buch

This Festschrift was published in honor of Egon Börger on the occasion of his 75th birthday.

It acknowledges Prof. Börger's inspiration as a scientist, author, mentor, and community organizer. Dedicated to a pioneer in the fields of logic and computer science, Egon Börger's research interests are unusual in scope, from programming languages to hardware architectures, software architectures, control systems, workflow and interaction patterns, business processes, web applications, and concurrent systems.

The 18 invited contributions in this volume are by leading researchers in the areas of software engineering, programming languages, business information systems, and computer science logic.

## Inhaltsverzeichnis

### Towards Leveraging Domain Knowledge in State-Based Formal Methods

Abstract
System engineering development processes rely on modelling activities that lead to different design models corresponding to different analyses of the system under consideration.
Yamine Aït-Ameur, Régine Laleau, Dominique Méry, Neeraj Kumar Singh

### Some Observations on Mitotic Sets

Abstract
A computably enumerable (c.e.) set A is mitotic if it can be split into two c.e. sets $$A_0$$ and $$A_1$$ which are Turing equivalent to A. Glaßer et al. [3] introduced two variants of this notion. The first variant weakens mitoticity by not requiring that the parts $$A_0$$ and $$A_1$$ of A are c.e., the second strengthens mitoticity by requiring that the parts $$A_0$$ and $$A_1$$ are computably separable. Glaßer et al. [3] raised the question whether these variants are nonequivalent to the classical mitoticity notion. Here we answer this question affirmatively. We also show, however, that the weaker mitoticity property is trivial, i.e., that any c.e. set has this property. Moreover, we consider and compare these new variations of mitoticity for the common strong reducibilities in place of Turing reducibility. Finally - not directly related to these results - we show that all weak truth-table (wtt) complete sets are wtt-mitotic, in fact strongly wtt-mitotic.
Klaus Ambos-Spies

### Moded and Continuous Abstract State Machines

Abstract
In view of the increasing importance of cyber-physical systems, and of their correct design, the Abstract State Machine (ASM) framework is extended to include continuously varying quantities as well as the conventional discretely changing ones. This opens the door to the more faithful modelling of many scenarios where digital systems have to interact with the continuously varying physical world. Transitions in the extended framework are thus either moded (catering for discontinuously changing quantities), or pliant (catering for smoothly changing quantities). An operational semantics is provided, first for monolithic systems, and this is then extended to give a semantics for systems consisting of several distinct subsystems. This allows each subsystem to undergo its own subsystem-specific mode and pliant transitions. Refinement is elaborated in the extended context for both monolithic and composed systems. The formalism is illustrated using an example of a bouncing tennis ball.
Richard Banach, Huibiao Zhu

### Product Optimization in Stepwise Design

Abstract
Stepwise design of programs is a divide-and-conquer strategy to control complexity in program modularization and theorems. It has been studied extensively in the last 30 years and has worked well, although it is not yet commonplace. This paper explores a new area of research, finding efficient products in colossal product spaces, that builds upon past work.
Don Batory, Jeho Oh, Ruben Heradio, David Benavides

### Semantic Splitting of Conditional Belief Bases

Abstract
An important concept for nonmonotonic reasoning in the context of a conditional belief base $$\mathcal R$$ is syntax splitting, essentially stating that taking only the syntactically relevant part of $$\mathcal R$$ into account should be sufficient. In this paper, for the semantics of ordinal conditional functions (OCF) of $$\mathcal R$$, we introduce the notion of semantic splitting of $$\mathcal R$$ where the combination of models of sub-belief bases of $$\mathcal R$$ corresponds to the models of $$\mathcal R$$. While this is not the case for all OCF models, we show that for c-representations which are a subclass of all OCFs governed by the principle of conditional preservation, every syntactic splitting is also a semantic splitting. Furthermore, for the semantics of c-representations, we introduce constraint splittings of a conditional belief base and show that they fully capture and go beyond syntax splittings, thus allowing for additional belief base splittings that enable the computation of models locally from sub-belief bases.
Christoph Beierle, Jonas Haldimann, Gabriele Kern-Isberner

### Communities and Ancestors Associated with Egon Börger and ASM

Abstract
In this paper, we discuss the community associated with Abstract State Machines (ASM), especially in the context of a Community of Practice (CoP), a social science concept, considering the development of ASM by its community of researchers and practitioners over time. We also consider the long-term historical context of the advisor tree of Egon Börger, the main promulgator of the ASM approach, which can be considered as multiple interrelated CoPs, distributed over several centuries. This includes notable mathematicians and philosophers among its number with some interesting links between the people involved. Despite most being active well before the inception of computer science, a number have been influential on the field.
Jonathan P. Bowen

### Language and Communication Problems in Formalization: A Natural Language Approach

Abstract
“The bride is dressed in red and the groom in white.” Sometimes someone cannot believe their own ears, thinking they have misunderstood, and instead the communication is clear and exact, Egon actually got married in white and Donatella was in red. Some other times someone believe they have understood and instead the message is ambiguous and unclear.
When considering software requirements, one way to eliminate inaccuracies is to build a ground model and give it a formalization. In this paper, we propose an approach that begins by searching for terms and constructs that may cause communication problems and suggests a systematic way to disambiguate them.
Alessandro Fantechi, Stefania Gnesi, Laura Semini

### ASM Specification and Refinement of a Quantum Algorithm

Abstract
In this paper we use the Abstract State Machine (ASM) method for high-level system design and analysis created by Egon Börger to formally specify Grover’s quantum database search algorithm, stepwise refining it from its highest abstraction level down to its implementation as a quantum circuit. Our aim is to raise the question of whether the ASM method in general and quantum ASMs in particular can improve the current practices of quantum system engineering; providing accurate high-level modelling and linking the descriptions at the successive stages of quantum systems development through a chain of rigorous and coherent system models at stepwise refined levels of abstraction.
Flavio Ferrarotti, Sénen González

### Spot the Difference: A Detailed Comparison Between B and Event-B

Abstract
The B landscape can be confusing to formal methods outsiders, especially due to the fact that it is partitioned into classical B for software and Event-B for systems modelling. In this article we shed light on commonalities and differences between these formalisms, based on our experience in building tools that support both of them. In particular, we examine not so well-known pitfalls. For example, despite sharing a common mathematical foundation in predicate logic, set theory and arithmetic, there are formulas that are true in Event-B and false in classical B, and vice-versa.
Michael Leuschel

### Some Thoughts on Computational Models: From Massive Human Computing to Abstract State Machines, and Beyond

Abstract
I sketch what I think led to the emergence of Abstract State Machines. A central role in this is played by the work of Ashok Chandra and David Harel on computable queries in databases. I also define Chandra-Harel Algebras, and analyse Blum-Shub-Smale computability over these algebras.
J. A. Makowsky

### Analysis of Mobile Networks’ Protocols Based on Abstract State Machine

Abstract
We define MOTION (MOdeling and simulaTIng mObile ad-hoc Networks), a Java application based on the framework ASMETA (ASM mETAmodeling), that uses the ASM (Abstract State Machine) formalism to model and simulate mobile networks. In particular, the AODV (Ad-hoc On-demand Distance Vector) protocol is used to show the behaviour of the application.
Emanuele Covino, Giovanni Pani

### What is the Natural Abstraction Level of an Algorithm?

Abstract
Abstract State Machines work with algorithms on the natural abstraction level. In this paper, we discuss the notion of the natural abstraction level of an algorithm and how ASM manage to capture this abstraction level. We will look into three areas of algorithms: the algorithm execution, the algorithm description, and the algorithm semantics. We conclude that ASM capture the natural abstraction level of the algorithm execution, but not necessarily of the algorithm description. ASM do also capture the natural abstraction level of execution semantics.
Andreas Prinz

### The ASMETA Approach to Safety Assurance of Software Systems

Abstract
Safety-critical systems require development methods and processes that lead to provably correct systems in order to prevent catastrophic consequences due to system failure or unsafe operation. The use of models and formal analysis techniques is highly demanded both at design-time, to guarantee safety and other desired qualities already at the early stages of the system development, and at runtime, to address requirements assurance during the system operational stage.
In this paper, we present the modeling features and analysis techniques supported by ASMETA (ASM mETAmodeling), a set of tools for the Abstract State Machines formal method. We show how the modeling and analysis approaches in ASMETA can be used during the design, development, and operation phases of the assurance process for safety-critical systems, and we illustrate the advantages of integrated use of tools as that provided by ASMETA.
Paolo Arcaini, Andrea Bombarda, Silvia Bonfanti, Angelo Gargantini, Elvinia Riccobene, Patrizia Scandurra

### Flashix: Modular Verification of a Concurrent and Crash-Safe Flash File System

Abstract
The Flashix project has developed the first realistic verified file system for Flash memory. This paper gives an overview over the project and the theory used. Specification is based on modular components and subcomponents, which may have concurrent implementations connected via refinement. Functional correctness and crash-safety of each component is verified separately. We highlight some components that were recently added to improve efficiency, such as file caches and concurrent garbage collection. The project generates 18K of C code that runs under Linux. We evaluate how efficiency has improved and compare to UBIFS, the most recent flash file system implementation available for the Linux kernel.
Stefan Bodenmüller, Gerhard Schellhorn, Martin Bitterlich, Wolfgang Reif

### Computation on Structures

Behavioural Theory, Logic, Complexity
Abstract
Over the last decades the field of computer science has changed a lot. In practice we are now dealing with very complex systems, but it seems that the theoretical foundations have not caught up with the development. This article is dedicated to a demonstration how a modernised theory of computation may look like. The theory is centred around the notion of algorithmic systems addressing behavioural theory, logic and complexity theory.
Klaus-Dieter Schewe

### The Combined Use of the Web Ontology Language (OWL) and Abstract State Machines (ASM) for the Definition of a Specification Language for Business Processes

Abstract
The domain of Subject-oriented Business Process Management (S-BPM) is somewhat outstanding due to its embracing of Subject Orientation. However, at the same time, it is also a classic BPM domain concerned with typical aspects like creation and exchange of diagrammatic process models, elicitation of domain knowledge, and implementing process (models) into organisations and IT systems. Nevertheless, the Abstract State Machine (ASM) concept, a formal and abstract specification means for algorithms, has been and is fundamental and an important cornerstone for the S-BPM community. The first formal specifications for S-BPM has been developed by Egon Börger using ASM means—namely a specification for an interpreter engine for the subject-oriented modeling language PASS, the Parallel Activity Specification Schema. However, for the sake of intuitive and comprehensive use, ASM can be enriched with defining the passive aspects of PASS, namely the (data) structure of process models and data object appearing in the processes. Here it is useful to complement ASM description means with concepts that are better suited for that tasks. This work analyzes how the S-BPM research community has combined ASM with the Web Ontology Language (OWL) to generate a precise, while comprehensible, system specification for the execution of formal, subject-oriented process models. Furthermore, it will be argued why this combination is worthwhile overcoming the weaknesses of both generic and technology independent specification approaches.
Matthes Elstermann, André Wolski, Albert Fleischmann, Christian Stary, Stephan Borgert

### Models and Modelling in Computer Science

Abstract
Models are a universal instrument of mankind. They surround us our whole lifespan and support all activities even in case we are not aware of the omnipresence. They are so omnipresent that we don’t realise their importance. Computer Science is also heavily using models as companion in most activities. Meanwhile, models became one of the main instruments. The nature and anatomy of models is not yet properly understood.
Computer Science research has not yet been properly investigating its principles, postulates, and paradigms. The well-accepted three dimensions are states, transformation, and collaboration. An element of the fourth dimension is abstraction. The fourth dimension is modelling. We review here the fourth dimension.
Bernhard Thalheim

### A Framework for Modeling the Semantics of Synchronous and Asynchronous Procedures with Abstract State Machines

Abstract
We present a framework for modeling the semantics of frequent concepts in the context of procedures and functions. In particular, we consider the concepts of recursive and non-recursive procedures, parameter passing mechanisms, return values, procedures as values (with local and non-local procedures), synchronous and asynchronous procedures, and for the latter, synchronization mechanisms. The concepts are mostly modeled in a combinable manner. Hence the concepts for procedures for many popular programming languages are covered by the framework.
Wolf Zimmermann, Mandy Weißbach

### Backmatter

Weitere Informationen


text:
## anonymous 5 years ago f(x)= 7^x logbase3 (x) I need to find the derivative .... but I can only enter the answer using change of base - can anyone provide direction? Thanks

1. anonymous

Is it correct

2. anonymous

$7^x \log_3(x)$

3. anonymous

$d/dx \log(x)=1/xln(b)$

4. anonymous

scratch that

5. anonymous

$d/dx \log_b(x)=1/xln(b)$

6. anonymous

So you will use product rule

7. anonymous

any question?

8. anonymous

ok I see that and I am kinda clear - in that eq. where is the 7^x ah..1/7ln3

9. anonymous

3ln(x)=1/7ln3

10. anonymous

How is going so far?

11. anonymous

is it...? [(1\7ln 3(x)) -(3\ln (x))]

12. anonymous

$d/dx (7^x)=\ln (7)*7^x$

13. anonymous

product rule is u*v'+v*u'

14. anonymous

my computer died. I am back and will try again. Thank you now I'm guest.... this is 1477

15. anonymous

haven't quite got there but I have to go now. thank you so much for your help!!!


text:
## Introduction

According to a Lymphoedema Impact and Prevalence International (LIMPRINT) report in 2019, lymphedema can occur in a variety of cancer-associated conditions as well as in heterogeneous medical situations, such as venous diseases and wound-related situations1, e.g., cancer manifestation (lymph node metastasis), cancer treatments (radiotherapy and surgery)2,3,4,5,6,7,8, and soft tissue reconstruction following fracture9.

In lymphedema, internally persistent deterioration spontaneously progresses in affected soft tissues, starting first at the molecular level mediated by the increased release of proinflammatory cytokines (interleukin [IL]-6, IL-8, tumor necrosis factor [TNF]-α, transforming growth factor [TGF]-β1) and leading to macroscopic fibrosis consisting of collagen and extracellular matrix deposition10,11. It can be visualized using ultrasonography12,13 and computed tomography (CT)14. Due to the poor capability (29%) of ultrasonography for the visualization of deep tissues in moderate to severe lymphedema (International Society of Lymphology [ISL] stages II and III)13, CT can serve as an alternative for visualizing pathological changes within deep tissues3. If this internal aggravation can be reliably standardized, patients with lymphedema will be provided with the possibility of early detection and successful management prior to progression into irreversible or nonresponsive stages6,15. Fewer patients with disabilities (no less than 75% could maintain their jobs) were observed than expected among lymphedema patients undergoing rehabilitation management, which also supports this demand for early standardized detection regardless of disease duration1.

On CT, lymphedema-induced fibrosis is visualized in the form of trabecular reticulation with a honeycomb appearance in subcutaneous fat layers14,16,17. Regarding whether CT images could be useful in quantifying histological differences, Geyer et al. reported that significant quasilinear correlations were observed with viscoelastic tissue parameters in patients with lipodermatosclerosis12. Similarly, significant correlations were observed between the histological degree of fibrosis and CT images in cancer patients with lymphedema and in patients with dermal lymphatic invasion2,18. Furthermore, based on the window width of the absorptive values (Hounsfield units [HUs]) in CT scans19, fibrosis can be two-dimensionally measured as an area value, with the aid of manual differentiation from other soft tissues and water (for instance, HU of tissue ranges from 20 to 40; HU of water is 0; HU of fat ranges from − 90 to − 70) in cross-sectional images19,20. In the late 2010s, the development of a manual tracking-assisted method for the 3-dimensional quantification of fibrosis was reported21,22. However, the HU value-based manual tracking method for the quantification of fibrosis showed no correlation with clinical parameters, such as the three-dimensional volume determined by perometry and the ISL stage, and required a considerable amount of time due to the burdensome manual classification process22. Therefore, the technically promising results and lack of evidence supporting its applicability in clinical practice necessitate the development of novel image-processing methods.

The concept of machine learning, so called artificial intelligence (AI), was introduced at the Dartmouth Conference in the 1950s. In medical fields, the potential applicability of machine learning was first suggested by Fletcher23, and Doi at the University of Chicago widened systematic medical image analysis via machine learning for computer-aided diagnosis and reduction of physician labor in the 1980’s24. Since then, machine learning has been extending worldwide into various kinds of medical applications, such as digitized data utilization in healthcare25, predictive algorithms in cardiology26, and AI-mediated interventions in psychiatry27. However, conventional machine learning models have shown insufficient performance and could not satisfy physician demands. To overcome this obstacle, deep learning (DL) has become more common as a solution and involves automatic complex multi-layer neutral network architecture-based learning by converting input data into multiple kinds of abstractions28. Regarding DL-based recognition of medical image pattern, convolutional neural network (CNN), which is the most commonly used DL method, can learn automatically how to extract valid features from the training samples for an assigned task by repetitive backpropagation adjustment of its weights without manual designation of features as input information29. In terms of high efficacy in the detection and differentiation of specific organs or lesions, DL combined with imaging for diagnosis is of great interest; five-minute magnetic resonance imaging (MRI) sequences augmented by DL superresolution could discriminate synovium, bone, cartilage, and meniscal tissue, with high agreement (54–90% sensitivity and 23–91% specificity) with arthroscopic results30. Moreover, combined with positron emission tomography (PET)/CT, DL methods can automatically detect a small nodule within the lungs, even those no less than 2 cm in diameter, with 66.7% sensitivity and 84.5% specificity31. Recently, more advanced DL models, called hybrid methods, have been proposed; for example, hybridization of three DL-based algorithms of concatenation, optimization by minimum redundancy maximum relevance (mPMR), and classification by machine learning classifiers showed very high diagnostic yields (accuracy no less than 96.9%)32,33.

Based on the finding that HU values of soft tissues are determined by their relative constituents, digital image processing of CT scans can be used to visualize lymphedema-induced fibrosis21,22,34. Taking this approach one step further, the authors supposed that the DL-based algorithm could automatically recognize fibrosis from other nonfibrotic soft tissues in cross-sectional CT images. To confirm the validity of the DL-based algorithm in lymphedema patients, the authors compared it with gold standard measurements of lymphedema, such as the results of bioelectrophysiological studies (multiple frequency bioelectrical impedance [BEI] analyses) and the standardized circumference ratio of the affected limbs.

## Results

### Demographic characteristics

Forty-two patients were screened. Among them, 12 patients were excluded due to insufficient CT images (n = 6), irremovable random noise in the CT images (n = 2), no BEI data (n = 2), no SCDR data (n = 1), and no clinical data on the affected side (n = 1). From the 30 recruited patients, 1920 images were acquired and assigned to the training, validation, and test datasets for the proposed model. Additionally, during image calibration for evaluating diagnosis performance of the trained model, data of 3 patients were excluded due to a lack of CT images under the antecubital fossa (n = 1) and nonsymmetrical limb site images (n = 2). Finally, 2138 images of 27 patients were analyzed to compare the proposed indices with the clinical gold standard (Fig. 1). Because some images were excluded for better training but all the images from 27 patients were used to calculate the proposed indices and analyze with the proposed indices, the image numbers for the training are higher even after the three patients were excluded.

The demographic characteristics were as follows. The mean age was 58.38 ± 2.08 years. Most of the patients were female (97.5%); only one patient (2.5%) was male. The mean weight of the patients was 58.67 ± 1.39 kg. Half of the patients (50%) were affected on their left side, and the other half (50%) were affected on their right side. On average, 106.90 ± 18.07 images were collected from each patient. Regarding underlying diseases, postoperative breast cancer was the most common (66.6%), postoperative gynecological cancer was the second most common (29.2%), and primary lymphedema was the third most common (4.2%) disease. CT scanning was performed at a median of 4 years (range, 3–121 months) after the first swelling presentation. None of the patients classified as having ISL stage I or IIIb were included.

### Lymphedema-induced fibrosis labeling

Figure 2 shows three example images among the original CT images and the images labeled using the lab-developed graphical user interface (GUI).

### DL-based segmentation of lymphedema-induced fibrosis

The segmentation performance of the trained algorithm was evaluated by means of the accuracy, intersection over union (IoU) (also known as the Jaccard index), mean boundary F1 score (MeanBFScore), and Dice similarity coefficient (DSC)35. The accuracy is the ratio of the number of correctly classified pixels to all the classified pixels of one label. The IoU is the ratio of the number of correctly classified pixels to the union of pixels with ground truth and all the classified pixels of one label. The MeanBFScore is the average of the boundary scores, i.e., how well the boundary is classified. Lastly, the Dice similarity coefficient equivalent with the F1 score is calculated by

$$DSC = \frac{2TP}{{2TP + FP + FN}}$$
(1)

where TP, FP, and FN represent the number of true positive, false positive, and false negative pixels, respectively. The accuracy, IoU, and DSC for each category were calculated pixel-by-pixel using the confusion matrix in Table 1.

Air, muscle/water, and skin were fairly well distinguished, with values near 0.9 for all three evaluation parameters, as expected. The fat segmentation accuracy and IoU were less than 0.9. The MeanBFScore of pixels classified as fibrosis was 0.868, but the accuracy, the IoU, and the DSC were 0.776, 0.584, and 0.738, respectively (Table 2).

Figure 3 shows three example images among the images labeled using the lab-developed GUI and the images classified using the trained algorithm.

Table 3 shows a comparison of the four indices with two clinical gold standard measurements. Among the 19 subindices, 14 showed a significant correlation with the BEI. The mean subindex of Index 2 in the distal part of the limb (Index 2 Mean of Distal), and the BEI showed the highest correlation (0.875). The mean of Index 1 in the distal part of the limb (Index 1 Mean of Distal), the mean of Index 2 in the proximal and distal parts of the limb (Index 2 Mean), the summation of Index 2 in the proximal and distal parts of the limb (Index 2 Sum), the summation of Index 2 in the proximal part of the limb (Index 2 Sum of Proximal), the summation of Index 2 in the distal part of the limb (Index 2 Sum of Distal), and the mean of Index 2 in the distal part of the limb (Index 2 Mean of Distal) showed strong significant correlations with the BEI (partial correlation coefficient > 0.7). However, apart from these three subindices (Index 1 Mean of Distal, Index 2 Mean, and Index 2 Mean of Distal), none showed a significant relation with the SCDR. Overall, the calculated values presented a stronger relationship with the BEI than the SCDR.

## Discussion

To show the validity of the DL-based algorithm for the automatic quantification of lymphedema-induced fibrosis in CT images, a cross-sectional, observational comparison trial was conducted in chronic lymphedema patients (ISL stages II to IIIa). The major findings are as follows: (1) the accuracy and MeanBFScore of the SegNet-based algorithm were 0.776 and 0.868, respectively, showing similar power to previous trials applying a CNN to other diseases; (2) the majority (73.7%) of the 19 subindices of the four indices was significantly correlated with the BEI (partial correlation coefficient: 0.420–0.875), and the minority (13.2%) was significantly related with the SCDR (partial correlation coefficient: 0.406–0.460); and (3) the mean value of Index 2 $$\left( {\frac{{P_{Fibrosis\; in\; Affected} - P_{Fibrosis\; in\; Unaffected} }}{{P_{Limb\; in\; Unaffected\;} }}} \right)$$ in the distal part of the limb, where the subtraction method was used for standardization, presented the strongest correlation with the BEI.

Ensembles of classifiers demand predefinition, such as feature extraction and region of interest (ROI) definition36; thus, low accuracy and incomprehensive results usually occur. Currently, various DL-based algorithms have been developed worldwide because of their strengths (i.e., image segmentation and automated feature generation capabilities)37. CNNs, successful DL algorithms based on a multilayer hierarchical network, show high analytical performance when applied to the medical images of patients with various kinds of diseases, such as pulmonary tuberculosis38, breast cancer39, brain tumors40, and hepatic diseases41. However, only one study applied a CNN to the quantification of lymphedema-induced fibrosis. Because reliable, repeatable, and highly accurate methods for the early detection of fibrosis (one of the most persistent complications in disease management) would have important clinical significance for the management of lymphedema patients, there is great demand for the establishment of such methods. Positive trials of DL-based image classifiers, such as AlexNet, VGGNet, U-Net, GoogLeNet, SegNet and ImageNet, might lead to fulfillment of this demand. However, in terms of semantic segmentation, U-Net and SegNet are the most popular42. SegNet, an automatic image encoder-decoder, was developed for image classification/image segmentation in 201743. It was chosen here because it has simpler layer structure than the U-Net as well as this investigation required pixel-wise semantic classification in the CT image. The authors have plan to implement the proposed segmentation using U-Net and compare each other.

Prior to discussion of SegNet application for CT-based fibrosis correlation with clinical parameters, comparison of the current semiautomatic baseline method on the thing compositions' segmentation might better justify the effectiveness of the proposed workflow. In our previous trial with the same project, in which the current semiautomatic fibrosis segmentation method was used with the same GUI (MATLAB [MathWorks, USA]), 3 types of CT fibrosis index formulated to evaluate their representative capability showed significant correlation with ISL substages (r of 0.68–0.79, p < 0.01), BEI ratio (r of − 0.46, p < 0.05), and proximal SCDR (r of 0.45, p < 0.05) and sensitivity of 0.78 and specificity of 0.60 in lymphatic system dysfunction detection21. In terms of CT-based lymphedema fibrosis segmentation, only one report introduced a similar method in which semiautomatic segmentation was conducted by adjusting HU and followed by a convex hull algorithm. Although correlative quantification of fibrosis with a 3-dimensional volume perometry results failed, lateralization of the fibrosis areas was significant in the more-affected limb22. Similarly, Edmunds et al. conducted CT-based lean muscle area segmentation using semiautomatic calculation of the number of voxels with HU value higher than that of fat. This calculation was followed by smoothing and binning by a non-parametric fitting algorithm for quantification of muscle degeneration. They reported high correlation coefficients (r of 0.99, p < 0.005) with leg strength, timed up-and go test, gait speed44.

In the current trial, in which the image data were divided into training (65%; 1252 images), validation (15%; 290 images), and testing (20%; 378 images) datasets and input into SegNet, the accuracy, IoU, and MeanBFScore for fibrosis were 0.776, 0.584, and 0.868, respectively. Even though the fibrosis accuracy (0.776) is lower than other labels accuracy, it is comparably higher than its random chance (1/5). It was suspected that similarity between the fibrosis and the fat in shape has made it more difficult.

Using the same CNN application, the accuracy of the SegNet-based segmentation model for stroke lesion detection ranged from 85 to 87% in the brain MRI images of stroke patients45, in which the dataset contained 420 T1-weighted MRI scans divided into 2 sets for training (70%; 294 images) and testing (30%; 126 images). In another study of 375 patients with 517 focal liver lesions (410 focal liver lesion images for training and 107 focal liver lesion images for testing), the model showed higher accuracy in the detection of hepatocellular carcinoma and benign noninflammatory focal lesions (0.916 and 0.860, respectively) than that in the current trial46. However, a different type of CNN, namely, a multiphase convolutional dense network (MP-CDN), was used. In another study using SegNet-based chest X-ray image segmentation (1674 images for training and 199 images for testing), the average accuracy for the detection of a lung nodule and the overlap score were 98.31% and 94.40%, respectively42. A comparison trial of a generative adversarial network (GAN) model with a few CNNs (12,150 abdominal CT images for training and 8,800 CT images for testing) showed that the SegNet IoU for hepatocellular carcinoma was 78.57, which is higher than the that in the current trial (0.584)47. All of the aforementioned studies, in which stroke lesions, liver masses, or lung nodules were of interest, achieved a higher accuracy and IoU than the current trial, in which fibrotic tissues were of interest. This suggests that the DL-based quantification of lymphedema-induced fibrosis is a greater challenge. Compared to the easy demarcation of oval- or semioval-shaped regions in the abovementioned trials, the difficult demarcation of amorphous fibrotic tissues can explain the lower accuracy and IoU. Moreover, the differences in demographic factors, such as medical diseases, sex, and age, and the relatively small sample size of the current trial should be considered.

Meanwhile, hybrid DL models have shown very successful results in diagnostic accuracy since the early 2020s; in a CNN-based trial of Alzheimer’s disease brain MRI (2560 sections), features were extracted by hybridization of Darknet53, InceptionV3, and Resent101 models and concatenated. Then, they were optimized by mPMR and classified by support vector machine (SVM) and k-nearest neighbors (KNN) and showed very high accuracy of Alzheimer’s disease grades (none, very mild, mild, moderate) ranging from 94.4 to 99.1%33. In a CNN-based trial of cystourethrography on pediatric vesicoureteral reflux (1228 images), features were extracted by hybridization of Googlenet, MobilenetV2, and Densenet201 models and concatenated. They then were optimized by mPMR and classified by SVM and KNN and showed very high accuracy of vesicoureteral reflux grades (normal to V) ranging from 95.5 to 96.9%32. Regarding the relatively low accuracy in the current trial, the recent hybrid DL models might be a potential solution to increase the accuracy.

In addition to the aforementioned limited accuracy, it is uncertain that the authors measured pure fibrosis. As shown in Figs. 3 and 4, what the authors called "fibrosis" is areas with non-fat attenuation in subcutaneous fat layers. Such areas might include fibrosis but also can include moderately sized vessels and lymphedema itself. The authors are aware of the inclusion of vessels and acknowledge that blood and surrounding vessels in the donut-shaped region were labeled fibrosis based on the assumption that the total number of blood vessel pixels (the total area occupied by blood vessels) was nearly the same in the affected and unaffected limbs.

The most significant problem is that the authors cannot discriminate between lymphedema and fibrosis. Fibrosis involves macroscopic change that can be visualized on histo-pathology10. As shown in previous reports14,16,17, fibrosis can be viewed on conventional-resolution CT at a 512 × 512 pixel matrix size and an element size of 0.5 mm (0.25 mm in super-high resolution)48. Thus, fibrosis is measurable by current DL-based segmentation. Meanwhile, exudate fluid in pure lymphedema without fibrosis can induce reticulation in CT scanning49. So the reticulation in the subcutaneous fat compartment usually contains both water and fibrosis. HU value for suprafascial lymphedema is known to range from − 120 HU to − 100 HU50. However, the HU was measured a few times at selective areas within subcutaneous fat compartments with no discrimination of lymphedema from the fat in such reports. Furthermore, fat infiltration, an inevitable complication in lymphedema10, cannot be helped but included as well in such assessments. As the results, both background fat and fat infiltration cause shifting of the selected ROI value down toward that of fat (− 70 HU to − 190 HU)34, similar to Edmunds et al.’s report44 and Aubrey et al.’s report51. However, if this affection is abolished with the aid of the method in the current study, value of the selected ROI will return to the original value of soft tissue (30 HU to 60 HU)34,51. In addition, muscles in general show CT value of 30 HU to 60 HU in healthy young population51. However, low attenuation of muscles (− 29 HU to 29 HU) can happen in case of muscle-affecting focal/systemic diseases: for instance, denervated muscles and muscles in the elderly. In such cases, fat infiltration is the most acceptable factor as an underlying cause51. Similar to that, it is well known that fat infiltration occurs inside the affected muscles as the results of lymphedema-induced inflammatory cascade. Considering the aforementioned two findings, authors selected pixels of HU from − 34 to 26 to remove the fat-infiltrated, low attenuated muscles and interstitial water (HU: 0) inside the lymphedema, and then reticulation pixels were differentiated, via k-means clustering method, into either of the subcutaneous fat and the fibrosis in the current study.

However, lymphedema is defined as accumulation of tissue fluid in the extracellular, interstitial space and can be observed only at a microscopic level. CT, including super-high-resolution CT, cannot yet visualize a microscopic scale. Following the pattern of improved MRI resolution to 7.0 T and 11.74 T52,53, the authors expect advances in CT technology to allow visualization of lymphedema.

In contrast to fibrosis segmentation performance, the correlation of the calculated indices with the clinical gold standard measurements showed more advanced outcomes (Table 3); previous CT image values showed a correlation coefficient of 0.46 with the 1-kHz-based BEI ratio and of 0.45 with the SCDR in a manually predefined segmentation study of lymphedema-induced fibrosis21. The 0.45 correlation coefficient with the SCDR is similar to that in the current trial (0.448 for the proximal SCDR and 0.406 for the distal SCDR). However, the correlation coefficient (0.875) with the 1-kHz-based BEI ratio in the current trial is much higher than that (0.46) in the former trial. Considering that the purpose of the current trial is to develop a DL-based algorithm as an alternative to traditional filter-based algorithms demanding manual predefinition and feature extraction, this advancement suggests the superiority of CNN over traditional methods in automatic lymphedema-induced fibrosis recognition.

In lymphedema, inflammatory fibrosis is first triggered at the cellular-molecular level via increased transcription of IL-6, IL-8, TNF-α, and TGF-β1. If lymphatic system dysfunction does not spontaneously recover or is well compensated following this trigger in the acute period54,55,56, lymphoproliferative inflammation will continue to worsen over time. This will result in macroscopic fibrosis consisting of collagen and extracellular matrix deposition10,11. Lymphedema-induced fibrosis takes place internally between the skin and muscle layers through replacement of normal anatomical components by fibrotic tissues rather than outward expansion of the limb volume10,11. Moreover, this reconstitution change occurs dominantly in subcutaneous fat layers57 in the form of a spatiotemporal cascade22. Therefore, a simple measurement of the external circumference cannot precisely represent this kind of inner fibrotic replacement. Furthermore, adiposity can be affected by anatomical location and sex58; the larger is the area of the involved subcutaneous fat compartment in an individual patient, the greater can be the discrepancy between the inner change and external limb circumference. Taking the above findings into consideration, a lower correlation of the four indices with the SCDR might be expected. Moreover, the low-frequency direct current used in BEI analysis is mainly conducted via interstitial fluid59,60; in other words, the impedance value measured by BEI analysis, which is dependent on the relative ratio of connective tissue, in which electrical current cannot propagate as efficiently as in the interstitial space, could be more suitable for representing inner fibrotic changes than the external circumference61. Considering the above findings, the high correlation of the four indices with the BEI might be expected. However, further comparison studies involving direct histological findings, such as those of tissue biopsies, might be required for more definite validation.

All the subindices of Index 2 showed moderate to strong significant correlations with the BEI (0.630–0.875). However, only half of the Index 1, 3, and 4 subindices showed moderate significant correlations (0.420–0.701). This discrepancy was remarkable. Because the pixels classified as fibrosis in the affected limb were subtracted from the pixels classified as fibrosis in the unaffected limb, some segmentation errors in the affected limb might have been eliminated, potentially contributing to the stronger correlation. In image-based medical trials, due to common phenomena of anatomical variation among individuals62, use of the relative ratio rather than the absolute ratio is the preferred data standardization technique. Therefore, Index 2 calculated using the above standardization method might demonstrate higher classification power than Indices 1, 3, and 4, such that it would show the highest relationship with the BEI, similar to a calculation formula used in another image segmentation-based AI lymphedema study21.

### Limitations

Instead of an intention-to-treat analysis, a per-protocol analysis was used in the current trial because the protocol was violated in 3 patients. The effect size can be overvalued in per-protocol analyses63. Moreover, if the sample size is small, this phenomenon can be stronger. As a widely reported DL-related issue, overfitting (good fit on the training dataset but poor performance on a new test dataset) should be considered64. Because images from 30 patients (1920 CT images) were utilized for the model development in the current trial, actions to avoid overfitting, such as normalized layer generation, dropout layer insertion, and data augmentation to compensate for data variations46, had to be conducted. Because images can be influenced by CT scanning parameters or acquisition protocols at individual medical centers, using the current model with a single CT scanner at a single center could lead to data and/or model bias. Another limitation is that female patients made up the vast majority of the study population (only one patient was male)65. Additionally, the study followed a cross-sectional rather than prospective design. Although lymphedema-induced subfascial muscular fibrosis66 and subsequent muscular change44 have been reported, they were not included here. Future studies are needed to support the current findings in a larger number of subjects.

## Conclusions

To show the validity of the DL-based algorithm for identifying lymphedema-induced fibrosis in CT scans, a cross-sectional, observational cohort trial was conducted, and the proposed algorithm was compared with the two gold standard measurements of lymphedema: the BEI and SCDR. In total, 1920 images of 30 lymphedema patients were assigned to a training dataset (65%), validation dataset (15%), and test dataset (20%). The accuracy and MeanBFScore of the SegNet-based fibrosis segmentation were 0.776 and 0.868, respectively. The 4 calculated indices showed a significant strength of correlation (0.420–0.875) with the BEI in patients with chronic moderate-to-severe lymphedema. Among the 4 calculated formulae, the subtraction-type formula is the most promising for this estimation and could act as a foundation for development of automatic recognition systems for fibrotic changes resulting from various inflammation-provoking diseases, such as cellulitis and generalized edema67. Such systems would use cross-sectional CT images, leading to a greater chance of early detection with standardized classification in the future.

## Methods

A cross-sectional, observational cohort trial was conducted from January 2018 to March 2019 at a teaching university hospital/tertiary medical center. The protocol of this study was approved by the University Hospital Institutional Review Board (2018-04-009) and was registered at the Protocol Registration and Results System (PRS), www.clinicaltrials.gov (NCT04811677: https://clinicaltrials.gov/ct2/show/NCT04811677?term=NCT04811677&draw=2&rank=1). All methods were performed in accordance with the relevant guidelines and regulations. The trial conformed to the tenets of the Declaration of Helsinki. Patients were included if they were clinically diagnosed with unilateral limb lymphedema and had undergone BEI analysis and CT scanning. The subjects provided written informed consent for publication of the case details. Data were collected as close to the CT scanning date as possible. Patients who were diagnosed with deep vein thrombosis, bilateral limb involvement, vascular disease, or local infection were excluded.

### Bioelectrical impedance (BEI) analysis at 1 kHz

Multifrequency BEI analysis and BEI spectroscopy are frequently used to verify the interstitial fluid of patients with lymphedema59,60. Regarding accuracy, the lower is the frequency, the more reliable is the measurement59. However, a frequency of 0 kHz is not applicable, so BEI analysis was conducted at the lowest appropriate frequency (1 kHz)60. To minimize variation in the interstitial hydrostatic pressure68, patients were requested to maintain their regular diet the day before the BEI analysis and to rest in a supine position without movement for 20 min before the analysis. The data were collected using the direct segmental measurement BEI analysis method. The value on the affected side was subtracted from the value on the unaffected side, and that result was divided by the value on the unaffected side.

### Standardized circumference difference ratio (SCDR)

After the patients were instructed to lie in the supine position, the limb circumference 5 cm below and 5 cm above the midpopliteal fossa or midantecubital crease was measured on both sides with nonelastic 1-mm polyvinyl chloride fiberglass tape. The difference between the affected and unaffected sides was divided by the circumference of the unaffected side.

### Lymphedema-induced fibrosis labeling

In this trial, an automatic segmentation method using the DL algorithm was applied. The patients were instructed to keep their body in an anatomically neutral position with both arms in full extension if necessary. Both limbs from the wrist crease to the distal tip of the clavicle or from 5 cm above the lateral malleolus to the point of lower limb separation were simultaneously scanned using CT21,69. Among them, images of the patellae were manually excluded because their composition prohibits fibrosis. The CT images were acquired by a single 64-channel, multi-detector plain CT (GE Discovery CT 750 HD, GE Healthcare, USA), parameters of which are 120 kVp, pitch of 0.984 : 1, 64 × 0.625 collimator configuration, slice thicknesses of 3.8–5.7 mm, and 120 mA. The data were preprocessed at a 512 × 512 pixel matrix size and element size of no larger than 0.5 mm.

The collected CT images were labeled semiautomatically using a lab-developed MATLAB (MathWorks, USA) GUI, as shown in Fig. 4. Figure 5 shows step-by-step images of the semiautomatic labeling process. The original image (Fig. 5a) was binarized, and then the inside of the largest region was eroded to label the skin pixels (Fig. 5b). Pixels from − 34 HU to 26 HU in the original image were selected manually to identify the muscle and water pixels (Fig. 5c). In the original image, the labeled skin and muscle/water pixels were subtracted from the remaining donut-shaped area (Fig. 5d) where the fat and fibrosis pixels were combined. The pixels in the donut-shaped region were then identified as fat or fibrosis pixels using the k-means clustering method, an unsupervised learning method. As a result, every pixel in the original CT images was labeled air, muscle/water, skin, fat, or fibrosis for training. Blood and surrounding vessels in the donut-shaped region were labeled fibrosis instead of being distinguished as blood vessels based on the assumption that the total number of blood vessel pixels (the total area occupied by blood vessels) was nearly the same in the affected and unaffected limbs.

### Algorithm training

As a DL model for pixelwise segmentation, SegNet was chosen and trained using 1920 CT images. It is one of the most common models used for semantic segmentation in digital images. As the input, the original gray-scale CT images were cropped to 256 by 256 pixels. Among the 1920 cropped images, the proportions of images selected for the training dataset, validation dataset, and test dataset were 65% (1252), 15% (290), and 20% (378), respectively. All the images from one patient were assigned to the same dataset. By this method, images from one patient were not used for training and testing simultaneously. The training and validation datasets were augmented with translation, reflection, and rotation. Every image in the training dataset was translated from − 3 to 3 pixels along the X or Y direction, reflected to the horizontal direction, and rotated between − 30 degrees and 30 degrees at an interval of one degree. By this augmentation approach, the collective training and validation datasets were increased to 4,684,596 images. Using the augmented images, the SegNet-based model was trained with an encoder depth of 3, 55 epochs, learning rate of 0.002, a minibatch size of 16, the Adam optimizer, and shuffling after every epoch. The encoder depth of 3 indicated 3 sets of one convolution layer and one ReLu and one max pooling layer with 2 strides for down sampling. After encoding, 3 sets of up sampling layers were arranged. A commercial mathematical package, MATLAB (MathWorks, USA), in a graphics processing unit environment (GeForce RTX 2070 SUPER, NVIDIA, USA) was used to train the SegNet-based model.

### Data analysis

Based on the segmentation results of the trained algorithm, four types of indices were defined and calculated for every cross-sectional CT image for comparison with the clinical gold standards, i.e., the BEI and SCDR. The first index was defined as the ratio between the affected and unaffected limbs of the summation of the fat- and fibrosis-classified pixel numbers, as shown in Eq. 2.

$$\frac{{P_{Fat\; in\; Affected} + P_{Fibrosis\; in\; Affected} }}{{P_{Fat\; in\; Unaffected} + P_{Fibrosis\; in\; Unaffected} }}$$
(2)

where $$P_{Fat\; in\; Affected}$$ is the number of pixels classified as fat in the affected limb, $$P_{Fibrosis\; in\; Affected}$$ is the number of pixels classified as fibrosis in the affected limb, $$P_{Fat\; in\; Unaffected}$$ is the number of pixels classified as fat in the unaffected limb, and $$P_{Fibrosis\; in\; Unaffected}$$ is the number of pixels classified as fibrosis in the unaffected limb. Technically speaking, a pixel classified as fibrosis should be reticulated only in the affected limb. Although reticulations with a honeycomb appearance are the result of lymphedema-induced microscopic inflammation in the subcutaneous layers, as described in the Introduction14,16,17, pixels classified as fibrosis were present in the unaffected limb and might be representative of subcutaneous fat septa or superficial fascia67. However, for notation uniformity, these pixels are denoted as $$P_{Fibrosis\; in\; Unaffected}$$.

The second index was defined as the difference between the number of pixels classified as fibrosis between the affected and unaffected limbs divided by the number of pixels in the unaffected limb, as shown in Eq. (3).

$$\frac{{P_{Fibrosis\; in\; Affected} - P_{Fibrosis\; in\; Unaffected} }}{{P_{Limb\; in\; Unaffected\;} }}$$
(3)

where $$P_{Limb\; in\; Unaffected}$$ is the total number of pixels classified as skin, muscle/water, fat, or fibrosis in the unaffected limb.

The third index was defined as the ratio of the number of pixels classified as fibrosis in the affected and unaffected limbs, as shown in Eq. (4).

$$\frac{{P_{Fibrosis\; in\; Affected} }}{{P_{Fibrosis\; in\; Unaffected} }}$$
(4)

The fourth index was defined as the sum of all the pixels classified as fibrosis in the affected limb of one patient, as shown in Eq. (5).

$$\Sigma P_{Fibrosis\; in\; Affected}$$
(5)

### Statistical analysis

The sample size was calculated using Power Analysis and Sample Size Software, version 11.0. (PASS, NCSS Statistical Software, Kaysville, UT, USA: https://www.ncss.com/software/pass/). For two correlation analyses, a power of 0.80, an α of 0.05, an R0 (baseline correlation) of 0, and an R1 (alternative correlation) of 0.5 were chosen based on data reported by Koo et al.21. The estimated minimum sample size was 2970. Considering that image processing-based trials are well controlled, the likelihood of midterm dropout was expected to be very low. Allowing for a dropout ratio of 5%, 30 patients were required. Two-sided statistical analyses were conducted using the Statistical Package for the Social Sciences, version 24 (SPSS, Inc., Chicago, USA). Normality verification was performed using the Kolmogorov–Smirnov test. To remove the linear effect derived from interstitial fluid (BEI) or limb swelling (SCDR), the four indices were compared with the BEI and SCDR using partial correlation analysis. If a normal distribution was not verified, the data were analyzed after log transformation. A small positive number was added prior to the log transformation if the values were negative71.


text:
“Hello, World!”

So... uh... this is a bit embarrassing. But we don't have a plain "Hello, World!" challenge yet (despite having 35 variants tagged with , and counting). While this is not the most interesting code golf in the common languages, finding the shortest solution in certain esolangs can be a serious challenge. For instance, to my knowledge it is not known whether the shortest possible Brainfuck solution has been found yet.

Furthermore, while all of Wikipedia (the Wikipedia entry has been deleted but there is a copy at archive.org ), esolangs and Rosetta Code have lists of "Hello, World!" programs, none of these are interested in having the shortest for each language (there is also this GitHub repository). If we want to be a significant site in the code golf community, I think we should try and create the ultimate catalogue of shortest "Hello, World!" programs (similar to how our basic quine challenge contains some of the shortest known quines in various languages). So let's do this!

The Rules

• Each submission must be a full program.
• The program must take no input, and print Hello, World! to STDOUT (this exact byte stream, including capitalization and punctuation) plus an optional trailing newline, and nothing else.
• The program must not write anything to STDERR.
• If anyone wants to abuse this by creating a language where the empty program prints Hello, World!, then congrats, they just paved the way for a very boring answer.

Note that there must be an interpreter so the submission can be tested. It is allowed (and even encouraged) to write this interpreter yourself for a previously unimplemented language.

• Submissions are scored in bytes, in an appropriate (pre-existing) encoding, usually (but not necessarily) UTF-8. Some languages, like Folders, are a bit tricky to score - if in doubt, please ask on Meta.
• This is not about finding the language with the shortest "Hello, World!" program. This is about finding the shortest "Hello, World!" program in every language. Therefore, I will not mark any answer as "accepted".
• If your language of choice is a trivial variant of another (potentially more popular) language which already has an answer (think BASIC or SQL dialects, Unix shells or trivial Brainfuck-derivatives like Alphuck), consider adding a note to the existing answer that the same or a very similar solution is also the shortest in the other language.

As a side note, please don't downvote boring (but valid) answers in languages where there is not much to golf - these are still useful to this question as it tries to compile a catalogue as complete as possible. However, do primarily upvote answers in languages where the authors actually had to put effort into golfing the code.

For inspiration, check the Hello World Collection.

The Catalogue

The Stack Snippet at the bottom of this post generates the catalogue from the answers a) as a list of shortest solution per language and b) as an overall leaderboard.

## Language Name, N bytes

where N is the size of your submission. If you improve your score, you can keep old scores in the headline, by striking them through. For instance:

## Ruby, <s>104</s> <s>101</s> 96 bytes

If there you want to include multiple numbers in your header (e.g. because your score is the sum of two files or you want to list interpreter flag penalties separately), make sure that the actual score is the last number in the header:

## Perl, 43 + 2 (-p flag) = 45 bytes

You can also make the language name a link which will then show up in the snippet:

## [><>](https://esolangs.org/wiki/Fish), 121 bytes

/* Configuration */

var QUESTION_ID = 55422; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 8478; // This should be the user ID of the challenge author.

/* App */

return "https://api.stackexchange.com/2.2/questions/" +  QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}

}

jQuery.ajax({
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(a) {
});
comment_page = 1;
}
});
}

jQuery.ajax({
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
});
else process();
}
});
}

var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;

function getAuthorName(a) {
return a.owner.display_name;
}

function process() {
var valid = [];

var body = a.body;
if(OVERRIDE_REG.test(c.body))
body = '
' + c.body.replace(OVERRIDE_REG, '') + '
';
});

var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
});
else console.log(body);
});

valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});

var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;

.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)

var lang = a.language;
lang = jQuery(''+lang+'').text();

languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});

var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);

langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});

for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
language = jQuery(language);
jQuery("#languages").append(language);
}

}
body {
text-align: left !important;
display: block !important;
}

width: 290px;
float: left;
}

#language-list {
width: 500px;
float: left;
}

font-weight: bold;
}

table td {
}

Shortest Solution by Language

Language	User	Score

	Author	Language	Size

• @isaacg No it doesn't. I think there would be some interesting languages where it's not obvious whether primality testing is possible. – Martin Ender Aug 28 '15 at 13:56
• If the same program, such as "Hello, World!", is the shortest in many different and unrelated languages, should it be posted separately? – aditsu quit because SE is EVIL Aug 28 '15 at 15:33
• @mbomb007 Well it's hidden by default because the three code blocks take up a lot of space. I could minify them so that they are a single line each, but I'd rather keep the code maintainable in case bugs come up. – Martin Ender Aug 28 '15 at 19:34
• @ETHproductions "Unlike our usual rules, feel free to use a language (or language version) even if it's newer than this challenge." Publishing the language and an implementation before posting it would definitely be helpful though. – Martin Ender Aug 29 '15 at 23:01
• @MartinEnder ... Almost. If two BF solutions have the same size, the one with smaller lexicographical order will take smaller number of bytes in Unary. Of course the smallest Unary solution translated to BF is guaranteed to be smallest. – user202729 May 20 '18 at 10:20

SNOBOL4 (CSNOBOL4), 29 28 bytes

 OUTPUT ='Hello, World!'
END

Try it online!

Thanks to Ørjan Johansen for saving a byte!

• The space after = can be removed. – Ørjan Johansen Dec 11 '17 at 20:09

uBASIC, 17 bytes

0?"Hello, World!"

Try it online!

MY-BASIC, 20 bytes

Print"Hello, World!"

Try it online!

Commentator, 197 bytes

         {-        -}!/*{-{-           {-         -}!  /*       /*/*   /*-}-}#    {-   -}!/*{- e#-}///*{-e#-}//{-#  -}!{-# e#-}///*{-{-/*   /*{-e#-}//   /*-}-}             /*#   {-            -}!/*

Try it online!

I'm genuinely surprised it took me this long to make a somewhat golfed Hello, World! program in Commentator.

17, 71

777{44 $5g$ 66 : :  69 : $1f$ 52  6c  5f $1g$ a \$ 0 @}

Explantation:

Pushes ascii values for Hello World!(in base 17). Then store 17 at 0, to make it exit by relying on the fact that if it tries to pop at number and the stack is empty it return 17 to save two characters.

Unnamed, 14 Bytes

Unnamed is an unfinished language, only custom output is supported at the time of posting this. But it works.

!Hello, World!

Explanation

! -> user specified output
Hello, World -> string

• I'm reviewing this as Looks OK because in this challenge, there's no such thing as notability. – Nissa May 6 '18 at 0:56

brainfuck, 137 bytes

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++++++++++++++.------------.>+++++++++++++++.>.+++.------.--------.<<+.

Try it online!

Explained :

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.                       H
>+.                                                                    e
+++++++..                                                             l l
+++.                                                                   o
<<++++++++++++++.                                                    comma
------------.                                                        space
>+++++++++++++++.                                                      W
>.                                                                     o
+++.                                                                   r
------.                                                                l
--------.                                                              d
<<+.                                                                   !

This can definitely be golfed. (World record is 72 bytes so I already know that)

This is basic hard coded answer, simply gets the Ascii value, resets and keeps going

brainfuck, 210 bytes

-[>+<-------]>-.[-]<-[>++<-----]>-.+++++++..[-]>+[+>+[<]>->]<.[-]--[>+<++++++]>+.[-]>-[-[-<]>>+<]>-.[-]-[>+<---]>++.[-]>+[+>+[<]>->]<.[-]>+[-->++[<]>-]>.[-]>+[++[++>]<<+]>+.[-]-[>++<-----]>--.[-]>-[-[-<]>>+<]>.

Try it online!

Explained :

-[>+<-------]>-.                                               H
[-]
<-[>++<-----]>-.                                               e
+++++++..                                                     l l
[-]
>+[+>+[<]>->]<.                                                o
[-]
--[>+<++++++]>+.                                               ,
[-]
>-[-[-<]>>+<]>-.                                             space
[-]
-[>+<---]>++.                                                  W
[-]
>+[+>+[<]>->]<.                                                o
[-]
>+[-->++[<]>-]>.                                               r
[-]
>+[++[++>]<<+]>+.                                              l
[-]
-[>++<-----]>--.                                               d
[-]
>-[-[-<]>>+<]>.                                                !

TapeBagel, 511 bytes

%% %++ %++ %++ %++ %++ %++ %++ %++ @* ## %++ %++ %++ %++ %++ @* ## %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ @* @* ## %++ %++ %++ %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ @* ## @* %++ %++ %++ %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ %++ %++ %++ @* ##  %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ @* ##

%# - adds one to the integer index.

%% - resets the integer index to zero.

%& - the integer that the integer index is pointing to is inputted into the program.

#% - sets all of the integers to one.

## - resets all of the integers to zero.

&& - pauses the program.

&@ - clears the screen.

%++ - adds one to the integer that the integer index is pointing to

@[ int ] - outputs the integer as a character (1 = A, 2 = B, ... 26 = Z)

* - integer 0

Sisi, 21 bytes

0print"Hello, World!"

Try it online!

C# (Visual C# Interactive Compiler), 22 bytes

Write("Hello, World!")

Try it online!

I realize this question has an existing C# answer which presumably uses the traditional csc.exe compiler. This answers uses the csi.exe command-line REPL.

Ruby, 19 bytes

puts"Hello, World!"

• 16 bytes - Try it online! – vrintle Nov 20 '20 at 8:21
• @vrintle That program is invalid due to the quotes in the output. – LegionMammal978 Nov 28 '20 at 14:51

Golunar, 66 bytes

142209095870573693396245504627320468349603549841832242891887476756

Python 3 + lkjqwhe, 8 bytes

import a

Well, I beat It's-a-fake-one-Daniel. ¯\_(ツ)_/¯

• You can get shorter names - qag hasn't been taken yet – A username Apr 17 at 1:18
• @Ausername I guess so, but it doesn't save bytes, and I'm too lazy to do so (not like it matters) – Makonede Apr 17 at 2:12

Grok, 23 bytes

jiHello, World!
}lYW
q

Non-terminating version, 18 bytes

iHello, World!lwh

PPL, 26 bytes

printLine("Hello, World!")

PPL is a programming language made by me. This technically does not fall into the category of "standard loophole", because this was not made to be a golfing language (easily deduced from the program, which uses printLine, if it were a golfing language I would call the function p.)

The function printLine simply takes any expression and outputs it to STDOUT. Also, as a sidenote, PPL stands for Primitive Programming Language; it is not yet Turing-complete.

To run a PPL program, install the NPM package, then require it and call run with the sole argument being the program string (no documentation yet.)

w

Try it online!

Kind of cheating really... but then I think there are some zero byte answers!

• This was already posted here last year, unfortunately :( we do technically allow duplicate answers, so it is up to you if you keep or remove it – hyper-neutrino 1 hour ago

Vyxal, 2 bytes

kH

Pushes the built-in string Hello, World!, with implicit output.

Try it Online!