Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  ListTools.thy

  Sprache: Isabelle
 

theory ListTools
imports Main
begin

definition is_first :: "'a ==> 'a list ==> bool"
where
  "is_first x u = ( v. u = [x]@v)"

definition is_last :: "'a ==> 'a list ==> bool"
where
  "is_last x u = ( v. u = v@[x])"

definition is_prefix :: "'a list ==> 'a list ==> bool"
where
  "is_prefix u v = ( w. u@w = v)"

definition is_proper_prefix :: "'a list ==> 'a list ==> bool"
where
  "is_proper_prefix u v = ( w. w [] u@w = v)"

lemma is_prefix_eq_proper_prefix: "is_prefix a b = (a = b is_proper_prefix a b)"
by (metis append_Nil2 is_prefix_def is_proper_prefix_def)

lemma is_proper_prefix_eq_prefix: "is_proper_prefix a b = (a b is_prefix a b)"
by (metis append_self_conv is_prefix_eq_proper_prefix is_proper_prefix_def)

definition is_suffix :: "'a list ==> 'a list ==> bool"
where
  "is_suffix u v = ( w. w@u = v)"

definition is_proper_suffix :: "'a list ==> 'a list ==> bool"
where
  "is_proper_suffix u v = ( w. w [] w@u = v)"

lemma is_suffix_eq_proper_suffix: "is_suffix a b = (a = b is_proper_suffix a b)"
by (metis append_Nil is_proper_suffix_def is_suffix_def)

lemma is_proper_suffix_eq_suffix: "is_proper_suffix a b = (a b is_suffix a b)"
by (metis is_proper_suffix_def is_suffix_eq_proper_suffix self_append_conv2)

lemma is_prefix_unsplit: "is_prefix u a ==> u @ (drop (length u) a) = a"
  by (metis append_eq_conv_conj is_prefix_def)

lemma le_take_same: "i j ==> take j a = take j b ==> take i a = take i b"
 by (metis min.absorb1 take_take)

lemma is_first_drop_length: 
  assumes "k length a" 
  and "k > length u"
  and "v = X#w" 
  and "take k a = take k (u@v)"
  shows "is_first X (drop (length u) a)"
proof -
  let ?d = "k - length u"
  from assms have pos_d': "?d > 0" by auto
  from assms have take_d'_v: "take ?d (drop (length u) a) = take ?d v"
    by (metis append_eq_conv_conj drop_take)
  then have "take 1 (drop (length u) a) = take 1 v"
    by (metis One_nat_def Suc_leI le_take_same pos_d')
  then have "take 1 (drop (length u) a) = [X]"
    by (simp add: assms)
  then show ?thesis
    by (metis append_take_drop_id is_first_def)
qed

lemma is_first_cons: "is_first x (y#ys) = (x = y)"
  by (auto simp add: is_first_def)

lemma list_all_pos_neg_ex: "list_all P D ==> ¬ (list_all Q D) ==>
        k. k < length D P(D ! k) ¬(Q(D ! k))"
using list_all_length by blast

lemma split_list_at: "k < length D ==> D = (take k D)@[D ! k]@(drop (Suc k) D)"
  by (metis append_Cons append_Nil id_take_nth_drop)

lemma take_eq_take_append: "i j ==> j length a ==> u. take j a = take i a @ u"
  by (metis le_Suc_ex take_add)

lemma is_proper_suffix_length_cmp: "is_proper_suffix a b ==> length a < length b"
by (metis add_diff_cancel_right' append_Nil append_eq_append_conv 
  diff_is_0_eq is_proper_suffix_def leI length_append list.size(3))


end

Messung V0.5 in Prozent
C=90 H=97 G=93

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge