packages feed

phino-0.0.162: test-resources/evaluate-packs/work-out-an-argument-that-comes-to-a-hanging-object.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The deferral of #1892 over a copy with two arguments: 'x' reads to the bare
# symbol '𝜎1', so the 'defer' line defers the copy, and 'w' is a call of
# 'Ξ¦.hang'. Its morph stops at a formation with no Ξ» whose Ο† reads 'ΞΎ.x', so
# the line morphs that Ο† and fires it once more, the way a branch whose Ο† reads
# its own object is worked out in #1885. The line then names 'w' by a meta
# leading to a formation whose Ο† ends in a symbol, instead of leaving a '?'
# in '<with>' (#1919).
symbolic: |
  - Ξ»: L_inc
    dataize:
      𝛿1: $.x
    𝑛: Ξ¦.num( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )
  - Ξ»: L_fork
    dataize:
      𝛿1: $.c
    morph:
      𝑛1: $.a
      𝑛2: $.b
    defer:
      𝑛3: 𝑛1
      𝑛4: 𝑛2
    join:
      on: 𝛿1
      left: 𝑛3
      right: 𝑛4
location: 'Q.y'
input: '⟦ box(x, w) ↦ ⟦ Ο† ↦ x.next ⟧, done ↦ ⟦⟧, hang(x) ↦ ⟦ Ο† ↦ ΞΎ.x ⟧, num(Ο†) ↦ ⟦⟧, items ↦ ⟦ tail ↦ ⟦ Ξ» ‍ 𝜎1 ⟧ ⟧, y ↦ ⟦ x ↦ ⟦ c ↦ ⟦ Ξ» ‍ 𝜎2 ⟧, a ↦ ⟦ Ξ» ‍ 𝜎3 ⟧, b ↦ Ξ¦.box( x ↦ Ξ¦.items.tail, w ↦ Ξ¦.hang( Ξ¦.num( Ο† ↦ ⟦ Ξ» ‍ 𝜎4 ⟧ ) ) ), Ξ» ‍ L_fork ⟧, Ξ» ‍ L_inc ⟧.Ο† ⟧'
result: '𝜎7:λ'
protocol: |
  𝕄(Ξ¦.y):
    𝔼(L_inc):
      𝔻(ΞΎ.x):
        𝔼(L_fork):
          𝔻(ΞΎ.c):
            𝛿·2Β·1 := 𝔻(𝜎2:Ξ»)
          𝛿1Β·2 := 𝛿·2Β·1  # 𝔻(ΞΎ.c)
          𝕄(ΞΎ.a):
            morphed 𝑛·2Β·1 := 𝜎3:Ξ»
          𝑛1Β·2 := 𝑛·2Β·1  # 𝕄(ΞΎ.a)
          𝕄(ΞΎ.b):
            remembered 𝑛·2Β·2 ≑ Ξ¦.box  # ⟦ x ↦ βˆ…, w ↦ βˆ…, Ο† ↦ x.next ⟧
            𝑛·2Β·3 := Ξ¦.box( x ↦ Ξ¦.items.tail )
            𝑛·2Β·4 := ⟦ x ↦ Ξ¦.items.tail, w ↦ βˆ…, Ο† ↦ x.next ⟧
            remembered 𝑛·2Β·4 ≑ 𝑛·2Β·2( x ↦ Ξ¦.items.tail )
            𝑛·2Β·5 := 𝑛·2Β·3( w ↦ Ξ¦.hang( Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ) ) )
            𝑛·2Β·6 := ⟦ x ↦ Ξ¦.items.tail, w ↦ Ξ¦.hang( Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ) ), Ο† ↦ x.next ⟧
            remembered 𝑛·2Β·6 ≑ 𝑛·2Β·4( w ↦ Ξ¦.hang( Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ) ) )
            morphed 𝑛·2Β·7 := 𝑛·2Β·6
          𝑛2Β·2 := 𝑛·2Β·7  # 𝕄(ΞΎ.b)
          recalled 𝑛·2Β·6 β‡’ 𝑛·2Β·4( w ↦ Ξ¦.hang( Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ) ) )
          recalled 𝑛·2Β·4 β‡’ 𝑛·2Β·2( x ↦ Ξ¦.items.tail )
          recalled 𝑛·2Β·2 β‡’ Ξ¦.box
          𝕄(𝑛2.w):
            𝑛·2Β·8 := Ξ¦.hang( x ↦ Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ) )
            𝑛·2Β·9 := ⟦ x ↦ Ξ¦.num( Ο† ↦ 𝜎4:Ξ» ), Ο† ↦ x ⟧
            morphed 𝑛·2Β·10 := 𝑛·2Β·9
          𝕄(𝑛2.w.Ο†):
            𝑛·2Β·11 := Ξ¦.num( Ο† ↦ 𝜎4:Ξ» )
            𝑛·2Β·12 := 𝜎4:Ξ»:Ο†
            morphed 𝑛·2Β·13 := 𝑛·2Β·12
          deferred 𝜎5 := Ξ¦.box( x ↦ 𝜎1:Ξ», w ↦ 𝑛·2Β·13 )  # 𝕄(𝑛2.Ο†)
          joined 𝜎6 := 𝛿1Β·2 ? 𝜎3 : 𝜎5
          𝑛·2Β·14 := 𝜎6:Ξ»
        𝛿·1Β·1 := 𝔻(𝜎6:Ξ»)
      𝛿1Β·1 := 𝛿·1Β·1  # 𝔻(ΞΎ.x)
      𝑛·1Β·1 := Ξ¦.num( Ο† ↦ 𝜎7:Ξ» )  # 𝑛
      𝕄(𝑛·1Β·1):
        𝑛·1Β·2 := Ξ¦.num( Ο† ↦ 𝜎7:Ξ» )
        𝑛·1Β·3 := 𝜎7:Ξ»:Ο†
        morphed 𝑛·1Β·4 := 𝑛·1Β·3
      𝑛·1Β·5 := 𝑛·1Β·4  # 𝕄(𝑛·1Β·1)
    morphed 𝑛·0Β·1 := 𝜎7:Ξ»