packages feed

phino-0.0.157: test-resources/atoms.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# The Ξ» functions phino's own specs fire. phino implements none of them, so a
# spec that needs one to answer brings this file in with '--symbolic'. Every
# entry answers symbolically: the operands come down through 𝔻 or reach a
# normal form through 𝕄, and the term under '𝑛' carries a fresh symbol 𝜎
# standing for the value nobody worked out. Nothing here computes, which is
# what makes the morphing symbolic.
#
# 'L_number_nope' is missing on purpose: it is the Ξ» function no entry answers,
# the one '--partial' parks on.

# Arithmetic over two numbers answers a number nobody has worked out.
- Ξ»: L_number_(plus|times|div)
  dataize:
    𝛿1: $.ρ
    𝛿2: $.x
  𝑛: Ξ¦.number( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )

# Comparing two numbers answers a bool nobody has decided, which is what the
# join below then branches on.
- Ξ»: L_number_gt
  dataize:
    𝛿1: $.ρ
    𝛿2: $.x
  𝑛: Ξ¦.bool( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )

# Comparing two byte arrays answers a bool of the same kind.
- Ξ»: L_bytes_eq
  dataize:
    𝛿1: $.ρ
    𝛿2: $.b
  𝑛: Ξ¦.bool( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )

# Inverting a byte array answers an array nobody has worked out.
- Ξ»: L_bytes_not
  dataize:
    𝛿1: $.ρ
  𝑛: Ξ¦.bytes( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )

# A join is how a branch answers when nobody has decided its condition: the
# condition comes down through 𝔻 and answers a symbol, both sides reach a
# normal form through 𝕄, and the answer of the firing is the term the two
# share, with a fresh symbol wherever they hold two different symbols. Two
# sides that differ in anything else get the firing stuck.
- Ξ»: L_fork
  dataize:
    𝛿1: $.ρ
  join:
    on: 𝛿1
    left: $.then
    right: $.else