Indirect Equality and Inclusion

Among the great enablers of concise reasoning

āˆ€(x,y::x=yā‰”āˆ€(z::R.z.xā‰”R.z.y))\forall(x,y :: x = y \equiv \forall(z :: R.z.x \equiv R.z.y))

Reflexiveā€…ā€ŠAā€…ā€ŠR\textbf{Reflexive} \; A \; R

Antisymmetricā€…ā€ŠAā€…ā€ŠR\textbf{Antisymmetric} \; A \; R


sig A { R: set A }

check {
  { Reflexive[A,R]
    Antisymmetric[A,R]
  } implies {
    all x,y: A | x = y iff (all z: A | z->x in R iff z->y in R)
  }
} for 10 expect 0
āˆ€(x,y::x=yā‰”āˆ€(z::R.x.zā‰”R.y.z))\forall(x,y :: x = y \equiv \forall(z :: R.x.z \equiv R.y.z))

Reflexiveā€…ā€ŠAā€…ā€ŠR\textbf{Reflexive} \; A \; R

Antisymmetricā€…ā€ŠAā€…ā€ŠR\textbf{Antisymmetric} \; A \; R


sig A { R: set A }

check {
  { Reflexive[A,R]
    Antisymmetric[A,R]
  } implies {
    all x,y: A | x = y iff (all z: A | x->z in R iff y->z in R)
  }
} for 10 expect 0
āˆ€(x,y::R.x.yā‰”āˆ€(z::R.z.xā‡’R.z.y))\forall(x,y :: R.x.y \equiv \forall(z :: R.z.x \Rightarrow R.z.y))

Reflexiveā€…ā€ŠAā€…ā€ŠR\textbf{Reflexive} \; A \; R

Transitiveā€…ā€ŠAā€…ā€ŠR\textbf{Transitive} \; A \; R


sig A { R: set A }

check {
  { Reflexive[A,R]
    Transitive[A,R]
  } iff {
    all x,y: A | x->y in R iff (all z: A | z->x in R implies z->y in R)
  }
} for 10 expect 0
āˆ€(x,y::R.x.yā‰”āˆ€(z::R.x.zā‡R.y.z))\forall(x,y :: R.x.y \equiv \forall(z :: R.x.z \Leftarrow R.y.z))

Reflexiveā€…ā€ŠAā€…ā€ŠR\textbf{Reflexive} \; A \; R

Transitiveā€…ā€ŠAā€…ā€ŠR\textbf{Transitive} \; A \; R


sig A { R: set A }

check {
  { Reflexive[A,R]
    Transitive[A,R]
  } iff {
    all x,y: A | x->y in R iff (all z: A | y->z in R implies x->z in R)
  }
} for 10 expect 0

Last updated