<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../../xsl/unit.xsl"?>
<KIVSPEC name="ring"><SPECBODY>enrich
   <a href="../../../specs/elem/export/unit.xml">elem</a>
with
   constants 
       O : elem;
       I : elem;
   
   functions 
       . + . : elem × elem → elem;
       . * . : elem × elem → elem prio 10 right;
       O- . : elem → elem;
   
   variables 
       a : elem;
       b : elem;
       c : elem;
   
   
   axioms 
      addcom: a + b = b + a;
      used for: s, ls;
      
      addzero-r: a + O = a;
      used for: s, ls;
      
      addinv-r: a + O- a = O;
      used for: s, ls;
      
      addassoc: (a + b) + c = a + b + c;
      used for: s, ls;
      
      multassoc: (a * b) * c = a * b * c;
      used for: s, ls;
      
      multone-r: a * I = a;
      used for: s, ls;
      
      multone-l: I * a = a;
      used for: s, ls;
      
      distr-r: a * (b + c) = a * b + a * c;
      
      distr-l: (b + c) * a = b * a + c * a;
   
   theorems 
      multzero-r: a * O = O;
      used for: s, ls;
      
      multzero-l: O * a = O;
      used for: s, ls;
      
      addzero-l: O + a = a;
      used for: ls;
      
      addinv-l: O- a + a = O;
      used for: ls;
      
      trivialring: O = I → a = O;
      
      mult-minusone: O- I * a = O- a;
      used for: s, ls;
   
   
end enrich</SPECBODY></KIVSPEC>