2012-10-07

infratypes of surtypes, phyla of taxa

8.13: adda/oop/rethinking terminology:
. I have terminology for biop (binary operations) oop
arranged as supertypes existing as
one of fixed number of subtypes;
eg, Number is a supertype because it manages the
binary interactions between the following types
which are therefore called subtypes of number:
integer, real, decimal, rational, irrational, complex .
. classic oop hasn't played well with biop's:
being objected-oriented has meant that
(obj+x) had to be expressed as (obj.+(x))
and then obj's type, say int, needed to have
(+)-operations for each possible numeric type
(int, real, rational, irrational, complex);
what we needed was multi-dispatching:
where (obj+ x) gets sent to the supertype,
which finds the right subtype to handle it .

. the notion of subtype
can also include range limits .
. there are naturally limits imposed by
the numeric types that machines provide,
such as what can fit in multiple of bytes;
eg, int8, int16, int32, float32 .
. within my theory of oop,
these might be called infratypes,
for reminding of the term infrastructure .
[10.5:
. infratype is a relative term:
regardless of whether it's a cpu type,
or a type you reused from a library,
an infratype of T.type is any type that has been
reused for implementing T .
10.7:
. I'm realizing that infratypes
should be supported by the type.tag
(simply because we should support
space-efficient numerics,
and we do that, then we need to know
which infratype we're using in
(8, 16, 32, extendible);
therefore,
what I've been calling subtypes
(in the biop oop context)
can instead be called ideal infratypes
(in contrast to optimized infratypes);
likewise,
what I've been calling the supertype
can instead be the opposite of infratype:
that seems to be the word: surtype .
-- also some extra checking just now
shows that the idea I'm trying to convey,
is the same as that found in the words:
{surname, surface} -- the outermost part .]

[10.5: 10.7:
. in contrast to the ideal infratypes
that are designed by mathematicians,
the optimized infratypes are chosen by the
intersection of what types the platform provides
and what is of use by the
constrained versions of the ideal infratypes .

. there is a relationship between
subtypes and infratypes:
. within a polymorphic type,
infratypes are the type's possible forms (morphs);
whereas an value whose type is a subtype of T,
can be used anywhere a T-typed obj is permitted;
but the reverse is not true:
if you have a variable obj whose type is a subtype of T,
it cannot be used anywhere a T-typed obj is permitted;
rather the replacing obj must be able to handle
every value and every operation
that could be handled by the obj' it's replacing .

. a surtype has a finite set of ideal infratypes,
ie, types distinguished by having differences in
either the allowed set of operations,
or the data format of the current state .
. within each ideal infratype,
we then have a possibly infinite number of
additional subtypes
according to constraints on
value attributes, eg, on the value's range,
or the scientific format's number of digits,
or on the number of fraction digits .]


. my theory has reviewed how a type mgt
can orchestrate its ideal infratype interactions;
but I have yet to address optimized infratype mgt .
. we could include machine-specific classes
-- int8, int16, int32, float32 --
within our infratype's enumeration ...
[10.7: mis:
. the following was written before realizing
that I needed to have the infratype.tag
be including the concrete particulars:
... ]
-- but that wouldn't be very abstract !
. the surtype mgt doesn't need to know
what the exact limits are;
when it's asked to make an assignment,
it knows to check the meta.info for range constraints;
and, it needs to know to raise a constraint error
if the assignment would be out of range .
[10.7:
. the system does need a quick way to
check for range constraint;
but if we are specifying an optimized infratype,
then the range flag can be negative, because
we already get range checking for free
from writing to a var that is tagged with an
optimized infratype .]
[10.5:
. notice that there are 2 activities that are
imposing constraints on an obj's
current optimized infratype:
# the obj's declared subtype;
# an assigned value's inaccuracy;
eg, the value(1.1) might be
anything in 1.05 .. 1.15
or anything in 1.10 .. 1.19
depending on convention;
and, of course, the accuracy of an operation
will depend on the accuracies of its inputs .]

[10.7: mis:
. the following was written before realizing
that I needed my surtype to be aware of
the available concrete particulars;
therefore, I had in mind sublclassing ideal infratypes
for implementing them with optimized infratypes .
... ]
. lets say we try to subclass Number again,
[I believe at the time], it wouldn't work;
because, its surtype mgt is already programmed
to understand just a fixed set of combinations
when working with biops (binary operations);
[(adding optimized infratypes to the infratype.tag
still leaves us with a fixed set of combinations)]
but what it can do is sublass Number's integer.subtype;
eg, I could say int8 subclasses
integer range -127 ... 127,
and then use a byte as my infratype .

...
. you can subclass number in this respect:
even though Number won't recognize it as a
subtype for biop's,
it will still be acting as a number
without being constrained to any particular subtype .
[10.5:
. I was confusing subtype with infratype;
what was true about the above was that
it's not possible to use inheritance for
extending a surtype's infratype enumeration;
to do that, we'd have to rebuild Number's body .]

. we might also say that
any subclass of an infratype
can also be called an infratype .
[10.7:
. but a subclass of an infratype
cannot be reimplementing that type with a
constraint of that same type,
as would be the case when
passing off an int8 as an integer .
. subclassing would be for adding properties
as when a volume of water can be interpreted as
a Numeric real .]

. biology has some interesting terminology:
when a species is polymorphic,
that's when one genome
is expressing several forms .
. that's different than an inheritor that adapts a genome:
that inheritor is not a polymorph of it's ancestor,
its a species .
web: Polymorphism
(biology):
. having multiple phenotypes within a population .
the subsumption rule:
If S is a subtype of T,
 the subtyping relation is often written
S < : T,

Because the subtyping relation
allows a term to belong to more than one type,
subtyping is a form of type polymorphism,
so it is (properly) called subtype polymorphism
[ the way this term is used in biology,
is like so:
ants have wing polymorphism
and worker polymorphism,
there are several forms of wings and workers
from the same genotype .]
Subtyping schemes
Type theorists make a distinction between
nominal subtyping,
in which only types declared in a certain way
may be subtypes of each other,
and structural subtyping,
in which the structure of two types
determines whether or not
one is a subtype of the other.
The class-based object-oriented subtyping
described above is nominal;
a structural subtyping rule for an
object-oriented language
might say that if objects of type A can handle all of the messages
that objects of type B can handle
(that is, if they define all the same methods),
then A is a subtype of B
regardless of whether either inherits from the other.
Sound structural subtyping rules for
types other than object types
are also well known .
8.21: web.adda/oop/terminology
summary:
. redesign oop terminology
and borrow terms from evolution theory .
. I was wondering if it made sense to say
arrays are a species of record.type;
ie, a subtype is a species of its supertype .
. supertype and subtype are relative terms,
yet I've been using like this:
number is a supertype [a surtype]
integer is a subtype [an infratype of Number].
. I'd like some terminology for saying
number is polymorphic (dynamically variant)
and integer is one of its variants .

. an oop subclass is like a clade
which is a branch in the tree of evolution .
. this differs from Number's variants;
because, subclasses are not subtypes:
a subclass is an evolution of an ancestor
not a variant of it;
eg, an integer is a number;
but, a human is not an ape (not breedable)
although both may be seen as
an evolution from a common ancestor .

. an oop class is a taxon (plural, taxa) .

. from phyla's origin being race or tribe,
and  species meaning interbreedables,
I would say that
N,Z,Q,R,C are phyla of number.type;
and, number is a species of the genus scalar;
just as human is a species of genus ape-like;
the races are human's phyla .]

8.14: proj.adda/oop/terminology:
. from lattice or graph theory's
-- is the term supremum ? --
supratype might be better than supertype
since super-sub are related .
--
a supertype gives the opration as
type Number along with managed subtypes
and their ordering ...
[8.14.740: oops!
you mean that N is a subset of Z,
but then that implies Z is a subtype of N?
that depends on the direction:
you can represent any N value with a Z,
but if I need the address to an N,
a Z is no substitute because it
doesn't enforce my range constraint .

. I just realized I have my idea of subtype reversed
I think I do understand it from the way Ada uses it;
a subtype is a constrained version of its supertype;
but in that case,
a Number still shouldn't be call a supertype,[surtype]
it's a typeclass or genotype, whose members are ...
but back to type compatability
and how subtype is related to that .]

. for each subtype[infratype],
list additional operations and any overrides,
for example, [in the surtype, Number,]
int.type has /(int,int).Q and ^(Z,Q).C .

. polygon is a similar supertype[surtype]:
it supports [the following infratypes:]
point -- null-side,
line  -- 2-sided,
triangle (right, equilateral)
quad(right--rectange, equ, --parallelogram)
n-sided (equilateral).
. for polygon,
how to optionally the dimensionality
{2-d, 3-d, n-d}? . could we use the
binomial theorem to do n-d?
to go from 2-d to 3-d we can
use the cardboard templates idea;
eg, each side of the simple polygon
reproduces another such polygon,
and then they are folded back
until their edges meet:
it works for triangles and rectangles .
might be easier to try  on equ-angulars generally?

8.14: web.adda/oop/is infratype a word? yes:
. infratype is a word:
# Inventiones Mathematicae Volume 107, Number 1 (1992), 41-59,
DOI: 10.1007/BF01231880
Type, infratype and the Elton-Pajor theorem
# Israel Journal of Mathematics Volume 143, Number 1 (2004), 157-180,
DOI: 10.1007/BF02803497
Type and infratype in symmetric sequence spaces
# Remarks on the Geometry of Coordinate
Projections in Rn S. Mendelson∗ R. Vershynin


8.21: web.adda/oop/terminology
. unref'd text is from wiki's dictionary
phylum (plural phyla or phylums)

Latin phylum, from Ancient Greek
φῦλον (phulon, “tribe, race”).
phyle (φυλή) "tribe"
and phylon (φῦλον), "race";
domain
Latin dominus (“master, proprietor, owner”),
Latin dominium (“property, right of ownership”),
Old French demeine, domaine (“power”),
Middle English demeine, demain (“rule”).
class
Latin classis
(“a class or division of the people,
assembly of people,
the whole body of citizens called to arms,
the army, the fleet, later a class or division in general”
)
classic, classique,
Latin classicus
(“relating to
the classes of Roman citizenry, especially the highest”
--taxonomy: a top-level genus (genus summum)
),
(computing)
A set of objects having the same behavior
(but typically differing in state),
or a template defining such a set.
(mathematics)
sets sharing property.
The class of all sets is not a set.
order
Middle English ordre,
Old French ordre, ordne, ordene (“order, rank”),
Latin ōrdinem, accusative of ōrdō
(“row, rank, regular arrangement”,
literally “row of threads in a loom”),
Proto-Italic *ored(h)- (“to arrange”),
Related to Latin ōrdior
(“begin”, literally “begin to weave”).
(mathematics)
# The cardinality of a set
# The sum of the exponents
on the variables in a monomial,
or the highest such among
all monomials in a polynomial.
# The number of vertices in a graph
(order theory)
# A partially ordered set.
# The relation on a partially ordered set
that determines that it is in fact
a partically ordered set.
species
From Latin speciēs (“appearance; quality”),
from speciō (“see”) + -iēs suffix signifying abstract noun.
-- related:
Late Latin specificus (“specific, particular”),
from Latin speciēs (“kind”) + faciō (“make”).
Latin specialis (from species, speciei):
specific, particular, individual .
. A species is often defined as a group of organisms
capable of interbreeding and producing fertile offspring.
genus:
Latin genus (“birth, origin, a race, sort, kind”)
Latin gignere's root gen-,
Old Latin gegnere (“to beget, produce”).
. Latin genus "descent, family, type, gender",
cognate with Greek: genos, "race, stock, kin".
cognate ? descended from the same
attested source lexeme of ancestor language,
The generic name is a component of
the names of taxa of lower rank.
For example, Canis lupus
is the scientific name of the
Gray wolf, a species,
with Canis the generic name for dog-like,
and with lupus particular (specific) for the wolf
(lupus is written in lower case).
Similarly, Canis lupus familiaris
is the scientific name for the domestic dog.
. a genus is a monophyletic group
[ monophyletic => one tribal ancenstry ]
it consists of a species and all its descendants
(forming a clade -- see next)
Monophyletic groups are typically characterized by
shared derived characteristics (syn.apo.morph.ies).
Taxonomy
Greek τάξις taxis, arrangement,
νομία nomia, method)
defining groups of biological organisms on the basis of
shared characteristics and giving names to those groups.
Each group is given a rank
and groups of a given rank can be
aggregated to form a super group of higher rank
and thus create a hierarchical classification.
The groups created through this process
are referred to as taxa (singular taxon)
taxon
Advocates of phylogenetic nomenclature,
using cladistic methods,
require taxa to be monophyletic,
consisting of all descendants of some ancestor.
They generally do not refer to taxa as their basic unit,
but to "clades," a clade being a special form of taxon.
However, even in traditional nomenclature,
few taxonomists of our time would establish new taxa
that they know to be paraphyletic.[1]
A famous example of a widely accepted taxon
that is not also a clade is the "Reptilia."
Cladistics (Ancient Greek: κλάδος, klados, "branch")
is a method of classifying species of organisms
into groups called clades,
which consist of an ancestor organism
and all its descendants (and nothing else).
birds, dinosaurs, crocodiles,
and all descendants (living or extinct)
 of their most recent common ancestor
