Extremal Elements
The various extrema must participate in certain relationships predicted by order theory.
Absorption
JoinAR{x,(MeetAR{x,y})}≅x
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x,y: A {
Equivalent[A,R,Join[A,R,x+Meet[A,R,x+y]],x]
}
}
} for 10 expect 0
Absorption
JoinAR{x,(MeetAR{x,y})}≅x
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x,y: A {
Equivalent[A,R,Meet[A,R,x+Join[A,R,x+y]],x]
}
}
} for 10 expect 0
Join as Meet of Above
JoinARS=MeetAR(AboveARS)
sig A { R: set A }
sig S in A {}
check {
Join[A,R,S] = Meet[A,R,Above[A,R,S]]
} for 10 expect 0
Meet as Join of Below
MeetARS=JoinAR(BelowARS)
sig A { R: set A }
sig S in A {}
check {
Meet[A,R,S] = Join[A,R,Below[A,R,S]]
} for 10 expect 0
Join versus JoinExt
JoinExtARAY=JoinARY
sig A { R: set A }
sig Y in A {}
check {
{ some Join[A,R,Y]
} implies {
JoinExt[A,R,A,Y] = Join[A,R,Y]
}
} for 10 expect 0
Max versus Join
GreatestARYx≡x∈Y∧JoinARYx
sig A { R: set A }
sig Y in A {}
check {
{ some Greatest[A,R,Y]
} implies {
all x: A {
Greatest[A,R,Y,x]
iff
x in Y and Join[A,R,Y,x]
}
}
} for 10 expect 0
Max vs JoinExt
GreatestARY=JoinExtARYY
sig A { R: set A }
sig Y in A {}
check {
Greatest[A,R,Y] = JoinExt[A,R,Y,Y]
} for 10 expect 0
MeetExt versus Meet
MeetExtARAY=MeetARY
sig A { R: set A }
sig Y {}
check {
{ some Meet[A,R,Y]
} implies {
MeetExt[A,R,A,Y] = Meet[A,R,Y]
}
} for 10 expect 0
Min versus Meet
LeastARYx≡x∈Y∧MeetARYx
sig A { R: set A }
sig Y in A {}
check {
all x: A {
Least[A,R,Y,x]
iff
x in Y and Meet[A,R,Y,x]
}
} for 10 expect 0
Min versus MeetExt
LeastARY=MeetExtARYY
sig A { R: set A }
sig Y in A {}
check {
{ some Least[A,R,Y]
} implies {
Least[A,R,Y] = MeetExt[A,R,Y,Y]
}
} for 10 expect 0
Meet
Empty Range
BelowAR(MeetAR∅)y
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all y: A {
Below[A,R,Meet[A,R,none],y]
}
}
} for 10 expect 0
One-point
MeetAR{x}≅x
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x: A {
Equivalent[A,R,Meet[A,R,x],x]
}
}
} for 10 expect 0
Range Disjunction
MeetAR(S∪T)≅MeetAR(MeetARS,MeetART)
sig A { R: set A }
sig S, T in A {}
check {
{ Preorder[A,R]
some Meet[A,R,S+T]
some Meet[A,R,S]
some Meet[A,R,T]
} implies {
Equivalent[A,R,
Meet[A,R,S+T],
Meet[A,R,Meet[A,R,S]+Meet[A,R,T]]
]
}
} for 10 expect 0
Alternatively:
sig A { R: set A }
sig S, T in A {}
check {
{ AllMeets[A,R]
} implies {
Equivalent[A,R,
Meet[A,R,S+T],
Meet[A,R,Meet[A,R,S]+Meet[A,R,T]]
]
}
} for 10 expect 0
Binary Operator
Associativity
MeetAR({MeetAR{x,y},z})=MeetAR({x,MeetAR{y,z}})
sig A { R: set A }
associativity: check {
{ AllMeets[A,R]
} implies {
all x,y,z: A {
Meet[A,R,Meet[A,R,x+y]+z] = Meet[A,R,x+Meet[A,R,y+z]]
}
}
} for 10 expect 0
Correspondence
R.x.y≡x=MeetAR{x,y}
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x,y: A {
x->y in R
iff
Meet[A,R,x+y,x]
}
}
} for 10 expect 0
Idempotence
MeetAR{x,x}≅x
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x: A {
Equivalent[A,R,Meet[A,R,x+x],x]
}
}
} for 10 expect 0
Symmetry
MeetAR{x,y}=MeetAR{y,x}
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x,y: A {
Meet[A,R,x+y] = Meet[A,R,y+x]
}
}
} for 10 expect 0
Join
AboveARS(JoinARS)
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
Above[A,R,S, Join[A,R,S]]
}
} for 10 expect 0
Empty Range
AboveAR(JoinAR∅)y
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all y: A {
Above[A,R,Join[A,R,none],y]
}
}
} for 10 expect 0
One Point
JoinAR{x}≅x
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x: A {
Equivalent[A,R,Join[A,R,x],x]
}
}
} for 10 expect 0
Range Disjunction
JoinAR(S∪T)≅JoinAR(JoinARS,JoinART)
sig A { R: set A }
sig S, T in A {}
check {
{ Preorder[A,R]
some Join[A,R,S+T]
some Join[A,R,S]
some Join[A,R,T]
} implies {
Equivalent[A,R,
Join[A,R,S+T],
Join[A,R,Join[A,R,S]+Join[A,R,T]]
]
}
} for 10 expect 0
Alternatively:
sig A { R: set A }
sig S, T in A {}
check {
{ AllJoins[A,R]
} implies {
Equivalent[A,R,
Join[A,R,S+T],
Join[A,R,Join[A,R,S]+Join[A,R,T]]
]
}
} for 10 expect 0
Binary Operator
Associativity
JoinAR({JoinAR{x,y},z})=JoinAR({x,JoinAR{y,z}})
sig A { R: set A }
associativity: check {
{ AllJoins[A,R]
} implies {
all x,y,z: A {
Join[A,R,Join[A,R,x+y]+z] = Join[A,R,x+Join[A,R,y+z]]
}
}
} for 10 expect 0
Correspondence
R.x.y≡y=JoinAR{x,y}
sig A { R: set A }
check {
{ Preorder[A,R]
} implies {
all x,y: A {
x->y in R
iff
Join[A,R,x+y,y]
}
}
} for 10 expect 0
Last updated