"Manifesto of Typeerorrism" by Andreas Rossberg
Preamble
Whereas recognition of the integrity and of the unforgeable type assignment for all terms of a programming language is the foundation of functionality, safety and security in computation,
Whereas it is essential, if man is not to be compelled to have recourse, as a last resort, to terminating software or hardware before it causes serious malice, that semantic integrity should be protected by the rules of a type system,
Whereas it is essential to promote the development of maintainable applications,
Whereas the users of the Meta Language have in the language definition reaffirmed their faith in fundamental type system properties, in the viability and worth of well-typed programs, where type soundness has determined computational progress and preservation, and thereby promotes better standards of quality in software,
Whereas implementations have pledged themselves to achieve, in accordance with the language definition, the promotion of universal respect for and observance of type safety, abstraction safety and memory safety,
Whereas a common understanding of types is of the greatest importance for the realisation of these properties,
Now, Therefore we proclaim THIS MANIFESTO OF TYPEERRORISM as a common standard of achievement for all languages and all implementations, to the end that they all shall strive, keeping this manifesto constantly in mind, by diagnosing type errors in every term and every value in a program, to promote respect for these properties and by rejecting erroneous programs, statically, to secure their universal and effective recognition and observance, both among the language designers themselves and among the users of their languages.
Article 1.
All computational objects are created well-formed and equivalent in integrity and typefulness. They are endowed with representation and behaviour and should evaluate in a spirit of safety and security.
Article 2.
Every term is entitled to all the rights and freedoms set forth by its declaration, without distinction of any kind, such as representation, size, alignment, lifetime, mutability, polarity, polymorphism, genericity, abstractness or other property, static or dynamic. Furthermore, no distinction shall be made on the basis of the module, program, language, implementation, operating system, or hardware where a term is created, whether it be compiled, interpreted, staged, distributed, embedded, proprietary, open-source, or of any other characteristic.
Article 3.
Every value has the right to safe lifetime, integrity and garbage collection of representation.
Article 4.
No value shall be destroyed improperly or prematurely; manual deallocation and manual memory management shall be prohibited in all times.
Article 5.
No value shall be subjected to casts or to unsafe, insecure or abstraction-violating treatment or processing.
Article 6.
Every value has the right to recognition everywhere as a term before the type system.
Article 7.
All terms are equal before the type system and are entitled without any discrimination to equal protection of the type system. All are entitled to equal protection against any discrimination in violation of their semantics and against any attempt to such discrimination.
Article 8.
Every term has the right to an effective protection by the static type system against acts violating the fundamental rights granted to it by the language semantics.
Article 9.
No term shall be subjected to arbitrary limitations, or ad-hoc exclusion from the language.
Article 10.
Every term is entitled in full equality to a strong and static type check based on a sound and decidable type system, in the determination of its type and of any semantic caveat hold against it.
Article 11.
(1) Every term has to be presumed a pre-term until proved well-formed according to the type system in a static check that considers all the context information necessary for its formation.
(2) No term shall be rejected on account of any restriction which did not apply, under the type system's rules, in the context where it was used.
Article 12.
No value shall be subjected to arbitrary interference with its privacy, type, location or correspondence, nor to attacks upon its integrity and representation. Every value has the right to the protection of the type system against such interference or attacks.















