packages feed

phino-0.0.154: test-resources/evaluate-packs/keeps-a-terminated-branch-an-evaluate-line-meets.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# A branch that morphs to ⊥ has nothing to fire, so an 'evaluate' line binds
# ⊥ as it is, and the join takes it as the branch that raises (#1874).
symbolic: |
  - λ: L_fork
    morph:
      𝑛1: $.a
      𝑛2: $.b
    evaluate:
      𝑛3: 𝑛1
      𝑛4: 𝑛2
    join:
      𝑛5: [𝑛3, 𝑛4]
    𝑛: 𝑛5
location: 'Q.y'
input: '⟦ y ↦ ⟦ a ↦ ⊥, b ↦ ⟦ φ ↦ ⟦ λ ⤍ 𝜎1 ⟧ ⟧, λ ⤍ L_fork ⟧.φ ⟧'
result: '𝜎1:λ'
protocol: |
  𝕄(Φ.y):
    𝔼(L_fork):
      𝑛1·1 := ⊥  # 𝕄(ξ.a)
      𝑛2·1 := 𝜎1:λ:φ  # 𝕄(ξ.b)
      𝑛3·1 := ⊥  # 𝔼(𝑛1)
      𝑛4·1 := 𝑛2·1  # 𝔼(𝑛2)
      terminate(left)  # 𝑛3
      𝑛5·1 := 𝑛4·1  # [𝑛3, 𝑛4]
      𝑛·1·1 := 𝑛5·1  # 𝑛
      𝑛·1·2 := 𝑛5·1  # 𝕄(𝑛·1·1)