:: OSAFREE semantic presentation
:: deftheorem Def1 defines OSGeneratorSet OSAFREE:def 1 :
theorem Th1: :: OSAFREE:1
:: deftheorem Def2 defines osfree OSAFREE:def 2 :
:: deftheorem Def3 defines osfree OSAFREE:def 3 :
definition
let c1 be
OrderSortedSign;
let c2 be
ManySortedSet of
c1;
func OSREL c2 -> Relation of
[:the OperSymbols of a1,{the carrier of a1}:] \/ (Union (coprod a2)),
([:the OperSymbols of a1,{the carrier of a1}:] \/ (Union (coprod a2))) * means :
Def4:
:: OSAFREE:def 4
for
b1 being
Element of
[:the OperSymbols of a1,{the carrier of a1}:] \/ (Union (coprod a2)) for
b2 being
Element of
([:the OperSymbols of a1,{the carrier of a1}:] \/ (Union (coprod a2))) * holds
(
[b1,b2] in a3 iff (
b1 in [:the OperSymbols of a1,{the carrier of a1}:] & ( for
b3 being
OperSymbol of
a1 st
[b3,the carrier of a1] = b1 holds
(
len b2 = len (the_arity_of b3) & ( for
b4 being
set st
b4 in dom b2 holds
( (
b2 . b4 in [:the OperSymbols of a1,{the carrier of a1}:] implies for
b5 being
OperSymbol of
a1 st
[b5,the carrier of a1] = b2 . b4 holds
the_result_sort_of b5 <= (the_arity_of b3) /. b4 ) & (
b2 . b4 in Union (coprod a2) implies ex
b5 being
Element of
a1 st
(
b5 <= (the_arity_of b3) /. b4 &
b2 . b4 in coprod b5,
a2 ) ) ) ) ) ) ) );
existence
ex b1 being Relation of [:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2)),([:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))) * st
for b2 being Element of [:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))
for b3 being Element of ([:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))) * holds
( [b2,b3] in b1 iff ( b2 in [:the OperSymbols of c1,{the carrier of c1}:] & ( for b4 being OperSymbol of c1 st [b4,the carrier of c1] = b2 holds
( len b3 = len (the_arity_of b4) & ( for b5 being set st b5 in dom b3 holds
( ( b3 . b5 in [:the OperSymbols of c1,{the carrier of c1}:] implies for b6 being OperSymbol of c1 st [b6,the carrier of c1] = b3 . b5 holds
the_result_sort_of b6 <= (the_arity_of b4) /. b5 ) & ( b3 . b5 in Union (coprod c2) implies ex b6 being Element of c1 st
( b6 <= (the_arity_of b4) /. b5 & b3 . b5 in coprod b6,c2 ) ) ) ) ) ) ) )
uniqueness
for b1, b2 being Relation of [:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2)),([:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))) * st ( for b3 being Element of [:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))
for b4 being Element of ([:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))) * holds
( [b3,b4] in b1 iff ( b3 in [:the OperSymbols of c1,{the carrier of c1}:] & ( for b5 being OperSymbol of c1 st [b5,the carrier of c1] = b3 holds
( len b4 = len (the_arity_of b5) & ( for b6 being set st b6 in dom b4 holds
( ( b4 . b6 in [:the OperSymbols of c1,{the carrier of c1}:] implies for b7 being OperSymbol of c1 st [b7,the carrier of c1] = b4 . b6 holds
the_result_sort_of b7 <= (the_arity_of b5) /. b6 ) & ( b4 . b6 in Union (coprod c2) implies ex b7 being Element of c1 st
( b7 <= (the_arity_of b5) /. b6 & b4 . b6 in coprod b7,c2 ) ) ) ) ) ) ) ) ) & ( for b3 being Element of [:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))
for b4 being Element of ([:the OperSymbols of c1,{the carrier of c1}:] \/ (Union (coprod c2))) * holds
( [b3,b4] in b2 iff ( b3 in [:the OperSymbols of c1,{the carrier of c1}:] & ( for b5 being OperSymbol of c1 st [b5,the carrier of c1] = b3 holds
( len b4 = len (the_arity_of b5) & ( for b6 being set st b6 in dom b4 holds
( ( b4 . b6 in [:the OperSymbols of c1,{the carrier of c1}:] implies for b7 being OperSymbol of c1 st [b7,the carrier of c1] = b4 . b6 holds
the_result_sort_of b7 <= (the_arity_of b5) /. b6 ) & ( b4 . b6 in Union (coprod c2) implies ex b7 being Element of c1 st
( b7 <= (the_arity_of b5) /. b6 & b4 . b6 in coprod b7,c2 ) ) ) ) ) ) ) ) ) holds
b1 = b2
end;
:: deftheorem Def4 defines OSREL OSAFREE:def 4 :
for
b1 being
OrderSortedSign for
b2 being
ManySortedSet of
b1 for
b3 being
Relation of
[:the OperSymbols of b1,{the carrier of b1}:] \/ (Union (coprod b2)),
([:the OperSymbols of b1,{the carrier of b1}:] \/ (Union (coprod b2))) * holds
(
b3 = OSREL b2 iff for
b4 being
Element of
[:the OperSymbols of b1,{the carrier of b1}:] \/ (Union (coprod b2)) for
b5 being
Element of
([:the OperSymbols of b1,{the carrier of b1}:] \/ (Union (coprod b2))) * holds
(
[b4,b5] in b3 iff (
b4 in [:the OperSymbols of b1,{the carrier of b1}:] & ( for
b6 being
OperSymbol of
b1 st
[b6,the carrier of b1] = b4 holds
(
len b5 = len (the_arity_of b6) & ( for
b7 being
set st
b7 in dom b5 holds
( (
b5 . b7 in [:the OperSymbols of b1,{the carrier of b1}:] implies for
b8 being
OperSymbol of
b1 st
[b8,the carrier of b1] = b5 . b7 holds
the_result_sort_of b8 <= (the_arity_of b6) /. b7 ) & (
b5 . b7 in Union (coprod b2) implies ex
b8 being
Element of
b1 st
(
b8 <= (the_arity_of b6) /. b7 &
b5 . b7 in coprod b8,
b2 ) ) ) ) ) ) ) ) );
theorem Th2: :: OSAFREE:2
:: deftheorem Def5 defines DTConOSA OSAFREE:def 5 :
theorem Th3: :: OSAFREE:3
theorem Th4: :: OSAFREE:4
:: deftheorem Def6 defines OSSym OSAFREE:def 6 :
:: deftheorem Def7 defines ParsedTerms OSAFREE:def 7 :
:: deftheorem Def8 defines ParsedTerms OSAFREE:def 8 :
theorem Th5: :: OSAFREE:5
theorem Th6: :: OSAFREE:6
theorem Th7: :: OSAFREE:7
theorem Th8: :: OSAFREE:8
definition
let c1 be
OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
let c3 be
OperSymbol of
c1;
func PTDenOp c3,
c2 -> Function of
(((ParsedTerms a2) # ) * the Arity of a1) . a3,
((ParsedTerms a2) * the ResultSort of a1) . a3 means :
Def9:
:: OSAFREE:def 9
for
b1 being
FinSequence of
TS (DTConOSA a2) st
OSSym a3,
a2 ==> roots b1 holds
a4 . b1 = (OSSym a3,a2) -tree b1;
existence
ex b1 being Function of (((ParsedTerms c2) # ) * the Arity of c1) . c3,((ParsedTerms c2) * the ResultSort of c1) . c3 st
for b2 being FinSequence of TS (DTConOSA c2) st OSSym c3,c2 ==> roots b2 holds
b1 . b2 = (OSSym c3,c2) -tree b2
uniqueness
for b1, b2 being Function of (((ParsedTerms c2) # ) * the Arity of c1) . c3,((ParsedTerms c2) * the ResultSort of c1) . c3 st ( for b3 being FinSequence of TS (DTConOSA c2) st OSSym c3,c2 ==> roots b3 holds
b1 . b3 = (OSSym c3,c2) -tree b3 ) & ( for b3 being FinSequence of TS (DTConOSA c2) st OSSym c3,c2 ==> roots b3 holds
b2 . b3 = (OSSym c3,c2) -tree b3 ) holds
b1 = b2
end;
:: deftheorem Def9 defines PTDenOp OSAFREE:def 9 :
:: deftheorem Def10 defines PTOper OSAFREE:def 10 :
:: deftheorem Def11 defines ParsedTermsOSA OSAFREE:def 11 :
theorem Th9: :: OSAFREE:9
theorem Th10: :: OSAFREE:10
theorem Th11: :: OSAFREE:11
theorem Th12: :: OSAFREE:12
theorem Th13: :: OSAFREE:13
theorem Th14: :: OSAFREE:14
:: deftheorem Def12 defines LeastSort OSAFREE:def 12 :
theorem Th15: :: OSAFREE:15
theorem Th16: :: OSAFREE:16
theorem Th17: :: OSAFREE:17
theorem Th18: :: OSAFREE:18
:: deftheorem Def13 OSAFREE:def 13 :
canceled;
:: deftheorem Def14 defines LeastSorts OSAFREE:def 14 :
theorem Th19: :: OSAFREE:19
:: deftheorem Def15 defines pi OSAFREE:def 15 :
:: deftheorem Def16 defines @ OSAFREE:def 16 :
:: deftheorem Def17 defines pi OSAFREE:def 17 :
:: deftheorem Def18 defines LCongruence OSAFREE:def 18 :
:: deftheorem Def19 defines FreeOSA OSAFREE:def 19 :
:: deftheorem Def20 defines @ OSAFREE:def 20 :
definition
let c1 be
OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
let c3 be
Symbol of
(DTConOSA c2);
let c4 be
FinSequence of
bool [:(TS (DTConOSA c2)),the carrier of c1:];
func @ c3,
c4 -> Subset of
[:(TS (DTConOSA a2)),the carrier of a1:] equals :: OSAFREE:def 21
{ [((Den b1,(ParsedTermsOSA a2)) . b2),b3] where B is OperSymbol of a1, B is Element of Args b1,(ParsedTermsOSA a2), B is Element of a1 : ( ex b1 being OperSymbol of a1 st
( a3 = [b4,the carrier of a1] & b4 ~= b1 & len (the_arity_of b4) = len (the_arity_of b1) & the_result_sort_of b4 <= b3 & the_result_sort_of b1 <= b3 ) & ex b1 being Element of the carrier of a1 * st
( dom b4 = dom a4 & ( for b2 being Nat st b5 in dom a4 holds
[(b2 . b5),(b4 /. b5)] in a4 . b5 ) ) ) } ;
correctness
coherence
{ [((Den b1,(ParsedTermsOSA c2)) . b2),b3] where B is OperSymbol of c1, B is Element of Args b1,(ParsedTermsOSA c2), B is Element of c1 : ( ex b1 being OperSymbol of c1 st
( c3 = [b4,the carrier of c1] & b4 ~= b1 & len (the_arity_of b4) = len (the_arity_of b1) & the_result_sort_of b4 <= b3 & the_result_sort_of b1 <= b3 ) & ex b1 being Element of the carrier of c1 * st
( dom b4 = dom c4 & ( for b2 being Nat st b5 in dom c4 holds
[(b2 . b5),(b4 /. b5)] in c4 . b5 ) ) ) } is Subset of [:(TS (DTConOSA c2)),the carrier of c1:];
end;
:: deftheorem Def21 defines @ OSAFREE:def 21 :
definition
let c1 be
locally_directed OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
func PTClasses c2 -> Function of
TS (DTConOSA a2),
bool [:(TS (DTConOSA a2)),the carrier of a1:] means :
Def22:
:: OSAFREE:def 22
( ( for
b1 being
Symbol of
(DTConOSA a2) st
b1 in Terminals (DTConOSA a2) holds
a3 . (root-tree b1) = @ b1 ) & ( for
b1 being
Symbol of
(DTConOSA a2) for
b2 being
FinSequence of
TS (DTConOSA a2) st
b1 ==> roots b2 holds
a3 . (b1 -tree b2) = @ b1,
(a3 * b2) ) );
existence
ex b1 being Function of TS (DTConOSA c2), bool [:(TS (DTConOSA c2)),the carrier of c1:] st
( ( for b2 being Symbol of (DTConOSA c2) st b2 in Terminals (DTConOSA c2) holds
b1 . (root-tree b2) = @ b2 ) & ( for b2 being Symbol of (DTConOSA c2)
for b3 being FinSequence of TS (DTConOSA c2) st b2 ==> roots b3 holds
b1 . (b2 -tree b3) = @ b2,(b1 * b3) ) )
uniqueness
for b1, b2 being Function of TS (DTConOSA c2), bool [:(TS (DTConOSA c2)),the carrier of c1:] st ( for b3 being Symbol of (DTConOSA c2) st b3 in Terminals (DTConOSA c2) holds
b1 . (root-tree b3) = @ b3 ) & ( for b3 being Symbol of (DTConOSA c2)
for b4 being FinSequence of TS (DTConOSA c2) st b3 ==> roots b4 holds
b1 . (b3 -tree b4) = @ b3,(b1 * b4) ) & ( for b3 being Symbol of (DTConOSA c2) st b3 in Terminals (DTConOSA c2) holds
b2 . (root-tree b3) = @ b3 ) & ( for b3 being Symbol of (DTConOSA c2)
for b4 being FinSequence of TS (DTConOSA c2) st b3 ==> roots b4 holds
b2 . (b3 -tree b4) = @ b3,(b2 * b4) ) holds
b1 = b2
end;
:: deftheorem Def22 defines PTClasses OSAFREE:def 22 :
theorem Th20: :: OSAFREE:20
theorem Th21: :: OSAFREE:21
theorem Th22: :: OSAFREE:22
theorem Th23: :: OSAFREE:23
definition
let c1 be
locally_directed OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
func PTCongruence c2 -> MSEquivalence-like OrderSortedRelation of
ParsedTermsOSA a2 means :
Def23:
:: OSAFREE:def 23
for
b1 being
set st
b1 in the
carrier of
a1 holds
a3 . b1 = { [b2,b3] where B is Element of TS (DTConOSA a2), B is Element of TS (DTConOSA a2) : [b2,b1] in (PTClasses a2) . b3 } ;
existence
ex b1 being MSEquivalence-like OrderSortedRelation of ParsedTermsOSA c2 st
for b2 being set st b2 in the carrier of c1 holds
b1 . b2 = { [b3,b4] where B is Element of TS (DTConOSA c2), B is Element of TS (DTConOSA c2) : [b3,b2] in (PTClasses c2) . b4 }
uniqueness
for b1, b2 being MSEquivalence-like OrderSortedRelation of ParsedTermsOSA c2 st ( for b3 being set st b3 in the carrier of c1 holds
b1 . b3 = { [b4,b5] where B is Element of TS (DTConOSA c2), B is Element of TS (DTConOSA c2) : [b4,b3] in (PTClasses c2) . b5 } ) & ( for b3 being set st b3 in the carrier of c1 holds
b2 . b3 = { [b4,b5] where B is Element of TS (DTConOSA c2), B is Element of TS (DTConOSA c2) : [b4,b3] in (PTClasses c2) . b5 } ) holds
b1 = b2
end;
:: deftheorem Def23 defines PTCongruence OSAFREE:def 23 :
theorem Th24: :: OSAFREE:24
theorem Th25: :: OSAFREE:25
theorem Th26: :: OSAFREE:26
theorem Th27: :: OSAFREE:27
for
b1 being
locally_directed OrderSortedSign for
b2 being
V3 ManySortedSet of
b1 for
b3 being
ManySortedRelation of
(ParsedTermsOSA b2) holds
(
b3 = PTCongruence b2 iff ( ( for
b4,
b5 being
Element of
b1 for
b6 being
set st
b6 in b2 . b4 holds
( (
b4 <= b5 implies
[(root-tree [b6,b4]),(root-tree [b6,b4])] in b3 . b5 ) & ( for
b7 being
set st (
[(root-tree [b6,b4]),b7] in b3 . b5 or
[b7,(root-tree [b6,b4])] in b3 . b5 ) holds
(
b4 <= b5 &
b7 = root-tree [b6,b4] ) ) ) ) & ( for
b4,
b5 being
OperSymbol of
b1 for
b6 being
Element of
Args b4,
(ParsedTermsOSA b2) for
b7 being
Element of
Args b5,
(ParsedTermsOSA b2) for
b8 being
Element of
b1 holds
(
[((Den b4,(ParsedTermsOSA b2)) . b6),((Den b5,(ParsedTermsOSA b2)) . b7)] in b3 . b8 iff (
b4 ~= b5 &
len (the_arity_of b4) = len (the_arity_of b5) &
the_result_sort_of b4 <= b8 &
the_result_sort_of b5 <= b8 & ex
b9 being
Element of the
carrier of
b1 * st
(
dom b9 = dom b6 & ( for
b10 being
Nat st
b10 in dom b9 holds
[(b6 . b10),(b7 . b10)] in b3 . (b9 /. b10) ) ) ) ) ) ) )
theorem Th28: :: OSAFREE:28
:: deftheorem Def24 defines PTVars OSAFREE:def 24 :
theorem Th29: :: OSAFREE:29
:: deftheorem Def25 defines PTVars OSAFREE:def 25 :
theorem Th30: :: OSAFREE:30
definition
let c1 be
locally_directed OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
let c3 be
Element of
c1;
func OSFreeGen c3,
c2 -> Subset of
(the Sorts of (FreeOSA a2) . a3) means :
Def26:
:: OSAFREE:def 26
for
b1 being
set holds
(
b1 in a4 iff ex
b2 being
set st
(
b2 in a2 . a3 &
b1 = ((OSNat_Hom (ParsedTermsOSA a2),(LCongruence a2)) . a3) . (root-tree [b2,a3]) ) );
existence
ex b1 being Subset of (the Sorts of (FreeOSA c2) . c3) st
for b2 being set holds
( b2 in b1 iff ex b3 being set st
( b3 in c2 . c3 & b2 = ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree [b3,c3]) ) )
uniqueness
for b1, b2 being Subset of (the Sorts of (FreeOSA c2) . c3) st ( for b3 being set holds
( b3 in b1 iff ex b4 being set st
( b4 in c2 . c3 & b3 = ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree [b4,c3]) ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being set st
( b4 in c2 . c3 & b3 = ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree [b4,c3]) ) ) ) holds
b1 = b2
end;
:: deftheorem Def26 defines OSFreeGen OSAFREE:def 26 :
theorem Th31: :: OSAFREE:31
:: deftheorem Def27 defines OSFreeGen OSAFREE:def 27 :
theorem Th32: :: OSAFREE:32
:: deftheorem Def28 defines OSClass OSAFREE:def 28 :
theorem Th33: :: OSAFREE:33
theorem Th34: :: OSAFREE:34
theorem Th35: :: OSAFREE:35
theorem Th36: :: OSAFREE:36
theorem Th37: :: OSAFREE:37
:: deftheorem Def29 defines pi OSAFREE:def 29 :
theorem Th38: :: OSAFREE:38
definition
let c1 be
locally_directed OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
let c3 be
Element of
c1;
func NHReverse c3,
c2 -> Function of
OSFreeGen a3,
a2,
PTVars a3,
a2 means :: OSAFREE:def 30
for
b1 being
Symbol of
(DTConOSA a2) st
((OSNat_Hom (ParsedTermsOSA a2),(LCongruence a2)) . a3) . (root-tree b1) in OSFreeGen a3,
a2 holds
a4 . (((OSNat_Hom (ParsedTermsOSA a2),(LCongruence a2)) . a3) . (root-tree b1)) = root-tree b1;
existence
ex b1 being Function of OSFreeGen c3,c2, PTVars c3,c2 st
for b2 being Symbol of (DTConOSA c2) st ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b2) in OSFreeGen c3,c2 holds
b1 . (((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b2)) = root-tree b2
uniqueness
for b1, b2 being Function of OSFreeGen c3,c2, PTVars c3,c2 st ( for b3 being Symbol of (DTConOSA c2) st ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b3) in OSFreeGen c3,c2 holds
b1 . (((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b3)) = root-tree b3 ) & ( for b3 being Symbol of (DTConOSA c2) st ((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b3) in OSFreeGen c3,c2 holds
b2 . (((OSNat_Hom (ParsedTermsOSA c2),(LCongruence c2)) . c3) . (root-tree b3)) = root-tree b3 ) holds
b1 = b2
end;
:: deftheorem Def30 defines NHReverse OSAFREE:def 30 :
:: deftheorem Def31 defines NHReverse OSAFREE:def 31 :
theorem Th39: :: OSAFREE:39
theorem Th40: :: OSAFREE:40
definition
let c1 be
monotone regular locally_directed OrderSortedSign;
let c2 be
V3 ManySortedSet of
c1;
func PTMin c2 -> Function of
TS (DTConOSA a2),
TS (DTConOSA a2) means :
Def32:
:: OSAFREE:def 32
( ( for
b1 being
Symbol of
(DTConOSA a2) st
b1 in Terminals (DTConOSA a2) holds
a3 . (root-tree b1) = pi b1 ) & ( for
b1 being
Symbol of
(DTConOSA a2) for
b2 being
FinSequence of
TS (DTConOSA a2) st
b1 ==> roots b2 holds
a3 . (b1 -tree b2) = pi (@ a2,b1),
(a3 * b2) ) );
existence
ex b1 being Function of TS (DTConOSA c2), TS (DTConOSA c2) st
( ( for b2 being Symbol of (DTConOSA c2) st b2 in Terminals (DTConOSA c2) holds
b1 . (root-tree b2) = pi b2 ) & ( for b2 being Symbol of (DTConOSA c2)
for b3 being FinSequence of TS (DTConOSA c2) st b2 ==> roots b3 holds
b1 . (b2 -tree b3) = pi (@ c2,b2),(b1 * b3) ) )
uniqueness
for b1, b2 being Function of TS (DTConOSA c2), TS (DTConOSA c2) st ( for b3 being Symbol of (DTConOSA c2) st b3 in Terminals (DTConOSA c2) holds
b1 . (root-tree b3) = pi b3 ) & ( for b3 being Symbol of (DTConOSA c2)
for b4 being FinSequence of TS (DTConOSA c2) st b3 ==> roots b4 holds
b1 . (b3 -tree b4) = pi (@ c2,b3),(b1 * b4) ) & ( for b3 being Symbol of (DTConOSA c2) st b3 in Terminals (DTConOSA c2) holds
b2 . (root-tree b3) = pi b3 ) & ( for b3 being Symbol of (DTConOSA c2)
for b4 being FinSequence of TS (DTConOSA c2) st b3 ==> roots b4 holds
b2 . (b3 -tree b4) = pi (@ c2,b3),(b2 * b4) ) holds
b1 = b2
end;
:: deftheorem Def32 defines PTMin OSAFREE:def 32 :
theorem Th41: :: OSAFREE:41
theorem Th42: :: OSAFREE:42
theorem Th43: :: OSAFREE:43
theorem Th44: :: OSAFREE:44
theorem Th45: :: OSAFREE:45
theorem Th46: :: OSAFREE:46
theorem Th47: :: OSAFREE:47
:: deftheorem Def33 defines MinTerm OSAFREE:def 33 :
:: deftheorem Def34 defines MinTerms OSAFREE:def 34 :
theorem Th48: :: OSAFREE:48