and1 :: Bool -> Bool -> Bool
and1 False False = False
and1 False True = False
and1 True False = False
and1 True True = True
-- > Effekt: (and1 t1 t2) verlangt die Auswertung von t1 und t2!
loop :: Bool
loop = loop
and2 :: Bool -> Bool -> Bool
and2 False _ = False
and2 True x = x
and2c x y = case x of False -> False
True -> y
and3 :: Bool -> Bool -> Bool
and3 _ False = False
and3 x True = x
and3c x y = case y of False -> False
True -> x
orp :: Bool -> Bool -> Bool
orp True _ = True
orp _ True = True
orp False False = False
{-
orpc x y = case x of True -> True
False -> ????
-- Transformation of append:
append [] ys = ys
append (x:xs) ys = x : append xs ys
append xs1 xs2 = [[match [xs1,xs2] [([[], ys], ys),
([(x:xs),ys], x : append xs ys)]
ERROR]]
append xs1 xs2 =
case xs1 of
[] -> [[match [xs2] [([ys], ys)] ERROR]]
z:zs -> [[match [z,zs,xs2] [([x,xs,ys], x : append xs ys)] ERROR]]
append xs1 xs2 =
case xs1 of
[] -> [[match [] [([], xs2)] ERROR]]
z:zs -> [[match [] [([], z : append zs xs2)] ERROR]]
append xs1 xs2 =
case xs1 of
[] -> xs2
z:zs -> z : append zs xs2
-- Transformation of head:
head (x:xs) = x
-->
head zs = case zs of [] -> error "unmatched case"
(x:xs) -> x
-- Transformation of parallel-or:
orp True _ = True
orp _ True = True
orp False False = False
-->
orp x y = [[match [x,y] [([True,_], True),
([_,True], True),
([False,False], False)] ERROR]]
-->
orp x y = [[match [x,y] [([True,_], True)]
[[match [x,y] [([_,True], True)]
[[match [x,y] [([False,False], False)] ERROR]] ]] ]]
-}