+definition ORelation_setoid : OAlgebra → OAlgebra → setoid2.
+intros (P Q);
+constructor 1;
+[ apply (ORelation P Q);
+| constructor 1;
+ (* tenere solo una uguaglianza e usare la proposizione 9.9 per
+ le altre (unicita' degli aggiunti e del simmetrico) *)
+ [ apply (λp,q. And42 (eq2 ? (or_f_minus_star_ ?? p) (or_f_minus_star_ ?? q))
+ (eq2 ? (or_f_minus_ ?? p) (or_f_minus_ ?? q))
+ (eq2 ? (or_f_ ?? p) (or_f_ ?? q))
+ (eq2 ? (or_f_star_ ?? p) (or_f_star_ ?? q)));
+ | whd; simplify; intros; repeat split; intros; apply refl2;
+ | whd; simplify; intros; cases a; clear a; split;
+ intro a; apply sym1; generalize in match a;assumption;
+ | whd; simplify; intros; cases a; cases a1; clear a a1; split; intro a;
+ [ apply (.= (e a)); apply e4;
+ | apply (.= (e1 a)); apply e5;
+ | apply (.= (e2 a)); apply e6;
+ | apply (.= (e3 a)); apply e7;]]]
+qed.
+
+definition or_f_minus_star:
+ ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (P ⇒ Q).
+ intros; constructor 1;
+ [ apply or_f_minus_star_;
+ | intros; cases e; assumption]
+qed.
+
+definition or_f: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (P ⇒ Q).
+ intros; constructor 1;
+ [ apply or_f_;
+ | intros; cases e; assumption]
+qed.
+
+coercion or_f.
+
+definition or_f_minus: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (Q ⇒ P).
+ intros; constructor 1;
+ [ apply or_f_minus_;
+ | intros; cases e; assumption]
+qed.
+
+definition or_f_star: ∀P,Q:OAlgebra.unary_morphism2 (ORelation_setoid P Q) (Q ⇒ P).
+ intros; constructor 1;
+ [ apply or_f_star_;
+ | intros; cases e; assumption]
+qed.
+
+lemma arrows1_OF_ORelation_setoid : ∀P,Q. ORelation_setoid P Q → (P ⇒ Q).
+intros; apply (or_f ?? t);
+qed.
+
+coercion arrows1_OF_ORelation_setoid.
+
+lemma umorphism_OF_ORelation_setoid : ∀P,Q. ORelation_setoid P Q → unary_morphism1 P Q.
+intros; apply (or_f ?? t);
+qed.
+
+coercion umorphism_OF_ORelation_setoid.
+
+lemma umorphism_setoid_OF_ORelation_setoid : ∀P,Q. ORelation_setoid P Q → unary_morphism1_setoid1 P Q.
+intros; apply (or_f ?? t);
+qed.
+
+coercion umorphism_setoid_OF_ORelation_setoid.
+
+lemma uncurry_arrows : ∀B,C. ORelation_setoid B C → B → C.
+intros; apply ((fun11 ?? t) t1);
+qed.
+
+coercion uncurry_arrows 1.
+
+lemma hint6: ∀P,Q. Type_OF_setoid2 (hint5 P ⇒ hint5 Q) → unary_morphism1 P Q.
+ intros; apply t;
+qed.
+coercion hint6.
+