#calculus #logic #advancedresearch #joker #philosophy


An implementation of Joker Calculus in Rust

5 releases (breaking)

Uses new Rust 2021

new 0.5.0 Nov 30, 2021
0.4.0 Nov 26, 2021
0.3.0 Nov 26, 2021
0.2.0 Nov 24, 2021
0.1.0 Nov 19, 2021

#190 in Math

Download history 18/week @ 2021-11-16 52/week @ 2021-11-23

70 downloads per month


272 lines

Joker Calculus

An implementation of Joker Calculus in Rust

Based on paper Joker Calculus, by Daniel Fischer, William Alexander Morris and Sven Nilsen (2021).

Plato Plato, an influential figure in Western philosophy. Source

Example: Hello Joker

use joker_calculus::*;

fn main() {
    let a = platonism();
    let b = not(a.clone());
    assert_eq!(b.eval_closed(), seshatism());


Joker Calculus is a strongly normalizing formal model of higher duality between Platonism and Seshatism.

In philosophy of metaphysics, Platonism is the view that there exists such things as abstract objects. Platonism had a profound effect on Western thought.

In the philosophy of mathematical language design, the core axiom of Path Semantics implies the existence of a dual version of Platonism called "Seshatism".

With other words, to the degree one can take the view of Platonism in philosophy, there is a corresponding but opposite position of Seshatism. Seshatism is just as deep and complex as Platonism, because there is a precise mathematical relation between the two ways of constructing mathematical languages.

Seshatism must not be confused with Nominalism, which is important in the debate about philosophy of metaphysics. Nominalism plays a less important role in the philosophy of mathematical language design. You can learn more about this in the essay What is Wrong With Platonism?.

Seshatism is currently being studied under the AdvancedResearch organisation.

"The Joker" as a mathematical universe was inspired by the philosophy of Alan Watts, who held a lecture about the topic.

A higher duality, in the sense of the Joker Calculus, means that languages can have different surface and depth levels. These configurations of surface and depth levels also have their duals.

Open vs Closed Joker Calculus

Joker Calculus comes in two variants, one called "open" and one called "closed".

  • In the closed variant, the higher dualities are involutions
  • In the open variant, the higher dualities are adjoints

Example: Open vs Closed

use joker_calculus::*;

fn main() {
    let a = seshatic(platonism());
    let b = not(a.clone());
    let b_open = b.eval_open();
    let b_closed = b.eval_closed();
    assert_eq!(b_open, platonic(joker(platonism())));
    assert_eq!(b_closed, platonic(joker(platonism())));

    let a_open = not(b_open).eval_open();
    let a_closed = not(b_closed).eval_closed();
    assert_eq!(a_open, seshatic(joker(joker(platonism()))));
    assert_eq!(a_closed, seshatic(platonism()));

No runtime deps