An introduction to attribute logic aka first-order logic