The operation glbSorts takes as arguments the
metarepresentation of a module
and the metarepresentations
of two types, that is, either sorts or kinds.
op glbSorts : Module Type Type ~> TypeSet [special (...)] .
According to whether the types passed to glbSorts as arguments are metarepresented sorts or kinds, we can distinguish the following cases:
For example, we have the following reductions concerning sorts in the module NUMBERS.
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'Zero, 'Nat) .
result Sort: 'Zero
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'NatSet, 'NatSeq) .
result Sort: 'Nat
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'NzNat, 'NzNat) .
result Sort: 'NzNat
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'Zero, 'NzNat) .
result EmptyTypeSet: (none).EmptyTypeSet
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'NzNat, 'Bool) .
result EmptyTypeSet: (none).EmptyTypeSet
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), '`[Nat`], '`[Bool`]) .
result EmptyTypeSet: (none).EmptyTypeSet
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false),'`[Nat`],'`[NatSeq`]) .
result Kind: '`[NatSeq`,NatSet`]
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), '`[Nat`], 'Bool) .
result EmptyTypeSet: (none).EmptyTypeSet
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), '`[NatSeq`], 'Zero) .
result Sort: 'Zero
Maude> reduce in META-LEVEL :
glbSorts(upModule('NUMBERS, false), 'NzNat, '`[NatSet`]) .
result Sort: 'NzNat