The conference is indeed a spoof, but in so far as what Mathematicians call a "proof" - the paper contains one. Agda is a proof assistant in the spirit of the Calculus of Constructions ( https://en.wikipedia.org/wiki/Calculus_of_constructions ).
So is the joke on Computer Scientists or Mathematicians? You decide ;)
Beware of bugs in the above code; I have only proved it correct, not tried it --Donald Knuth
Sigbovik's jokes are of the kind where the premise is completely bonkers. The rest of the development is made with the utmost rigor to highlight said bonkersitude, Reductio ad absurdum.
The wide adoption of Flask as Python's backend development framework of choice makes it quite clear that software developers have a hard time picking up April fool's jokes.
Software engineers like efficiently running software.
Mathematicians like beautiful definitions.
Scientists like non-trivial discoveries.
This paper.... uh.... what exactly is it good for?
I suppose it could be kind of nice as some kind of undergraduate paper writing project kind of thing but it looks too professional for that.... I am kind of at a loss why this was written. Maybe it is some strange kind of satire....
It's written for sigbovik 2021 [1][2], which is very much a joke conference. Other papers this year were "Lowestcase and Uppestcase letters: Advances in Derp Learning" and "On the dire importance of mru caches for human survival (against Skynet)".
SIGBOVIK is a parody of computer science conferences. It's a running joke hosted on April Fools Day every year at CMU - and apparently a quite convincing one. ;-)
Source: I attended SIGBOVIK a few times in grad school.
But what I am saying is that parsing is a kind of validation. But all validation is not parsing.
For example let's say that I have written an HTTP API that accepts application/x-www-form-urlencoded data to one of its endpoints. Let's say `POST /users`, and this is where the client-side application posts data to.
Now I can implement this in many ways. I can for example define
pub struct Person {
name: String,
phone_number: String,
}
But how I populate this struct can determine whether I am actually parsing or not, even if most of the code aside from that is the same.
And of course I could go further and define types for the name and the phone number but in this case lets say that I have decided that strings are the proper representation in this case.
If the fields of my structs were directly accessible
And in my HTTP API endpoint for `POST /users` I do the following:
// ...
let name = post_data.name;
let phone_number = post_data.phone_number;
let norwegian_phone_number_format = Regex::new(r"^(\+47|0047)?\d{8}$").unwrap();
// ...
And I didn't bother to write out the rest of the code here for this example but you get the gist.
The point is that here I am doing some rudimentary validation on the phone number, requiring it to be in Norwegian format. But I am enforcing this in the implementation of the handler for the HTTP API endpoint, rather than in the data type itself.
Now I've moved the validation into an associated function of the type itself, and I've made the fields of the struct unaccessible from the outside.
And in this manner, even though my validation is still rudimentary, and a type purist might find the type insufficiently constrained, I have indeed in my own book gone from just validation to actual parsing. Because I have made it so that the construction of the type enforces the constraints on the data.
General case: Validating random data as input into some program.
Particular case: Validating random source code (data) as input into some compiler (program).
Do compilers parse or validate?
"parsing is validation, but validation is not parsing" if that were true then you should be able to give an example of a compiler doing some sort of validation on the random source code (data) that is not parsing.
The very thing which determines the validity of random source code is the compiler's ability to parse it.
This paper is an April's fool joke. I didn't think people could take that one seriously. I guess it's a good April's fool then. :)