- DRESTRICT_DEF
-
|- !f r.
(!x. FDOM (DRESTRICT f r) x = FDOM f x /\ r x) /\
!x.
FAPPLY (DRESTRICT f r) x =
(if FDOM f x /\ r x then FAPPLY f x else FAPPLY FEMPTY x)
- f_o_DEF
-
|- !f g. f f_o g = f f_o_f FUN_FMAP g (\x. FDOM f (g x))
- f_o_f_DEF
-
|- !f g.
(!x. FDOM (f f_o_f g) x = FDOM g x /\ FDOM f (FAPPLY g x)) /\
!x. FDOM (f f_o_f g) x ==> (FAPPLY (f f_o_f g) x = FAPPLY f (FAPPLY g x))
- FAPPLY_DEF
-
|- !f x. FAPPLY f x = OUTL (fmap_REP f x)
- FCARD_DEF
-
|- (FCARD FEMPTY = 0) /\
!f x y.
FCARD (FUPDATE f (x,y)) = (if FDOM f x then FCARD f else SUC (FCARD f))
- FDOM_DEF
-
|- !f x. FDOM f x = ISL (fmap_REP f x)
- FDOMDEL_DEF
-
|- !d x a. FDOMDEL d x a = d a /\ ~(a = x)
- FEMPTY_DEF
-
|- FEMPTY = fmap_ABS (\a. INR one)
- FEVERY_DEF
-
|- !P f. FEVERY P f = !x. FDOM f x ==> P (x,FAPPLY f x)
- FINITE_PRED
-
|- FINITE_PRED =
(\a0.
!FINITE_PRED'.
(!a0.
(a0 = (\a. F)) \/
(?f a. (a0 = (\x. (x = a) \/ f x)) /\ FINITE_PRED' f) ==>
FINITE_PRED' a0) ==>
FINITE_PRED' a0)
- fmap_ISO_DEF
-
|- (!a. fmap_ABS (fmap_REP a) = a) /\
!r. is_fmap r = (fmap_REP (fmap_ABS r) = r)
- fmap_TY_DEF
-
|- ?rep'. TYPE_DEFINITION is_fmap rep'
- FRANGE_DEF
-
|- !f y. FRANGE f y = ?x. FDOM f x /\ (FAPPLY f x = y)
- FUN_FMAP_DEF
-
|- !f P.
FINITE_PRED P ==>
(!x. FDOM (FUN_FMAP f P) x = P x) /\
!x. P x ==> (FAPPLY (FUN_FMAP f P) x = f x)
- FUNION_DEF
-
|- !f g.
(!x. FDOM (FUNION f g) x = FDOM f x \/ FDOM g x) /\
!x. FAPPLY (FUNION f g) x = (if FDOM f x then FAPPLY f x else FAPPLY g x)
- FUPDATE_DEF
-
|- !f x y.
FUPDATE f (x,y) = fmap_ABS (\a. (if a = x then INL y else fmap_REP f a))
- is_fmap
-
|- is_fmap =
(\a0.
!is_fmap'.
(!a0.
(a0 = (\a. INR one)) \/
(?f a b.
(a0 = (\x. (if x = a then INL b else f x))) /\ is_fmap' f) ==>
is_fmap' a0) ==>
is_fmap' a0)
- lookup_DEF
-
|- !f x. FLOOKUP f x = (if FDOM f x then INL (FAPPLY f x) else INR one)
- o_f_DEF
-
|- !f g.
(!x. FDOM (f o_f g) x = FDOM g x) /\
!x. FDOM (f o_f g) x ==> (FAPPLY (f o_f g) x = f (FAPPLY g x))
- rep
-
|- !f. rep f = (\x. (if FDOM f x then INL (FAPPLY f x) else INR one))
- RRESTRICT_DEF
-
|- !f r.
(!x. FDOM (RRESTRICT f r) x = FDOM f x /\ r (FAPPLY f x)) /\
!x.
FAPPLY (RRESTRICT f r) x =
(if FDOM f x /\ r (FAPPLY f x) then FAPPLY f x else FAPPLY FEMPTY x)
- SUBMAP_DEF
-
|- !f g. f SUBMAP g = !x. FDOM f x ==> FDOM g x /\ (FAPPLY f x = FAPPLY g x)
- DRESTRICT_DRESTRICT
-
|- !f P Q. DRESTRICT (DRESTRICT f P) Q = DRESTRICT f (\x. P x /\ Q x)
- DRESTRICT_FEMPTY
-
|- !r. DRESTRICT FEMPTY r = FEMPTY
- DRESTRICT_FUNION
-
|- !f r q.
DRESTRICT f (\x. r x \/ q x) = FUNION (DRESTRICT f r) (DRESTRICT f q)
- DRESTRICT_FUPDATE
-
|- !f r x y.
DRESTRICT (FUPDATE f (x,y)) r =
(if r x then FUPDATE (DRESTRICT f r) (x,y) else DRESTRICT f r)
- DRESTRICT_IS_FEMPTY
-
|- !r. (!x. ~r x) ==> !f. DRESTRICT f r = FEMPTY
- DRESTRICT_SUBMAP
-
|- !f r. DRESTRICT f r SUBMAP f
- DRESTRICT_TRUE
-
|- !f. DRESTRICT f (\x. T) = f
- f_o_f_FEMPTY_1
-
|- !f. FEMPTY f_o_f f = FEMPTY
- f_o_f_FEMPTY_2
-
|- !f. f f_o_f FEMPTY = FEMPTY
- FAPPLY_f_o
-
|- !f g.
FINITE_PRED (\x. FDOM f (g x)) ==>
!x. FDOM (f f_o g) x ==> (FAPPLY (f f_o g) x = FAPPLY f (g x))
- FAPPLY_FUPDATE
-
|- !f x y. FAPPLY (FUPDATE f (x,y)) x = y
- FAPPLY_FUPDATE_THM
-
|- !f a b x. FAPPLY (FUPDATE f (a,b)) x = (if x = a then b else FAPPLY f x)
- FCARD_0_FEMPTY
-
|- !f. (FCARD f = 0) = (f = FEMPTY)
- FCARD_FEMPTY
-
|- FCARD FEMPTY = 0
- FCARD_FUPDATE
-
|- !f x y.
FCARD (FUPDATE f (x,y)) = (if FDOM f x then FCARD f else SUC (FCARD f))
- FDOM_DRESTRICT
-
|- !f r x. ~r x ==> ~FDOM (DRESTRICT f r) x
- FDOM_EQ_FDOM_FUPDATE
-
|- !f x. FDOM f x ==> !y. FDOM (FUPDATE f (x,y)) = FDOM f
- FDOM_F_FEMPTY1
-
|- !f. (!a. ~FDOM f a) = (f = FEMPTY)
- FDOM_f_o
-
|- !f g.
FINITE_PRED (\x. FDOM f (g x)) ==> !x. FDOM (f f_o g) x = FDOM f (g x)
- FDOM_FEMPTY
-
|- !a. FDOM FEMPTY a = F
- FDOM_FUNION
-
|- !f g x. FDOM (FUNION f g) x = FDOM f x \/ FDOM g x
- FDOM_FUPDATE
-
|- !f a b x. FDOM (FUPDATE f (a,b)) x = (x = a) \/ FDOM f x
- FINITE_FMAP
-
|- !f. ?g n. !x. FDOM f x = ?i. i < n /\ (g i = x)
- FINITE_PRED_11
-
|- !g. (!x y. (g x = g y) = (x = y)) ==> !f. FINITE_PRED (\x. FDOM f (g x))
- fmap_EQ
-
|- !f g. (FDOM f = FDOM g) /\ (FAPPLY f = FAPPLY g) = (f = g)
- fmap_EQ_THM
-
|- !f g.
(FDOM f = FDOM g) /\ (!x. FDOM f x ==> (FAPPLY f x = FAPPLY g x)) =
(f = g)
- fmap_INDUCT
-
|- !P.
P FEMPTY /\ (!f. P f ==> !x y. ~FDOM f x ==> P (FUPDATE f (x,y))) ==>
!f. P f
- fmap_SIMPLE_INDUCT
-
|- !P. P FEMPTY /\ (!f. P f ==> !x y. P (FUPDATE f (x,y))) ==> !f. P f
- FRANGE_FEMPTY
-
|- !x. ~FRANGE FEMPTY x
- FRANGE_FUPDATE
-
|- !f x y b.
FRANGE (FUPDATE f (x,y)) b =
(y = b) \/ FRANGE (DRESTRICT f (\a. ~(a = x))) b
- FUNION_FEMPTY_1
-
|- !g. FUNION FEMPTY g = g
- FUNION_FEMPTY_2
-
|- !f. FUNION f FEMPTY = f
- FUNION_FUPDATE_1
-
|- !f g x y. FUNION (FUPDATE f (x,y)) g = FUPDATE (FUNION f g) (x,y)
- FUNION_FUPDATE_2
-
|- !f g x y.
FUNION f (FUPDATE g (x,y)) =
(if FDOM f x then FUNION f g else FUPDATE (FUNION f g) (x,y))
- FUPDATE_COMMUTES
-
|- !f a b c d.
~(a = c) ==>
(FUPDATE (FUPDATE f (a,b)) (c,d) = FUPDATE (FUPDATE f (c,d)) (a,b))
- FUPDATE_DRESTRICT
-
|- !f x y. FUPDATE f (x,y) = FUPDATE (DRESTRICT f (\v. ~(v = x))) (x,y)
- FUPDATE_EQ
-
|- !f a b c. FUPDATE (FUPDATE f (a,b)) (a,c) = FUPDATE f (a,c)
- FUPDATE_EXISTING
-
|- !f v t. FDOM f v /\ (FAPPLY f v = t) = (f = FUPDATE f (v,t))
- NOT_EQ_FAPPLY
-
|- !f a x y. ~(a = x) ==> (FAPPLY (FUPDATE f (x,y)) a = FAPPLY f a)
- NOT_EQ_FEMPTY_FUPDATE
-
|- !f a b. ~(FEMPTY = FUPDATE f (a,b))
- NOT_FDOM_DRESTRICT
-
|- !f x. ~FDOM f x ==> (DRESTRICT f (\a. ~(a = x)) = f)
- NOT_FDOM_FAPPLY_FEMPTY
-
|- !f x. ~FDOM f x ==> (FAPPLY f x = FAPPLY FEMPTY x)
- o_f_APPLY
-
|- !f g x. FDOM g x ==> (FAPPLY (f o_f g) x = f (FAPPLY g x))
- o_f_FDOM
-
|- !f g x. FDOM g x = FDOM (f o_f g) x
- RRESTRICT_FEMPTY
-
|- !r. RRESTRICT FEMPTY r = FEMPTY
- RRESTRICT_FUPDATE
-
|- !f r x y.
RRESTRICT (FUPDATE f (x,y)) r =
(if r y then
FUPDATE (RRESTRICT f r) (x,y)
else
RRESTRICT (DRESTRICT f (\a. ~(a = x))) r)
- STRONG_DRESTRICT_FUPDATE
-
|- !f r x y.
r x ==>
(DRESTRICT (FUPDATE f (x,y)) r =
FUPDATE (DRESTRICT f (\v. ~(v = x) /\ r v)) (x,y))
- STRONG_DRESTRICT_FUPDATE_THM
-
|- !f r x y.
DRESTRICT (FUPDATE f (x,y)) r =
(if r x then
FUPDATE (DRESTRICT f (\v. ~(v = x) /\ r v)) (x,y)
else
DRESTRICT f (\v. ~(v = x) /\ r v))
- SUBMAP_ANTISYM
-
|- !f g. f SUBMAP g /\ g SUBMAP f = (f = g)
- SUBMAP_FEMPTY
-
|- !f. FEMPTY SUBMAP f
- SUBMAP_FRANGE
-
|- !f g. f SUBMAP g ==> !x. FRANGE f x ==> FRANGE g x
- SUBMAP_REFL
-
|- !f. f SUBMAP f