:: FUNCTOR1 semantic presentation

registration
cluster non empty transitive with_units reflexive AltCatStr ;
existence
ex b1 being non empty AltCatStr st
( b1 is transitive & b1 is with_units & b1 is reflexive )
proof end;
end;

registration
let c1 be non empty reflexive AltCatStr ;
cluster non empty reflexive SubCatStr of a1;
existence
ex b1 being SubCatStr of c1 st
( not b1 is empty & b1 is reflexive )
proof end;
end;

registration
let c1, c2 be non empty reflexive AltCatStr ;
let c3 be feasible FunctorStr of c1,c2;
let c4 be non empty reflexive SubCatStr of c1;
cluster a3 | a4 -> feasible ;
coherence
c3 | c4 is feasible
;
end;

theorem Th1: :: FUNCTOR1:1
for b1 being set holds id b1 is onto
proof end;

theorem Th2: :: FUNCTOR1:2
for b1 being non empty set
for b2, b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st b3 = b4 holds
incl b3 = (incl b2) * (incl b4)
proof end;

theorem Th3: :: FUNCTOR1:3
for b1, b2 being set
for b3 being Function of b1,b2 st b3 is bijective holds
b3 " is Function of b2,b1
proof end;

theorem Th4: :: FUNCTOR1:4
for b1, b2 being set
for b3 being non empty set
for b4 being Function of b1,b2
for b5 being Function of b2,b3 st b4 is bijective & b5 is bijective holds
ex b6 being Function of b1,b3 st
( b6 = b5 * b4 & b6 is bijective )
proof end;

theorem Th5: :: FUNCTOR1:5
for b1 being non empty reflexive AltCatStr
for b2 being non empty reflexive SubCatStr of b1
for b3 being non empty SubCatStr of b1
for b4 being non empty SubCatStr of b2 st b3 = b4 holds
incl b3 = (incl b2) * (incl b4)
proof end;

theorem Th6: :: FUNCTOR1:6
for b1, b2 being non empty AltCatStr
for b3 being FunctorStr of b1,b2 st b3 is bijective holds
( the ObjectMap of b3 is bijective & the MorphMap of b3 is "1-1" )
proof end;

theorem Th7: :: FUNCTOR1:7
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is one-to-one & b5 is one-to-one holds
b5 * b4 is one-to-one
proof end;

theorem Th8: :: FUNCTOR1:8
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is faithful & b5 is faithful holds
b5 * b4 is faithful
proof end;

theorem Th9: :: FUNCTOR1:9
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is onto & b5 is onto holds
b5 * b4 is onto
proof end;

theorem Th10: :: FUNCTOR1:10
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is full & b5 is full holds
b5 * b4 is full
proof end;

theorem Th11: :: FUNCTOR1:11
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is injective & b5 is injective holds
b5 * b4 is injective
proof end;

theorem Th12: :: FUNCTOR1:12
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is surjective & b5 is surjective holds
b5 * b4 is surjective
proof end;

theorem Th13: :: FUNCTOR1:13
for b1 being non empty AltGraph
for b2, b3 being non empty reflexive AltGraph
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3 st b4 is bijective & b5 is bijective holds
b5 * b4 is bijective
proof end;

theorem Th14: :: FUNCTOR1:14
for b1, b2 being non empty reflexive AltCatStr
for b3 being non empty reflexive SubCatStr of b1
for b4 being non empty SubCatStr of b1
for b5 being non empty SubCatStr of b3 st b4 = b5 holds
for b6 being FunctorStr of b1,b2 holds b6 | b4 = (b6 | b3) | b5
proof end;

theorem Th15: :: FUNCTOR1:15
for b1, b2, b3 being non empty reflexive AltCatStr
for b4 being feasible FunctorStr of b1,b2
for b5 being FunctorStr of b2,b3
for b6 being non empty reflexive SubCatStr of b1 holds (b5 * b4) | b6 = b5 * (b4 | b6) by FUNCTOR0:33;

theorem Th16: :: FUNCTOR1:16
canceled;

theorem Th17: :: FUNCTOR1:17
for b1 being non empty AltCatStr
for b2 being non empty SubCatStr of b1 holds
( b2 is full iff incl b2 is full )
proof end;

theorem Th18: :: FUNCTOR1:18
for b1, b2 being non empty AltCatStr
for b3 being Covariant FunctorStr of b1,b2 holds
( b3 is full iff for b4, b5 being object of b1 holds Morph-Map b3,b4,b5 is onto )
proof end;

theorem Th19: :: FUNCTOR1:19
for b1, b2 being non empty AltCatStr
for b3 being Covariant FunctorStr of b1,b2 holds
( b3 is faithful iff for b4, b5 being object of b1 holds Morph-Map b3,b4,b5 is one-to-one )
proof end;

theorem Th20: :: FUNCTOR1:20
for b1 being non empty transitive with_units AltCatStr holds (id b1) " = id b1
proof end;

theorem Th21: :: FUNCTOR1:21
for b1, b2 being non empty transitive with_units reflexive AltCatStr
for b3 being feasible FunctorStr of b1,b2 st b3 is bijective holds
for b4 being feasible FunctorStr of b2,b1 st FunctorStr(# the ObjectMap of b4,the MorphMap of b4 #) = b3 " holds
b3 * b4 = id b2
proof end;

Lemma11: for b1 being set
for b2, b3 being ManySortedSet of b1 st b2 is_transformable_to b3 holds
for b4 being ManySortedFunction of b2,b3
for b5 being ManySortedFunction of b3,b2 st b4 is "1-1" & b4 is "onto" & b5 = b4 "" holds
( b4 ** b5 = id b3 & b5 ** b4 = id b2 )
proof end;

theorem Th22: :: FUNCTOR1:22
for b1, b2 being non empty transitive with_units reflexive AltCatStr
for b3 being feasible FunctorStr of b1,b2 st b3 is bijective holds
(b3 " ) * b3 = id b1
proof end;

theorem Th23: :: FUNCTOR1:23
for b1, b2 being non empty transitive with_units reflexive AltCatStr
for b3 being feasible FunctorStr of b1,b2 st b3 is bijective holds
(b3 " ) " = FunctorStr(# the ObjectMap of b3,the MorphMap of b3 #)
proof end;

theorem Th24: :: FUNCTOR1:24
for b1, b2, b3 being non empty transitive with_units reflexive AltCatStr
for b4 being feasible FunctorStr of b1,b2
for b5 being feasible FunctorStr of b2,b3
for b6 being feasible FunctorStr of b2,b1
for b7 being feasible FunctorStr of b3,b2 st b5 is bijective & b4 is bijective & b7 is bijective & b6 is bijective & FunctorStr(# the ObjectMap of b6,the MorphMap of b6 #) = b4 " & FunctorStr(# the ObjectMap of b7,the MorphMap of b7 #) = b5 " holds
(b5 * b4) " = b6 * b7
proof end;