phino-0.0.160: test-resources/evaluate-packs/joins-a-bare-symbol-a-cast-brought-down-two-decorators.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The bare symbol stands on the left this time, and the right side reaches its
# data two decorators down, the way 'bool.and' of EO carries its argument 'x'
# beside the Ο of the 'false' it decorates. A 'cast' block finds the bare one
# of its two terms by itself, casts it into a copy of the other with π2 in
# place of π3 at the end of the Ο chain, two steps down, and binds each meta
# in the order its lines are written, so 'π3' takes the cast and 'π4' keeps
# the right side as it is. The cast mints no symbol, and π2 stays what it
# was (#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 β§, if β¦ Ξ¦.zu β§, x β¦ Ξ¦.ty β§, Ξ» β€ L_fork β§.Ο β§'
result: 'β¦ Ο β¦ π4:Ξ», if β¦ Ξ¦.zu β§'
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:Ξ», if β¦ Ξ¦.zu β§, x β¦ Ξ¦.ty β§
π2Β·1 := πΒ·1Β·2 # π(ΞΎ.b)
cast π3Β·1 := β¦ Ο β¦ β¦ Ο β¦ π2:Ξ», if β¦ Ξ¦.zu β§, x β¦ Ξ¦.ty β§ # π1Β·1 up to π2Β·1
joined π4 := πΏ1Β·1 ? π2 : π3
πΒ·1Β·3 := β¦ Ο β¦ β¦ Ο β¦ π4:Ξ», if β¦ Ξ¦.zu β§, x β¦ Ξ¦.ty β§
morphed πΒ·0Β·1 := β¦ Ο β¦ π4:Ξ», if β¦ Ξ¦.zu β§