{ [V:Type]. [A:Id List]. [t:]. [n1:]. [n2:]. [v1:V].
  [L1:consensus-rcv(V;A) List]. [a:{a:Id| (a  A)} ].
    ({(n1 = n2)  (null(filter(r.n1 - 1 <z inning(r);L1)))}) supposing 
       ((((2 * t) + 1)  ||values-for-distinct(IdDeq;votes-from-inning(n2;L1
       @ [Vote[a;n1;v1]]))||) and 
       (||values-for-distinct(IdDeq;votes-from-inning(n2;L1))||  (2 * t))) }

{ Proof }



Definitions occuring in Statement :  votes-from-inning: votes-from-inning(i;L) rcvd-inning-gt: i <z inning(r) cs-rcv-vote: Vote[a;i;v] consensus-rcv: consensus-rcv(V;A) id-deq: IdDeq Id: Id length: ||as|| append: as @ bs null: null(as) assert: b nat_plus: nat: uimplies: b supposing a uall: [x:A]. B[x] guard: {T} le: A  B not: A and: P  Q set: {x:A| B[x]}  lambda: x.A[x] cons: [car / cdr] nil: [] list: type List multiply: n * m subtract: n - m add: n + m natural_number: $n int: universe: Type equal: s = t filter: filter(P;l) l_member: (x  l) values-for-distinct: values-for-distinct(eq;L)
Definitions :  top: Top subtract: n - m rcvd-inning-gt: i <z inning(r) null: null(as) axiom: Ax pair: <a, b> guard: {T} tl: tl(l) hd: hd(l) void: Void cs-rcv-vote: Vote[a;i;v] nil: [] cons: [car / cdr] append: as @ bs add: n + m lambda: x.A[x] so_lambda: x.t[x] cand: A c B fpf-cap: f(x)?z filter: filter(P;l) intensional-universe: IType strong-subtype: strong-subtype(A;B) ge: i  j  and: P  Q uiff: uiff(P;Q) int_nzero: real: subtype: S  T natural_number: $n multiply: n * m subtype_rel: A r B fpf: a:A fp-B[a] product: x:A  B[x] exists: x:A. B[x] less_than: a < b implies: P  Q false: False not: A bool: assert: b iff: P  Q deq: EqDecider(T) id-deq: IdDeq votes-from-inning: votes-from-inning(i;L) values-for-distinct: values-for-distinct(eq;L) length: ||as|| le: A  B uimplies: b supposing a prop: l_member: (x  l) isect: x:A. B[x] consensus-rcv: consensus-rcv(V;A) int: set: {x:A| B[x]}  nat: all: x:A. B[x] function: x:A  B[x] uall: [x:A]. B[x] nat_plus: universe: Type member: t  T Id: Id list: type List equal: s = t tactic: Error :tactic,  apply: f a so_apply: x[s] union: left + right or: P  Q fpf-dom: x  dom(f) grp_car: |g| squash: T IdLnk: IdLnk locl: locl(a) Knd: Knd pi2: snd(t) pi1: fst(t) rev_implies: P  Q eq_bool: p =b q lt_int: i <z j le_int: i z j eq_int: (i = j) eq_atom: x =a y set_blt: a < b grp_blt: a < b infix_ap: x f y dcdr-to-bool: [d] bl-all: (xL.P[x])_b bl-exists: (xL.P[x])_b b-exists: (i<n.P[i])_b eq_type: eq_type(T;T') eq_atom: eq_atom$n(x;y) qeq: qeq(r;s) q_less: q_less(r;s) q_le: q_le(r;s) deq-member: deq-member(eq;x;L) deq-disjoint: deq-disjoint(eq;as;bs) deq-all-disjoint: deq-all-disjoint(eq;ass;bs) eq_str: Error :eq_str,  eq_id: a = b eq_lnk: a = b isl: isl(x) bimplies: p  q band: p  q bor: p q inl: inl x  sq_type: SQType(T) rationals: true: True bnot: b decide: case b of inl(x) =s[x] | inr(y) =t[y] ifthenelse: if b then t else f fi  limited-type: LimitedType outr: outr(x) inr: inr x 
Lemmas :  subtype_base_sq int_subtype_base outr_wf true_wf bnot_wf ifthenelse_wf top_wf iff_weakening_uiff assert_of_bnot isl_wf pi1_wf_top pi2_wf pos_length2 filter_wf uiff_inversion consensus-rcv-crosses-threshold bool_wf id-deq_wf member_wf Id_wf l_member_wf deq_wf iff_wf assert_wf values-for-distinct_wf votes-from-inning_wf length_wf1 le_wf consensus-rcv_wf nat_wf nat_plus_wf subtype_rel_wf false_wf intensional-universe_wf length_wf_nat list-subtype strong-subtype-deq-subtype strong-subtype_wf strong-subtype-set3 strong-subtype-self nat_plus_properties cs-rcv-vote_wf append_wf guard_wf not_wf null_wf3 filter_wf_top rcvd-inning-gt_wf

\mforall{}[V:Type].  \mforall{}[A:Id  List].  \mforall{}[t:\mBbbN{}\msupplus{}].  \mforall{}[n1:\mBbbN{}].  \mforall{}[n2:\mBbbZ{}].  \mforall{}[v1:V].  \mforall{}[L1:consensus-rcv(V;A)  List].
\mforall{}[a:\{a:Id|  (a  \mmember{}  A)\}  ].
    (\{(n1  =  n2)  \mwedge{}  (\mneg{}\muparrow{}null(filter(\mlambda{}r.n1  -  1  <z  inning(r);L1)))\})  supposing 
          ((((2  *  t)  +  1)  \mleq{}  ||values-for-distinct(IdDeq;votes-from-inning(n2;L1
          @  [Vote[a;n1;v1]]))||)  and 
          (||values-for-distinct(IdDeq;votes-from-inning(n2;L1))||  \mleq{}  (2  *  t)))


Date html generated: 2011_08_16-AM-10_13_25
Last ObjectModification: 2011_06_18-AM-09_06_05

Home Index