packages feed

phino-0.0.162: test-resources/evaluate-packs/cuts-a-recursion-that-differs-by-symbols-only.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# A recursion over a symbolic argument, under '--acyclic=proven'. 'L_down'
# answers a call of 'down' over a fresh symbol, and 'ml' dispatches 'Ο†' off
# that answer, which fires 'down' again: the first round fires it with x ↦ 𝜎1,
# the second with x ↦ 𝜎2, and no two rounds are ever the same term. They are
# the same formation up to a renaming of symbols, which is what the guard
# compares by (#1420), and 'ml' enters the formation it fires, so the second
# firing is cut before it opens and writes a 'looped' line where its block
# would have stood, carrying the term of the round that was kept (#1434). The
# cut answers the whole dispatch of 'Ο†' with a fresh symbol, named after the
# call the facts trace with 'Ο†' on top (#2307). The budget is generous here,
# so what ends the run is the cut and not the limit.
symbolic: |
  - Ξ»: L_down
    dataize:
      𝛿1: $.x
    𝑛: Ξ¦.down( x ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )
location: 'Q.y'
acyclic: proven
steps: 250
input: '⟦ down ↦ ⟦ x ↦ βˆ…, Ξ» ‍ L_down ⟧, y ↦ Ξ¦.down( x ↦ ⟦ Ξ» ‍ 𝜎1 ⟧ ).Ο† ⟧'
result: '𝜎3:λ'
protocol: |
  𝕄(Ξ¦.y):
    remembered 𝑛·0Β·1 ≑ Ξ¦.down  # ⟦ x ↦ βˆ…, Ξ» ‍ L_down ⟧
    𝑛·0Β·2 := Ξ¦.down( x ↦ 𝜎1:Ξ» )
    𝑛·0Β·3 := ⟦ x ↦ 𝜎1:Ξ», Ξ» ‍ L_down ⟧
    remembered 𝑛·0Β·3 ≑ 𝑛·0Β·1( x ↦ 𝜎1:Ξ» )
    𝔼(L_down):
      𝔻(ΞΎ.x):
        𝛿·1Β·1 := 𝔻(𝜎1:Ξ»)
      𝛿1Β·1 := 𝛿·1Β·1  # 𝔻(ΞΎ.x)
      𝑛·1Β·1 := Ξ¦.down( x ↦ 𝜎2:Ξ» )  # 𝑛
      𝕄(𝑛·1Β·1):
        𝑛·1Β·2 := Ξ¦.down( x ↦ 𝜎2:Ξ» )
        𝑛·1Β·3 := ⟦ x ↦ 𝜎2:Ξ», Ξ» ‍ L_down ⟧
        remembered 𝑛·1Β·3 ≑ 𝑛·0Β·1( x ↦ 𝜎2:Ξ» )
        morphed 𝑛·1Β·4 := 𝑛·1Β·3
      𝑛·1Β·5 := 𝑛·1Β·3  # 𝕄(𝑛·1Β·1)
      remembered 𝑛·1Β·3 ≑ 𝑛·0Β·3
    recalled 𝑛·1Β·3 β‡’ 𝑛·0Β·3
    recalled 𝑛·0Β·3 β‡’ 𝑛·0Β·1( x ↦ 𝜎1:Ξ» )
    recalled 𝑛·0Β·1 β‡’ Ξ¦.down
    looped 𝜎3 := 𝑛·0Β·2.Ο†  # proven, repeats 𝑛·0Β·3
    morphed 𝑛·0Β·4 := 𝜎3:Ξ»