Extremal Elements

The various extrema must participate in certain relationships predicted by order theory.

Absorption

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,(Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y})}β‰…x\textbf{Join} \; A \; R \; \{ x, (\textbf{Meet} \; A \; R \; \{ x,y\})\} \cong 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

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,(Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y})}β‰…x\textbf{Join} \; A \; R \; \{ x, (\textbf{Meet} \; A \; R \; \{ x,y\})\} \cong 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

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS=Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Aboveβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS)\textbf{Join} \; A \; R \; S = \textbf{Meet} \; A \; R \; (\textbf{Above} \; A \; R \; S)


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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS=Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Belowβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS)\textbf{Meet} \; A \; R \; S = \textbf{Join} \; A \; R \; (\textbf{Below} \; A \; R \; S)


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

JoinExtβ€…β€ŠAβ€…β€ŠRβ€…β€ŠAβ€…β€ŠY=Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠY\textbf{JoinExt} \; A \; R\; A \; Y = \textbf{Join} \; A \; R \; Y


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

Greatestβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€Šx≑x∈Y∧Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€Šx\textbf{Greatest} \; A \; R \; Y \; x \equiv x \in Y \wedge \textbf{Join} \; A \; R \; Y \; x


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

Greatestβ€…β€ŠAβ€…β€ŠRβ€…β€ŠY=JoinExtβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€ŠY\textbf{Greatest} \; A \; R \; Y = \textbf{JoinExt} \; A \; R \; Y \; Y


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

MeetExtβ€…β€ŠAβ€…β€ŠRβ€…β€ŠAβ€…β€ŠY=Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠY\textbf{MeetExt} \; A \; R\; A \; Y = \textbf{Meet} \; A \; R \; Y


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

Leastβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€Šx≑x∈Y∧Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€Šx\textbf{Least} \; A \; R \; Y \; x \equiv x \in Y \wedge \textbf{Meet} \; A \; R \; Y \; x


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

Leastβ€…β€ŠAβ€…β€ŠRβ€…β€ŠY=MeetExtβ€…β€ŠAβ€…β€ŠRβ€…β€ŠYβ€…β€ŠY\textbf{Least} \; A \; R \; Y = \textbf{MeetExt} \; A \; R \; Y \; Y


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

Belowβ€…β€ŠAβ€…β€ŠRβ€…β€ŠSβ€…β€Š(Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS)\textbf{Below} \; A \; R \; S \; (\textbf{Meet} \; A \; R \; S)

Empty Range

Belowβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Šβˆ…)β€…β€Šy\textbf{Below} \; A \; R \; (\textbf{Meet} \; A \; R \; \empty ) \; 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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x}β‰…x\textbf{Meet} \; A \; R \; \{x\} \cong 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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š(SβˆͺT)β‰…Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS,Meetβ€…β€ŠAβ€…β€ŠRβ€…β€ŠT)\textbf{Meet} \; A \; R \; (S \cup T) \cong \textbf{Meet} \; A \; R \; ({\textbf{Meet} \; A \; R \; S, \textbf{Meet} \; A \; R \; T})


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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š({Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y},z})=Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š({x,Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{y,z}})\textbf{Meet} \; A \; R \; (\{\textbf{Meet} \; A \; R \; \{ x,y \}, z \}) = \textbf{Meet} \; A \; R \; (\{ x,\textbf{Meet} \; A \; R \; \{ 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=Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y}R.x.y \equiv x = \textbf{Meet} \; A \; R \; \{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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,x}β‰…x\textbf{Meet} \; A \; R \; \{x, x\} \cong 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

Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y}=Meetβ€…β€ŠAβ€…β€ŠRβ€…β€Š{y,x}\textbf{Meet} \; A \; R \; \{x, y\} = \textbf{Meet} \; A \; R \; \{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

Aboveβ€…β€ŠAβ€…β€ŠRβ€…β€ŠSβ€…β€Š(Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS)\textbf{Above} \; A \; R \; S \; (\textbf{Join} \; A \; R \; S)

sig A { R: set A }

check {
  { Preorder[A,R]
  } implies {
    Above[A,R,S, Join[A,R,S]]
  }
} for 10 expect 0
Empty Range

Aboveβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Šβˆ…)β€…β€Šy\textbf{Above} \; A \; R \; (\textbf{Join} \; A \; R \; \empty ) \; 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

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x}β‰…x\textbf{Join} \; A \; R \; \{x\} \cong 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

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š(SβˆͺT)β‰…Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š(Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠS,Joinβ€…β€ŠAβ€…β€ŠRβ€…β€ŠT)\textbf{Join} \; A \; R \; (S \cup T) \cong \textbf{Join} \; A \; R \; ({\textbf{Join} \; A \; R \; S, \textbf{Join} \; A \; R \; T})


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

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š({Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y},z})=Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š({x,Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{y,z}})\textbf{Join} \; A \; R \; (\{\textbf{Join} \; A \; R \; \{ x,y \}, z \}) = \textbf{Join} \; A \; R \; (\{ x,\textbf{Join} \; A \; R \; \{ 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=Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y}R.x.y \equiv y = \textbf{Join} \; A \; R \; \{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
Idempotence

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,x}β‰…x\textbf{Join} \; A \; R \; \{x, x\} \cong x


sig A { R: set A }

check {
  { Preorder[A,R]
  } implies {
    all x: A {
      Equivalent[A,R,Join[A,R,x+x],x]
    }
  }
} for 10 expect 0
Symmetry

Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{x,y}=Joinβ€…β€ŠAβ€…β€ŠRβ€…β€Š{y,x}\textbf{Join} \; A \; R \; \{x, y\} = \textbf{Join} \; A \; R \; \{y, x\}


sig A { R: set A }

check {
  { Preorder[A,R]
  } implies {
    all x,y: A {
      Join[A,R,x+y] = Join[A,R,y+x]
    }
  }
} for 10 expect 0

Last updated