packages feed

phino-0.0.160: test-resources/evaluate-packs/joins-a-bottom-into-the-shape-of-the-other-side.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The left side is ⊥ and the right side wraps its symbol in φ beside 'k', the
# way the 'bytes' object a branch of EO comes to holds its data. The join
# keeps the shape of the right side and takes ⊥ for the symbol at its leaf:
# it mints 𝜎3 to stand for ⊥ and 𝜎4 for 𝜎2 against it, writes 𝜎3 on the
# left of the condition with a comment saying it is ⊥, and answers the right
# side with 𝜎4 in place of 𝜎2, so a method the run asks the answer for later
# is still there (#2195).
symbolic: |
  - λ: L_fork
    dataize:
      𝛿1: $.on🌵
    morph:
      𝑛1: $.left🌵
      𝑛2: $.right🌵
    join:
      on: 𝛿1
      left: 𝑛1
      right: 𝑛2
      otherwise: L_fork
location: 'Q.e1'
input: '⟦ e1 ↦ ⟦ λ ⤍ L_fork, on🌵 ↦ ⟦ λ ⤍ 𝜎1 ⟧, left🌵 ↦ ⊥, right🌵 ↦ ⟦ k ↦ ⟦⟧, φ ↦ ⟦ λ ⤍ 𝜎2 ⟧ ⟧ ⟧.φ ⟧'
result: '𝜎4:λ'
protocol: |
  𝕄(Φ.e1):
    𝔼(L_fork):
      𝔻(ξ.on🌵):
        𝛿·1·1 := 𝔻(𝜎1:λ)
      𝛿1·1 := 𝛿·1·1  # 𝔻(ξ.on🌵)
      𝕄(ξ.left🌵):
        morphed 𝑛·1·1 := ⊥
      𝑛1·1 := ⊥  # 𝕄(ξ.left🌵)
      𝕄(ξ.right🌵):
        morphed 𝑛·1·2 := ⟦ k ↦ ⟦⟧, φ ↦ 𝜎2:λ ⟧
      𝑛2·1 := 𝑛·1·2  # 𝕄(ξ.right🌵)
      joined 𝜎4 := 𝛿1·1 ? 𝜎3 : 𝜎2  # where 𝜎3 is ⊥
      𝑛·1·3 := ⟦ k ↦ ⟦⟧, φ ↦ 𝜎4:λ ⟧
    morphed 𝑛·0·1 := 𝜎4:λ