packages feed

phino-0.0.154: test-resources/evaluate-packs/joins-a-fork-whose-branch-an-evaluate-line-fired.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# 𝕄 leaves a formation carrying a Ξ» as it is, so a branch of a fork that
# morphs to a ready call of 'L_eq' has a shape the other branch, a plain
# decorator, does not, and the two cannot be joined. An 'evaluate' line asks
# 𝔼 of each branch once: the decorator carries no Ξ» and stays as it is, the
# call fires and answers a decorator too, and the two join (#1874).
symbolic: |
  - Ξ»: L_eq
    𝑛: ⟦ Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ ⟧
  - Ξ»: L_fork
    morph:
      𝑛1: $.a
      𝑛2: $.b
    evaluate:
      𝑛3: 𝑛1
      𝑛4: 𝑛2
    join:
      𝑛5: [𝑛3, 𝑛4]
    𝑛: 𝑛5
location: 'Q.y'
input: '⟦ y ↦ ⟦ a ↦ ⟦ Ο† ↦ ⟦ Ξ» ‍ 𝜎1 ⟧ ⟧, b ↦ ⟦ Ξ» ‍ L_eq ⟧, Ξ» ‍ L_fork ⟧.Ο† ⟧'
result: '𝜎3:λ'
protocol: |
  𝕄(Ξ¦.y):
    𝔼(L_fork):
      𝑛1Β·1 := 𝜎1:Ξ»:Ο†  # 𝕄(ΞΎ.a)
      𝑛2Β·1 := L_eq:Ξ»  # 𝕄(ΞΎ.b)
      𝑛3Β·1 := 𝑛1Β·1  # 𝔼(𝑛1)
      𝔼(L_eq):  # 𝔼(𝑛2)
        𝑛·2Β·1 := 𝜎2:Ξ»:Ο†  # 𝑛
        𝑛·2Β·2 := 𝜎2:Ξ»:Ο†  # 𝕄(𝑛·2Β·1)
      𝑛4Β·1 := 𝑛·2Β·2  # 𝔼(𝑛2)
      𝔻(𝜎3:Ξ») ∈ { 𝔻(𝜎1:Ξ»), 𝔻(𝜎2:Ξ») }
      𝑛5Β·1 := 𝜎3:Ξ»:Ο†  # [𝑛3, 𝑛4]
      𝑛·1Β·1 := 𝑛5Β·1  # 𝑛
      𝑛·1Β·2 := 𝑛5Β·1  # 𝕄(𝑛·1Β·1)