src/HOL/Quot/PER0.thy
author oheimb
Wed, 12 Nov 1997 12:34:43 +0100
changeset 4206 688050e83d89
parent 3842 b55686a7b22c
permissions -rw-r--r--
restored last version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2904
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     1
(*  Title:      HOL/Quot/PER0.thy
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     2
    ID:         $Id$
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     3
    Author:     Oscar Slotosch
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     4
    Copyright   1997 Technische Universitaet Muenchen
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     5
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     6
Definition of classes per and er for (partial) equivalence classes
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     7
The polymorphic constant eqv is only for the definition of PERs
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     8
The characteristic constant === (sim) is available on the class per
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
     9
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    10
*)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    11
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    12
PER0 = Set + (* partial equivalence relations *)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    13
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    14
consts  (* polymorphic constant for (partial) equivalence relations *)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    15
        eqv    :: "'a::term => 'a => bool" 
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    16
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    17
axclass per < term
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    18
	(* axioms for partial equivalence relations *)
3058
9d6526cacc3c changed Domain->Dom for SML/NJ
slotosch
parents: 2904
diff changeset
    19
        ax_per_trans    "[|eqv x y; eqv y z|] ==> eqv x z"
2904
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    20
        ax_per_sym      "eqv x y ==> eqv y x"
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    21
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    22
axclass er < per
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    23
	ax_er_refl	"eqv x x"
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    24
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    25
consts  (* characteristic constant and Domain for per *)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    26
        "==="     :: "'a::per => 'a => bool" (infixl 55)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    27
        D         :: "'a::per set"
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    28
defs
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    29
        per_def         "(op ===) == eqv"
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3058
diff changeset
    30
        Dom             "D=={x. x===x}"
2904
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    31
(* define ==== on and function type => *)
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3058
diff changeset
    32
        fun_per_def     "eqv f g == !x y. x:D & y:D & x===y --> f x === g y"
2904
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    33
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    34
syntax (symbols)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    35
  "op ==="   :: "['a,'a::per] => bool"        (infixl "\\<sim>" 50)
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    36
fc10751254aa (partial) equivalecne relations. classes er<per
slotosch
parents:
diff changeset
    37
end