hvm-core 0.2.26

HVM-Core is a massively parallel Interaction Combinator evaluator.
// numbers are printed as `i64`, so over/underflows in `u60` arithmetic might
// change the sign when printed

@main = x
  // underflow
  & x ~ [n x] & #0 ~  <u8.- #1 n>   // 255
  & x ~ [n x] & #0 ~ <u16.- #1 n>   // 65535
  & x ~ [n x] & #0 ~ <u32.- #1 n>   // 4294967295
  & x ~ [n x] & #0 ~ <u60.- #1 n>   // -1

  // max
  & x ~ [n x] & #1 ~  <u8.+ #254 n>                 // 255
  & x ~ [n x] & #1 ~ <u16.+ #65534 n>               // 65535
  & x ~ [n x] & #1 ~ <u32.+ #4294967294 n>          // 4294967295
  & x ~ [n x] & #1 ~ <u60.+ #1152921504606846974 n> // -1

  // overflow
  & x ~ [n x] & #1 ~  <u8.+ #255 n>                 // 0
  & x ~ [n x] & #1 ~ <u16.+ #65535 n>               // 0
  & x ~ [n x] & #1 ~ <u32.+ #4294967295 n>          // 0
  & x ~ [n x] & #1 ~ <u60.+ #1152921504606846975 n> // 0

  // sign extension
  & x ~ [n x] & #0 ~  <i8.- #1 n> // -1
  & x ~ [n x] & #0 ~ <i16.- #1 n> // -1
  & x ~ [n x] & #0 ~ <i32.- #1 n> // -1

  // signed overflow
  & x ~ [n x] & #2   ~  <i8.* #127 n>        // -2
  & x ~ [n x] & #2   ~ <i16.* #32767 n>      // -2
  & x ~ [n x] & #2   ~ <i32.* #2147483647 n> // -2

  // all ops
  & x ~ [n x] & #10 ~ <u32.+ #2 n>  // 12
  & x ~ [n x] & #10 ~ <u32.- #2 n>  // 8
  & x ~ [n x] & #10 ~ <u32.* #2 n>  // 20
  & x ~ [n x] & #10 ~ <u32./ #2 n>  // 5
  & x ~ [n x] & #10 ~ <u32.% #2 n>  // 0
  & x ~ [n x] & #10 ~ <u32.== #2 n> // 0
  & x ~ [n x] & #10 ~ <u32.!= #2 n> // 1
  & x ~ [n x] & #10 ~ <u32.< #2 n>  // 0
  & x ~ [n x] & #10 ~ <u32.> #2 n>  // 1
  & x ~ [n x] & #10 ~ <u32.& #2 n>  // 2
  & x ~ [n x] & #10 ~ <u32.| #2 n>  // 10
  & x ~ [n x] & #10 ~ <u32.^ #2 n>  // 8
  & x ~ [n x] & #10 ~ <u32.<< #2 n> // 40
  & x ~ [n x] & #10 ~ <u32.>> #2 n> // 2
  & x ~ [n x] & #9  ~ <u32./ #0 n>  // 0

  & x ~ *