Closed fizruk closed 2 months ago
@deemp Thanks for the review! You've earned +35 points for this: +25 as a basis; +5 for 876 hits-of-code; +5 for 0 comments. Your running balance is +5.
@fizruk Thanks for the contribution! You've earned +5 points for this: +20 as a basis; +5 for 876 hits-of-code; -7 for too many hits-of-code (876 >= 100); -15 for way too many hits-of-code (876 >= 400); -5 for 0 comments; +7 to give you at least something. Please, keep them coming. Your running balance is +30.
This PR aims to close #423. However, the implementation diverges with the initial proposal. Here is what is in this PR:
streams.yaml
with the example rule equipped with with a passing test, matching https://github.com/objectionary/normalizer/issues/423#issue-2366637410apply_in_abstract_subformations
option to maintain correctness foryegor.yaml
rules)forall
to keep track of all metavariables for extra safety (force in the future, see #441)Here are the differences with the initial proposal in #423:
!
and we do not (yet) distinguish their types (attribute/object/binding/etc.).t1 * t2
we use one-hole context patterns!C1 [1| obj |1]
. The notation is subject to change (in particular, we may allowobj * !C1
, for example). Importantly, the one-hole context pattern allows to match against objects in application arguments.forall
is implicit: all metavariables used in the pattern are automatically put under theforall
.exists
is replaced withfresh
(and can only yield fresh attributes).PR-Codex overview
This PR updates object and meta ID handling in the EO Phi normalizer.
Detailed summary
MetaId
with specific ID types likeLabelMetaId
MetaTailContext
and updated related functions