packages feed

phino-0.0.158: test-resources/evaluate-packs/tells-two-symbols-of-one-datum-apart-between-firings.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The memo of '--acyclic=plausible' keeps an answer by the operands a firing
# brought down, and a symbol is an operand of its own: every symbol dataizes
# to the one manufactured datum, so two firings over two symbols come down to
# the same bytes, yet they stand for two values nobody worked out. A memo
# keyed on the bytes would answer the second firing with the symbol the first
# one minted and make the two values one; this one keys on the symbol, so each
# firing mints a symbol of its own. The two firings are the two 'morph'
# operands of 'L_pair', each fired by the dispatch of Ο† off its call.
symbolic: |
  - Ξ»: L_dataized
    dataize:
      𝛿1: $.target
    𝑛: Ξ¦.bytes( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )
  - Ξ»: L_pair
    morph:
      𝑛1: $.x
      𝑛2: $.y
    𝑛: ⟦ Ο† ↦ ⟦ x ↦ 𝑛1, y ↦ 𝑛2 ⟧ ⟧
location: 'Q.@'
acyclic: plausible
input: >
  ⟦ bytes(Ο†) ↦ ⟦⟧,
    dataized(target) ↦ L_dataized:Ξ»,
    pair(x, y) ↦ L_pair:Ξ»,
    Ο† ↦ Ξ¦.pair(
      Ξ¦.dataized( Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) ).Ο†,
      Ξ¦.dataized( Ξ¦.bytes( Ο† ↦ 𝜎2:Ξ» ) ).Ο† ).Ο† ⟧
result: '⟦ x ↦ 𝜎3:Ξ», y ↦ 𝜎4:Ξ» ⟧'
protocol: |
  𝕄(Ξ¦.Ο†):
    𝑛·0Β·1 := Ξ¦.pair( x ↦ Ξ¦.dataized( Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) ).Ο† )
    𝑛·0Β·2 := 𝑛·0Β·1( y ↦ Ξ¦.dataized( Ξ¦.bytes( Ο† ↦ 𝜎2:Ξ» ) ).Ο† )
    𝔼(L_pair):
      𝕄(ΞΎ.x):
        𝑛·1Β·1 := Ξ¦.dataized( target ↦ Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) )
        𝔼(L_dataized):
          𝔻(ΞΎ.target):
            𝕄(ΞΎ.target):
              𝑛·2Β·1 := Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» )
              morphed 𝑛·2Β·2 := 𝑛·2Β·1
            boxed 𝑛·2Β·3 := 𝑛·2Β·2.Ο†
            𝛿·2Β·1 := 𝔻(𝜎1:Ξ»)
          𝛿1Β·2 := 𝛿·2Β·1  # 𝔻(ΞΎ.target)
          𝑛·2Β·4 := Ξ¦.bytes( Ο† ↦ 𝜎3:Ξ» )  # 𝑛
          𝕄(𝑛·2Β·4):
            𝑛·2Β·5 := Ξ¦.bytes( Ο† ↦ 𝜎3:Ξ» )
            morphed 𝑛·2Β·6 := 𝑛·2Β·5
          𝑛·2Β·7 := 𝑛·2Β·6  # 𝕄(𝑛·2Β·4)
        morphed 𝑛·1Β·2 := 𝜎3:Ξ»
      𝑛1Β·1 := 𝑛·1Β·2  # 𝕄(ΞΎ.x)
      𝕄(ΞΎ.y):
        𝑛·1Β·3 := Ξ¦.dataized( target ↦ Ξ¦.bytes( Ο† ↦ 𝜎2:Ξ» ) )
        𝔼(L_dataized):
          𝔻(ΞΎ.target):
            𝕄(ΞΎ.target):
              𝑛·3Β·1 := Ξ¦.bytes( Ο† ↦ 𝜎2:Ξ» )
              morphed 𝑛·3Β·2 := 𝑛·3Β·1
            boxed 𝑛·3Β·3 := 𝑛·3Β·2.Ο†
            𝛿·3Β·1 := 𝔻(𝜎2:Ξ»)
          𝛿1Β·3 := 𝛿·3Β·1  # 𝔻(ΞΎ.target)
          𝑛·3Β·4 := Ξ¦.bytes( Ο† ↦ 𝜎4:Ξ» )  # 𝑛
          𝕄(𝑛·3Β·4):
            𝑛·3Β·5 := Ξ¦.bytes( Ο† ↦ 𝜎4:Ξ» )
            morphed 𝑛·3Β·6 := 𝑛·3Β·5
          𝑛·3Β·7 := 𝑛·3Β·6  # 𝕄(𝑛·3Β·4)
        morphed 𝑛·1Β·4 := 𝜎4:Ξ»
      𝑛2Β·1 := 𝑛·1Β·4  # 𝕄(ΞΎ.y)
      𝑛·1Β·5 := ⟦ x ↦ 𝜎3:Ξ», y ↦ 𝜎4:Ξ» ⟧:Ο†  # 𝑛
      𝕄(𝑛·1Β·5):
        morphed 𝑛·1Β·6 := ⟦ x ↦ 𝜎3:Ξ», y ↦ 𝜎4:Ξ» ⟧:Ο†
      𝑛·1Β·7 := 𝑛·1Β·6  # 𝕄(𝑛·1Β·5)
    morphed 𝑛·0Β·3 := ⟦ x ↦ 𝜎3:Ξ», y ↦ 𝜎4:Ξ» ⟧