### Nuprl Lemma : no-repeats-iff-count

`∀[T:Type]. ∀[eq:EqDecider(T)]. ∀[L:T List].`
`  uiff(no_repeats(T;L);∀[x:T]. uiff(1 ≤ ||filter(eq x;L)||;||filter(eq x;L)|| = 1 ∈ ℤ))`

Proof

Definitions occuring in Statement :  no_repeats: `no_repeats(T;l)` length: `||as||` filter: `filter(P;l)` list: `T List` deq: `EqDecider(T)` uiff: `uiff(P;Q)` uall: `∀[x:A]. B[x]` le: `A ≤ B` apply: `f a` natural_number: `\$n` int: `ℤ` universe: `Type` equal: `s = t ∈ T`
Definitions unfolded in proof :  uall: `∀[x:A]. B[x]` member: `t ∈ T` uiff: `uiff(P;Q)` and: `P ∧ Q` uimplies: `b supposing a` prop: `ℙ` deq: `EqDecider(T)` subtype_rel: `A ⊆r B` so_lambda: `λ2x.t[x]` so_apply: `x[s]` all: `∀x:A. B[x]` decidable: `Dec(P)` or: `P ∨ Q` satisfiable_int_formula: `satisfiable_int_formula(fmla)` exists: `∃x:A. B[x]` false: `False` implies: `P `` Q` not: `¬A` top: `Top` le: `A ≤ B` less_than': `less_than'(a;b)` set-equal: `set-equal(T;x;y)` iff: `P `⇐⇒` Q` rev_implies: `P `` Q` l_member: `(x ∈ l)` nat: `ℕ` cand: `A c∧ B` ge: `i ≥ j ` eqof: `eqof(d)` int_seg: `{i..j-}` lelt: `i ≤ j < k` no_repeats: `no_repeats(T;l)` rev_uimplies: `rev_uimplies(P;Q)` guard: `{T}` length: `||as||` list_ind: list_ind cons: `[a / b]` nil: `[]` it: `⋅`
Lemmas referenced :  le_wf length_wf filter_wf5 subtype_rel_dep_function bool_wf l_member_wf subtype_rel_self set_wf decidable__le satisfiable-full-omega-tt intformand_wf intformnot_wf intformle_wf itermConstant_wf itermVar_wf intformeq_wf int_formula_prop_and_lemma int_formula_prop_not_lemma int_formula_prop_le_lemma int_term_value_constant_lemma int_term_value_var_lemma int_formula_prop_eq_lemma int_formula_prop_wf less_than'_wf equal-wf-T-base no_repeats_wf no_repeats_witness uall_wf uiff_wf list_wf deq_wf set-equal-no_repeats-length cons_wf select_wf false_wf decidable__lt intformless_wf int_formula_prop_less_lemma nil_wf no_repeats_singleton no_repeats_filter length_of_cons_lemma length_of_nil_lemma member_singleton member_filter iff_wf equal_wf assert_wf less_than_wf nat_properties safe-assert-deq select_member lelt_wf not_wf nat_wf sublist_filter l_all_cons assert_functionality_wrt_uiff l_all_nil length_sublist sublist_pair decidable__equal_int equal-wf-base int_subtype_base
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation introduction cut independent_pairFormation hypothesis extract_by_obid sqequalHypSubstitution isectElimination thin natural_numberEquality cumulativity hypothesisEquality applyEquality setElimination rename sqequalRule lambdaEquality setEquality independent_isectElimination because_Cache lambdaFormation dependent_functionElimination equalityTransitivity equalitySymmetry unionElimination dependent_pairFormation int_eqEquality intEquality isect_memberEquality voidElimination voidEquality computeAll productElimination independent_pairEquality axiomEquality baseClosed independent_functionElimination universeEquality addLevel impliesFunctionality productEquality dependent_set_memberEquality hyp_replacement applyLambdaEquality

Latex:
\mforall{}[T:Type].  \mforall{}[eq:EqDecider(T)].  \mforall{}[L:T  List].
uiff(no\_repeats(T;L);\mforall{}[x:T].  uiff(1  \mleq{}  ||filter(eq  x;L)||;||filter(eq  x;L)||  =  1))

Date html generated: 2017_09_29-PM-06_04_09
Last ObjectModification: 2017_07_26-PM-02_53_02

Theory : decidable!equality

Home Index