packages feed

phino-0.0.152: test-resources/evaluate-packs/parks-a-firing-whose-operand-loops.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# A loop met while an operand is being brought down to data, one whole run of 𝔻
# below the spine. That run reduces the operand under a synthetic attribute of
# its own, so what it parks on is no term of the program; the spine around the
# firing is what answers instead, with the term it had reached when the firing
# started (see 'down' in 'Morph'). The entry never fires, and the protocol keeps
# the firing it opened and the loop it met underneath.
symbolic: |
  - λ: L_outer
    dataize:
      𝛿1: ξ.arg
    𝑛: ⟦ λ ⤍ 𝜎 ⟧
  - λ: L_loop
    𝑛: ⟦ λ ⤍ L_loop ⟧
location: 'Q.x'
acyclic: proven
steps: 250
input: >
  ⟦ x ↦ ⟦ arg ↦ ⟦ λ ⤍ L_loop ⟧.foo, λ ⤍ L_outer ⟧.bar ⟧
result: '⟦ arg ↦ L_loop:λ.foo, λ ⤍ L_outer ⟧.bar'
protocol: |
  𝕄(Φ.x):
    𝔼(L_outer):
      𝔻(Φ.a🌵0):
        𝕄(Φ.a🌵0):
          𝔼(L_loop):
            𝑛·2·1 := L_loop:λ  # 𝑛
            𝑛·2·2 := L_loop:λ  # 𝕄(𝑛·2·1)
          looped(L_loop:λ)  # proven