src/HOL/Real/PRat.thy
author nipkow
Tue, 09 Jan 2001 15:32:27 +0100
changeset 10834 a7897aebbffc
parent 10797 028d22926a41
child 13487 1291c6375c29
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     1
(*  Title       : PRat.thy
7219
4e3f386c2e37 inserted Id: lines
paulson
parents: 7077
diff changeset
     2
    ID          : $Id$
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     3
    Author      : Jacques D. Fleuriot
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     4
    Copyright   : 1998  University of Cambridge
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     5
    Description : The positive rationals
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     6
*) 
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     7
8856
435187ffc64e fixed theory deps;
wenzelm
parents: 7376
diff changeset
     8
PRat = PNat +
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
     9
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    10
constdefs
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    11
    ratrel   ::  "((pnat * pnat) * (pnat * pnat)) set"
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    12
    "ratrel  ==  {p. ? x1 y1 x2 y2. p=((x1::pnat,y1),(x2,y2)) & x1*y2 = x2*y1}" 
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    13
9391
a6ab3a442da6 changed / to // for quotienting; general tidying
paulson
parents: 8856
diff changeset
    14
typedef prat = "UNIV//ratrel"          (Equiv.quotient_def)
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    15
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    16
instance
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    17
   prat  :: {ord,plus,times}
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    18
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    19
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    20
constdefs
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    21
7077
60b098bb8b8a heavily revised by Jacques: coercions have alphabetic names;
paulson
parents: 5078
diff changeset
    22
  prat_of_pnat :: pnat => prat           
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    23
  "prat_of_pnat m == Abs_prat(ratrel``{(m,Abs_pnat 1)})"
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    24
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    25
  qinv      :: prat => prat
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    26
  "qinv(Q)  == Abs_prat(UN (x,y):Rep_prat(Q). ratrel``{(y,x)})" 
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    27
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    28
defs
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    29
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    30
  prat_add_def  
7376
46f92a120af9 tidied, allowing pattern-matching in defs of prat_add and prat_mult
paulson
parents: 7219
diff changeset
    31
  "P + Q == Abs_prat(UN (x1,y1):Rep_prat(P). UN (x2,y2):Rep_prat(Q).
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    32
		     ratrel``{(x1*y2 + x2*y1, y1*y2)})"
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    33
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    34
  prat_mult_def  
7376
46f92a120af9 tidied, allowing pattern-matching in defs of prat_add and prat_mult
paulson
parents: 7219
diff changeset
    35
  "P * Q == Abs_prat(UN (x1,y1):Rep_prat(P). UN (x2,y2):Rep_prat(Q).
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    36
		     ratrel``{(x1*x2, y1*y2)})"
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    37
 
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    38
  (*** Gleason p. 119 ***)
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    39
  prat_less_def
9391
a6ab3a442da6 changed / to // for quotienting; general tidying
paulson
parents: 8856
diff changeset
    40
  "P < (Q::prat) == EX T. P + T = Q"
5078
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    41
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    42
  prat_le_def
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    43
  "P <= (Q::prat) == ~(Q < P)" 
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    44
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    45
end
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    46
  
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    47
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    48
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    49
7b5ea59c0275 Installation of target HOL-Real
paulson
parents:
diff changeset
    50