Before revision:  This paper presents an algorithm for lifting CSG designs to CAD programs , preserving equivalence to the original CSGs but parameterizing over repetitive structures. Our technique takes as input a flat CSG and infers parameters that capture the latent structure of the CSG using an equality-graph based rewrite mechanism combined with constraint solvers for inferring arithmetic operations. Our algorithm synthesizes CAD programs with (possibly nested) loops and arithmetic expressions including trigonometric functions. We implemented our algorithm in a tool called tool and evaluated it by running it on 16 designs collected from popular model-sharing websites and found that it reduces code size by 64\% on average, and exposes the underlying structure for 81\% of the models .
After revision:  This paper proposes a second decompilation stage to robustly "shrink" unstructured CSG expressions into more editable programs with map and fold operators. We present Szalinski, a tool that uses Equality Saturation with semantics-preserving CAD rewrites to efficiently search for smaller equivalent programs. Szalinski relies on inverse transformations, a novel way for solvers to speculatively add equivalences to an E-graph. We qualitatively evaluate Szalinski in case studies, show how it composes with an existing mesh decompiler, and demonstrate that Szalinski can shrink large models in seconds .