2014-08-24 19:58:48 -07:00
|
|
|
import logic
|
2014-07-09 20:41:41 -07:00
|
|
|
|
|
|
|
namespace setoid
|
|
|
|
inductive setoid : Type :=
|
2014-08-22 15:46:10 -07:00
|
|
|
mk_setoid: Π (A : Type), (A → A → Prop) → setoid
|
2014-07-09 20:41:41 -07:00
|
|
|
|
|
|
|
definition carrier (s : setoid)
|
2014-09-04 15:03:59 -07:00
|
|
|
:= setoid.rec (λ a eq, a) s
|
2014-07-09 20:41:41 -07:00
|
|
|
|
2014-07-22 09:43:18 -07:00
|
|
|
definition eqv {s : setoid} : carrier s → carrier s → Prop
|
2014-09-04 15:03:59 -07:00
|
|
|
:= setoid.rec (λ a eqv, eqv) s
|
2014-07-09 20:41:41 -07:00
|
|
|
|
2014-10-21 15:27:45 -07:00
|
|
|
infix `≈` := eqv
|
2014-07-09 20:41:41 -07:00
|
|
|
|
2015-01-24 20:23:21 -08:00
|
|
|
attribute carrier [coercion]
|
2014-07-09 20:41:41 -07:00
|
|
|
|
|
|
|
inductive morphism (s1 s2 : setoid) : Type :=
|
2014-08-22 15:46:10 -07:00
|
|
|
mk_morphism : Π (f : s1 → s2), (∀ x y, x ≈ y → f x ≈ f y) → morphism s1 s2
|
2014-07-09 20:41:41 -07:00
|
|
|
|
2014-09-04 15:03:59 -07:00
|
|
|
end setoid
|