packages feed

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)