This document discusses agreement protocols in distributed systems. It defines three main agreement problems: Byzantine agreement, consensus, and interactive consistency. Byzantine agreement requires all non-faulty processors to agree on a single value initialized by a source processor. Consensus requires agreement on a single value when each processor begins with a different initial value. Interactive consistency requires agreement on a set of values when initial values differ across processors. The document outlines solutions for these problems under synchronous and asynchronous models with crash, omission, and Byzantine faults.