Nuprl Theory boolean_expression

(only non hidden objects are presented)

DISPbexp_dfexp== exp
ABSbexpexp == rec(B. + B B + B B + B + Exp Exp + Exp Exp)
THMbexp_wfexp
DISPbexp_atom_dfBexp(<b:bool:*>)== Bexp(<b>)
ABSbexp_atomBexp(b) == inl b
THMbexp_atom_wfb:. Bexp(b) exp
DISPandbexp_df<b1:bexp:*> AND <b2:bexp:*>== <b1> AND <b2>
ABSandbexpb1 AND b2 == inr (inl <b1, b2> )
THMandbexp_wfb1,b2:exp. b1 AND b2 exp
DISPorbexp_df<b1:bexp:*> OR <b2:bexp:*>== <b1> OR <b2>
ABSorbexpb1 OR b2 == inr inr (inl <b1, b2> )
THMorbexp_wfb1,b2:exp. b1 OR b2 exp
DISPnotbexp_dfNOT <b:bexp:*>== NOT <b>
ABSnotbexpNOT b == inr inr inr (inl b )
THMnotbexp_wfb:exp. NOT b exp
DISPltexp_df<e1:exp:*> < <e2:exp:*>== <e1> < <e2>
ABSltexpe1 < e2 == inr inr inr inr (inl <e1, e2> )
THMltexp_wfe1,e2:Exp. e1 < e2 exp
DISPeqexp_df<e1:exp:*> == <e2:exp:*>== <e1> == <e2>
ABSeqexpe1 == e2 == inr inr inr inr inr <e1, e2>
THMeqexp_wfe1,e2:Exp. e1 == e2 exp
DISPbexp_cases_df{[SOFT}{->0}case <b:b:*> {\\}of {->0}Bexp(<atm:var>) <atom_case:atom_case:*> {\\}<a1:var> AND <a2:var> <and_case:and_case:*> {\\}<o1:var> OR <o2:var> <or_case:or_case:*> {\\}NOT <n:var> <not_case:not_case:*> {\\}<l1:var> < <l2:var> <lt_case:lt_case:*> {\\}<e1:var> == <e2:var> <eq_case:eq_case:*> {<-}{<-}{]} == case <b> of Bexp(<atm>) <atom_case> <a1> AND <a2> <and_case> <o1> OR <o2> <or_case> NOT <n> <not_case> <l1> < <l2> <lt_case> <e1> == <e2> <eq_case>
ABSbexp_casescase b of Bexp(atm) atom_case[atm] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] == case b of inl(atm) => atom_case[atm] | inr(natm) => case natm of inl(aa) => let <a1,a2> = aa in and_case[a1; a2] | inr(na) => case na of inl(oo) => let <o1,o2> = oo in or_case[o1; o2] | inr(no) => case no of inl(n) => not_case[n] | inr(nn) => case nn of inl(ll) => let <l1,l2> = ll in lt_case[l1; l2] | inr(ee) => let <e1,e2> = ee in eq_case[e1; e2]
THMbexp_cases_wfT:. atom_case: T. and_case,or_case:exp exp T. not_case:exp T. lt_case,eq_case:Exp Exp T. b:exp. case b of Bexp(atm) atom_case[atm] a1 AND a2 and_case[a1;a2] o1 OR o2 or_case[o1;o2] NOT n not_case[n] l1 < l2 lt_case[l1;l2] e1 == e2 eq_case[e1;e2] T
MLbexp_cases_eval1let bexp_cases_atomC = SimpleMacroC `exp_cases_atom` case Bexp(x) of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] atom_case[x] ``bexp_cases bexp_atom`` ;; let bexp_cases_andC = SimpleMacroC `exp_cases_and` case x AND y of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] and_case[x; y] ``bexp_cases andbexp`` ;; let bexp_cases_orC = SimpleMacroC `exp_cases_or` case x OR y of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] or_case[x; y] ``bexp_cases orbexp`` ;; let bexp_cases_notC = SimpleMacroC `exp_cases_not` case NOT x of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] not_case[x] ``bexp_cases notbexp`` ;;
MLbexp_cases_eval2let bexp_cases_ltC = SimpleMacroC `exp_cases_lt` case x < y of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] lt_case[x; y] ``bexp_cases ltexp`` ;; let bexp_cases_eqC = SimpleMacroC `exp_cases_eq` case x == y of Bexp(b) atom_case[b] a1 AND a2 and_case[a1; a2] o1 OR o2 or_case[o1; o2] NOT n not_case[n] l1 < l2 lt_case[l1; l2] e1 == e2 eq_case[e1; e2] eq_case[x; y] ``bexp_cases eqexp`` ;; let bexp_casesC = FirstC [bexp_cases_atomC; bexp_cases_andC; bexp_cases_orC; bexp_cases_notC; bexp_cases_ltC; bexp_cases_eqC] ;; add_AbReduce_conv `bexp_cases` bexp_casesC ;;
THMbexp_ind_tpP:exp (b:. P[Bexp(b)]) (b1,b2:exp. P[b1] P[b2] P[b1 AND b2]) (b1,b2:exp. P[b1] P[b2] P[b1 OR b2]) (b:exp. P[b] P[NOT b]) (e1,e2:Exp. P[e1 < e2]) (e1,e2:Exp. P[e1 == e2]) {b:exp. P[b]}
MLbexp_ind_taclet BexpInd i p = ByAnalogyWith1 `bexp_ind_tp` [`hr`, int_to_arg i] p; ;
DISPbexpval_df[<bex:bexp:*>](<m:m:*>)== [<bex>](<m>)
MLbexpval_ml[bex](m) ==r case bex of Bexp(atm) atm b1 AND b2 [b1](m) [b2](m) b1 OR b2 [b1](m) [b2](m) NOT b [b](m) e1 < e2 [e1] <z [e2] e1 == e2 ([e1] = [e2])
THMbexpval_wfb:exp. m:Atom . [b](m)
MLbexpval_evallet bexpvalC = RecUnfoldC `bexpval` ANDTHENC bexp_casesC ;; add_AbReduce_conv `bexpval` bexpvalC ;;

the other theories