TextWorld
TextWorld copied to clipboard
WIP: Support attributes as types
A couple of highlights:
- Can now define multiple alternatives for a given alias. For instance,
reachable(x) = in(x, I);
reachable(x) = at(x, r) & at(P, r);
- Better expansion of rules, predicates, and aliases for all descendant subtypes.
- While doing the expansion, preserve rules, predicates and alias that are more fine-grained (e.g. keep the definition of
open(door)when expandingopen(openable)wheredooris a subtype ofopenable). - Add argument types to rule name. This makes finding expanded rules easier.
- Add
box, a type of portable container; - Add
stool, a type of portable supporter; - Now, a fixed in place container is known as
chest - Now, a fixed in place supporter is known as
table
TODO
- Tests still failing.
- I'm not entirely sure the "keep fine-grained definitions" work as expected. For instance, I'm not dealing when two parent types defined a same rule/predicate/alias.
- Add documentation and clean commented code.