packages feed

phino-0.0.152: test-resources/evaluate-packs/walks-a-binding-of-an-object-once-however-many-copies-hold-it.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The synonym of '--acyclic=plausible': every dispatch on 'Φ.num' copies the
# object, and the deep walk entered the bindings of every copy as if they were
# new, so the test of 'num' was brought to its normal form and fired once
# under 'a', once under 'b' and once under 'c' (#1480). The copy goes by a
# name in the world, 'Φ.num( φ ↦ … )', and the object part of that name is a
# synonym of it, so the walk enters 'test' of 'Φ.num' in the first copy it
# meets and leaves it as written in every later one. The φ each copy fills is
# an argument of that copy and not a binding of 'Φ.num', so it is entered
# every time.
symbolic: |
  - λ: L_id
    morph:
      𝑛1: $.x
    𝑛: 𝑛1
  - λ: L_twice
    dataize:
      𝛿1: $.ρ
    𝑛: Φ.num( φ ↦ ⟦ λ ⤍ 𝜎 ⟧ )
deep: true
partial: true
acyclic: plausible
steps: 32
input: >
  ⟦ num ↦ ⟦ φ ↦ ∅, twice ↦ ⟦ ρ ↦ ∅, λ ⤍ L_twice ⟧, test ↦ Φ.num( φ ↦ ⟦ Δ ⤍ 01- ⟧ ).twice ⟧,
    a ↦ ⟦ λ ⤍ L_id, x ↦ Φ.num( φ ↦ ⟦ Δ ⤍ 2A- ⟧ ) ⟧,
    b ↦ ⟦ λ ⤍ L_id, x ↦ Φ.num( φ ↦ ⟦ Δ ⤍ 2B- ⟧ ) ⟧,
    c ↦ ⟦ λ ⤍ L_id, x ↦ Φ.num( φ ↦ ⟦ Δ ⤍ 2C- ⟧ ) ⟧ ⟧
protocol: |
  𝕄(Φ):
    𝕄(Φ.a):
      𝕄(Φ.a.x):
        𝑛·0·1 := Φ.num( φ ↦ 2A-:Δ )
      𝔼(L_id):
        𝕄(Φ.a🌵0):
          𝑛·1·1 := Φ.num( φ ↦ 2A-:Δ )
          𝕄(Φ.a🌵0.test):
            𝑛·1·2 := Φ.num( φ ↦ 01-:Δ )
            𝑛·1·3 := Φ.num( φ ↦ 01-:Δ )
            𝔼(L_twice):
              𝔻(Φ.a🌵1):
                𝕄(Φ.a🌵1):
                  𝑛·2·1 := Φ.num( φ ↦ 01-:Δ )
                𝛿·2·1 := 01-
              𝛿1·2 := 𝛿·2·1  # 𝔻(ξ.ρ)
              𝑛·2·2 := Φ.num( φ ↦ 𝜎1:λ )  # 𝑛
              𝕄(𝑛·2·2):
                𝑛·2·3 := Φ.num( φ ↦ 𝜎1:λ )
              𝑛·2·4 := 𝑛·2·3  # 𝕄(𝑛·2·2)
        𝑛1·1 := 𝑛·1·1  # 𝕄(ξ.x)
        𝑛·1·4 := 𝑛·1·1  # 𝑛
        𝑛·1·5 := 𝑛·1·1  # 𝕄(𝑛·1·4)
    𝕄(Φ.b):
      𝕄(Φ.b.x):
        𝑛·0·2 := Φ.num( φ ↦ 2B-:Δ )
      𝔼(L_id):
        𝕄(Φ.a🌵2):
          𝑛·3·1 := Φ.num( φ ↦ 2B-:Δ )
        𝑛1·3 := 𝑛·3·1  # 𝕄(ξ.x)
        𝑛·3·2 := 𝑛·3·1  # 𝑛
        𝑛·3·3 := 𝑛·3·1  # 𝕄(𝑛·3·2)
    𝕄(Φ.c):
      𝕄(Φ.c.x):
        𝑛·0·3 := Φ.num( φ ↦ 2C-:Δ )
      𝔼(L_id):
        𝕄(Φ.a🌵3):
          𝑛·4·1 := Φ.num( φ ↦ 2C-:Δ )
        𝑛1·4 := 𝑛·4·1  # 𝕄(ξ.x)
        𝑛·4·2 := 𝑛·4·1  # 𝑛
        𝑛·4·3 := 𝑛·4·1  # 𝕄(𝑛·4·2)