Reasoning with Pattern Blocks