equal
deleted
inserted
replaced
21 text {* |
21 text {* |
22 \medskip Type class @{text equiv} models equivalence relations @{text |
22 \medskip Type class @{text equiv} models equivalence relations @{text |
23 "\<sim> :: 'a => 'a => bool"}. |
23 "\<sim> :: 'a => 'a => bool"}. |
24 *} |
24 *} |
25 |
25 |
26 axclass eqv < "term" |
26 axclass eqv \<subseteq> "term" |
27 consts |
27 consts |
28 eqv :: "('a::eqv) => 'a => bool" (infixl "\<sim>" 50) |
28 eqv :: "('a::eqv) => 'a => bool" (infixl "\<sim>" 50) |
29 |
29 |
30 axclass equiv < eqv |
30 axclass equiv \<subseteq> eqv |
31 equiv_refl [intro]: "x \<sim> x" |
31 equiv_refl [intro]: "x \<sim> x" |
32 equiv_trans [trans]: "x \<sim> y ==> y \<sim> z ==> x \<sim> z" |
32 equiv_trans [trans]: "x \<sim> y ==> y \<sim> z ==> x \<sim> z" |
33 equiv_sym [elim?]: "x \<sim> y ==> y \<sim> x" |
33 equiv_sym [elim?]: "x \<sim> y ==> y \<sim> x" |
34 |
34 |
35 lemma not_equiv_sym [elim?]: "\<not> (x \<sim> y) ==> \<not> (y \<sim> (x::'a::equiv))" |
35 lemma not_equiv_sym [elim?]: "\<not> (x \<sim> y) ==> \<not> (y \<sim> (x::'a::equiv))" |