Compute machine more powerful than Turing Machine

In this article, we describe a type of machine with more compute power than a Turing Machine.

Function definitions in most programming languages are compressed definitions. In other words, they are like syntax sugars.

Hypothetically, we have a type of machine called Machine Z that can turn the two functions below…

fn invert_1(x: bool) -> bool {
  if x == true {
    false
  } else {
    true
  }
}

fn invert_2(x: bool) -> bool {
  if x == false {
    true
  } else {
    false
  }
}

… into the mapping …

true -> false
false -> true

Then we say that invert_1 and invert_2 are definitionally equal, even though their notations in Rust are different.

In Machine Z, a function with type A>BA -> B is a set of paths1, where, for all terms of AA (aa), there exist a path whose start is aa and whose end is a term of BB.

By this definition, how a function is described can be “compiled” into a mapping (a set of paths). To “apply a function”, is to apply the path with the function input as the path’s start.

noncomputable in Lean means “cannot be computed in a Turing Machine”, but some such functions can be computed in Machine Z.

In Machine Z, for any two functions of the same type, it’s possible to test if they are equal by reducing their description to mapping and compare the two mappings.


  1. path: Path or Interval in Homotopy Type Theory. Two points connected with a line.↩︎