form a clade:
a single "branch" on the "tree of life",
a monophyletic group.
Cladistics focuses on
shared derived characters
(synapomorphies)
and is specifically aimed at
reconstructing evolutionary histories.
. cladists' insist that all taxa be
monophyletic:
    (biology) Of, pertaining to, or affecting
    a single phylum (or other taxon) of organisms.
    (biology) Deriving from a single clade (monophylum).
phenetics
    (systematics):
A form of numerical systematics in which
organisms are grouped based upon
the total or relative number of shared characteristics.
-- Systematics:
Phenetic systematics was an attempt to
determine the relationships of organisms through
a measure of similarity, considering
plesiomorphies (ancestral traits)
and apomorphies (derived traits)
to be equally informative.
From the 20th century onwards,
it was superseded by cladistics,
which considers plesiomorphies to be
uninformative for an attempt to resolve
the phylogeny of Earth's various organisms through time.
    Cladistics
- a popular methodology in systematics
    Phenetics
- an obsolete methodology, predecessor to cladistics
    Phylogeny
- what is analyzed in systematics and taxonomy
aka phylogenetics (play /faɪlɵdʒɪˈnɛtɪks/)
is the study of evolutionary relation
among groups of organisms
(e.g. species, populations),
which is discovered through
molecular sequencing data
and morphological data matrices.
phylogenetics derives from Greek
phyle (φυλή) "tribe"
and phylon (φῦλον), "race";
genetikos (γενετικός), "relative to birth",
genesis (γένεσις) "origin" and "birth".
The result of phylogenetic studies
is the evolutionary history of taxonomic groups:
their phylogeny.
Taxonomy,
the classification, identification, and naming of organisms,
is richly informed by phylogenetics,
but remains methodologically and logically distinct.
The fields of phylogenetics and taxonomy
overlap in the science of phylogenetic systematics
— one methodology, cladism (also cladistics)
shared derived characters (synapomorphies)
used to create ancestor-descendant trees (cladograms)
and delimit taxa (clades).
--  Vertical gene transfer is the passage of genes
from parent to offspring,
and {horizontal, lateral} gene transfer
occurs when genes jump between
unrelated organisms .