Releases: lab-v2/pyreason
v3.4.0
What's Changed
- Add support partial edge grounding by @ColtonPayne in #135
- Detailed atom trace 2 by @ColtonPayne in #134
Full Changelog: v3.3.0...v3.4.0
v3.3.0
What's Changed
New Features
-
Bulk rule loading from CSV and JSON files — Instead of only being able to load rules from plain text files (one rule per line, no per-rule configuration), rules can now be loaded from CSV and JSON files with per-rule control over
infer_edges,set_static,custom_thresholds, andweights, thereby enabling three tiers of rule loading expressiveness (text for simple, CSV for moderate, JSON for full control) by @ColtonPayne in #120 -
Input validation for rules — Instead of malformed rules, invalid bounds, and bad parameters causing cryptic runtime failures deep in the reasoning engine, the rule parser now validates structure, predicate/variable names, interval bounds, negation syntax,
forall()expressions, thresholds, and weights upfront, thereby producing clear, actionable error messages at parse time by @ColtonPayne in #103 -
Bulk fact loading from CSV/JSON and input validation for facts — Instead of requiring facts to be added one at a time via the Python API with no validation, facts can now be loaded in bulk from CSV and JSON files with automatic header detection, flexible boolean formats, and per-row error handling. The fact parser now also validates parentheses structure, predicate names, interval bounds, and negation syntax upfront, thereby catching malformed facts before they reach the reasoning engine by @ColtonPayne in #100
Bug Fixes
-
Float64 consistency in interval methods — Instead of using
np.float32for default return values when intervals are disjoint, all float values in intersection methods now usenp.float64to match theIntervalstruct constructor, thereby eliminating type coercion mismatches that caused silent precision loss during bound computations by @ColtonPayne in #118 -
Float-to-string for negative values and zero-padding — Instead of
float_to_str()producing incorrect output for negative floats (e.g.,-3.456yielding a wrong decimal due to Python's modulo behavior) and dropping leading zeros in decimal representation (e.g.,3.001rendering as"3.1"), the function now usesabs()before modulo, handles negative signs correctly, and always produces 3 decimal digits with properround()instead ofint()truncation, thereby fixing display accuracy acrossinterpretation.py,interpretation_fp.py, andinterpretation_parallel.pyby @ColtonPayne in #119 -
Delta bound convergence with IPL complements — Instead of
_update_edgeappending the wrong variable toupdated_bnds(BUG-125) and delta comparisons using the original label's previous bound for all IPL complements instead of each complement's own previous bound (BUG-127), the correct complement bound is now appended and each bound is compared against its own previous value, thereby fixing premature or incorrect convergence detection indelta_boundmode when Inverse Predicate Law complements are involved by @ColtonPayne in #102 -
Threshold checking with filtered qualified groundings — Instead of
check_all_clause_satisfaction()passing unfiltered total groundings as both the denominator and numerator (causing threshold ratios like 5/4=125% instead of 2/4=50% for "available" quantifiers, and always 100% for "total" quantifiers), groundings are now properly filtered by clause bounds before threshold evaluation, thereby ensuring quantifier-based rule thresholds compute the correct satisfaction ratios by @ColtonPayne in #101
Full Changelog: v3.2.0...v3.3.0
v3.2.0
What's Changed
- Interpretation tests and pipeline updates by @ColtonPayne in #71
- Merge Colton's branch into main repo by @dyumanaditya in #77
- Dyuman fixes from Colton's branch with new tests fixed by @dyumanaditya in #78
- Colton's Fixes by @dyumanaditya in #76
- Parallel Pyreason issues by @dyumanaditya in #79
- Linting changes by @ColtonPayne in #81
- Final Testing Changes by @ColtonPayne in #83
- add fixtures for new head_functions arg by @ColtonPayne in #84
Full Changelog: v3.1.0...v3.2.0
v3.1.0
v3.0.4
Changes to reasoning again with restart parameter allowing users to reset time to zero before reasoning again.
Full Changelog: v3.0.3...v3.0.4
v3.0.3
Updated the way we pass facts to reason again to be same as reasoning for the first time
Full Changelog: v3.0.2...v3.0.3
v3.0.2
Main changes regarding reasoning again and related documentation. Allows users to add facts more naturally
Full Changelog: v3.0.1...v3.0.2
v3.0.1
What's Changed
- fixed bug in predicate map implementation by @dyumanaditya in #61
Full Changelog: v3.0.0...v3.0.1
v3.0.0
What's Changed
- Update README.md by @dyumanaditya in #47
- Any burl rules 4 types by @jaikrishnap98 in #56
- Documentation by @dyumanaditya in #60
- New release v3.0.0 by @dyumanaditya in #43
New Contributors
- @jaikrishnap98 made their first contribution in #56
Full Changelog: v2.3.0...v3.0.0
v2.3.0
What's Changed
- Documentation for PyReason by @dyumanaditya in #32
- Custom Thresholds by @f-hkobin in #51
New Contributors
Full Changelog: v2.2.1...v2.3.0