laws: (==) iff they are relabellings of each other

This commit is contained in:
hi 2025-08-16 08:58:22 +00:00
parent b0e98b0e51
commit 550e589bc8
2 changed files with 12 additions and 3 deletions

View file

@ -28,3 +28,12 @@ substatements s@(And s1 s2) = (s:) $ substatements s1 ++ substatements s2
substatements s@(Or s1 s2) = (s:) $ substatements s1 ++ substatements s2
substatements s@(Implies s1 s2) = (s:) $ substatements s1 ++ substatements s2
substatements s@(Iff s1 s2) = (s:) $ substatements s1 ++ substatements s2
relabellings :: Statement -> Statement -> Bool
relabellings (Atom _) (Atom _) = True
relabellings (Not s1) (Not r1) = relabellings s1 r1
relabellings (And s1 s2) (And r1 r2) = relabellings s1 r1 && relabellings s2 r2
relabellings (Or s1 s2) (Or r1 r2) = relabellings s1 r1 && relabellings s2 r2
relabellings (Implies s1 s2) (Implies r1 r2) = relabellings s1 r1 && relabellings s2 r2
relabellings (Iff s1 s2) (Iff r1 r2) = relabellings s1 r1 && relabellings s2 r2
relabellings _ _ = False