GEBWJGHFGLPFE6PGT5D7W3PL57NPMQRPDUK54GTN4344W6QT7DPAC disj False False = Falsedisj _ _ = True
disj = (<>) @{BooleanDisjMagma}proofDisjLeftIdentity : (a : Boolean) -> False `disj` a = aproofDisjLeftIdentity False = ReflproofDisjLeftIdentity True = ReflproofDisjRightIdentity : (a : Boolean) -> a `disj` False = aproofDisjRightIdentity False = ReflproofDisjRightIdentity True = Refl
proofDisjLeftIdentity : (a : Boolean) -> False `disj` a = aproofDisjLeftIdentity False = ReflproofDisjLeftIdentity True = Refl
public export[BooleanDisjSemigroup] Semigroup Boolean using BooleanDisjMagma whereproofAssociativity False b c =rewrite proofDisjLeftIdentity b inrewrite proofDisjLeftIdentity (b `disj` c) inReflproofAssociativity True b c = Refl
proofDisjRightIdentity : (a : Boolean) -> a `disj` False = aproofDisjRightIdentity False = ReflproofDisjRightIdentity True = Refl
public export[BooleanDisjMonoid] Monoid Boolean using BooleanDisjSemigroup whereid = FalseproofLeftIdentity = proofDisjLeftIdentityproofRightIdentity = proofDisjRightIdentity
proofDisjAssociative : (a, b, c : Boolean) -> a `disj` (b `disj` c) = (a `disj` b) `disj` cproofDisjAssociative False b c =rewrite proofDisjLeftIdentity b inrewrite proofDisjLeftIdentity (b `disj` c) inReflproofDisjAssociative True b c = Refl
public export[BooleanConjMagma] Magma Boolean whereTrue <> True = True_ <> _ = False
conj True True = Trueconj _ _ = False
conj = (<>) @{BooleanConjMagma}proofConjLeftIdentity : (a : Boolean) -> True `conj` a = aproofConjLeftIdentity False = ReflproofConjLeftIdentity True = ReflproofConjRightIdentity : (a : Boolean) -> a `conj` True = aproofConjRightIdentity False = ReflproofConjRightIdentity True = Refl
proofConjLeftIdentity : (a : Boolean) -> True `conj` a = aproofConjLeftIdentity False = ReflproofConjLeftIdentity True = Refl
public export[BooleanConjSemigroup] Semigroup Boolean using BooleanConjMagma whereproofAssociativity False b c = ReflproofAssociativity True b c =rewrite proofConjLeftIdentity b inrewrite proofConjLeftIdentity (b `conj` c) inRefl
proofConjRightIdentity : (a : Boolean) -> a `conj` True = aproofConjRightIdentity False = ReflproofConjRightIdentity True = Refl
public export[BooleanConjMonoid] Monoid Boolean using BooleanConjSemigroup whereid = TrueproofLeftIdentity = proofConjLeftIdentityproofRightIdentity = proofConjRightIdentity
ReflproofConjAssociative : (a, b, c : Boolean) -> a `conj` (b `conj` c) = (a `conj` b) `conj` cproofConjAssociative False b c = ReflproofConjAssociative True b c =rewrite proofConjLeftIdentity b inrewrite proofConjLeftIdentity (b `conj` c) in