packages feed

phino-0.0.157: test-resources/evaluate-packs/joins-a-side-a-morph-line-brought-down-from-what-a-rewrite-line-unwrapped.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The right side morphs down to a formation holding nothing but a path in φ,
# and a 'rewrite' line takes the path out of it. The path is no normal form, so
# the join could never make one term of it and the left side, the way the
# 'Φ.bool( … )' a 'rewrite' line writes into a side of the 'L_fork' of EO is
# none (#2016). An operand of 'morph' naming the meta the 'rewrite' line bound
# reduces the path to the object it reads, at the point the meta is bound, and
# the join makes one term of the two objects, which differ in their symbols
# alone. The protocol writes the line of '𝑛4' right after the line of '𝑛3' it
# read, commented with the morph of that meta.
symbolic: |
  - λ: L_fork
    dataize:
      𝛿1: $.c
    morph:
      𝑛1: $.a
      𝑛2: $.b
      𝑛4: 𝑛3
    rewrite:
      𝑛3:
        of: 𝑛2
        rules:
          - name: unwrap
            pattern: ⟦ φ ↦ 𝑒1 ⟧
            result: 𝑒1
    join:
      on: 𝛿1
      left: 𝑛1
      right: 𝑛4
location: 'Q.y'
hide-rho: false
input: '⟦ y ↦ ⟦ c ↦ ⟦ λ ⤍ 𝜎1 ⟧, a ↦ ⟦ φ ↦ ⟦ λ ⤍ 𝜎2 ⟧ ⟧, b ↦ ⟦ φ ↦ Φ.t ⟧, λ ⤍ L_fork ⟧.φ, t ↦ ⟦ φ ↦ ⟦ λ ⤍ 𝜎3 ⟧ ⟧ ⟧'
result: '𝜎4:λ'
protocol: |
  𝕄(Φ.y):
    𝔼(L_fork):
      𝛿1·1 := 𝔻(𝜎1:λ)  # 𝔻(ξ.c)
      𝑛1·1 := 𝜎2:λ:φ  # 𝕄(ξ.a)
      𝑛2·1 := Φ.t:φ  # 𝕄(ξ.b)
      𝑛3·1 := Φ.t  # rewrite(𝑛2)
      𝑛4·1 := 𝜎3:λ:φ  # 𝕄(𝑛3)
      joined 𝜎4 := 𝛿1·1 ? 𝜎2 : 𝜎3
      𝑛·1·1 := 𝜎4:λ:φ  # 𝑛1, 𝑛4