phino-0.0.152: test-resources/evaluate-packs/joins-a-negated-bool-whose-literal-a-rewrite-brought-to-one-shape.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The program '!(x > 0)' of eo-runtime: 'not' is 'if. false true', so one
# branch of the fork is the literal 'false' and the other the literal 'true',
# while what the fork answers is a bool carrying a symbol. The two spellings
# are one value, and the 'rewrite' block of the fork says so, turning either
# literal into the shape an answer has with the datum it stands for, which
# 'symbolize' then stands into a known symbol, so the join pairs them and the
# root dataizes the fork of 'not' over the fork of '>' (#1409).
symbolic: |
- Ξ»: L_number_gt
dataize:
πΏ1: $.Ο
πΏ2: $.b
π: β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ β¦ Ξ» β€ π β§ β§ ) β§
- Ξ»: L_entry
dataize:
πΏ1: $.n
morph:
π1: $.v.Ο
π: Ξ¦.lπ΅.root( π1 )
- Ξ»: L_root
dataize:
πΏ1: $.v
π: β¦ β§
- Ξ»: L_fork
dataize:
πΏ1: $.Ο
morph:
π1: $.left
π2: $.right
rewrite:
π3:
of: π1
rules: &bool
- name: false-literal
pattern: β¦ !B1, Ο β¦ Ξ¦.bool( if β¦ β¦ Ο β¦ β
, left β¦ β
, right β¦ β
, Ο β¦ ΞΎ.right β§ ), !B2 β§
result: β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ β¦ Ξ β€ 00- β§ β§ ) β§
- name: true-literal
pattern: β¦ !B1, Ο β¦ Ξ¦.bool( if β¦ β¦ Ο β¦ β
, left β¦ β
, right β¦ β
, Ο β¦ ΞΎ.left β§ ), !B2 β§
result: β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ β¦ Ξ β€ FF- β§ β§ ) β§
- name: bool-without-rho
pattern: β¦ !B1, Ο β¦ Ξ¦.bool( if β¦ β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ π1 β§ ), !B2 β§
result: β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ π1 β§ ) β§
π4:
of: π2
rules: *bool
symbolize:
π5: π3
π6: π4
join:
π7: [π5, π6]
π: π7
location: 'Q.lπ΅'
deep: true
partial: true
acyclic: proven
steps: 32
input: |
β¦
number β¦ β¦ Ο β¦ β
, gt β¦ β¦ b β¦ β
, Ξ» β€ L_number_gt, Ο β¦ β
β§ β§,
bytes β¦ β¦ Ο β¦ β
β§,
bool β¦ β¦ if β¦ β
, Ο β¦ ΞΎ.if( left β¦ Ξ¦.bytes( Ο β¦ β¦ Ξ β€ FF- β§ ), right β¦ Ξ¦.bytes( Ο β¦ β¦ Ξ β€ 00- β§ ) ), not β¦ ΞΎ.if( left β¦ Ξ¦.false, right β¦ Ξ¦.true ) β§,
true β¦ β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ο β¦ β
, left β¦ β
, right β¦ β
, Ο β¦ ΞΎ.left β§ ) β§,
false β¦ β¦ Ο β¦ Ξ¦.bool( if β¦ β¦ Ο β¦ β
, left β¦ β
, right β¦ β
, Ο β¦ ΞΎ.right β§ ) β§,
guard β¦ β¦ x β¦ β
, Ο β¦ ΞΎ.x.gt( b β¦ Ξ¦.number( Ο β¦ Ξ¦.bytes( Ο β¦ β¦ Ξ β€ 00-00-00-00-00-00-00-00 β§ ) ) ).not β§,
lπ΅ β¦ β¦ mark β¦ β¦ n β¦ β
, v β¦ β
, Ξ» β€ L_entry β§, root β¦ β¦ v β¦ β
, Ξ» β€ L_root β§,
e1 β¦ Ξ¦.lπ΅.mark( n β¦ Ξ¦.number( Ο β¦ Ξ¦.bytes( Ο β¦ β¦ Ξ β€ 3F-F0-00-00-00-00-00-00 β§ ) ) )( v β¦ Ξ¦.guard( x β¦ Ξ¦.number( Ο β¦ Ξ¦.bytes( Ο β¦ β¦ Ξ» β€ π1 β§ ) ) ) ) β§
β§
protocol: |
π(Ξ¦.lπ΅):
π(Ξ¦.lπ΅.e1):
πΒ·0Β·1 := Ξ¦.bytes( Ο β¦ 3F-F0-00-00-00-00-00-00:Ξ )
πΒ·0Β·2 := Ξ¦.number( Ο β¦ πΒ·0Β·1 )
πΒ·0Β·3 := β¦ n β¦ β
, v β¦ β
, Ξ» β€ L_entry β§( n β¦ πΒ·0Β·2 )
πΒ·0Β·4 := Ξ¦.bytes( Ο β¦ π1:Ξ» )
πΒ·0Β·5 := Ξ¦.number( Ο β¦ πΒ·0Β·4 )
πΒ·0Β·6 := Ξ¦.guard( x β¦ πΒ·0Β·5 )
πΒ·0Β·7 := β¦ n β¦ β
, v β¦ β
, Ξ» β€ L_entry β§( n β¦ πΒ·0Β·2 )
πΒ·0Β·8 := πΒ·0Β·7( v β¦ πΒ·0Β·6 )
πΌ(L_entry):
π»(Ξ¦.aπ΅0):
π(Ξ¦.aπ΅0):
πΒ·1Β·1 := Ξ¦.number( Ο β¦ πΒ·0Β·1 )
πΒ·1Β·2 := Ξ¦.bytes( Ο β¦ 3F-F0-00-00-00-00-00-00:Ξ )
πΏΒ·1Β·1 := 3F-F0-00-00-00-00-00-00 # 1.0
πΏ1Β·1 := πΏΒ·1Β·1 # π»(ΞΎ.n)
π(Ξ¦.aπ΅1):
πΒ·1Β·3 := Ξ¦.guard( x β¦ πΒ·0Β·5 )
πΒ·1Β·4 := Ξ¦.number( Ο β¦ πΒ·0Β·4 )
πΒ·1Β·5 := Ξ¦.number( Ο β¦ πΒ·0Β·4 )
πΒ·1Β·6 := πΒ·1Β·5.gt( b β¦ 0 )
πΌ(L_number_gt):
π»(Ξ¦.aπ΅2):
π(Ξ¦.aπ΅2):
πΒ·2Β·1 := Ξ¦.number( Ο β¦ πΒ·0Β·4 )
πΒ·2Β·2 := Ξ¦.bytes( Ο β¦ π1:Ξ» )
πΏ1Β·2 := π»(π1:Ξ») # π»(ΞΎ.Ο)
π»(Ξ¦.aπ΅3):
π(Ξ¦.aπ΅3):
πΒ·2Β·3 := 0
πΒ·2Β·4 := Ξ¦.bytes( Ο β¦ 00-00-00-00-00-00-00-00:Ξ )
πΏΒ·2Β·1 := 00-00-00-00-00-00-00-00 # 0.0
πΏ2Β·2 := πΏΒ·2Β·1 # π»(ΞΎ.b)
πΒ·2Β·5 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π2:Ξ» β§ ):Ο # π
πΒ·2Β·6 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π2:Ξ» β§ ):Ο # π(πΒ·2Β·5)
πΒ·1Β·7 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π2:Ξ» β§ )
πΒ·1Β·8 := β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ π2:Ξ» β§( left β¦ Ξ¦.false )
πΒ·1Β·9 := πΒ·1Β·8( right β¦ Ξ¦.true )
πΌ(L_fork):
πΏ1Β·3 := π»(π2:Ξ») # π»(ΞΎ.Ο)
π(Ξ¦.aπ΅5):
π(Ξ¦.aπ΅5.Ο):
πΒ·3Β·1 := Ξ¦.bool( if(left, right) β¦ right:Ο )
π1Β·3 := πΒ·3Β·1:Ο # π(ΞΎ.left)
π(Ξ¦.aπ΅6):
π(Ξ¦.aπ΅6.Ο):
πΒ·3Β·2 := Ξ¦.bool( if(left, right) β¦ left:Ο )
π2Β·3 := πΒ·3Β·2:Ο # π(ΞΎ.right)
π3Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ 00-:Ξ β§ ):Ο # π1
π4Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ FF-:Ξ β§ ):Ο # π2
π»(π3:Ξ») == 00-
π5Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π3:Ξ» β§ ):Ο # π3
π»(π4:Ξ») == FF-
π6Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π4:Ξ» β§ ):Ο # π4
π»(π5:Ξ») β { π»(π3:Ξ»), π»(π4:Ξ») }
π7Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο # [π5, π6]
πΒ·3Β·3 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο # π
πΒ·3Β·4 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο # π(πΒ·3Β·3)
π1Β·1 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο # π(ΞΎ.v.Ο)
πΒ·1Β·10 := Ξ¦.lπ΅.root( Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο ) # π
π(πΒ·1Β·10):
πΒ·1Β·11 := β¦ v β¦ β
, Ξ» β€ L_root β§( v β¦ Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ ):Ο )
πΒ·1Β·12 := πΒ·1Β·11 # π(πΒ·1Β·10)
πΌ(L_root):
π»(Ξ¦.aπ΅7):
π(Ξ¦.aπ΅7):
πΒ·4Β·1 := Ξ¦.bool( if(left, right) β¦ β¦ Ξ» β€ L_fork, Ο β¦ π5:Ξ» β§ )
πΒ·4Β·2 := β¦ Ξ» β€ L_fork, left β¦ β
, right β¦ β
, Ο β¦ π5:Ξ» β§( left β¦ Ξ¦.bytes( Ο β¦ FF-:Ξ ) )
πΒ·4Β·3 := πΒ·4Β·2( right β¦ Ξ¦.bytes( Ο β¦ 00-:Ξ ) )
πΌ(L_fork):
πΏ1Β·5 := π»(π5:Ξ») # π»(ΞΎ.Ο)
π(Ξ¦.aπ΅9):
πΒ·5Β·1 := Ξ¦.bytes( Ο β¦ FF-:Ξ )
π1Β·5 := πΒ·5Β·1 # π(ΞΎ.left)
π(Ξ¦.aπ΅10):
πΒ·5Β·2 := Ξ¦.bytes( Ο β¦ 00-:Ξ )
π2Β·5 := πΒ·5Β·2 # π(ΞΎ.right)
π3Β·5 := πΒ·5Β·1 # π1
π4Β·5 := πΒ·5Β·2 # π2
π»(π6:Ξ») == FF-
π5Β·5 := π6:Ξ»:Ο # π3
π»(π7:Ξ») == 00-
π6Β·5 := π7:Ξ»:Ο # π4
π»(π8:Ξ») β { π»(π6:Ξ»), π»(π7:Ξ») }
π7Β·5 := π8:Ξ»:Ο # [π5, π6]
πΒ·5Β·3 := π7Β·5 # π
πΒ·5Β·4 := π7Β·5 # π(πΒ·5Β·3)
πΏ1Β·4 := π»(π8:Ξ») # π»(ΞΎ.v)
πΒ·4Β·4 := β¦β§ # π
πΒ·4Β·5 := β¦β§ # π(πΒ·4Β·4)