src/HOL/Quot/PER0.thy
author oheimb
Fri, 01 May 1998 22:30:42 +0200
changeset 4884 1ec740e30811
parent 3842 b55686a7b22c
permissions -rw-r--r--
Auto_tac: now uses enhanced version of asm_full_simp_tac, Force_tac: replaced fast_tac by best_tac

(*  Title:      HOL/Quot/PER0.thy
    ID:         $Id$
    Author:     Oscar Slotosch
    Copyright   1997 Technische Universitaet Muenchen

Definition of classes per and er for (partial) equivalence classes
The polymorphic constant eqv is only for the definition of PERs
The characteristic constant === (sim) is available on the class per

*)

PER0 = Set + (* partial equivalence relations *)

consts  (* polymorphic constant for (partial) equivalence relations *)
        eqv    :: "'a::term => 'a => bool" 

axclass per < term
	(* axioms for partial equivalence relations *)
        ax_per_trans    "[|eqv x y; eqv y z|] ==> eqv x z"
        ax_per_sym      "eqv x y ==> eqv y x"

axclass er < per
	ax_er_refl	"eqv x x"

consts  (* characteristic constant and Domain for per *)
        "==="     :: "'a::per => 'a => bool" (infixl 55)
        D         :: "'a::per set"
defs
        per_def         "(op ===) == eqv"
        Dom             "D=={x. x===x}"
(* define ==== on and function type => *)
        fun_per_def     "eqv f g == !x y. x:D & y:D & x===y --> f x === g y"

syntax (symbols)
  "op ==="   :: "['a,'a::per] => bool"        (infixl "\\<sim>" 50)

end