kdrag.solvers.kb.multiset
Ground Multiset Rewriting and completion.
https://www.philipzucker.com/multiset_rw/
Functions
| 
 | |
| 
 | Add two multisets | 
| 
 | |
| 
 | deduce all possible critical pairs from R | 
| 
 | |
| 
 | Find minimal multiset that is a supermultiset of both xs and ys. | 
| 
 | Replace multiset pattern lhs in multiset xs with rhs. | 
| 
 | |
| 
 | |
| 
 | Difference two multisets. | 
- kdrag.solvers.kb.multiset.KB(E)
- kdrag.solvers.kb.multiset.add(xs, ys)
- Add two multisets - >>> list(add([("a", 1), ("b", 2)], [("a", 1), ("c", 3)])) [('a', 2), ('b', 2), ('c', 3)] 
- kdrag.solvers.kb.multiset.count(xs)
- kdrag.solvers.kb.multiset.deduce(R)
- deduce all possible critical pairs from R 
- kdrag.solvers.kb.multiset.ms_order(xs, ys)
- kdrag.solvers.kb.multiset.overlap(xs, ys)
- Find minimal multiset that is a supermultiset of both xs and ys. Return None if this is just the union (trivial) 
- kdrag.solvers.kb.multiset.replace(xs, lhs, rhs)
- Replace multiset pattern lhs in multiset xs with rhs. - >>> replace([("a", 1), ("b", 2)], [("a", 1)], [("a", 2), ("c", 3)]) [('a', 2), ('b', 2), ('c', 3)] >>> replace([("a", 1), ("b", 2)], [("a", 1), ("b", 2)], [("a", 2), ("c", 3)]) [('a', 2), ('c', 3)] >>> replace([("a", 1), ("b", 2)], [("a", 1), ("b", 4)], [("a", 2)]) == None True >>> replace([('p', 25)], [('p', 25)], [('q', 1)]) [('q', 1)] 
- kdrag.solvers.kb.multiset.rewrite(s, R)
- kdrag.solvers.kb.multiset.shortlex(xs, ys)
- kdrag.solvers.kb.multiset.sub(xs, ys)
- Difference two multisets. Return None if the second is not a submultiset of the first - >>> sub([("a", 1), ("b", 2)], [("a", 1), ("c", 3)]) is None True >>> sub([("a", 1), ("b", 2)], [("a", 1), ("b", 2)]) []