(**************************************************************************)
-(* ___ *)
+(* ___ *)
(* ||M|| *)
(* ||A|| A project by Andrea Asperti *)
(* ||T|| *)
inductive eq (A:Type) (x:A) : A \to Prop \def
refl_eq : eq A x x.
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "leibnitz's equality"
- 'eq x y = (cic:/matita/logic/equality/eq.ind#xpointer(1/1) _ x y).
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "leibnitz's non-equality"
- 'neq x y = (cic:/matita/logic/connectives/Not.con
- (cic:/matita/logic/equality/eq.ind#xpointer(1/1) _ x y)).
+interpretation "leibnitz's equality" 'eq t x y = (eq t x y).
+
+interpretation "leibnitz's non-equality" 'neq t x y = (Not (eq t x y)).
theorem eq_rect':
\forall A. \forall x:A. \forall P: \forall y:A. x=y \to Type.
variant trans_eq : \forall A:Type.\forall x,y,z:A. x=y \to y=z \to x=z
\def transitive_eq.
+theorem symmetric_not_eq: \forall A:Type. symmetric A (λx,y.x ≠ y).
+unfold symmetric.simplify.intros.unfold.intro.apply H.apply sym_eq.assumption.
+qed.
+
+variant sym_neq: ∀A:Type.∀x,y.x ≠ y →y ≠ x
+≝ symmetric_not_eq.
+
theorem eq_elim_r:
\forall A:Type.\forall x:A. \forall P: A \to Prop.
P x \to \forall y:A. y=x \to P y.
qed.
(* *)
-coercion cic:/matita/logic/equality/sym_eq.con.
-coercion cic:/matita/logic/equality/eq_f.con.
+coercion sym_eq.
+coercion eq_f.
(* *)
default "equality"