phino-0.0.152: test-resources/evaluate-packs/joins-a-branch-with-a-decorator-of-it-when-lenient.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# A fork whose one branch calls a method often meets a decorator: one branch
# comes to a copy, the other to a formation whose Ο is that copy. The two
# differ in shape, so a strict join refuses them. An entry that says
# 'lenient: true' joins them into the decorator, with a fresh symbol minted
# inside it the usual way (#1815).
symbolic: |
- Ξ»: L_fork
morph:
π1: $.a
π2: $.b
join:
π3: [π1, π2]
lenient: true
π: π3
location: 'Q.y'
input: 'β¦ y β¦ β¦ a β¦ β¦ Ο β¦ β¦ Ξ» β€ π1 β§, neg β¦ β¦β§ β§, b β¦ β¦ Ο β¦ β¦ Ο β¦ β¦ Ξ» β€ π2 β§, neg β¦ β¦β§ β§ β§, Ξ» β€ L_fork β§.Ο β§'
result: 'β¦ Ο β¦ π3:Ξ», neg β¦ β¦β§ β§'
protocol: |
π(Ξ¦.y):
πΌ(L_fork):
π1Β·1 := β¦ Ο β¦ π1:Ξ», neg β¦ β¦β§ β§ # π(ΞΎ.a)
π2Β·1 := β¦ Ο β¦ π2:Ξ», neg β¦ β¦β§ β§:Ο # π(ΞΎ.b)
π»(π3:Ξ») β { π»(π1:Ξ»), π»(π2:Ξ») }
π3Β·1 := β¦ Ο β¦ π3:Ξ», neg β¦ β¦β§ β§:Ο # [π1, π2]
πΒ·1Β·1 := π3Β·1 # π
πΒ·1Β·2 := π3Β·1 # π(πΒ·1Β·1)