notInvolutive : (x : Bool) -> not (not x) = x
andSameNeutral : (x : Bool) -> x && Delay x = x
andFalseFalse : (x : Bool) -> x && Delay False = False
andTrueNeutral : (x : Bool) -> x && Delay True = x
andAssociative : (x : Bool) -> (y : Bool) -> (z : Bool) -> x && Delay (y && Delay z) = (x && Delay y) && Delay z
andCommutative : (x : Bool) -> (y : Bool) -> x && Delay y = y && Delay x
andNotFalse : (x : Bool) -> x && Delay (not x) = False
orSameNeutral : (x : Bool) -> x || Delay x = x
orFalseNeutral : (x : Bool) -> x || Delay False = x
orTrueTrue : (x : Bool) -> x || Delay True = True
orAssociative : (x : Bool) -> (y : Bool) -> (z : Bool) -> x || Delay (y || Delay z) = (x || Delay y) || Delay z
orCommutative : (x : Bool) -> (y : Bool) -> x || Delay y = y || Delay x
orNotTrue : (x : Bool) -> x || Delay (not x) = True
orBothFalse : (0 _ : x || Delay y = False) -> (x = False, y = False)
orSameAndRightNeutral : (x : Bool) -> (y : Bool) -> x || Delay (x && Delay y) = x
andDistribOrR : (x : Bool) -> (y : Bool) -> (z : Bool) -> x && Delay (y || Delay z) = (x && Delay y) || Delay (x && Delay z)
orDistribAndR : (x : Bool) -> (y : Bool) -> (z : Bool) -> x || Delay (y && Delay z) = (x || Delay y) && Delay (x || Delay z)
notAndIsOr : (x : Bool) -> (y : Bool) -> not (x && Delay y) = not x || Delay (not y)
notOrIsAnd : (x : Bool) -> (y : Bool) -> not (x || Delay y) = not x && Delay (not y)
notTrueIsFalse : Not (x = True) -> x = False
notFalseIsTrue : Not (x = False) -> x = True
invertContraBool : (a : Bool) -> (b : Bool) -> Not (a = b) -> not a = b
You can reverse decidability when bool is involved.