// some basic declarations to be compatible with project input and output // these types are used in all of the given snippets .type label .type var // extension .type trace = label | var .type chain = label | var .type key = label | var .type candidate_type .type tainting_type .type rule_type // -- inputs -- .decl source( l:label, x:var ) .decl sink( l:label, x:var ) .decl follows( l1:label, l2:label) .decl join(l1: label, l2: label, l3:label) .decl assign( l:label, x:var, y:var, z:var ) .decl if(l1:label, l2:label, x:var, y:var) .input source() .input sink() .input follows() .input join() .input assign() .input if() // -- output .decl sanitize(l1:label, x: var) .output sanitize