In programming language theory and formal methods, there are several definitions of "abstraction" in different contexts, but they are all quite similar: abstractions are mappings between a complex concrete world and a simple idealized one.
Doc -> List PrinterInstruction
IR
abstraction
Doc -> IR
IR -> List PrinterOneInstruction
IR -> List PrinterTwoInstruction