packages feed

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 ⟧