Explanation
x = variable
X = defined name
x -> y = given x find y
{} = empty set
{x} = a set with one element called x
{x,y,z} = a set with x, y and z
[x] = list of x
(x..y) = range from x to y
(x, y) = vector of x and y
y :
x y = x or y
s1 U: s2 = union of set s1 and set s2
s1 I: s2 = intersection of set s1 and set s2
x # x :
x => y = if x is true then y is true
x = (y,z) => x.y = if x is composed of (y,z), you can address x.y
PrimitiveType = ( int, float, date, string, string[n], blob )
Once the notation is defined (or should we call them axioms?), we can define some properties that we can prove to be true.
Algebra
(x..y) -> z == x -> z
(x, y, z) == ((x, y), z)
(x) == x
x -> y == (
Not very impressive, huh?
Well, the devil is in the details, and therefore the paradise is also in the details, if you know how to find and exorcise those devils ;-)
Database
Type =
Fielddef = (name, Type)
Field = (name, value, Fielddef) # (value : fielddef.type)
Tabledef = (
Row =
Rowtx = ( tx, Row ) # tx : int
Rowdata = ( (lowertx..higher) -> Rowtx ) # ( lowertx : int && highertx : int )
Tabledata = ( TabvleDef, pk -> rowdata) # pk <=: Tabledef && row.
Table = (Tabledef, Tabledata) # ( Tabledata.pk <=: Tabledef && Tabledata.Tabledef == Tabledef )
Database = (
No hay comentarios:
Publicar un comentario