Here is a simple definition of the natural numbers and addition, in Haskell:
data Nat = Zero | Suc Nat
plus :: (Nat, Nat) -> Nat
plus (Zero, y) = y -- axiom 1
plus (Suc x, y) = Suc (plus (x, y)) -- axiom 2
one = Suc Zero
two = Suc one
Here is a proof that plus (one, one) = two: plus (Suc Zero, Suc Zero)
= Suc (plus (Zero, Suc Zero)) [by axiom 2]
= Suc (Suc Zero) [by axiom 1]