packages feed

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

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The fork of 'bool.and' from #1817 under an entry that does not say
# 'lenient: true'. A strict join pairs a bare symbol only with the symbol a φ
# chain ends in, and the chain of the second branch stops at the call of
# 'Φ.bool', so there is no symbol to pair it with and the firing gets stuck.
symbolic: |
  - λ: L_fork
    morph:
      𝑛1: $.a
      𝑛2: $.b
    join:
      𝑛3: [𝑛1, 𝑛2]
    𝑛: 𝑛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 ⟧ ⟧ ) ⟧,
        λ ⤍ 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:λ ⟧ )
      𝔼(L_fork):
        𝑛1·1 := 𝜎1:λ  # 𝕄(ξ.a)
        𝕄(Φ.a🌵1):
          𝕄(Φ.a🌵1.φ):
            𝑛·1·1 := Φ.bool( if(left, right) ↦ ⟦ λ ⤍ L_fork, φ ↦ 𝜎2:λ ⟧ )
        𝑛2·1 := 𝑛·1·1:φ  # 𝕄(ξ.b)
        stuck(L_fork)