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