src/HOL/Real/PNat.thy
author wenzelm
Fri, 05 Oct 2001 21:52:39 +0200
changeset 11701 3d51fbf81c17
parent 11464 ddea204de5bc
child 12018 ec054019c910
permissions -rw-r--r--
sane numerals (stage 1): added generic 1, removed 1' and 2 on nat,
"num" syntax (still with "#"), Numeral0, Numeral1;
paulson@5078
     1
(*  Title       : PNat.thy
paulson@7219
     2
    ID          : $Id$
paulson@5078
     3
    Author      : Jacques D. Fleuriot
paulson@5078
     4
    Copyright   : 1998  University of Cambridge
paulson@5078
     5
    Description : The positive naturals
paulson@5078
     6
*) 
paulson@5078
     7
paulson@5078
     8
wenzelm@8856
     9
PNat = Main +
paulson@5078
    10
paulson@5078
    11
typedef
wenzelm@11701
    12
  pnat = "lfp(%X. {Suc 0} Un Suc`X)"   (lfp_def)
paulson@5078
    13
paulson@5078
    14
instance
paulson@5078
    15
   pnat :: {ord, plus, times}
paulson@5078
    16
paulson@5078
    17
consts
paulson@5078
    18
paulson@5078
    19
  pSuc       :: pnat => pnat
paulson@5078
    20
  "1p"       :: pnat                ("1p")
paulson@5078
    21
paulson@5078
    22
constdefs
paulson@5078
    23
  
paulson@7077
    24
  pnat_of_nat  :: nat => pnat           
paulson@7077
    25
  "pnat_of_nat n     == Abs_pnat(n + 1)"
paulson@5078
    26
 
paulson@5078
    27
defs
paulson@5078
    28
paulson@7077
    29
  pnat_one_def      
wenzelm@11701
    30
       "1p == Abs_pnat(Suc 0)"
paulson@7077
    31
  pnat_Suc_def      
paulson@7077
    32
       "pSuc == (%n. Abs_pnat(Suc(Rep_pnat(n))))"
paulson@5078
    33
paulson@5078
    34
  pnat_add_def
paulson@5078
    35
       "x + y == Abs_pnat(Rep_pnat(x) +  Rep_pnat(y))"
paulson@5078
    36
paulson@5078
    37
  pnat_mult_def
paulson@5078
    38
       "x * y == Abs_pnat(Rep_pnat(x) * Rep_pnat(y))"
paulson@5078
    39
paulson@7077
    40
  pnat_less_def
paulson@5078
    41
       "x < (y::pnat) == Rep_pnat(x) < Rep_pnat(y)"
paulson@5078
    42
paulson@7077
    43
  pnat_le_def
paulson@5078
    44
       "x <= (y::pnat) ==  ~(y < x)"
paulson@5078
    45
paulson@5078
    46
end