Theory "relation"

Parents     combin

Signature

Constant Type
the_fun :('a -> 'a -> bool) -> (('a -> 'b) -> 'a -> 'b) -> 'a -> 'a -> 'b
RESTRICT :('a -> 'b) -> ('a -> 'a -> bool) -> 'a -> 'a -> 'b
RC :('a -> 'a -> bool) -> 'a -> 'a -> bool
TC :('a -> 'a -> bool) -> 'a -> 'a -> bool
WF :('a -> 'a -> bool) -> bool
WFREC :('a -> 'a -> bool) -> (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b
inv_image :('b -> 'b -> bool) -> ('a -> 'b) -> 'a -> 'a -> bool
EMPTY_REL :'a -> 'a -> bool
reflexive :('a -> 'a -> bool) -> bool
approx :('a -> 'a -> bool) -> (('a -> 'b) -> 'a -> 'b) -> 'a -> ('a -> 'b) -> bool
RTC :('a -> 'a -> bool) -> 'a -> 'a -> bool
transitive :('a -> 'a -> bool) -> bool

Definitions

TC_DEF
|- !R a b.
     TC R a b =
     !P.
       (!x y. R x y ==> P x y) /\ (!x y z. P x y /\ P y z ==> P x z) ==> P a b
RTC_DEF
|- !R a b.
     RTC R a b =
     !P. (!x. P x x) /\ (!x y z. R x y /\ P y z ==> P x z) ==> P a b
RC_def
|- !R x y. RC R x y = (x = y) \/ R x y
transitive_def
|- !R. transitive R = !x y z. R x y /\ R y z ==> R x z
reflexive_def
|- !R. reflexive R = !x. R x x
WF_DEF
|- !R. WF R = !B. (?w. B w) ==> ?min. B min /\ !b. R b min ==> ~B b
EMPTY_REL_DEF
|- !x y. EMPTY_REL x y = F
inv_image_def
|- !R f. inv_image R f = (\x y. R (f x) (f y))
RESTRICT_DEF
|- !f R x. RESTRICT f R x = (\y. (if R y x then f y else ARB))
approx_def
|- !R M x f. approx R M x f = (f = RESTRICT (\y. M (RESTRICT f R y) y) R x)
the_fun_def
|- !R M x. the_fun R M x = @f. approx R M x f
WFREC_DEF
|- !R M.
     WFREC R M =
     (\x. M (RESTRICT (the_fun (TC R) (\f v. M (RESTRICT f R v) v) x) R x) x)


Theorems

TC_TRANSITIVE
|- !R. transitive (TC R)
RTC_INDUCT
|- !R P.
     (!x. P x x) /\ (!x y z. R x y /\ P y z ==> P x z) ==>
     !x y. RTC R x y ==> P x y
TC_RULES
|- !R. (!x y. R x y ==> TC R x y) /\ !x y z. TC R x y /\ TC R y z ==> TC R x z
RTC_RULES
|- !R. (!x. RTC R x x) /\ !x y z. R x y /\ RTC R y z ==> RTC R x z
RTC_STRONG_INDUCT
|- !R P.
     (!x. P x x) /\ (!x y z. R x y /\ RTC R y z /\ P y z ==> P x z) ==>
     !x y. RTC R x y ==> P x y
RTC_RTC
|- !R x y. RTC R x y ==> !z. RTC R y z ==> RTC R x z
RTC_TRANSITIVE
|- !R. transitive (RTC R)
RTC_REFLEXIVE
|- !R. reflexive (RTC R)
RC_REFLEXIVE
|- !R. reflexive (RC R)
TC_SUBSET
|- !R x y. R x y ==> TC R x y
RTC_SUBSET
|- !R x y. R x y ==> RTC R x y
RC_SUBSET
|- !R x y. R x y ==> RC R x y
RC_RTC
|- !R x y. RC R x y ==> RTC R x y
TC_INDUCT
|- !R P.
     (!x y. R x y ==> P x y) /\ (!x y z. P x y /\ P y z ==> P x z) ==>
     !u v. TC R u v ==> P u v
TC_INDUCT_LEFT1
|- !R P.
     (!x y. R x y ==> P x y) /\ (!x y z. R x y /\ P y z ==> P x z) ==>
     !x y. TC R x y ==> P x y
TC_STRONG_INDUCT
|- !R P.
     (!x y. R x y ==> P x y) /\
     (!x y z. P x y /\ P y z /\ TC R x y /\ TC R y z ==> P x z) ==>
     !u v. TC R u v ==> P u v
TC_STRONG_INDUCT_LEFT1
|- !R P.
     (!x y. R x y ==> P x y) /\
     (!x y z. R x y /\ P y z /\ TC R y z ==> P x z) ==>
     !u v. TC R u v ==> P u v
TC_RTC
|- !R x y. TC R x y ==> RTC R x y
RTC_TC_RC
|- !R x y. RTC R x y ==> RC R x y \/ TC R x y
TC_RC_EQNS
|- !R. (RC (TC R) = RTC R) /\ (TC (RC R) = RTC R)
RC_IDEM
|- !R. RC (RC R) = RC R
TC_IDEM
|- !R. TC (TC R) = TC R
RTC_IDEM
|- !R. RTC (RTC R) = RTC R
RTC_CASES1
|- !R x y. RTC R x y = (x = y) \/ ?u. R x u /\ RTC R u y
RTC_CASES2
|- !R x y. RTC R x y = (x = y) \/ ?u. RTC R x u /\ R u y
RTC_CASES_RTC_TWICE
|- !R x y. RTC R x y = ?u. RTC R x u /\ RTC R u y
TC_CASES1
|- !R x z. TC R x z ==> R x z \/ ?y. R x y /\ TC R y z
TC_CASES2
|- !R x z. TC R x z ==> R x z \/ ?y. TC R x y /\ R y z
TC_MONOTONE
|- !R Q. (!x y. R x y ==> Q x y) ==> !x y. TC R x y ==> TC Q x y
RTC_MONOTONE
|- !R Q. (!x y. R x y ==> Q x y) ==> !x y. RTC R x y ==> RTC Q x y
WF_INDUCTION_THM
|- !R. WF R ==> !P. (!x. (!y. R y x ==> P y) ==> P x) ==> !x. P x
WF_NOT_REFL
|- !R x y. WF R ==> R x y ==> ~(x = y)
WF_EMPTY_REL
|- WF EMPTY_REL
WF_SUBSET
|- !R P. WF R /\ (!x y. P x y ==> R x y) ==> WF P
WF_TC
|- !R. WF R ==> WF (TC R)
WF_inv_image
|- !R f. WF R ==> WF (inv_image R f)
RESTRICT_LEMMA
|- !f R y z. R y z ==> (RESTRICT f R z y = f y)
WFREC_THM
|- !R M. WF R ==> !x. WFREC R M x = M (RESTRICT (WFREC R M) R x) x
WFREC_COROLLARY
|- !M R f. (f = WFREC R M) ==> WF R ==> !x. f x = M (RESTRICT f R x) x
WF_RECURSION_THM
|- !R. WF R ==> !M. ?!f. !x. f x = M (RESTRICT f R x) x