The Theorema project aims at bringing computer-supported mathematical proving into the frame of Mathematica, using both the logical power of Mathematica's rule-based programming style and the flexibility and maturity of Mathematica's front end. Theorema generates proofs in natural languages in the style of proofs produced by humans. Applications range from logical training for students to computer-supported mathematical research and formal software verification.