(* Victor B. F. Gomes, University of Cambridge MartinKleppmann,UniversityofCambridge DominicP.Mulligan,UniversityofCambridge AlastairR.Beresford,UniversityofCambridge
*)
section‹Increment-Decrement Counter›
text‹The Increment-Decrement Counter is perhaps the simplest CRDT, and a paradigmatic example of a
replicated data structure with commutative operations.›
theory
Counter imports
Network begin
datatype operation = Increment | Decrement
fun counter_op :: "operation ==> int ⇀ int"where "counter_op Increment x = Some (x + 1)" | "counter_op Decrement x = Some (x - 1)"
locale counter = network_with_ops _ counter_op 0
lemma (in counter) "counter_op x ⊳ counter_op y = counter_op y ⊳ counter_op x" by(case_tac x; case_tac y; auto simp add: kleisli_def)
lemma (in counter) concurrent_operations_commute: assumes"xs prefix of i" shows"hb.concurrent_ops_commute (node_deliver_messages xs)" using assms apply(clarsimp simp: hb.concurrent_ops_commute_def) apply(rename_tac a b x y) apply(case_tac b; case_tac y; force simp add: interp_msg_def kleisli_def) done
corollary (in counter) counter_convergence: assumes"set (node_deliver_messages xs) = set (node_deliver_messages ys)" and"xs prefix of i" and"ys prefix of j" shows"apply_operations xs = apply_operations ys" using assms by(auto simp add: apply_operations_def intro: hb.convergence_ext
concurrent_operations_commute node_deliver_messages_distinct hb_consistent_prefix)
context counter begin
sublocale sec: strong_eventual_consistency weak_hb hb interp_msg "λops. ∃xs i. xs prefix of i ∧ node_deliver_messages xs = ops"0 apply(standard; clarsimp simp add: hb_consistent_prefix drop_last_message
node_deliver_messages_distinct concurrent_operations_commute) apply(metis (full_types) interp_msg_def counter_op.elims) using drop_last_message apply blast done
end end
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.3Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.