packages feed

phino-0.0.152: test-resources/evaluate-packs/fails-on-a-bare-symbol-and-a-branch-holding-two-symbols-when-lenient.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# A lenient join answers a copy of the branch a bare symbol stands against only
# when that branch holds exactly one symbol (#1817), since only then is it
# clear which symbol the bare one pairs with. Here the call of 'Ξ¦.bool' holds
# two, '𝜎2' and '𝜎3', so the join is refused and the firing gets stuck.
symbolic: |
  - Ξ»: L_fork
    morph:
      𝑛1: $.a
      𝑛2: $.b
    join:
      𝑛3: [𝑛1, 𝑛2]
    lenient: true
    𝑛: 𝑛3
location: 'Q.y'
deep: true
input: |
  ⟦
    bool(if) ↦ ⟦ Ο† ↦ ΞΎ.if( Ξ±0 ↦ ⟦ Ξ” ‍ FF- ⟧, Ξ±1 ↦ ⟦ Ξ” ‍ 00- ⟧ ) ⟧,
    y ↦ ⟦
      r ↦ ⟦
        a ↦ ⟦ Ξ» ‍ 𝜎1 ⟧,
        b ↦ ⟦ Ο† ↦ Ξ¦.bool( if ↦ ⟦ Ξ» ‍ L_fork, left ↦ βˆ…, right ↦ βˆ…, Ο† ↦ ⟦ Ξ» ‍ 𝜎2 ⟧, was ↦ ⟦ Ξ» ‍ 𝜎3 ⟧ ⟧ ) ⟧,
        λ ‍ L_fork
      ⟧
    ⟧
  ⟧
fails: "No entry of --symbolic answers the Ξ» function 'L_fork'"
protocol: |
  𝕄(Ξ¦.y):
    𝕄(Ξ¦.y.r):
      𝕄(Ξ¦.y.r.b):
        𝕄(Ξ¦.y.r.b.Ο†):
          𝑛·0Β·1 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎2:Ξ», was ↦ 𝜎3:Ξ» ⟧ )
      𝔼(L_fork):
        𝑛1Β·1 := 𝜎1:Ξ»  # 𝕄(ΞΎ.a)
        𝕄(Ξ¦.a🌡1):
          𝕄(Ξ¦.a🌡1.Ο†):
            𝑛·1Β·1 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎2:Ξ», was ↦ 𝜎3:Ξ» ⟧ )
        𝑛2Β·1 := 𝑛·1Β·1:Ο†  # 𝕄(ΞΎ.b)
        stuck(L_fork)