parameter (pair (set string) (set string)); return bool; storage unit; code { CAR; DUP; CDR; DIP{CAR}; # Unpack lists PUSH bool True; PAIR; SWAP; # Setup accumulator LAMBDA (pair string (pair bool (set string))) (pair bool (set string)) { DUP; # Unpack accumulator and input CAR; DIP{ CDR; DUP; DUP; CDR; DIP{CAR; DIP{CDR}}}; MEM; # Check membership AND; # Combine accumulator and input PAIR}; REDUCE; # Reduce CAR; # Get the accumulator value UNIT; SWAP; PAIR} # Calling convention