phino-0.0.157: test-resources/evaluate-packs/writes-no-joined-line-for-a-join-the-memo-answered.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# A join the memo of 'plausible' answered writes no 'joined' line (#2011). The
# program reads 'f' twice, so the join of 'L_fork' fires twice over the same
# formation. The first firing brings its condition down to 'πΏ1Β·2', mints π4
# and writes 'joined π4 := πΏ1Β·2 ? π2 : π3'. The second one takes that answer
# from the memo and brings nothing down, so no meta of its own holds the
# condition, and it writes the answer alone, the way a firing the memo
# answered writes no symbol it minted.
symbolic: |
- Ξ»: L_number_gt
dataize:
πΏ1: $.Ο
πΏ2: $.x
π: Ξ¦.bool( Ο β¦ β¦ Ξ» β€ π β§ )
- Ξ»: L_number_plus
dataize:
πΏ1: $.Ο
πΏ2: $.x
π: Ξ¦.number( Ο β¦ β¦ Ξ» β€ π β§ )
- Ξ»: L_fork
dataize:
πΏ1: $.Ο
join:
on: πΏ1
left: $.then
right: $.else
location: 'Q.@'
acyclic: plausible
input: >
β¦ bytes(Ο) β¦ β¦β§,
bool(Ο) β¦ β¦ if β¦ β¦ Ο β¦ β
, then β¦ β
, else β¦ β
, Ξ» β€ L_fork β§ β§,
number(Ο) β¦ β¦
gt(Ο, x) β¦ β¦ Ξ» β€ L_number_gt β§,
plus(Ο, x) β¦ β¦ Ξ» β€ L_number_plus β§ β§,
f β¦ 5.gt( 0 ).if( 1.plus( 2 ).plus( 0 ), 3.plus( 4 ).plus( 0 ) ),
Ο β¦ Ξ¦.f.plus( Ξ¦.f ).Ο β§
result: 'π6:Ξ»'
protocol: |
π(Ξ¦.Ο):
πΒ·0Β·1 := 5
πΒ·0Β·2 := πΒ·0Β·1.gt( x β¦ 0 )
πΌ(L_number_gt):
π»(Ξ¦.aπ΅0):
π(Ξ¦.aπ΅0):
πΒ·1Β·1 := 5
πΒ·1Β·2 := Ξ¦.bytes( Ο β¦ 40-14-00-00-00-00-00-00:Ξ )
πΏΒ·1Β·1 := 40-14-00-00-00-00-00-00 # 5.0
πΏ1Β·1 := πΏΒ·1Β·1 # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅1):
π(Ξ¦.aπ΅1):
πΒ·1Β·3 := 0
πΒ·1Β·4 := Ξ¦.bytes( Ο β¦ 00-00-00-00-00-00-00-00:Ξ )
πΏΒ·1Β·2 := 00-00-00-00-00-00-00-00 # 0.0
πΏ2Β·1 := πΏΒ·1Β·2 # π»(ΞΎ.x)
πΒ·1Β·5 := Ξ¦.bool( Ο β¦ π1:Ξ» ) # π
π(πΒ·1Β·5):
πΒ·1Β·6 := Ξ¦.bool( Ο β¦ π1:Ξ» )
πΒ·1Β·7 := πΒ·1Β·6 # π(πΒ·1Β·5)
πΒ·0Β·3 := πΒ·1Β·6.if( then β¦ 1.plus( 2 ).plus( πΒ·1Β·3 ) )
πΒ·0Β·4 := πΒ·0Β·3( else β¦ 3.plus( 4 ).plus( πΒ·1Β·3 ) )
πΌ(L_fork):
π»(Ξ¦.aπ΅2):
π(Ξ¦.aπ΅2):
πΒ·2Β·1 := Ξ¦.bool( Ο β¦ π1:Ξ» )
πΏ1Β·2 := π»(π1:Ξ») # π»(ΞΎ.Ο)
π(Ξ¦.aπ΅3):
πΒ·2Β·2 := 1
πΒ·2Β·3 := πΒ·2Β·2.plus( x β¦ 2 )
πΌ(L_number_plus):
π»(Ξ¦.aπ΅4):
π(Ξ¦.aπ΅4):
πΒ·3Β·1 := 1
πΒ·3Β·2 := Ξ¦.bytes( Ο β¦ 3F-F0-00-00-00-00-00-00:Ξ )
πΏΒ·3Β·1 := 3F-F0-00-00-00-00-00-00 # 1.0
πΏ1Β·3 := πΏΒ·3Β·1 # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅5):
π(Ξ¦.aπ΅5):
πΒ·3Β·3 := 2
πΒ·3Β·4 := Ξ¦.bytes( Ο β¦ 40-00-00-00-00-00-00-00:Ξ )
πΏΒ·3Β·2 := 40-00-00-00-00-00-00-00 # 2.0
πΏ2Β·3 := πΏΒ·3Β·2 # π»(ΞΎ.x)
πΒ·3Β·5 := Ξ¦.number( Ο β¦ π2:Ξ» ) # π
π(πΒ·3Β·5):
πΒ·3Β·6 := Ξ¦.number( Ο β¦ π2:Ξ» )
πΒ·3Β·7 := πΒ·3Β·6 # π(πΒ·3Β·5)
πΒ·2Β·4 := πΒ·3Β·6.plus( x β¦ πΒ·1Β·3 )
π(Ξ¦.aπ΅6):
πΒ·2Β·5 := 3
πΒ·2Β·6 := πΒ·2Β·5.plus( x β¦ 4 )
πΌ(L_number_plus):
π»(Ξ¦.aπ΅7):
π(Ξ¦.aπ΅7):
πΒ·4Β·1 := 3
πΒ·4Β·2 := Ξ¦.bytes( Ο β¦ 40-08-00-00-00-00-00-00:Ξ )
πΏΒ·4Β·1 := 40-08-00-00-00-00-00-00 # 3.0
πΏ1Β·4 := πΏΒ·4Β·1 # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅8):
π(Ξ¦.aπ΅8):
πΒ·4Β·3 := 4
πΒ·4Β·4 := Ξ¦.bytes( Ο β¦ 40-10-00-00-00-00-00-00:Ξ )
πΏΒ·4Β·2 := 40-10-00-00-00-00-00-00 # 4.0
πΏ2Β·4 := πΏΒ·4Β·2 # π»(ΞΎ.x)
πΒ·4Β·5 := Ξ¦.number( Ο β¦ π3:Ξ» ) # π
π(πΒ·4Β·5):
πΒ·4Β·6 := Ξ¦.number( Ο β¦ π3:Ξ» )
πΒ·4Β·7 := πΒ·4Β·6 # π(πΒ·4Β·5)
πΒ·2Β·7 := πΒ·4Β·6.plus( x β¦ πΒ·1Β·3 )
joined π4 := πΏ1Β·2 ? π2 : π3
πΒ·2Β·8 := β¦ x β¦ πΒ·1Β·3, Ξ» β€ L_number_plus β§ # π(ΞΎ.then), π(ΞΎ.else)
πΌ(L_number_plus):
π»(Ξ¦.aπ΅9):
π(Ξ¦.aπ΅9):
πΒ·5Β·1 := Ξ¦.number( Ο β¦ π4:Ξ» )
πΏ1Β·5 := π»(π4:Ξ») # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅10):
π(Ξ¦.aπ΅10):
πΒ·5Β·2 := Ξ¦.number( Ο β¦ πΒ·1Β·4 )
πΒ·5Β·3 := Ξ¦.bytes( Ο β¦ 00-00-00-00-00-00-00-00:Ξ )
πΏΒ·5Β·1 := 00-00-00-00-00-00-00-00 # 0.0
πΏ2Β·5 := πΏΒ·5Β·1 # π»(ΞΎ.x)
πΒ·5Β·4 := Ξ¦.number( Ο β¦ π5:Ξ» ) # π
π(πΒ·5Β·4):
πΒ·5Β·5 := Ξ¦.number( Ο β¦ π5:Ξ» )
πΒ·5Β·6 := πΒ·5Β·5 # π(πΒ·5Β·4)
πΒ·0Β·5 := πΒ·5Β·5.plus( x β¦ Ξ¦.f )
πΌ(L_number_plus):
π»(Ξ¦.aπ΅11):
π(Ξ¦.aπ΅11):
πΒ·6Β·1 := Ξ¦.number( Ο β¦ π5:Ξ» )
πΏ1Β·6 := π»(π5:Ξ») # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅12):
π(Ξ¦.aπ΅12):
πΒ·6Β·2 := Ξ¦.number( Ο β¦ πΒ·1Β·2 )
πΒ·6Β·3 := πΒ·6Β·2.gt( x β¦ πΒ·5Β·2 )
πΌ(L_number_gt):
πΒ·7Β·1 := πΒ·2Β·1 # π
πΒ·7Β·2 := πΒ·1Β·7 # π(πΒ·7Β·1)
πΒ·6Β·4 := πΒ·2Β·1.if( then β¦ πΒ·3Β·1.plus( πΒ·3Β·3 ).plus( πΒ·5Β·2 ) )
πΒ·6Β·5 := πΒ·6Β·4( else β¦ πΒ·4Β·1.plus( πΒ·4Β·3 ).plus( πΒ·5Β·2 ) )
πΌ(L_fork):
πΒ·8Β·1 := β¦ x β¦ πΒ·5Β·2, Ξ» β€ L_number_plus β§ # π(ΞΎ.then), π(ΞΎ.else)
πΌ(L_number_plus):
πΒ·9Β·1 := πΒ·6Β·1 # π
πΒ·9Β·2 := πΒ·5Β·6 # π(πΒ·9Β·1)
πΏ2Β·6 := π»(π5:Ξ») # π»(ΞΎ.x)
πΒ·6Β·6 := Ξ¦.number( Ο β¦ π6:Ξ» ) # π
π(πΒ·6Β·6):
πΒ·6Β·7 := Ξ¦.number( Ο β¦ π6:Ξ» )
πΒ·6Β·8 := πΒ·6Β·7 # π(πΒ·6Β·6)