| apply commute;]]
qed.
-definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP).
- constructor 1;
- [ apply o_basic_pair_of_basic_pair;
- | intros; constructor 1;
- [ apply (o_relation_pair_of_relation_pair S T);
- | intros (a b Eab); split; unfold o_relation_pair_of_relation_pair; simplify;
+lemma o_relation_pair_of_relation_pair_is_morphism :
+ ∀S,T:category2_of_category1 BP.
+ ∀a,b:arrows2 (category2_of_category1 BP) S T.a=b →
+ (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T)))
+ (o_relation_pair_of_relation_pair S T a) (o_relation_pair_of_relation_pair S T b).
+intros 2 (S T);
+ intros (a b Eab); split; unfold o_relation_pair_of_relation_pair; simplify;
unfold o_basic_pair_of_basic_pair; simplify;
[ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x);
| change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
apply sym2;
apply prop12;
apply Eab;
- ]
- | simplify; intros; whd; split;
+qed.
+
+lemma o_relation_pair_of_relation_pair_morphism :
+ ∀S,T:category2_of_category1 BP.
+ unary_morphism2 (arrows2 (category2_of_category1 BP) S T)
+ (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T)).
+intros (S T);
+ constructor 1;
+ [ apply (o_relation_pair_of_relation_pair S T);
+ | apply (o_relation_pair_of_relation_pair_is_morphism S T)]
+qed.
+
+lemma o_relation_pair_of_relation_pair_morphism_respects_id:
+ ∀o:category2_of_category1 BP.
+ o_relation_pair_of_relation_pair_morphism o o (id2 (category2_of_category1 BP) o)
+ = id2 OBP (o_basic_pair_of_basic_pair o).
+ simplify; intros; whd; split;
[ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x);
| change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
| change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
simplify;
apply prop12;
apply prop22;[2,4,6,8: apply rule #;]
- apply (respects_id2 ?? POW (concr o));
- | simplify; intros; whd; split;
+ apply (respects_id2 ?? POW (concr o));
+qed.
+
+lemma o_relation_pair_of_relation_pair_morphism_respects_comp:
+ ∀o1,o2,o3:category2_of_category1 BP.
+ ∀f1:arrows2 (category2_of_category1 BP) o1 o2.
+ ∀f2:arrows2 (category2_of_category1 BP) o2 o3.
+ (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair o1) (o_basic_pair_of_basic_pair o3)))
+ (o_relation_pair_of_relation_pair_morphism o1 o3 (f2 ∘ f1))
+ (comp2 OBP ???
+ (o_relation_pair_of_relation_pair_morphism o1 o2 f1)
+ (o_relation_pair_of_relation_pair_morphism o2 o3 f2)).
+ simplify; intros; whd; split;
[ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x);
| change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x);
| change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x);
simplify;
apply prop12;
apply prop22;[2,4,6,8: apply rule #;]
- apply (respects_comp2 ?? POW (concr o1) (concr o2) (concr o3) f1\sub\c f2\sub\c);]
+ apply (respects_comp2 ?? POW (concr o1) (concr o2) (concr o3) f1\sub\c f2\sub\c);
+qed.
+
+definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP).
+ constructor 1;
+ [ apply o_basic_pair_of_basic_pair;
+ | intros; apply o_relation_pair_of_relation_pair_morphism;
+ | apply o_relation_pair_of_relation_pair_morphism_respects_id;
+ | apply o_relation_pair_of_relation_pair_morphism_respects_comp;]
qed.
theorem BP_to_OBP_faithful:
apply e;
qed.
-theorem BP_to_OBP_full: ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? BP_to_OBP S T g = f).
+theorem BP_to_OBP_full:
+ ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? BP_to_OBP S T g = f).
intros;
cases (POW_full (concr S) (concr T) (Oconcr_rel ?? f)) (gc Hgc);
cases (POW_full (form S) (form T) (Oform_rel ?? f)) (gf Hgf);