Theory: sum

Parents


Type constants


Term constants


Axioms


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

Theorems

sum_axiom
|- !f g. ?!h. (h o INL = f) /\ (h o INR = g)
sum_Axiom
|- !f g. ?!h. (!x. h (INL x) = f x) /\ (!x. h (INR x) = g 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)