--# -path=.:../prelude

concrete ArithmEng of Arithm = LogicEng ** open LogicResEng in {

lin
  Nat = {s = nomReg "number"} ;
  zero = ss "zero" ;
  succ = fun1 "successor" ;

  EqNat = adj2 ["equal to"] ;
  LtNat = adj2 ["smaller than"] ;
  Div   = adj2 ["divisible by"] ;
  Even  = adj1 "even" ;
  Odd   = adj1 "odd" ;
  Prime = adj1 "prime" ;

  one = ss "one" ;
  two = ss "two" ;
  sum = fun2 "sum" ;
  prod = fun2 "product" ;

  evax1 = ss ["by the first axiom of evenness , zero is even"] ;
  evax2 n c = {s = 
    c.s ++ [". By the second axiom of evenness , the successor of"] ++ 
    n.s ++ ["is odd"]} ;
  evax3 n c = {s = 
    c.s ++ [". By the third axiom of evenness , the successor of"] ++ 
    n.s ++ ["is even"]} ;
  eqax1 = ss ["by the first axiom of equality , zero is equal to zero"] ;
  eqax2 m n c = {s = 
    c.s ++ [". By the second axiom of equality , the successor of"] ++ m.s ++ 
    ["is equal to the successor of"] ++ n.s} ;
  IndNat C d e = {s = 
    ["we proceed by induction . For the basis ,"] ++ d.s ++ 
    [". For the induction step, consider a number"] ++ C.$0 ++ 
    ["and assume"] ++ C.s ++ "(" ++ e.$1 ++ ")" ++ "." ++ e.s ++ 
    ["Hence, for all numbers"] ++ C.$0 ++ "," ++ C.s} ;

  ex1 = ss ["The first theorem and its proof ."] ;

} ;

