Gate Program Theory