packages feed

phino-0.0.160: test-resources/evaluate-packs/leaves-a-bare-symbol-uncast-against-a-side-holding-a-symbol-off-its-phi-chain.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The right side ends its Ο† chain in a bare symbol, but it holds another one
# under 'ke', off that chain. A cast would copy that symbol into the left side
# too, as if the left branch knew it, so a 'cast' block casts nothing here and
# binds both metas to their terms as they are. The join then diverges as it
# would with no 'cast' block at all (#2187).
symbolic: |
  - Ξ»: L_fork
    dataize:
      𝛿1: $.c
    morph:
      𝑛1: $.a
      𝑛2: $.b
    cast:
      𝑛3: 𝑛1
      𝑛4: 𝑛2
    join:
      on: 𝛿1
      left: 𝑛3
      right: 𝑛4
location: 'Q.y'
input: '⟦ y ↦ ⟦ c ↦ ⟦ Ξ» ‍ 𝜎1 ⟧, a ↦ ⟦ Ξ» ‍ 𝜎2 ⟧, b ↦ ⟦ Ο† ↦ ⟦ Ξ» ‍ 𝜎3 ⟧, ke ↦ ⟦ Ξ» ‍ 𝜎4 ⟧ ⟧, Ξ» ‍ L_fork ⟧.Ο† ⟧'
fails: "No entry of --symbolic answers the Ξ» function 'L_fork'"
protocol: |
  𝕄(Ξ¦.y):
    𝔼(L_fork):
      𝔻(ΞΎ.c):
        𝛿·1Β·1 := 𝔻(𝜎1:Ξ»)
      𝛿1Β·1 := 𝛿·1Β·1  # 𝔻(ΞΎ.c)
      𝕄(ΞΎ.a):
        morphed 𝑛·1Β·1 := 𝜎2:Ξ»
      𝑛1Β·1 := 𝑛·1Β·1  # 𝕄(ΞΎ.a)
      𝕄(ΞΎ.b):
        morphed 𝑛·1Β·2 := ⟦ Ο† ↦ 𝜎3:Ξ», ke ↦ 𝜎4:Ξ» ⟧
      𝑛2Β·1 := 𝑛·1Β·2  # 𝕄(ΞΎ.b)
      diverged 𝜎2:Ξ» vs 𝑛2Β·1  # they differ at .Ξ», and the join names no otherwise