Library Kildall.aux.relations


Section relations.

  Require Export Relations.
  Require Export Arith.
  Variable Alpha : Set.
  Variable r : relation Alpha.
  Definition binop := AlphaAlphaAlpha.
  Variable (sup : binop).
  Definition lub :=
    ( a b : Alpha, r a (sup a b))
    ( a b : Alpha, r b (sup a b))
    ( a b c : Alpha, r a c r b cr (sup a b) c).

  Definition inv (R : relation Alpha) : relation Alpha := fun a bR b a.

  Definition strict (R : relation Alpha) : relation Alpha :=
    fun a bR a b a b.

  Definition ascending_chain := well_founded (strict (inv r)).

  Inductive nondep_lexprod (A1 A2 : Set) (ra : relation A1)
    (rb : relation A2) : relation (A1 × A2) :=
    | lexprod_inf :
       a1 a2 : A1,
        ra a1 a2
         b1 b2 : A2, nondep_lexprod A1 A2 ra rb (a1, b1) (a2, b2)
    | lexprod_eq :
       b1 b2 : A2,
        rb b1 b2 a : A1, nondep_lexprod A1 A2 ra rb (a, b1) (a, b2).

End relations.

Implicit Arguments strict [Alpha].
Implicit Arguments inv [Alpha].
Implicit Arguments ascending_chain [Alpha].