:: 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
OrderSortedSignfor
b2 being
ManySortedSet of
b1for
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
V5 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
V5 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
V5 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
V5 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 OrderSortedSignfor
b2 being
V5 ManySortedSet of
b1for
b3 being
ManySortedRelation of
(ParsedTermsOSA b2) holds
(
b3 = PTCongruence b2 iff ( ( for
b4,
b5 being
Element of
b1for
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
b1for
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
V5 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
V5 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
V5 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