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)