packages feed

phino-0.0.154: 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 (#1409).
# Morphing leaves the fork of 'not' as a call, so the entry fires it with an
# 'evaluate' line (#1874). The dispatch of Ο† that ends 'e1' fires the entry
# and then the root it answers, and the root dataizes the fork of 'not' over
# the fork of '>'.
symbolic: |
  - Ξ»: L_number_gt
    dataize:
      𝛿1: $.ρ
      𝛿2: $.b
    𝑛: ⟦ Ο† ↦ Ξ¦.bool( if ↦ ⟦ Ξ» ‍ L_fork, left ↦ βˆ…, right ↦ βˆ…, Ο† ↦ ⟦ Ξ» ‍ 𝜎 ⟧ ⟧ ) ⟧
  - Ξ»: L_entry
    dataize:
      𝛿1: $.n
    morph:
      𝑛1: $.v.Ο†
    evaluate:
      𝑛2: 𝑛1
    𝑛: Ξ¦.l🌡.root( 𝑛2 )
  - Ξ»: 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🌡.e1'
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🌡.e1):
    𝑛·0Β·1 := ⟦ n ↦ βˆ…, v ↦ βˆ…, Ξ» ‍ L_entry ⟧( n ↦ 1 )
    𝑛·0Β·2 := 𝑛·0Β·1( v ↦ Ξ¦.guard( x ↦ Ξ¦.number( Ο† ↦ Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) ) ) )
    𝔼(L_entry):
      𝔻(Ξ¦.a🌡0):
        𝕄(Ξ¦.a🌡0):
          𝑛·1Β·1 := 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 ↦ Ξ¦.number( Ο† ↦ Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) ) )
        𝑛·1Β·4 := Ξ¦.number( Ο† ↦ Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) )
        𝑛·1Β·5 := 𝑛·1Β·4.gt( b ↦ 0 )
        𝔼(L_number_gt):
          𝔻(Ξ¦.a🌡2):
            𝕄(Ξ¦.a🌡2):
              𝑛·2Β·1 := Ξ¦.number( Ο† ↦ Ξ¦.bytes( Ο† ↦ 𝜎1:Ξ» ) )
              𝑛·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Β·6 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎2:Ξ» ⟧ )
        𝑛·1Β·7 := ⟦ Ξ» ‍ L_fork, left ↦ βˆ…, right ↦ βˆ…, Ο† ↦ 𝜎2:Ξ» ⟧( left ↦ Ξ¦.false )
        𝑛·1Β·8 := 𝑛·1Β·7( right ↦ Ξ¦.true )
      𝑛1Β·1 := 𝑛·1Β·8  # 𝕄(ΞΎ.v.Ο†)
      𝔼(L_fork):  # 𝔼(𝑛1)
        𝛿1Β·3 := 𝔻(𝜎2:Ξ»)  # 𝔻(ΞΎ.Ο†)
        𝑛1Β·3 := Ξ¦.bool( if(left, right) ↦ right:Ο† ):Ο†  # 𝕄(ΞΎ.left)
        𝑛2Β·3 := Ξ¦.bool( if(left, right) ↦ left:Ο† ):Ο†  # 𝕄(ΞΎ.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Β·1 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎5:Ξ» ⟧ ):Ο†  # 𝑛
        𝑛·3Β·2 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎5:Ξ» ⟧ ):Ο†  # 𝕄(𝑛·3Β·1)
      𝑛2Β·1 := Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎5:Ξ» ⟧ ):Ο†  # 𝔼(𝑛1)
      𝑛·1Β·9 := Ξ¦.l🌡.root( Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎5:Ξ» ⟧ ):Ο† )  # 𝑛
      𝕄(𝑛·1Β·9):
        𝑛·1Β·10 := ⟦ v ↦ βˆ…, Ξ» ‍ L_root ⟧( v ↦ Ξ¦.bool( if(left, right) ↦ ⟦ Ξ» ‍ L_fork, Ο† ↦ 𝜎5:Ξ» ⟧ ):Ο† )
      𝑛·1Β·11 := 𝑛·1Β·10  # 𝕄(𝑛·1Β·9)
    𝔼(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)