packages feed

phino-0.0.152: test-resources/evaluate-packs/tells-two-carried-symbols-apart-in-one-firing.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# Both operands of the firing are symbols the program came in with, and both
# dataize to the very same 42. Only the protocol tells them apart: it writes
# the symbol each datum was manufactured for, so 𝜎2 and 𝜎5 stay two unknowns
# and not one.
symbolic: |
  - Ξ»: L_number_plus
    dataize:
      𝛿1: $.ρ
      𝛿2: $.x
    𝑛: Ξ¦.number( Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ )
location: 'Q.@'
deep: true
input: >
  ⟦ bytes(Ο†) ↦ ⟦⟧,
    number(Ο†) ↦ ⟦ plus(ρ, x) ↦ ⟦ Ξ» ‍ L_number_plus ⟧ ⟧,
    @ ↦ Ξ¦.number( Ο† ↦ ⟦ Ξ» ‍ 𝜎2 ⟧ ).plus(
          Ξ¦.number( Ο† ↦ ⟦ Ξ» ‍ 𝜎5 ⟧ ) ) ⟧
result: '⟦ Ο† ↦ 𝜎6:Ξ», plus(x) ↦ L_number_plus:Ξ» ⟧'
protocol: |
  𝕄(Ξ¦.Ο†):
    𝑛·0Β·1 := Ξ¦.number( Ο† ↦ 𝜎2:Ξ» )
    𝑛·0Β·2 := 𝑛·0Β·1.plus( x ↦ Ξ¦.number( Ο† ↦ 𝜎5:Ξ» ) )
    𝕄(Ξ¦.Ο†.x):
      𝑛·0Β·3 := Ξ¦.number( Ο† ↦ 𝜎5:Ξ» )
    𝔼(L_number_plus):
      𝔻(Ξ¦.a🌡0):
        𝕄(Ξ¦.a🌡0):
          𝑛·1Β·1 := Ξ¦.number( Ο† ↦ 𝜎2:Ξ» )
      𝛿1Β·1 := 𝔻(𝜎2:Ξ»)  # 𝔻(ΞΎ.ρ)
      𝔻(Ξ¦.a🌡1):
        𝕄(Ξ¦.a🌡1):
          𝑛·1Β·2 := Ξ¦.number( Ο† ↦ 𝜎5:Ξ» )
      𝛿2Β·1 := 𝔻(𝜎5:Ξ»)  # 𝔻(ΞΎ.x)
      𝑛·1Β·3 := Ξ¦.number( Ο† ↦ 𝜎6:Ξ» )  # 𝑛
      𝕄(𝑛·1Β·3):
        𝑛·1Β·4 := Ξ¦.number( Ο† ↦ 𝜎6:Ξ» )
      𝑛·1Β·5 := 𝑛·1Β·4  # 𝕄(𝑛·1Β·3)