packages feed

phino-0.0.157: test-resources/evaluate-packs/passes-a-side-that-is-no-formation-through-an-evaluate-line-to-the-join.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The 'rewrite' lines take 'Φ.k' and 'Φ.j' out of the formations the two sides
# morph to, and neither dispatch is a formation. An entry that computes gets
# stuck on such a term in an 'evaluate' line, but a join compares whatever its
# sides came to, so an 'evaluate' line of an entry that joins passes the term
# through as it is (#1999). Here the join gets both, finds them apart, and
# writes 'diverged', so the site the join stands at is parked.
symbolic: |
  - λ: L_fork
    dataize:
      𝛿1: $.c
    morph:
      𝑛1: $.a
      𝑛2: $.b
    rewrite:
      𝑛3:
        of: 𝑛1
        rules: &unwrap
          - name: unwrap
            pattern: ⟦ φ ↦ 𝑒1 ⟧
            result: 𝑒1
      𝑛4:
        of: 𝑛2
        rules: *unwrap
    evaluate:
      𝑛5: 𝑛3
      𝑛6: 𝑛4
    join:
      on: 𝛿1
      left: 𝑛5
      right: 𝑛6
location: 'Q.y'
partial: true
input: '⟦ k ↦ ⟦⟧, j ↦ ⟦⟧, y ↦ ⟦ c ↦ ⟦ λ ⤍ 𝜎1 ⟧, a ↦ ⟦ φ ↦ Φ.k ⟧, b ↦ ⟦ φ ↦ Φ.j ⟧, λ ⤍ L_fork ⟧.φ ⟧'
result: '⟦ c ↦ ⟦ λ ⤍ 𝜎1 ⟧, a ↦ ⟦ φ ↦ Φ.k ⟧, b ↦ ⟦ φ ↦ Φ.j ⟧, λ ⤍ L_fork ⟧.φ'
protocol: |
  𝕄(Φ.y):
    𝔼(L_fork):
      𝛿1·1 := 𝔻(𝜎1:λ)  # 𝔻(ξ.c)
      𝑛1·1 := Φ.k:φ  # 𝕄(ξ.a)
      𝑛2·1 := Φ.j:φ  # 𝕄(ξ.b)
      𝑛3·1 := Φ.k  # rewrite(𝑛1)
      𝑛5·1 := Φ.k  # 𝔼(𝑛3)
      𝑛4·1 := Φ.j  # rewrite(𝑛2)
      𝑛6·1 := Φ.j  # 𝔼(𝑛4)
      diverged 𝑛5·1 vs 𝑛6·1  # the join names no otherwise