Project for Concurrency theory (teoria współbieżności) at AGH UST - fall 2022.
Algorithm that builds a diekert graph and finds Foata normal form of a given problem.
Try out examples: fnf_example.py
, fnf_example_gauss.py
.
See fnf.py
for implementation.
Input:
"a": "x := x + y",
"b": "y := y + 2z",
"c": "x := 3x + z",
"d": "z := y − z"
word = "baadcb"
Output:
Dependencies:
{('d', 'c'), ('b', 'b'), ('a', 'c'), ('c', 'c'), ('b', 'a'), ('c', 'd'), ('d', 'd'), ('d', 'b'), ('c', 'a'), ('a', 'a'), ('a', 'b'), ('b', 'd')}
FNF:
[{'b'}, {'d', 'a'}, {'a'}, {'c', 'b'}]
Gaussian elimination algorithm with python's threading and multiprocessing library.
Implementations: gauss.py
, gauss_threading.py
, gauss_multiprocessing.py
.
Run main.py
to see the results.