Inital commit
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
1b. mod. Menge (Haskell Listen)
|
||||
2b. mod. Queue (Haskell Listen)
|
||||
3b. mod. Stack (Haskell Listen)
|
||||
4b. mod. Baum (Haskell Listen) // erstmal weggelassen
|
||||
|
||||
1c. mod. Menge (Folgen)
|
||||
2c. mod. Queue (Folgen)
|
||||
3c. mod. Stack (Folgen)
|
||||
4c. mod. Baum (Folgen)
|
||||
|
||||
|
||||
1b. Modellierende Spezifikation einer Menge (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Model : Haskell Listen
|
||||
|
||||
Invariante : In einer Menge dürfen keine Duplikate vorkommen
|
||||
|
||||
Spezifikation: createM :: [a]
|
||||
create = []
|
||||
|
||||
isEmpty :: [a] -> Bool
|
||||
isEmpty [] = True
|
||||
isEmpty (x:xs) = False
|
||||
|
||||
insert :: a -> [a] -> [a]
|
||||
insert x [] = [x]
|
||||
insert y (x:xs)
|
||||
| y == x = (x:xs)
|
||||
| otherwise = x:(insert y xs)
|
||||
|
||||
delete :: a -> [a] -> [a]
|
||||
delete x [] = []
|
||||
delete y (x:xs)
|
||||
| y == x = xs
|
||||
| otherwise = x:(delete y xs)
|
||||
|
||||
isIn :: a -> [a] -> Bool
|
||||
isIn x [] = False
|
||||
isIn y (x:xs)
|
||||
| y == x = True
|
||||
| otherwise = x:(isIn y xs)
|
||||
|
||||
|
||||
|
||||
2b. Modellierende Spezifikation einer Schlange (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Modell: Liste in Haskell [t]
|
||||
|
||||
Invariante : length [t] <= MAX
|
||||
|
||||
Spezifikation: createQ :: [t]
|
||||
createQ = []
|
||||
|
||||
enqueue :: t -> [t] -> [t]
|
||||
enqueue x [] = [x]
|
||||
enqueue y (x:xs) = (x:xs) ++ [y]
|
||||
|
||||
dequeue :: [t] -> [t]
|
||||
dequeue [] = error "Queue leer, Du OpfA"
|
||||
dequeue (x:xs) = xs
|
||||
|
||||
first :: [t] -> t
|
||||
first [] = error "Queue leer, Du OpfA"
|
||||
first (x:xs) = x
|
||||
|
||||
|
||||
3b. Modellierende Spezifikation eines Stacks (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Modell: Liste in Haskell [t]
|
||||
|
||||
Invariante : length [t] <= MAX
|
||||
|
||||
Spezifikation: createS :: Stack s
|
||||
createS = []
|
||||
|
||||
isEmpty :: Stack s -> Bool
|
||||
isEmpty [] = True
|
||||
isEmpty xs = False
|
||||
|
||||
push :: e -> Stack s -> Stack s
|
||||
push x [] = [x]
|
||||
push y (x:xs) = y : (x:xs)
|
||||
|
||||
pop :: Stack s -> Stack s
|
||||
pop [] = error "Stack ist leer"
|
||||
pop (x:xs) = xs
|
||||
|
||||
top :: Stack s -> e
|
||||
top [] = error "Stack ist leer"
|
||||
top (x:xs) = x
|
||||
|
||||
size :: Stack s -> int
|
||||
size [] = 0
|
||||
size (x:xs) = 1 + size (xs)
|
||||
|
||||
|
||||
|
||||
4b. Algebraische Spezifikation eines Baumes (Model,Spezifikation,Invariante)
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
folgt
|
||||
|
||||
|
||||
|
||||
1c. Modellierende Spezifikation einer Menge (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Model : Menge = e | (xi)i=1..n , type xi = T , n <- N
|
||||
|
||||
Invariante : n < N && Alle (xi)i=1..n Exisitiert kein (xj)j=1..n mit xj = xi
|
||||
|
||||
Spezifikation : createM = e
|
||||
//post return e
|
||||
|
||||
isEmpty Menge
|
||||
//post if Menge == e return True else return False
|
||||
|
||||
//pre createM && isIn T Menge = False (s. Invariante) && k < N
|
||||
insert T Menge
|
||||
//post insert T (xi)i=1..k => (xi)i=1..k+1 && xk+1 = T
|
||||
|
||||
//pre createM
|
||||
delete T (xi)i=1..k
|
||||
//post (xi)i=1..k-1 && isIn T Menge = False
|
||||
|
||||
//pre createM
|
||||
isIn T Menge
|
||||
//post return ( Existiert ein (xi)i=1..k | xi == T )
|
||||
|
||||
|
||||
|
||||
|
||||
2c. Modellierende Spezifikation einer Schlange (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Model : Queue = e | (xi)i=1..n , type xi = T , n <- N
|
||||
|
||||
Invariante : n < N
|
||||
|
||||
Spezifikation : createQ = e
|
||||
//post returns e
|
||||
|
||||
isEmpty (xi)i=1..k
|
||||
//post if Queue == e return True else return False
|
||||
|
||||
//pre createQ && k < N
|
||||
enqueue T Queue
|
||||
//post enqueue T (xi)i=1..k => (xi)i=1..k+1 && xk+1 = T
|
||||
|
||||
//pre !isEmpty
|
||||
dequeue Queue
|
||||
//post dequeue (xi)i=1..k => (xi)i=2..k (size = size-1)
|
||||
|
||||
//pre !isEmpty
|
||||
first Queue
|
||||
//post first (xi)i=1..k => return x1
|
||||
|
||||
|
||||
|
||||
|
||||
3c. Modellierende Spezifikation eines Stacks (Model,Spezifikation,Invariante)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Model : Stack = e | (xi)i=1..n , type xi = T , n <- N
|
||||
|
||||
Invariante : n < N
|
||||
|
||||
Spezifikation : createS = e
|
||||
|
||||
//pre createS
|
||||
isEmpty Stack
|
||||
//post Stack == e True else return False
|
||||
|
||||
//pre createS && k < N
|
||||
push T (xi)i=1..k-1
|
||||
//post push T (xi)i=1..k-1 =>(xi)i=1..k && xk = T
|
||||
|
||||
//pre !isEmpty
|
||||
pop (xi)i=1..n
|
||||
//pre (xi)i=1..n-1
|
||||
|
||||
//pre !isEmpty
|
||||
top (xi)i=1..n
|
||||
//post returns xn
|
||||
|
||||
//pre createS
|
||||
size (xi)i=1..n-1
|
||||
//post returns n-1
|
||||
|
||||
|
||||
4c. Algebraische Spezifikation eines Baumes (Model,Spezifikation,Invariante)
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
folgt
|
||||
Reference in New Issue
Block a user