Library Rational.Quotient.quotient





Parameter MK_QUO : (A : Set) (R : AAProp), Set.


Definition Compat (A : Set) (R : AAProp) (B : Set)
  (f : AB) := x y : A, R x yf x = f y.


Definition Compat_prop (A : Set) (R : AAProp)
  (P : AProp) := x y : A, R x y → (P x P y).


Axiom
  lift :
     (A : Set) (R : AAProp) (B : Set) (f : AB),
    Compat A R B fMK_QUO A RB.

Axiom
  lift_prop :
     (A : Set) (R : AAProp) (P : AProp),
    Compat_prop A R PMK_QUO A RProp.


Parameter In : (A : Set) (R : AAProp), AMK_QUO A R.


Axiom
  From_R_to_L :
     (A : Set) (R : AAProp) (x y : A),
    R x yIn A R x = In A R y.

Axiom
  From_L_to_R :
     (A : Set) (R : AAProp) (x y : A),
    In A R x = In A R yR x y.


Axiom
  Reduce :
     (A : Set) (R : AAProp) (B : Set)
      (f : AB) (c : Compat A R B f) (a : A),
    lift A R B f c (In A R a) = f a.

Axiom
  Reduce_prop :
     (A : Set) (R : AAProp) (f : AProp)
      (c : Compat_prop A R f) (a : A), lift_prop A R f c (In A R a) = f a.


Axiom
  Closure :
     (A : Set) (R : AAProp) (X : MK_QUO A R)
      (P : MK_QUO A RSet), ( x : A, P (In A R x)) → P X.


Axiom
  Closure_prop :
     (A : Set) (R : AAProp) (X : MK_QUO A R)
      (P : MK_QUO A RProp), ( x : A, P (In A R x)) → P X.


Axiom
  Ext : (A B : Set) (f g : AB), ( x : A, f x = g x) → f = g.



Notation "| c |" := (In _ _ c) (at level 20, c at level 0).
Notation "c / c2" := (MK_QUO c c2).