packages feed

phino-0.0.154: test-resources/evaluate-packs/takes-the-answer-of-a-firing-with-the-same-operands.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The memo of '--acyclic=plausible' keeps what a firing answered by the Ξ»
# function and the operands it brought down, beside the formation it fired.
# The 'evaluate' lines of 'L_pair' fire 'a' and then 'b', two formations,
# since one reads 'x' and the other reads 'y', so the memo of formations
# misses the second. Yet both bring the same datum down, and an entry
# answers from its operands alone. Before #1661 the firing of 'b' minted
# '𝜎2' for the very value '𝜎1' already named. Now it brings its operand
# down, finds the firing already answered and takes '𝜎1', minting nothing
# (#1874).
symbolic: |
  - Ξ»: L_dataized
    dataize:
      𝛿1: $.target
    𝑛: ⟦ Ξ» ‍ 𝜎 ⟧
  - Ξ»: L_pair
    morph:
      𝑛1: $.a
      𝑛2: $.b
    evaluate:
      𝑛3: 𝑛1
      𝑛4: 𝑛2
    𝑛: ⟦ Ο† ↦ ⟦ a ↦ 𝑛3, b ↦ 𝑛4 ⟧ ⟧
location: 'Q.p'
acyclic: plausible
input: >
  ⟦ dataized(target) ↦ L_dataized:Ξ»,
    p ↦ ⟦
      a ↦ Ξ¦.dataized( target ↦ Ξ¦.x ),
      b ↦ Ξ¦.dataized( target ↦ Ξ¦.y ),
      Ξ» ‍ L_pair ⟧.Ο†,
    x ↦ ⟦ Ξ” ‍ 01- ⟧,
    y ↦ ⟦ Ξ” ‍ 01- ⟧ ⟧
result: '⟦ a ↦ 𝜎1:Ξ», b ↦ 𝜎1:Ξ» ⟧'
protocol: |
  𝕄(Ξ¦.p):
    𝔼(L_pair):
      𝕄(Ξ¦.a🌡0):
        𝑛·1Β·1 := Ξ¦.dataized( target ↦ Ξ¦.x )
      𝑛1Β·1 := 𝑛·1Β·1  # 𝕄(ΞΎ.a)
      𝕄(Ξ¦.a🌡1):
        𝑛·1Β·2 := Ξ¦.dataized( target ↦ Ξ¦.y )
      𝑛2Β·1 := 𝑛·1Β·2  # 𝕄(ΞΎ.b)
      𝔼(L_dataized):  # 𝔼(𝑛1)
        𝔻(Ξ¦.a🌡2):
          𝛿·2Β·1 := 01-
        𝛿1Β·2 := 𝛿·2Β·1  # 𝔻(ΞΎ.target)
        𝑛·2Β·1 := 𝜎1:Ξ»  # 𝑛
        𝑛·2Β·2 := 𝜎1:Ξ»  # 𝕄(𝑛·2Β·1)
      𝑛3Β·1 := 𝑛·2Β·2  # 𝔼(𝑛1)
      𝔼(L_dataized):  # 𝔼(𝑛2)
        𝔻(Ξ¦.a🌡3):
          𝛿·3Β·1 := 01-
        𝛿1Β·3 := 𝛿·3Β·1  # 𝔻(ΞΎ.target)
        𝑛·3Β·1 := 𝑛3Β·1  # 𝑛
        𝑛·3Β·2 := 𝑛3Β·1  # 𝕄(𝑛·3Β·1)
      𝑛4Β·1 := 𝑛·3Β·2  # 𝔼(𝑛2)
      𝑛·1Β·3 := ⟦ a ↦ 𝜎1:Ξ», b ↦ 𝜎1:Ξ» ⟧:Ο†  # 𝑛
      𝑛·1Β·4 := ⟦ a ↦ 𝜎1:Ξ», b ↦ 𝜎1:Ξ» ⟧:Ο†  # 𝕄(𝑛·1Β·3)