# Theory RingHomo

Up to index of Isabelle/HOL/HOL-Algebra

theory RingHomo
imports Ring
uses [RingHomo.ML]
begin

    (*
        Ring homomorphism
        $Id: RingHomo.thy,v 1.3 2005/09/17 18:49:15 wenzelm Exp $
        Author: Clemens Ballarin, started 15 April 1997
    *)

    theory RingHomo imports Ring begin

    constdefs
      homo  :: "('a::ring => 'b::ring) => bool"
      "homo f == (ALL a b. f (a + b) = f a + f b &
                                       f (a * b) = f a * f b) &
                                       f 1 = 1"

    end

theorem homoI:

      [| !!a b. f (a + b) = f a + f b; !!a b. f (a * b) = f a * f b;
         f (1::'a) = (1::'b) |]
      ==> homo f

theorem homo_add:

      homo f ==> f (a + b) = f a + f b

theorem homo_mult:

      homo f ==> f (a * b) = f a * f b

theorem homo_one:

      homo f ==> f (1::'a) = (1::'b)

theorem homo_zero:

      homo f ==> f (0::'a) = (0::'b)

theorem homo_uminus:

      homo f ==> f (- a) = - f a

theorem homo_power:

      homo f ==> f (a ^ n) = f a ^ n

theorem homo_SUM:

      homo f ==> f (setsum g {..n}) = setsum (f o g) {..n}

theorem id_homo:

      homo (%x. x)