Theory Coder

Parents

Contents

Type operators

(none)

Constants

Definitions

blist_coder_defbnum_coder_defbool_coder_defdecode_defdecoder_defdomain_defencoder_deflist_coder_defnum_coder_defoption_coder_defprod_coder_defsum_coder_deftree_coder_defunit_coder_defwf_coder_def

Theorems

decode_encodewf_coderwf_coder_blistwf_coder_bnumwf_coder_boolwf_coder_closedwf_coder_listwf_coder_numwf_coder_opwf_coder_optionwf_coder_prodwf_coder_sumwf_coder_treewf_coder_unit

Definitions

⊢ ∀m p e d.
    blist_coder m (p,e,d) =
    (lift_blist m p,encode_blist m e,decode_blist (lift_blist m p) m d)
⊢ ∀m p. bnum_coder m p = (p,encode_bnum m,decode_bnum m p)
⊢ ∀p. bool_coder p = (p,encode_bool,decode_bool p)
⊢ ∀p d l. decode p d l = case d l of NONE => @x. p x | SOME (x,v2) => x
⊢ ∀p e d. decoder (p,e,d) = decode p d
⊢ ∀p e d. domain (p,e,d) = p
⊢ ∀p e d. encoder (p,e,d) = e
⊢ ∀p e d.
    list_coder (p,e,d) = (EVERY p,encode_list e,decode_list (EVERY p) d)
⊢ ∀p. num_coder p = (p,encode_num,decode_num p)
⊢ ∀p e d.
    option_coder (p,e,d) =
    (lift_option p,encode_option e,decode_option (lift_option p) d)
⊢ ∀p1 e1 d1 p2 e2 d2.
    prod_coder (p1,e1,d1) (p2,e2,d2) =
    (lift_prod p1 p2,encode_prod e1 e2,decode_prod (lift_prod p1 p2) d1 d2)
⊢ ∀p1 e1 d1 p2 e2 d2.
    sum_coder (p1,e1,d1) (p2,e2,d2) =
    (lift_sum p1 p2,encode_sum e1 e2,decode_sum (lift_sum p1 p2) d1 d2)
⊢ ∀p e d.
    tree_coder (p,e,d) =
    (lift_tree p,encode_tree e,decode_tree (lift_tree p) d)
⊢ ∀p. unit_coder p = (p,encode_unit,decode_unit p)
⊢ ∀p e d. wf_coder (p,e,d) ⇔ wf_pred p ∧ wf_encoder p e ∧ d = enc2dec p e

Theorems

⊢ ∀p e x. wf_encoder p e ∧ p x ⇒ decode p (enc2dec p e) (e x) = x
⊢ ∀c. wf_coder c ⇒ ∀x. domain c x ⇒ decoder c (encoder c x) = x
⊢ ∀m c. wf_coder c ⇒ wf_coder (blist_coder m c)
⊢ ∀m p. wf_pred_bnum m p ⇒ wf_coder (bnum_coder m p)
⊢ ∀p. wf_pred p ⇒ wf_coder (bool_coder p)
⊢ ∀c. wf_coder c ⇒ ∀l. domain c (decoder c l)
⊢ ∀c. wf_coder c ⇒ wf_coder (list_coder c)
⊢ ∀p. wf_pred p ⇒ wf_coder (num_coder p)
⊢ ∀p e f.
    (∃x. p x) ∧ wf_encoder p e ∧ (∀x. p x ⇒ e x = f x) ⇒
    wf_coder (p,e,enc2dec p f)
⊢ ∀c. wf_coder c ⇒ wf_coder (option_coder c)
⊢ ∀c1 c2. wf_coder c1 ∧ wf_coder c2 ⇒ wf_coder (prod_coder c1 c2)
⊢ ∀c1 c2. wf_coder c1 ∧ wf_coder c2 ⇒ wf_coder (sum_coder c1 c2)
⊢ ∀c. wf_coder c ⇒ wf_coder (tree_coder c)
⊢ ∀p. wf_pred p ⇒ wf_coder (unit_coder p)