The goal of this PR is to make all pipeline tests work well with the current version of the normalizer.
What's in:
[x] Fix Lorg_eolang_bytes_eq atom implementation. Surprisingly, with incorrect extraction of an argument, it was looping indefinitely. This has to be fixed in the dataization procedure.
[x] Fix dataization inside $\varphi$: $\xi$ needs to be substituted and we need to switch to normalization mode.
[x] Fix Rule 8 to use $\xi$-substitution
[x] Add support for two positional arguments ($\alpha_0, \alpha_1$)
[x] Fix atoms that return boolean to actually produce boolean (not bytes).
[x] Force at least one normalization step to avoid infinite loops when evaluating atoms
[x] Allow to avoid explosion of stuck terms with --minimize-stuck-terms flag (temporary fix, need a proper solution in the future).
[x] Add a fast builtin version of the rules in Language.EO.Phi.Rules.Fast.fastYegorInsideOut which is used by default when the rule set is unspecified
[x] Do not apply rules under $\rho$-bindings (optimization).
The following EO tests are dataized into $\bot$ (termination, error):
malloc-tests.phi
malloc-scope-is-dataized-twice
malloc-puts-over-the-previous-data
seq-tests.phi
very-long-seq
while-tests.phi
while-dataizes-only-first-cycle
The following EO tests dataize well:
[x] ✅ bool-tests.phi
[x] ✅ bytes-tests.phi
[x] ✅ float-tests.phi
[x] ✅ int-tests.phi
[x] ✅ nan-tests.phi
[x] ✅ negative-infinity-tests.phi
[x] ✅ positive-infinity-tests.phi
[x] ✅ runtime-tests.phi
[x] ✅ string-tests.phi
[x] ✅ tuple-tests.phi
Other tests are untouched by the normalizer, since dataization gets blocked on unknown atoms and applying normalization blows up the term size.
PR-Codex overview
This PR updates eo-phi-normalizer by adding the cereal package, modifying normalization rules, and enhancing object substitution.
Detailed summary
Added cereal package dependency
Updated normalization rules and object substitution
Modified dataization YAML files
The following files were skipped due to too many changes: eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs, eo-phi-normalizer/src/Language/EO/Phi/Rules/Fast.hs, eo-phi-normalizer/app/Main.hs, eo-phi-normalizer/src/Language/EO/Phi/Dataize.hs, eo-phi-normalizer/src/Language/EO/Phi/Rules/Common.hs
✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}
The goal of this PR is to make all pipeline tests work well with the current version of the normalizer.
What's in:
Lorg_eolang_bytes_eq
atom implementation. Surprisingly, with incorrect extraction of an argument, it was looping indefinitely. This has to be fixed in the dataization procedure.--minimize-stuck-terms
flag (temporary fix, need a proper solution in the future).Language.EO.Phi.Rules.Fast.fastYegorInsideOut
which is used by default when the rule set is unspecifiedThe following EO tests are dataized into $\bot$ (termination, error):
malloc-tests.phi
malloc-scope-is-dataized-twice
malloc-puts-over-the-previous-data
seq-tests.phi
very-long-seq
while-tests.phi
while-dataizes-only-first-cycle
The following EO tests dataize well:
bool-tests.phi
bytes-tests.phi
float-tests.phi
int-tests.phi
nan-tests.phi
negative-infinity-tests.phi
positive-infinity-tests.phi
runtime-tests.phi
string-tests.phi
tuple-tests.phi
Other tests are untouched by the normalizer, since dataization gets blocked on unknown atoms and applying normalization blows up the term size.
PR-Codex overview
This PR updates
eo-phi-normalizer
by adding thecereal
package, modifying normalization rules, and enhancing object substitution.Detailed summary
cereal
package dependency