@@ -1016,8 +1016,56 @@ Theorem pbsquarec_compP :
10161016 pbsquare w z h u <=> pbsquare w (z \; v) (h \; f) g.
10171017Proof .
10181018split=> [] sq.
1019- have p : pullback (Cospan h u) := HB.pack (Span w z) sq.
1020-
1019+
1020+ have @sq_ispb : pullback (Cospan h u) := HB.pack (Span w z) sq.
1021+ have @uvfg_ispb : pullback (Cospan f g) := HB.pack (Span u v) uvfg.
1022+ have /=E2 := @is_square _ _ _ _ sq_ispb.
1023+ have /=E1 := @is_square _ _ _ _ uvfg_ispb.
1024+
1025+ have p1 : @isPrePullback Q C B (Cospan (h \; f) g) (Span w (z \; v)).
1026+ by constructor; rewrite /= compoA E2 -compoA E1 compoA.
1027+ pose big_black_square : prepullback (Cospan (h \; f) g) :=
1028+ HB.pack (Span w (z \; v)) p1.
1029+
1030+ have @from : forall
1031+ (big_red_square : prepullback {| top := D; left2top := h \; f; right2top := g |}),
1032+ big_red_square ~> pb_terminal big_black_square.
1033+
1034+ move=> big_red_square; unfold pb_terminal.
1035+
1036+ have /= := @is_square _ _ _ _ big_red_square.
1037+
1038+ pose F' := bot big_red_square.
1039+ set w' : F' ~> C := bot2left big_red_square.
1040+ set z' : F' ~> B := bot2right big_red_square.
1041+ move=> E3.
1042+
1043+ have xxx : isPrePullback Q A B (Cospan f g) (Span (w' \; h) z').
1044+ by constructor=> /=; rewrite -compoA E3.
1045+ pose red_black_square : prepullback (Cospan f g) :=
1046+ HB.pack (Span (w' \; h) z') xxx.
1047+ have := @from_unique _ (pb_terminal uvfg_ispb) red_black_square.
1048+ set blue := @from _ (pb_terminal uvfg_ispb) red_black_square.
1049+ move=> blue_unique.
1050+
1051+ have p3 : @isPrePullback Q C E (Cospan h u) (Span w' (bot_map blue)).
1052+ by constructor; rewrite /= (bot2left_map blue). (* buggy unifier without blue *)
1053+ pose blue_red_black_square : prepullback (Cospan h u) :=
1054+ HB.pack (Span w' (bot_map blue)) p3.
1055+
1056+ pose red := @from _ (pb_terminal sq_ispb) blue_red_black_square.
1057+
1058+
1059+
1060+
1061+
1062+ have p2 : prepullback_isTerminal.axioms_ Q C B (Cospan (h \; f) g) (Span w (z \; v)) p1.
1063+ constructor. econstructor=> /=.
1064+
1065+ pose xx : Pullback.type (Cospan (h \; f) g) :=
1066+ HB.pack (Span w (z \; v)) p2 p1.
1067+ apply: Pullback.class xx.
1068+
10211069Admitted .
10221070
10231071End th_of_pb.
0 commit comments