Nuprl Theory discrete

(only non hidden objects are presented)

DISPdiscrete_dfDiscrete{<T:type:L>}== Discrete{<T>}
ABSdiscreteDiscrete{T} == x,y:T. Dec(x = y)
THMdiscrete_wfT:. Discrete{T} '
THMdiscrete_implies_bool_equalityT:. Discrete{T} (f:T T . x,y:T. (f x y) x = y)
DISPdiscrete_equality_df{<T:type:L>=}== {<T>=}
ABSdiscrete_equality{T=} == {eq:T T | x,y:T. (eq x y) x = y}
THMdiscrete_equality_wfT:. {T=}
THMdiscrete_equality_incT:. {T=} T T
THMdiscrete_equality_propertiesT:. eq:{T=}. (x,y:T. (eq x y) x = y) eq T T
MLdiscrete_eq_taclet is_discrete_equality_term t = (opid_of_term t) = `discrete_equality` ;; let is_discrete_term t = (opid_of_term t) = `discrete` ;; let DiscreteEq i p = (let T = type_of_hyp i p in let i = get_pos_hyp_num i p in if is_discrete_equality_term T then let name = mk_var_term (var_of_hyp i p) in let type = hd (subterms_of_term T) in InstLemma `discrete_equality_properties` [type;name] THENA Auto THEN D (-1) THEN CopyToHyp (i + 1) (-2) THEN Thin (-2) THEN CopyToHyp (i + 1) (-1) THEN Thin (-1) else failwith `DiscreteEq: hyp is not an discrete_equality term.` )p ;; let MkDiscreteEqInst i p = (let T = type_of_hyp i p in let i = get_pos_hyp_num i p in let dvars = (declared_vars p) in let eq = maybe_new_var (mkv `eq`) dvars in if is_discrete_term T then FwdThruLemma `discrete_implies_discrete_equality` [i] THENA Auto THEN D (-1) THEN Thin (-1) THEN CopyToHyp (i + 1) (-1) THEN Thin (-1) THEN RenameVar eq (i + 1) THEN DiscreteEq (i + 1) else failwith `MkDiscreteEq: hyp is not a discrete term.` )p ;; let MkDiscreteEq t = InstLemma (concat `discrete__` t) [] THENA Auto THEN MkDiscreteEqInst (-1) THEN OnHyps [-4;-2;-1] Thin ;; let MkDiscreteEqWith t name i = MkDiscreteEq t THEN MoveToHyp i (-1) THEN RenameVar name i ;;
THMdiscrete_implies_discrete_equalityT:. Discrete{T} (f:{T=}. True)
THMdiscrete_equality_uniqueT:. f1,f2:{T=}. f1 = f2
THMdiscrete_equality_reflexiveT:. eq:{T=}. u:T. (eq u u)
THMdiscrete_equality_symmetricT:. eq:{T=}. x,y:T. (eq x y) (eq y x)
THMdiscrete_equality_transitiveT:. eq:{T=}. x,y,z:T. (eq x y) (eq y z) (eq x z)
THMdiscrete__unionT1:. T2:{j}. Discrete{T1} Discrete{T2} Discrete{(T1 + T2)}
THMdiscrete__productT1:. T2:{j}. Discrete{T1} Discrete{T2} Discrete{(T1 T2)}
THMdiscrete__atomDiscrete{Atom}

the other theories