packages feed

phino-0.0.154: test-resources/evaluate-packs/keeps-a-stuck-firing-for-the-next-firing.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The memo of '--acyclic=plausible' keeps a stuck firing the way it keeps a
# cut. 'L_pair' reduces 'x' and then 'y', and both spell the very same
# formation of 'L_outer'. The firing under 'x' brings its operand down
# through 𝔻, which gets stuck on 'L_none', so the firing never answers and
# '--partial' parks it. Before #1493 the firing under 'y' reduced its operand
# and got stuck on 'L_none' again, since a stuck firing kept nothing. Now the
# second firing takes the failure the first one met: it is written at its own
# site and nothing under it is reduced.
symbolic: |
  - Ξ»: L_outer
    dataize:
      𝛿1: ΞΎ.arg
    𝑛: ⟦ Ξ» ‍ 𝜎 ⟧
  - Ξ»: L_pair
    morph:
      𝑛1: $.x
      𝑛2: $.y
    𝑛: ⟦ Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ ⟧
location: 'Q.p'
partial: true
acyclic: plausible
input: >
  ⟦ p ↦ ⟦
      x ↦ ⟦ arg ↦ ⟦ Ξ» ‍ L_none ⟧, Ξ» ‍ L_outer ⟧.Ο†,
      y ↦ ⟦ arg ↦ ⟦ Ξ» ‍ L_none ⟧, Ξ» ‍ L_outer ⟧.Ο†,
      Ξ» ‍ L_pair ⟧.Ο† ⟧
protocol: |
  𝕄(Ξ¦.p):
    𝔼(L_pair):
      𝕄(Ξ¦.a🌡0):
        𝔼(L_outer):
          𝔻(Ξ¦.a🌡1):
            unanswered(L_none)  # 𝔻(L_none:Ξ»)
          stuck(L_none)
      𝑛1Β·1 := ⟦ arg ↦ L_none:Ξ», Ξ» ‍ L_outer ⟧.Ο†  # 𝕄(ΞΎ.x)
      𝕄(Ξ¦.a🌡2):
        𝔼(L_outer):
          stall(L_none)
      𝑛2Β·1 := ⟦ arg ↦ L_none:Ξ», Ξ» ‍ L_outer ⟧.Ο†  # 𝕄(ΞΎ.y)
      𝑛·1Β·1 := 𝜎1:Ξ»:Ο†  # 𝑛
      𝑛·1Β·2 := 𝜎1:Ξ»:Ο†  # 𝕄(𝑛·1Β·1)