** Lect 11-12 - Linnea: solving LAMP via graph construction - Graph: each path represents an algorithm - merging branches to reduce redundancy - reuse of temporary operands - requirement: normal form for expressions - pattern matching & symbolic computations - expressions are represented as trees - pattern matching to identify applicable kernels: https://github.com/HPAC/matchpy - common subexpressions - transposed and inverted subexpressions - maximal subexpressions - overlapping subexpressions - inference of matrix properties - how do properties propagate with operations? - inference rules - bandwidth properties - Linnea - software: https://github.com/HPAC/linnea - early paper: http://hpac.rwth-aachen.de/~barthels/publications/ACM_SRC_2016_final_round.pdf