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