Logic provides an essential foundation for any kind of rigorous reasoning in Mathematics and Computer Science, e.g., proving the correctness and safety of computer programs.
Different logics have different properties and there is an ongoing search for better logics.
Type theories support increasing the expressiveness of programming languages and logics without losing important theoretical properties. Rewriting is a method for applying the rules of logic, mathematics, or computation in a stepwise manner. This supports reasoning about efficient computation strategies and equivalences between propositions or programs. Logics, Types and Rewriting have been basic to the design and implementation of programming languages, the formalization of mathematics, and theorem proving. Logics existed for thousands of years.