notInvolutive : (x : Bool) -> not (not x) = xandSameNeutral : (x : Bool) -> x && Delay x = xandFalseFalse : (x : Bool) -> x && Delay False = FalseandTrueNeutral : (x : Bool) -> x && Delay True = xandAssociative : (x : Bool) -> (y : Bool) -> (z : Bool) -> x && Delay (y && Delay z) = (x && Delay y) && Delay zandCommutative : (x : Bool) -> (y : Bool) -> x && Delay y = y && Delay xandNotFalse : (x : Bool) -> x && Delay (not x) = FalseorSameNeutral : (x : Bool) -> x || Delay x = xorFalseNeutral : (x : Bool) -> x || Delay False = xorTrueTrue : (x : Bool) -> x || Delay True = TrueorAssociative : (x : Bool) -> (y : Bool) -> (z : Bool) -> x || Delay (y || Delay z) = (x || Delay y) || Delay zorCommutative : (x : Bool) -> (y : Bool) -> x || Delay y = y || Delay xorNotTrue : (x : Bool) -> x || Delay (not x) = TrueorBothFalse : (0 _ : x || Delay y = False) -> (x = False, y = False)orSameAndRightNeutral : (x : Bool) -> (y : Bool) -> x || Delay (x && Delay y) = xandDistribOrR : (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 = FalsenotFalseIsTrue : Not (x = False) -> x = TrueinvertContraBool : (a : Bool) -> (b : Bool) -> Not (a = b) -> not a = bYou can reverse decidability when bool is involved.