Գրեք սա: Generic Programming for Domain Reasoners