Theory "sum"

Parents     combin

Signature

Type Arity
sum 2
Constant Type
IS_SUM_REP :(bool -> 'a -> 'b -> bool) -> bool
OUTL :'a + 'b -> 'a
OUTR :'a + 'b -> 'b
sum_case :('b -> 'a) -> ('c -> 'a) -> 'b + 'c -> 'a
INL :'a -> 'a + 'b
INR :'b -> 'a + 'b
ISL :'a + 'b -> bool
ISR :'a + 'b -> bool
REP_sum :'a + 'b -> bool -> 'a -> 'b -> bool
ABS_sum :(bool -> 'a -> 'b -> bool) -> 'a + 'b

Definitions

IS_SUM_REP
|- !f.
     IS_SUM_REP f =
     ?v1 v2. (f = (\b x y. (x = v1) /\ b)) \/ (f = (\b x y. (y = v2) /\ ~b))
sum_TY_DEF
|- ?rep. TYPE_DEFINITION IS_SUM_REP rep
sum_ISO_DEF
|- (!a. ABS_sum (REP_sum a) = a) /\
   !r. IS_SUM_REP r = (REP_sum (ABS_sum r) = r)
INL_DEF
|- !e. INL e = ABS_sum (\b x y. (x = e) /\ b)
INR_DEF
|- !e. INR e = ABS_sum (\b x y. (y = e) /\ ~b)
ISL
|- (!x. ISL (INL x)) /\ !y. ~ISL (INR y)
ISR
|- (!x. ISR (INR x)) /\ !y. ~ISR (INL y)
OUTL
|- !x. OUTL (INL x) = x
OUTR
|- !x. OUTR (INR x) = x
sum_case_def
|- (!f g x. case f g (INL x) = f x) /\ !f g y. case f g (INR y) = g y


Theorems

INR_INL_11
|- (!y x. (INL x = INL y) = (x = y)) /\ !y x. (INR x = INR y) = (x = y)
INR_neq_INL
|- !v1 v2. ~(INR v2 = INL v1)
sum_axiom
|- !f g. ?!h. (h o INL = f) /\ (h o INR = g)
sum_INDUCT
|- !P. (!x. P (INL x)) /\ (!y. P (INR y)) ==> !s. P s
sum_Axiom
|- !f g. ?h. (!x. h (INL x) = f x) /\ !y. h (INR y) = g y
sum_CASES
|- !s. (?x. s = INL x) \/ ?y. s = INR y
sum_distinct
|- !x y. ~(INL x = INR y)
sum_distinct1
|- !x y. ~(INR y = INL x)
ISL_OR_ISR
|- !x. ISL x \/ ISR x
INL
|- !x. ISL x ==> (INL (OUTL x) = x)
INR
|- !x. ISR x ==> (INR (OUTR x) = x)
sum_case_cong
|- !M M' f g.
     (M = M') /\ (!x. (M' = INL x) ==> (f x = f' x)) /\
     (!y. (M' = INR y) ==> (g y = g' y)) ==>
     (case f g M = case f' g' M')