def naive_doublenot(branch: list[Sentence], sentenceID: SentenceID): f = branch[sentenceID] res = utils.reduce_prefix( utils.reduce_prefix(utils.empty_creator(f), 'not'), 'not') if res is None: raise RaisedUserMistake('cannot perform', "This rule cannot be performed") return res
'true imp': utils.Rule( symbolic="(A -> B) / ~A | B", docs= "Rozkładanie prawdziwej implikacji. Wymaga wskazania zdania w gałęzi.", func=lambda x: utils.select( utils.strip_around(x, 'imp', True, PRECEDENCE), ((True, ), (False, )), lambda y: utils.add_prefix(y, 'not', '~')), context=None, reusable=False), 'double not': utils.Rule( symbolic="~~A / A", docs="Usuwanie podwójnej negacji. Wymaga wskazania zdania w gałęzi.", func=lambda x: utils.reduce_prefix( utils.reduce_prefix(utils.empty_creator(x), 'not', PRECEDENCE), 'not', PRECEDENCE), context=None, reusable=False) } # __template__ @utils.cleaned def prepare_for_proving(statement: utils.Sentence) -> utils.Sentence: """Przygotowuje zdanie do dowodzenia - czyszczenie, dodawanie elementów""" return statement def check_closure(
def strict_doublenot(sentence: Sentence): return utils.reduce_prefix( utils.reduce_prefix(utils.empty_creator(sentence), 'not'), 'not')
def strict_doublenot(sentence: Sentence): return convert_to_signed( utils.reduce_prefix( utils.reduce_prefix( utils.empty_creator(convert_from_signed(sentence)), 'not'), 'not'))